Hey guys, what's up? Welcome back to my channel. Welcome to another weekend of my life vlog. I am at the airport right now. I'm actually flying to Georgia to visit Danielle Morgan. Is there two? We're on different flights. We got there earlier today because I have school. If you guys are new here, be sure to subscribe. My flight leaves at 11. I'm going to land at like 6 a.m. Georgia time, which is 3 a.m. my time. That's pretty much all the sleep I'm going to get for tonight, which is awesome. But I'm super excited. Just wanted to check the vlog off. Say hello. I'll see you guys when I get to Atlanta. I feel like I've just been here. Wow, gals on the go. I love gals on the go. No, it feels so incredible. Oh my gosh, guys. Look who's here. Danny is making us tea. Look at her cute mug. I love this. Morgan and I are literally wearing the same shirt right now. Good morning everyone. It's really perfect. Just got done getting ready. This is my outfit for the day. I have Danielle's Leopard's Crunchy. It's the best thing that ever happened to me. Princess Polly Joy. I am Gia. Um, misguided, urban jeans. My white sneakers. We're about to leave and get some breakfast. I don't know how I'm like really functioning alive. Well, no, I'm not because I just said that. Okay. Anyways, goodbye. Bye-bye. Danielle, when you show this in vlogs, I normally am like, what? Now I understand it, but like, it just flipped. What? Where is that from? This is so, it flipped. Thanks for the ride, mom. Bye. Going to Mama's Boy. Thank you so much. Morgan and I are like crying because we love the South. First off, it's the mason jars. Something about a good mason jar? Yeah, no, no, no. Yeah, literally, like, wow, guys, I love the South. I love it. Guys, I miss the South. I love the South. I belong in the South. Like, wow. Yeah, I'm embarrassed because we're both embarrassed because Danielle's vlogging here because people are looking at us, but she's not here, so it's okay. Our food got here. Wow. Look at this. That's unreal. Unreal. I'm just doing some shopping. It's super cute. I think they're cute. I go up to some places, Polly, that like, are tight and they flare out and they're so, that sounds cute. They're really fun, I mean. Volcano. It's the anthropology set. I have it in my office.  Yeah, they just falsely introverted that. I'm so sorry, but she's not kidding. Actually, yes, I've hiked walking on craze. Oh, my God, you did. I would just think it's called a car. It just smells like a brand new brand. I need this big of a candle. Imagine this exact candle on my coffee table in my office, in my two-pack book.  Urban shopping. Morgan's literally buying another shirt that I have without realizing it. What did you say? I had nirvana first. Yeah, you did. I didn't even have nirvana though, so we ended up just being matchers. What's my favorite shirt? Yeah, it is such a good shirt. It has the best fit. Oh, that one has the, oh, that one's good. That's a good shirt. You can tell. Oh, honey. Oh, yeah, thank you so much. Got a cold brew. You guys are so cute. They're so cute. I'm so sorry. I'm so excited to see you. I can't speak to them. I'm so tired. We are walking Brooke to her car. I can't believe it. My daughter, she's looking at her picture from class. No, I'm working this way. Oh, I think we're going crazy right now. Never mind then.  I'm running off of like two and a half hours of sleep. My eyes keep watering. I look like I'm like, yeah, it's not good. We're now going to Brooke's really quick. We're picking her up and we're going to see her house. I'm so excited for it. Wow, I love it. I think they have made it to Brooke's room. Brooke, this is a great room. Yeah, this is Barry Morgan's room. I have a fear about open lights but it looks better. Wait, what? I don't like them.  Yeah, that's true. That's very true. Oh my gosh. Yes, no, no, no, no. Okay, so she's being Isabella, like Taylor and I are Lizzie and Isabella for Halloween last year. This is amazing. I had to order it off like amazing. No, Brooke, what are you doing? I'm just trying to select which I'll be buying. I think we should go for the laser focus. Oh, that's good. Coffee and chill. This is not really can mug, Danny. I'm getting my second espresso. This one seems more like coffee shop vibes. Coffee shop vibes, yes. Ready? Yes. This is so funny. And then you have to wait for the machine. She's ready. She's ready. She's ready. She's ready. Wow. Would you look at that? Wow. Truly amazing. Truly amazing. Danny has oat milk. I am so happy. It's my outfit besides my jacket. Let's try something funky. Morgan and I think we need more personality segment. So this is our personality segment waiting for the air drops. Do you have anything to say? Preferably funny? I don't know why. Oh, sorry. I forgot I didn't even realize you were vlogging. He's cute and all, but like, I like the earlier ones. I mean, I feel like you can do something like that. You guys, we're back from dinner. I didn't bring my camera. I just changed into my Juicy Gatorra pajama set. Do you guys like it? He gave pictures in the vlog. Oh, absolutely. That's what I was thinking. That's why I asked which one I should wear. So anyways, are we, are you going to vlog first tonight? I mean, we're, I mean. Why are you looking like, what is this look of disgust? I was like, I don't know. Probably not. I did it. Do that again. I'll jump. Not a spider-like sensation. It was spider-like. It was like an egg yolk, my butt. Egg yolk? All right. Someone follow up with what that means. Morning, Danny. She made me some tea. We're making breakfast. We have a fall playlist playing. It's gloomy outside, guys. Wow. I love it. I love fall. That's an incredible shirt. Where did you get it? Urban? She gets every single shirt ever. I love that. Chef Danielle. So happy because Danielle has an Alfred mug. Wow. Yeah, guys. We're filming a group. Get ready with me. Danny's couch looks so cute. I really should have like rolled my face out. It's very puffy today, but here we are. Oh, I guess I, I can do that. It's right here. Hi. Can we just do the intro with this? I'm just filming actually ready for the day. I have a two. Got a beauty car. Did you really? Yeah. Oh, that hurts. Like my pants that I'm wearing today. It's incredible. I woke up this morning wearing a juicy couture pajamas that and then I changed it to juicy couture sweats. It's incredible. Made it to a thousand phases coffee. Oh yeah. It is so cute here. Oh my god. I'm like actually gonna move. There's real fall here. The buildings are all brick. Like this is way more my vibe. I love it. My eyes keep tearing up everywhere I go, but it's perfect here, guys. I'm like, I love it. I got a maple spice latte. It looks super cute. And I also just got a little croissant because I'm terrified of, I literally just set this up camera. I'm terrified of drinking caffeine without food right now, but trying my maple spice latte. This tastes like ball. It's like very ball. Yeah. It was like just right at the register. Hey guys, everyone. We just went to a thousand faces for coffee. A thousand faces coffee. You know, I honestly saw Max a dozen faces there. They both like genuinely find that funny. You know what? I think I should start doing in life because it's not really going to make my decisions better or worse than the ones I'm already making. I should just get diced and be like yes or no and just roll them and that's how I make my life decisions. Maybe I'll do that for me. Yeah, actually, I think we should all do it. Going to good morning stretches and guys, this makes me so happy. Wow. Another place to just, oh wow, guys, we're in the Chick-fil-A drive-through and happened in the blink of an eye. We drove past. We saw it. Lexing, you know, we're four lanes over and we're in the drive-through. I was like, what? So here we are. It just looks, it just had to happen. Yeah, we're having the best day. Got coffee. It's just so fall. Oh, trees everywhere. I'm becoming my mother. Like, I really, I really am my mother. The more I talk, the more I'm like, the older I get, the more I become my mother. Yeah, it's like, it's a thing. It happens.  And it's like, I'll have absolutely me. Like, I listen to Frank Sinatra normally all the time. That's what I'm on, you know? That's my dad. What'd you just say? Maybe Lovato did a killer Aretha Franklin cover on Spotify. I just seen this in Demi Morgan's stuff for my vlog. The song came on in the coffee shop, but it wasn't covered, unfortunately. It's raining, everyone. We have Chick-fil-A listening to Frank Sinatra. This is the best day of my life. I just got chills. It's raining. We got Chick-fil-A. These girls are happy. The West Coasters are happy. And Zabi. Because here we're gonna start filming some more vins. So we just finished filming back with Brooke. Brooke made the brilliant, um, what was, what would you say? Brilliant, um, Starbucks idea. Oh, I was like, yeah, I was like, hey guys, you're like, it's Starbucks. Starbucks. And here we are. So it's like my 10th coffee of today, but it's fine. This is my third. I'm being dramatic. Thank you.  We'd never take good pictures together. I don't think we have any good photos together.  It's really cute.  My arm. My arm. My arm. It doesn't exist anymore. It's gone. It's gone. Going into the podcast studio. We're lucky here. Is this my seat?  I kind of feel like I'm in like a doctor's office and you guys are like examining me. I'm at my therapist. All right, guys. So what questions do you have for me? What questions do you have for me? Guys, in my, you would absolutely love my studio because you have these headphones, right? And you put the headphones on and I can't even describe it to you. Like, I don't know. Like, it's like, it is the most like soothing. Yeah. And it's so soothing. I don't know. Oh my gosh, Danielle, you would, you would just sit there and listen to it. No, I will. Like, it's actually, yeah, it's incredible.  What song do you have stuck in your head? Can you sing it? So we like, it's like, but the beginning is like that, like, ding, ding, this. I don't think I know this song. Oh, I know the song. It's like someone's intro. It's someone's intro. Who is it? This is a good song. Good job. Just recorded two podcast episodes. Big, big content day as Brooke would say. Big content day. Big content day. Okay, guys. Two hours later, we are going to a movie. I shower into my hair. It's just, yeah. Anyways, I threw on a really comfortable outfit. I know it's horrible, but whatever. We're going, where are we going? We're seeing movies. No, we're seeing that was stars born. Stars born. Yeah. I keep forgetting. Whatever. A classic. Is it? I don't know what this is about. Thank you. This is what I've been saying. I don't know that. Oh, it's sad. Oh, wait. Yeah. I was joking. No, it is because everyone says they cried. Joseph said he didn't cry, but everyone else cried or something like that. I cried in funny movies. I cry in small movies. So that's it. I don't cry in movies. I cry in everything. We'll see. I'm excited. I could be the move. I could be maybe, maybe, maybe a good cry is needed. That's just what this trip is lacking is a good cry. That could very well be it. Who knows? Perhaps. No. Morgan, first off, you're the one who always cries. So I don't want to hear it from you. I always happy cry. No, it's more like in your throat. Like, guys, it's a happy cry. It's a happy cry. We're here and I just like stepped outside and it feels so good and it like smells. It like smells like I'm home. It smells like fall. Oh my gosh, movies. It's just, this is, why am I so bonfire in there? That's why it smells like home. It just, oh my gosh. It's so wholesome. Going to some movie, the parking lots. Wow. Look at it. A movie theater. Can't believe it. That was the saddest movie I've ever seen in my entire life. Really? Who decided to watch this? Yeah. It wasn't me. It wasn't me. He actually broke it and she's not here. He's not even crying. Did he just want to see this? I have ever seen. It was, oh my gosh. Yeah, no. Anyways, I'm really good but really, really sad. Guys, it's Sunday morning. We are about to head to Athens church. I'm wearing an outfit that I would have worn in my high school. I feel like I'm five years younger. This dress is Princess Polly. This jacket's actually Princess Polly as well and then I'm just wearing Stuart Whiteson boots. Wow.  Are you pumped?  We're very fall today. That's the vibe. I know. I'm like, this might as well say like fall across it and like the victory seat or pink, like font. Earlier I was like, yeah, and say like we also hate Mondays. Like a forever 21 shirt. Anyways, bye guys. We're on our way to Starbucks. My southern breakfast sandwich. I was literally just talking about how they just continued at least in LA and they haven't here.  I should have known. The south is just better. Do you see Tori's recent photos? Don't you think that she looks like my sister? She does. Yes. Thank you. They both fight near this. She does. It's so weird. Thank you so much. Thank you. Oh good guys. We're walking outside. It feels just like great outside. It's such a fall day. Oh wow. Love it. Danny's about to give us a little tour of North Campus. Okay. No, Danielle, don't do it. Morgan, I dare you. Morgan, walk under the arch. I dare you. Oh, it's okay. She's already graduated. This is our old UJ football team. No way. This is my favorite part of campus. It's like during the week. It's pretty. It's like all sitting here. Starbucks. Starbucks. Yeah. One, two, three. Pull it down. Oh well, we did it. Oh my gosh. We really did it. I'm just ringing the bell. I know. At least for me, I'm just so distracted. Yeah. Actually, I would be very distracted. Yeah. We came back to Danny's just to do a quick outfit change. I'll set this up a little bit. I don't know if I can actually. So I'm just wearing this dress for Princess Polly, a trinite that I always wear. Princess Polly jewelry and my normal sneakers. I just threw this on, which I really don't know if I should, but it's just been cold and who knows. We're going to be on like a farm. Oh yeah. We're going to lunch and then we're going to like this pumpkin patch place. Why does this look so... Anyways, I'm really excited. So we're going to head out. So guys, I just love it here. I love the leaves. I love the trees. I love the weather. Oh my gosh. It's so beautiful. Everything's pretty simple, wholesome. Wow. Just got our lunch. This looks so good. Yeah. That's what I was thinking. It's the Athens version of lemonade. It's amazing. Wow. Okay. So we made it. We're just walking up. It's so cute. Flowers, there's so many sunflowers. Oh, it's so cute. Now we are playing tic-tac-toe. We know you have to hold. Yeah. We are in the corn maze. One took 45. One took 20. So we're taking 20. So we opted for the 20 minute long one. We've been here long enough. We can just walk right there. Mom's dragging us to the furniture store. We're getting the maze. We just are not killing this. Oh my gosh. Like Ken Yal and I are trying to cheat. Like Google the trivia question. Or it's like, no, we're going to do this. We're literally on max right now. We're all the way here. So is the exit here or is the exit over there? They said it's only 100 feet from where you begin. It's so confused. We're in a hurry to follow it. We're in the street now. So I'm glad that we found you got to our level. Wait, guys, I think we just exited through the entrance. Oh my god. No, we didn't. Just to give a little bit more perspective, this is where we've been. So that's awesome. We are on like a tractor. What would you do? A tractor ride? A tractor ride. Just a tractor ride. It's so cute. Right into the pumpkin patch. These are so cute. Wow. Guys, I got my first cookout milkshake. I've never had a cookout before, but I've heard amazing things. I can't even sip it. So thick. It's so thick. Morgan, how excited are you? I'm so excited. I might spoon it. Oh no. Okay, guys, so it's a few hours later. We just took a nap and Daniel did some work. I just changed. We're going to go to get some Italian dinner with Brooke. Just a nice little girls dinner. Technically, our last night here, we got our emails to check into our flight, which is really sad. Anyways, yeah, I'm just wearing like really, really standard typical outfit. I feel like I wear the same outfits every single day. I need to chill. So we're on our way. Gals got to eat is the vlog. I was at restaurants the whole time. We're on our way to dinner. It feels amazing at all. I don't want to leave. I'm just so happy. When I get back to LA and it's 80 degrees, I'm going to cry. Like I will cry all week. I won't leave my house. I'm canceling all my meetings, no classes. Yeah, I'm going to blast my EC. It's yeah. Also, I don't know. I don't know if this is like a big thing in our vlogs, but in Greece, Morgan and I were obsessed with carbonara. I know it has nothing to do with Greece. This is what we kept eating when we were there. So we're going to get it. That's our thing. Hopefully they have it. Carbonara crew. Carbonara crew. Wow, this is so cute. We're matching again. I did not bring jackets to college. Got our pasta. Oh my God. No carbonara, but still looks really great. Hey Brooke, tell us what you just said. You guys are really in luck today. You're really in the south. You're witnessing my flare pen. My flare pen. I shouldn't have worn my boots underneath them. A snowflake. Say bye. I will miss you so much. I will see you so soon. It's our 15th time saying bye. Bye Brooke. Good morning everyone. It is sadly our last day in Georgia. We are about to go get some breakfast and then head to Atlanta for the day. Our flights are tonight. We're flying out of Atlanta. I'm just wearing a dress with a t-shirt and my normal sneakers. I don't think I'll ever wear other shoes again. And the only shoes that I want to buy are sneakers. So I've got my grande pumpkin spice latte. This is probably the only time. What? Did you hear that? This is like the only time I'll be able to get it hot until I go home to Texas next month. Oh my gosh. I can't speak. Doing some important things here. Getting our bagels ready for the drive. I like shots like these. They should have personality. We just set them up. Like I need to go get an Afghan. So Morgan, do you have anything to contribute? Not currently. I'm just checking my email. That's what I was doing. My three weeks without social media by phone. Check my email every five seconds. I was like, anyone try to talk to me? Yeah, I just emailed. I probably should have done a video like three weeks without social media. I guess I still could if you guys want to see that. Let me know. Country music. I know I've already vlogged 100 billion times this morning, but my PSL, my PSS. I love Athens, everyone. After being a bulldog for the weekend, I would definitely recommend. Great school. Love the place. Love the city. After being a bulldog. Bulldog. We shortened it to the dog. The dog. I know. I'm just being dramatic. Dog. What was I going to say? I didn't really do anything. I tore the campus. It's great. Love it here, guys. We made it. It's so cute. Haven't really stepped in anywhere, but I'm a big fan. Love it already. It's so cute. Guys, look how cute this is. Western coffee shops. Wow, I love it. The fancy food court. The fancy food court. Wow, this is really similar to Anaheim Bee Packing District. Very cool. Danny, apartment tour. Welcome to Atlanta. We moved to Atlanta, got a place together. We already got it decorated and everything. It's crazy. There you go. Shopping for notebooks. Trying to decide between these two. I like loving nice yellow and this is like a good size, but I also love this cool tone. But maybe bigger would be fun. Only the important things here.  I can't decide if I want. I kind of like both colors. For the yellow, I like yellow a lot. Here we go. This is it. Got a new journal. Very big deal for me, guys. They have it. Oh my gosh. Look at this, guys. I'm getting the leopard scrunchie. Got this ring. It's super hard to show on camera, but it's just this gold ring without our lightning bolts. Big fan. And then I got my scrunchies. This place is so cute. They have carbonara here. We peeked. We peeked. Athens did us wrong, but Atlanta didn't do us right because they had the oatmeal. Just in that. Yeah, but I love Athens still. So great. This looks absolutely incredible. We finally got a carbonara. This is amazing. Wow. Amazing. This is just the cutest place. Morgan is asking me if I want to smash your hash. I was like, oh, is it good? I don't know. I don't know, but I literally just this weekend has been we're having issues. Well, Kenzie just said, I don't remember what you said, but then you were like, oh, it's so annoying. And I was like, I meant to say, no, that's exciting, but I said, or I was like, yeah, I was agreeing with you. I said, yeah, that's annoying. Yeah, I needed to get a cold brew because I have so much work to do in the plane and we did like the airport soon. So I needed to like really have this caffeine and the one milk alternative that they had so well. So it's amazing. It's good. Smash, by the way. Do you want to try it or no? Can I try it? Yeah, tell me if you smash or pass it. Oh, smash. Definitely smash. Really prominent in that. Comment down below. We're about to head out, but we just saw this really cute pumpkin patch. Just wanted to kind of walk through. Wow. Wow. I love fall guys. Like it just makes me so happy. Okay guys, study teacher. I'm leaving. Love you all. See you soon. Love you guys so much. See you so soon. Subscribe if you guys like this video. Check out their channels. Everything will be linked down below. A podcast is coming. A main channel of normal videos coming. Yeah, baby. Instagram all over. Love you guys so much. I'll see you soon. Bye.


The pump attaches to the person's belt, or you may have to provide a special belt or vest. The pump can be positioned at the front side or back, whatever is most comfortable for the person being sampled. Note that the tube is long enough to allow the person to work. The cyclone assembly is attached at the collar. This is done so that the collected sample represents the air in the person's breathing zone. It is very important that the cyclone assembly remain in the breathing zone. For example, if the cyclone was attached to the collar of a t-shirt and the work environment was very warm, sweating could stretch the collar such that the cyclone was well out of the breathing zone. The resulting sample would not be representative of the air the employee was breathing. Sometimes you have to be quite creative in attaching the cyclone. Before turning on the pump, it is imperative that you tell the employee what is happening. Explain why samples are being collected and the sampling process. Tell the employee how to reach you during the sampling period. This is very important because if anything should go wrong, such as the tube breaking or coming off of the cyclone or the pump shutting off, the problem can be remedied quickly and the sample salvaged. The employee should be told that sampling is a scientific event using precision instrumentation. The instrumentation should not be abused. The employee should also be instructed to not inadvertently bias a sample. It should not be placed, for example, on a dusty floor. The cyclone must not be turned upside down. This will result in dust separated by the cyclone being dumped onto the filter. Very minute amounts of dust entering the filter can result in an overexposure as measured by the laboratory. Turn on the fully charged pump and record the time. Let the pump run for the entire employee's work shift. You should check every few hours to see that everything is operating correctly. It is best to stay with the employee all shift, though this is not possible if you are sampling more than one worker. At the end of the shift, turn the pump off, note the time, and remove the cassette. Reinsert the two plugs into each end of the cassette. Put in the plastic bags provided and prepare for shipment to the laboratory. Then remove the pump and sampling train from the worker. A control filter should be submitted to the laboratory along with the filters used to collect particulate material. These filters are used to determine the amount of out-gas material deposited on the filter from the plastic cassette holder itself. One control filter should be submitted for each day of sampling, and that filter should be from the same lot as those filters used to collect material. The control filter should be labeled as control. The control filter should be exposed to the same time, temperature, and handling conditions as the ones that are used for sampling. The inlet and outlet plugs must not be removed. The control filter can be carried in a shirt pocket while checking the sampling process. The filter should be stored with the regular samples after sampling and sent to the laboratory along with the other filters. Cassettes are fairly rugged, however they should be handled with some care. You should pack them with noodles or other packing material when you mail them to the laboratory for analysis. This will help prevent any dust from being bounced off the filter during the shipment.


physics channel for physics please subscribe my channel hello and welcome back to another episode of physics partner today we are going to delve into one of the most fundamental concept in thermodynamics the zeroth law with nearly endless real-life applications understanding the zeroth law is essential in a variety of fields including physics engineering and chemistry in this video I will be breaking down the concept of the zeroth law and sharing real-life applications to help you understand and appreciate it even more so let's dive in what is a zeroth law of thermodynamics the zeroth law of thermodynamics is one of the four fundamental laws of thermodynamics it states that if two systems are in thermal equilibrium with a third system then the two initial system the first one are also in thermal equilibrium with each other if I further simplify this definition it implies that temperature is a fundamental and measurable property for all matter the zeroth law is essential as it helps us set a fixed point of temperature which we can use to compare different systems in fact it has long been established that fundamental temperature scales are based on the zeroth law of thermodynamics let's talk about the real-life application of zeroth law one of the practical applications of the zeroth law is found in household items such as an air conditioner the air conditioner works by removing heat from a room and moving it outside inside the AC unit there is a thermometer that measure the units internal temperature when the temperature detects a high temperature then the desired setting the air condition will turn on to bring the temperature down to the desired temperature the zeroth law helps the AC unit to reach thermal equilibrium through monitoring the temperature another example is found in the food industry where temperature monitoring is critical to ensure food safety cold storage is used to store food at low temperatures to prevent spoilage but how much should the temperature be lowered when the zeroth law is applied we can determine the ideal temperature for storage and distribution helping prolong the shelf life of food in conclusion I must say that as you see understanding the zeroth law is essential in various fields and industries and it helps us set fixed temperature scales ensuring precision and accuracy in temperature measurement from AC unit to food storage the zeroth law of thermodynamics is truly everywhere and it is fascinating to see how fundamental law can have such a broad impact in our lives so I think it's enough for today so thank you very much for listening and watching I hope you enjoyed the video I hope this video is useful for you so take care of yourself and don't hesitate to write an email if you have any question curie suggestion and even classes are required take care of yourself meanwhile see in the next video goodbye


Hey folks, we're answering frequently asked questions from the Octa Customer Identity Cloud Community. Today we'll be walking through how to call an API from an Auth0 rule. Before watching this video, you'll need to create an API in a machine-to-machine application and have that machine-to-machine app authorized to request an access token for that API. This will be used for the next part of this example. Let's get started. For this example, I will perform the client credentials flow to get an access token for my test API, which is authorized to my test API machine-to-machine app. Now let's take a look at how we can call an API in a rule. To start, navigate to rules by clicking on the auth pipeline, then clicking on rules, then click on the create button on the top right, and select an empty rule. I will name it Get API Token. On this page, we can implement our code to request an access token for the test API. To do this, I'll use the example script found in our How Do I Call My API from a Rule FAQ. This implementation uses the Axios package to make a post request to the test API. Given the sensitive nature of the request, we can go ahead and secure sensitive information like our client ID and client secret as a global configuration object. So let's go ahead and do this. After that is complete. We can go back to our rule and use the built-in rules debugger to test the script and see the results. And here it is. We've managed to get an access token for the test API, just to recap. Today we looked at how we can call an API from Auth0 rules using an access request. Please leave us a like or comment. If you found this video helpful, subscribe to our YouTube channel and join us for more content on community.auth0.com. Thank you.


Hello everyone. I'm Tim. I've come here this week from Australia where I work for a company called IceLab and I'm also a core developer in the Dryer Bee and Roma Bee Ruby projects and it's really great to be back in Singapore. I really love this city. It's great weather, great food and in fact so does my whole family. This is us here. We're here for last year's conference. We had a great time. Our daughter was one and my wife was pregnant and here we are now, back again. My first daughter is two years old, second one is seven months and I was thinking about this and I'm actually scared about what might happen if I come back next year. We have space for any more kids in the family. On to the technical things. I'm sorry to say I've got nothing to add to Matt's comments about EVMs or JIT Compilers except to say that I'm glad he's taken care of it. I'm here today to talk about something a bit different, building applications with Ruby and I want to talk about a big shift in the way I've been writing Ruby apps. I want to talk about functional architecture and I want to start our journey to functional architecture strangely enough with object-oriented design. That's that thing we should all aspire to as Rubyists, right? We have these object-oriented design principles like SOLID to guide us and we know these things are important and that they should influence the way we write our code. We've been hearing this for years and myself I'd watch talks about these things too and I'd say to myself yeah this is how I should write my code and then I'd go back to whatever app I was working on and quite frankly it was a mess by comparison and I think my problem was that in my mind I tend to opt for pragmatism over design and I'd reassure myself and I'd say this situation is okay I'm a practical developer I've got work to do not architecture but not surprisingly the longer I worked in these apps the harder and harder they became to change and that's really the point of architecture and design as applied to code these things aim to make change easier and a well-designed code base it should stand the test of time and we can see these things illustrated through Martin Fowler's design stamina hypothesis. We can lay it out on a chart on the bottom axis we have time on the left we have features built and then if we start an app without paying much attention to design we may get a really nice initial spike in features but over time that curve kind of levels off as it becomes harder and harder to build new things but on the other hand if we pay a bit more attention up front to some good design approaches well there might be a bit of a slower ramp up but over time we get this really steady ability to add new features so we see here we had this line between them this design payoff line and I think my problem was I spent too much time thinking about the bottom left of that chart when really I should have been thinking about all the space above that line there and I think this is a mindset that's perhaps endemic in our community in general because we found our fame in enabling those early-stage productivity wins my problem was also that I wasn't comprehensively applying better design to my applications some band-aid approaches here and there they might help but they're really not just enough and since our job as developers is to deal with change and given the truth that we can't always predict where change will come from what we want ideally is a good design that covers our apps in their entirety so that's why I'm here today so everyone stand back I've got something to say functional programming will save us well maybe not quite like that this is a Ruby conference after all and I know many of us toy with different languages but I can still consider myself happy with Ruby and a practical Rubyist and likely Ruby itself is a practical malleable language and it's going to allow us to model things nicely along functional lines so the first step towards a functional architecture is a change in mindset it's about viewing your app as a series of transformations we get our initial data a HTTP request for example and then we can run that through a number of transformative steps with each one passing some data to the next until at the other end we get some HTML so in another light an app modeled as a series of transformations is really an app modeled as a series of functions and this is where we get to the functional part of functional architecture we can model these functions nicely in Ruby as functional objects let's take a look at one now so for example today we're going to be making an import products class so we're building some kind of online store we'd use something like this to populate our end product database from some third-party feed of products and even in this code right here we see the first quality of a functional object usually we can name them by a verb and then it has a call method just like Ruby's own language level procs occasionally we might want a few more methods but most of the time call is enough that call method accepts an input goes to work on it and returns some output now during the lifetime of that method it shouldn't mutate the state of the object it shouldn't mutate the input data so this is one of our big departures from a classical object-oriented design approach our functional objects separate data from behavior they don't keep that data anywhere in their own state before we go any further let's actually take a quick look at what this method will actually need to do the first thing it will do is get a list of product records by downloading that feed and then it will work with a products repository and will loop through each of the products and create a record for each one in our own database as a pretty clear and simple method to read and that's because it delegates a lot of its work to some dependencies these are what allow us to break down our application into smaller more usable objects here are those dependencies again we have download feed and we have a products repository and from here we can see the next trait of a functional object those dependencies are passed in by the initialized method and then we capture them in the object state and once these are set they never need to change and what you're seeing here really is constructed a penalty injection it's one of those classical object-oriented design techniques and it works great with these functional objects so the end result is that we can initialize this object just once and call it many times over and once it's constructed it can then go on and be passed around to become the dependency of other objects too now you might be thinking what we've seen so far is really just one of those service objects that we occasionally sprinkle around our apps where we see hotspots of complexity and you'd be right this is one of those things but what I'm proposing is that we use this approach to build out the entirety of our application's functionality because we want that comprehensive design approach so all of that crud that we used to building well they can be functional objects too so that's how we take care of the behavior side of things what about data how do we handle that we can do that courtesy of types and this is Ruby of course so they're not going to be the capital T types that we might expect in other functional programming languages instead what I'm really talking about is modeling these as value objects what is a value object it's just something that holds a particular structure of data that's unique to our business domain and then once we have these objects created we should treat them as immutable once they're initialized their state should never change too and of course we can add behavior to these objects in classical object-oriented style with extra methods working with the values we already have and the nice thing about these being simple value objects is that we can then easily pass them around all of our system and not have to worry about unexpected mutations or any sort of behavioral side effects along the way and in this way the value objects become first-class objects within our system all of our functional objects can depend upon and work with these structures so in a Ruby app built with this style objects tend to break down into these two different things values and functions our values hold data and those functions operate on the data our values are inert they're passive but the functions they're active they go to work on those values and if the values are the content in our system the functions form the pipeline through which the content flows in order for us to achieve some kind of outcome so that's the breakdown values work out to be pretty typical object-oriented code but let's take a close look at those functions if we built an app around them how does that design approach measure up well I think first thing we should acknowledge that with Ruby been grounded in the object-oriented world and with us using objects to model our functions we should acknowledge that what we're doing here is really more a blend of functional programming and object-oriented programming so with this in mind let's see how we measure up to some of those long-standing object-oriented design principles and I did mention solid before so let's see how that plays out here here we have those five familiar kind of dense little principles they're coin they're from Robert Martin and they're all concerning class design and together they can actually work as a decent indicator of what is well-designed object-oriented code so we'll step through them now we start with a single responsibility principle and this one I'm sure we're all familiar with it says that a class should only have one reason to change well how about our example here it's functional so it's named after a single verb it's got a single responsibility running the import for our products so there's no room really for anything else there if you want to add other behavior that goes somewhere else so I think we're off to a good start we'll give ourselves a tip the next one the open closed principle says that entities should be open for extension but closed for modification or in other words when we're building a system and we want to introduce new behavior what we should do is rather than modifying the old objects we should create new objects that work with the ones we already have so this plays nicely with our single purpose functions let's say for example that we wanted to send an email notification at the end of our import well given that our existing import products function is closed for modification we can extend its behavior by writing a new send import notification objects and then wrapping them both in a higher level coordinating object that runs the import first and then sends a notification and the beautiful thing about this approach is that the more of our code we leave untouched the more confident we can be that our system will continue to run bug-free even as we go and introduce new changes so that's another tick and now we come to the list of substitution principle and this one is really specifically about subclassing and ensuring that a subclasses interface doesn't break the compatibility with its parent interface and since we mostly rely on composition we don't subclass much at all I'm just going to chalk this one up as an easy win I'll set those those baselines for myself here so come now to the interface segregation principle and this one says that many client specific interfaces are better than one general purpose interface or in other words when you depend on an object and it has interfaces for many different users you wind up being affected by changes to that object forced upon it by those other users well in practice let's see how this plays out we have our import products function we've been working with and it has that download feed dependency where it gets the product information from a remote feed source and this object at the bottom here has effectively been working as an incoming product source but what if we wanted to go and add a different way of getting product information say by allowing users to upload a feed file directly well since that is also about incoming products should we go and add that extra behavior right there onto our existing objects or we could but that would violate this principle because we'd be turning the object into a bigger general purpose interface and that means it's likely going to change for different reasons over time and upset the stability of our app so instead because we've designed our objects to work really easily with different dependencies it's much easier and much more natural to model this as a separate object with a new client specific interface purely for the purpose of handling those uploads and this means that other objects can work with it as required so nothing should become unexpectedly unsettled by changes to either of these dependencies so four ticks down one to go we've got the dependency inversion principle and this one states that one should depend upon abstractions and not concretions or in other words we should care more about interface rather than implementation and this is another place where our functional objects really shine because they're oriented around dependency injection all those things do come in as abstract objects just like this our import products function doesn't know the concrete implementation details of that downloader just its interface just that it responds to call and that it accepts a feed object this is really Ruby's duck typing in a nutshell so this gives us the flexibility to adjust the implementation details of this object whenever we need or even replace it entirely and as long as we retain that interface everything stays good so how did we do well it's looking like we're solid and what this shows is that by following a functional approach we've actually created better object oriented code for ourselves and we've done this with a blindingly simple approach really to our design model our behavior as functions I mean we satisfy those principles so easily you just have to think about why they were there in the first place and I think it's because it's too easy in classic object oriented design to get off to what feels like a good start and then go down the wrong path and wind up with something that's vague unspecified hard to reason about or just really complicated so we need these principles to try and keep us on track whereas with our functions they're dead simple and they take care of so many of those design considerations for us and I think this approach is confirmed by how you would test these as well let's take a quick look at that we start by recalling those two dependencies we're using download feed and the products repository and then we set them up as mocks or test doubles then we can create our object under test the import products object by passing those doubles to the constructor then create a real feed value for our input and then return fixture data from a local file whenever our fake download object is called with the feed and then finally we get to our test so we can call our importer and assert that our repository has been asked to create a record for each of the products in that fixture file and that's it we could use these mocks so easily because our class was designed around working with injected dependencies so instead of having to interact with these two different external systems this remote HTTP data source and our local database instead we could simulate their behavior focus on our one function under tests and get the test done quickly in real isolation and with a minimum of fuss I think if there's been a strong theme so far it's been about making our dependencies clear and I think this is because it's one of the best things that we can do to enable well-designed code. Making our dependencies clear means that we can consider the stable dependencies principle as we go about and build our apps and this one says that a stable object and objects dependencies should be more stable than it is. What does this actually mean and what does stable mean here? A stable object roughly means hard to change and an unstable one is one that's easier to change and every application will need its share of unstable objects because applications do need to change but we want to avoid the situation where the objects that we need to change often are the ones that have many users within our system. So what we can do then is take our dependencies and arrange them according to this principle and make sure the lines flow in the right direction from unstable to stable and we can take this a step further. Once we start thinking about our dependencies in this way we can extend this thinking to our app as a whole and consider it as a graph of objects with the classes or objects as the nodes and the dependency relationships as the edges and historically the way we've built our Ruby apps has been really class focused that we consider those classes the nodes to be the primary determinants of what is a well-designed app but I suggest we open things up a bit and take a hard look at the edges in our graph, those dependency relationships. If we find the edges being arranged like this so our application looks like a big directed a cyclic graph this is a good sign that this app is going to be easier to change whereas on the other hand if our graph had edges flowing in the wrong direction or becoming tangled or even becoming cyclic then it's a sign we could be in trouble. That's an app that's going to be more resistant to change and that's really why we have all these principles in the first place. They're there to help us achieve apps that are easier to change and as well it seems like a functional approach to design gives us this and it does so in a way that's easy to follow based on that widespread use of functional objects and clear composition of dependencies and that's a pretty neat trick I'd say but I don't think it's a trick not a party trick because it doesn't fall down under pressure. This is an approach we like so much at iSlab where I work that is now our preferred way to build Ruby apps and over the last two years we've built more than 10 apps like this across different domains and with different levels of complexity and I can tell you this it works really well and from this simple reorientation around functions we started to see a new high level architecture start to emerge because when we have many small single responsibility objects well at that point we need to take time to devise a sensible and consistent approach to naming them and organising them and that leads to an emergent modularization of code within our system and as we see those modules emerge we can start to take notice of their boundaries and from this we can start to see distinct subsystems become more visible in our apps. How does this actually play out? Well we start with that graph of individual objects like we've been looking at and after a while we note some of them are clustered together because they all work towards a shared high level goal. So we can formalize that and turn it into a distinct subsystem and as we go other subsystems start to emerge as we develop the features of our app. These are the things that make up our applications core behaviors and because we've started paying attention to boundaries we can also take note of the application's own outer boundaries as well. So rather than being deeply tied into the app as a whole systems like the HTTP interface, the persistence layer and integrations with external services well they can be all carved off and placed at the outer edges of our app and formalized with a clear public API and clear and obvious points of integration and this arrangement this is what makes changes to our app just as easy at the very high level as they should be down at the individual object by object level. If all of this sounds attractive to you and it's something you want to give a try well you don't have to worry about going out on your own and forging your own path to this because we've seen a whole Ruby ecosystem that's grown up around this approach. We have ROMRB a persistence toolkit designed from the ground up to work as a separate layer from your business logic and then we have the project which is a collection of gems built to enable specifically this design I've been looking at today. Dryaby gives us things like type definitions, data validation, view rendering, all modeled as functional objects. It gives us the ability to consistently model both a success and failure results of our functions which lets us compose them in interesting ways and on top of all of this we get nice pattern matching support so we can elevate failure handling to be a first class concept within our system and we also get support for building our own value objects with strict data attribute types so it can be confident about what they'll hold. Now all of those things are worthy of their own talks but I just want to draw attention to one gem here, dry system. This is built specifically to help us create apps centered around functional objects and what it does is offer us a central container through which we can access all of those objects in our system. That container populates itself based on some simple conventions, it starts by scanning our source files and then for each file it registers a matching container identifier and then when we resolve that identifier we get a pre-initialized instance of that object ready for us to use with all of those dependencies automatically provided. So if you're looking at our examples before and wondering well how do I get everything into the object this is something that will let you do it easily and it lets us do this by giving us this simple mixing that we can use in our class files where we specify our dependencies by their container identifiers so instead of having to manually build that constructor and set the instance variables like we just did before we can now just declare our dependencies upfront and the rest is done for us and with all that in place we can now make an instance of our object directly without supplying any arguments at all to that initializer and again when we do this all of those default dependencies get provided from the container. Now if you think about testing this opens up some new possibilities for us because we can now choose which of the dependencies we want to leave as the default and which we want to replace with something like a test double. So instead of that arrangement like we had before where we had to provide a double for every single one of the dependencies what we can do now is we could choose not to provide one of them just like here we can choose to skip passing our products repository as a test double so the resulting objects here will use just one double and then it will use the real system objects for the repository so if we went to test this object it would actually write all the records to our test database and then we could go and assert for their presence afterwards. Now this is a much less pure approach to testing but for certain situations it may be much more practical and it's great that we have the choice to do one or the other. So that was it pretty much a functional architecture for Ruby apps. How did we do it? Well we really created a hybrid of functional and object oriented programming based on some really simple rules we separate data and behavior and then we provide that behavior as functional objects but we also draw on the best bits of object oriented programming like dependency injection and object composition and by doing this we found an approach that's easy to follow and makes for apps that are easy to change and I think this makes a functional architecture a real practical choice for any Rubyist out there and thanks to organizations like ROMRB and DryRB there's already support in our community for following this approach and also by choosing to stay with Ruby and take an approach like this rather than trying to follow it with some other programming languages you get to continue to leverage all of your existing knowledge of our community our ecosystem and our tools. So given all of that I think functional architecture is really worth a try. I think it can help you build better things because while solid might be an acronym for a collection of design principles I think it's a feeling too and I know that since I've been working in this way I've been shipping apps that feel a hundred percent solid. Apps that I'm confident will work the way they should and apps that I know I can go back and easily change later. Now I feel that taking this journey has made me a better developer but most importantly it's made me a happier developer and I'd love for you to join me and if you would like to join me now's a good time to check out this repository because we're just getting started in building a best practice example app that follows all these principles so it's fresh as of this week if you follow along you get to see all the work that we do to make it happen and with that thanks very much for listening and I hope you give this approach a chance. Thank you very much. All right so do we have any questions for Mr Tim Reilly? Anyone? Yeah. Hello first thank you for the talk it is really good so my question is about how do you develop these kind of components I mean for example did you first draw some kind of diagrams before starting to create the objects like import products download fees and the repositories and you know in which order do you go from bottom up like repositories first or you start top down and putting in testables first things things like that I would like to know about the process which you used to design and develop thank you. Thanks for the question I guess a top down or bottom approach bottom up approach is there for you to take depending I guess on your personal style and how much you know about the requirements up front so if you were sort of doing exploratory development or your requirements for fuzzy definitely you'd start with a top down approach you'd make your highest level thing and then you start to explore what it has to do and as you notice starting that object starting to do too much that's when you break it apart and build extra objects as dependencies and because we work with that auto-inject mixing as the way we work that's a really low friction thing to do there's not much effort to make a new file and then Chuck can identify for that file and there's a dependency so that's that's one way to take it or on the other hand if you really knew exactly what you wanted to build you could start with yeah the solid underpinnings and then go upwards so either options there it just depends on yeah the situation of the app that you're developing I think. Can I have one more question? Thank you. So when going this way do you have the feeling that when you want to implement some features you have to change you have to make change to the several files instead of one file for for example if I want to like add something to import products like it needs a new behavior like aggregating data from the repository but the repository doesn't have that functionality yet and in the end adding one thing requires changing in multiple files yeah do you have that feeling? Yeah this is something that definitely happens but I think it's an advantage because think about the opposite if you had all of your behavior clustered into one class and that means that much more of your system is all using that one class and then it means that any change you make there is going to have ripple effects ones that you may not even expect whereas with smaller responsibilities broken apart into a larger number of individual files you can see much more clearly because of the dependency relationships what is using what and you know what each one should be doing specifically because it has that single responsibility and in some some objects that do have sort of wider APIs like repositories where you might want to add lots of methods for different ways to access your data because those methods are clearly named by you the developer you've explicitly made an API you should be much more confident about where that's being used and you can make that change it is just a change in mindset that whenever you work on things you jump across a few different files rather than the smaller number of larger bulkier files Is there anyone else? No? At the top there Oh yeah Oh okay could you approach from the microphone sorry Okay hello So my question is if I want to migrate an existing application up and running production application so what would be the complexity to move it from OOP to functional programming approach? That is a tricky question I guess dealing with any legacy application comes with a whole bunch of nuance but I think this is something you can do as long as you're willing to accept that you're going to live in this world where there are sort of two different approaches to the design and I guess commit to the new approach whenever you add new functionality I mean you can certainly use dry system within Rails for instance there's a rail tie for it what it would mean though within a Rails app for example is that you're just going against the grain a bit so that may cause you a bit of friction but on the other hand these are all making a web app with dry web and any other web front end these things are all rack compatible so you can put them together in various ways you could even choose to carve out the new stuff and have it in a sort of separate rack-mountable app alongside but that's quite an extreme approach so I think a more sensitive approach would probably be just to start thinking about as you build new functionality think about how it can be modeled as verbs and put them put those things as classes in your Rails application wherever it fits and start working with those and you can hide for instance active record queries behind query objects you could also hide operations that write to the database behind their own objects and then your active record models for instance then become a much lower level persistence-related detail rather than something that you use as the primary API of your app so that kind of mindset you can apply to any tools that you're using whether or not you use these gems or something else so that's how I think you do it okay thanks cool is there do we have more questions yeah thanks for the talk Tim do you think that Ruby would benefit from adopting some of the patterns you were showing for example value objects could be part of the Ruby core basically and people would probably pick up this pattern way easier you know this thinking of like okay I have an immutable read-only value object if it was in Ruby core directly what do you think should that kind of stuff be in Ruby or not because that's what my talk is about I'm happy to wait and find out this afternoon no I think Matt's point about compatibility is a really good one there we can do these things in Ruby by convention an object can be immutable within our system if we choose not to mutate it and if we choose not to create writers sure I think some facilities around first class functions would help so that some of those functional objects can feel a little bit more better situated within the language but you know we work with the tools we have and you know we've probably all been writing with Ruby for a long time and we're here because we still enjoy it as a language for all of its good features and all of its kind of quirks and I think the fact that it lets us model systems along these lines is great and we can start to develop the same instincts for how to break things down that that other functional languages give us and I think the biggest thing that helped me in doing this was really approaching this completely apart from the tools I was used to using and starting fresh on some new projects so I couldn't fall back to my old habits or those old shortcuts and that was what helped cement the change in mindset and that can still all be done within Ruby Hey, so the dry stack consists of a lot of different small libraries would you agree that it is designed and it is meant for more advanced programmers? I feel that when beginners come and try to learn something then it's difficult for them to decide what they actually want they usually want to have a set of tools that that is like, you know, like packed together for them so I'm wondering if you think that this is meant for advanced programmers or do you think that maybe the community will come up with some like, you know, just the default stack that you only modified if you know what you're doing Yeah, you're right in that the gems are fairly low on opinion they're meant to be flexible and they're meant to integrate into many different situations which is why perhaps they don't guide you as much as other tools but I would say that new developers can become productive with this we saw that at ISLAB we had someone who came on board as a junior developer he'd done some online Rails courses and he was pretty productively working with this because it really is a much simpler concept that is core you create objects you compose them and that's how you get larger pieces of functionality it's actually a smaller number of things to learn and as long as they're guided by some high level organizing structure with an app so if they're working with someone else you can take care of that by having conventions within your app that you've established and I think as part of doing all of this you get better at actually becoming a programmer so instead of being a programmer for one framework for instance you just get better at modeling and solving problems in general and I think that's a great thing for a junior developer or a less experienced developer to learn because they're going to be things that will help them for the rest of their programming career even if these tools fade away the ideas behind them are enduring anyone else sorry I'm interested by your statement that the various dry dot RB gems are intended as atomic because when I've looked at it for it feels almost like you're trying to build a functional DSL using Ruby as an interpreter and while that isn't my taste I think it's a reasonable project and so I guess how do you visualize people just using individual bits and pieces as a drop-in because it seems like a kind of coherent system that you either buy into or don't buy into to me it's true that we sort of have built these to work in harmony as a collection because they share similar philosophy across all the gems but a lot of them are intended the entire idea is to make one each something that solves an individual problem. So I didn't mention it here but one of the ones that's seen the biggest uptake is dry validation which is a standalone validation library and strict rigorous data validation is something that everyone needs in their projects and dry validation is really just about creating schema objects that you can call anywhere in your application so it doesn't really have any requirements beyond that your application can take any shape people are using it in Rails apps people are using it in apps that are the full collection of dry RB gems and because it was done as a standalone thing it can find usefulness in a broader context. Now some of the dry RB gems are a little bit more specific for following an architecture like dry system if you're not going to want to build an app with a container to vend your objects there's not really much point in using dry system but that's the whole idea because we didn't bundle that into everything and make them tied together you can just pick and choose what you'd like to use. So the best ones that we've seen with standalone usage are yeah dry validation and dry types and dry struct because everyone has a need to validate data and model data and treat data with rigor and that's something that can fit with any application. Okay I think that's all the time we have for questions let's give Tim another round of applause guys. Thanks very much.


Hey everyone, welcome back to figure fantasy. So today we're going to be going through infinite gaming mask Macbeth Starting with a hard difficulty and let's see what lineup I have for you Okay, so this is the lineup that I did so this is more or less what it is don't bring Sonata to this lineup because you will need Eryxia to Absorb a little bit more of damage from that pig back there. So let's see how this does I think without Eryxia you won't be able to survive that ultimate by the pig so This is going to be quite easy clear As you can see there, even if he did another ultimate you still can't survive this as long as You take him out already. Okay So there you go three star clear. So let's move on to the next stage Okay, everyone for this stage. So definitely don't bring this to Eryxia and Sonata's because they won't deal enough damage for you to finish it in 21 seconds. So let's try this out So so far You have to prevent Vazrawind from kicking in her second ultimate So it's okay that you absorb the first ultimate, but definitely not the second one Because she will be clearing everybody if you let her have her way. So so far so good We just have to freeze Vazrawind and the problem with that is of course the RNG if she doesn't If she isn't frozen actually she's gonna put off her ultimate, but actually that's very good So again guys if you don't if you fail to clear this in three stars Please just repeat it because again the RNG for the freeze for Ayane is crucial for her not to put off her Second ultimate. Okay guys. So that is it for me and hopefully I have helped you with this video Thank you guys stay safe. Take care. This is the Warden and I'm out of here


Let's do this.  He's boo-doo banton He used to do acting he used to do acting. Yeah, he was the third member of Keenan and Kale that just didn't gel And as for his health well all I'll say is he's the one at his workplace giving him first aid It's strange Ren's thin, but he used to be bigger. He used to have the figure of Renny's ill wigger He tells lies.   So lovey Pardon my friends, but his name is a clue even his Marseille Ren has to lose Ren's straight, but once a blue moon does a rendezvous with Ron Dave and you So it hides in the box like the phones used to do hope when they fondle you I cooked your girl fondue She loves me, but she's fond of you Fondue it's wrong but true, but when Ren's in need of a stranger's hand he paints his nails and thinks of his alia banks I study the Quran to settle my mind like a woman in Iran rents 10 steps behind And if he asked you to buy any pills don't get any because Ren's ease are ready time JB to J red to J Dylan.   Who's Roseanne his wife obviously She was like when my husband's big game. It needs work.    That's one nil Talked about my teeth. I knew you'd mention it It's important to Ren cuz he got raped by his dentist and chooses the best he wanted to do this in a sumo vest Ren's salute to the food he loves best.   It's just a placebo And Ren knows when it comes to don't flop he's in the friend zone because while I turn blue cheese into cornettos When he wants new jeans he calls netto's And Ren's got no Rizla for weed so he rolls with bog roll. That's a toilet tree And you see me turn molly into parcel bombers. What did Ren bring to the party poppers? I'm rhyming a lot. I'm rhyming a lot. I'm Tay Rock plus Brian Cox, Brian Rocks Tay Rock plus Brian Cox and I admit his last battle was amazing We went lap dance for celebration when he got kicked out for touching. He's a pagan We came back disguised and paid again Dylan's hating my dope flow See that paper could be a ball your two front teeth could play the goal post Like he's right last round.   He'd be buying out the bars Because when you do write it's just some awkward raps man.   Then your next line said it was this big, right? See, I do not know what's more fact about the guy. The fact that he saved the pickle that he analyzed the size And I bet you had to have your phone when your wife came that evening Kind of like the same time when she called you cheating. He was like baby. It really what it looks like I was just paying and Steve was just leaving Now she got mad and it is very peak. She flung out the tv and the ps3 She flung out the bed now. She's flinging at the seat.  She's flinging at the sheets. Got him singing our house in the middle of the shoe But I saw him living on his knees. I was like Here's the cigarette Jay. You can have a match. He was like I thought you'd bring some Hennessy and a bag of man This ain't what I meant when I said I need a pack of fags He goes He goes George Michael Ricky Martin boy George and Sam He got happy when he heard they're forming a band Because he hates music by boy bit and old but he lost too many man too many See this round here is called reverse Michael Jackson. Watch me beat him so bad He'll turn my complexion and if katelyn general walked in this room right now He's the only guy that will get a slight erection Because he is the definition of what a gentleman is like the type to be like hey miss you need help with those bags Then he went with the ship Then if somebody called fence very quick, he'll be like officer.  I like to see you try I don't need game to draw his girl.  Hold up Now, I don't need your name. Just your phone. Um, she was like all seven nine two seven five six Three four one cool. Then I found her but then I looked in her phone book. I saw big j. Pedro danie jacken bamelam So on second force you can have her back because she's been used more than ur's name and battle raps I was watching the matrix ever there And I thought it was a new I was watching the matrix the other day And I thought it was a new film that had nothing to do with my run But I saw the part with the red pill and blue pill, but why that's relevant is because you know what rhymes with blue pill? tuna Ren's day started with xbox. Then what dinner fray bentos? Facebook friend lost Battle ren lost Hey, but you can't say ren's not london through and through man. He's even got a do rag with the tube map He said listening to dizzy rask was an aphrodisiac He met a girl at the zoo and ren's best angle tell her his dick had been tested on animals I'm here to die. That's euthanasia. You watch weird videos youth in asia Hey, but it'll never be centre stage any day, but I respect ren anyway. He launched his own protein shake called renegade It's very strange, but he said it works. It's lucas ade mixed with his mace spurt I heard ren's got a nice flow, but pen go either way. That's a by-ro And I know your style could be cool you see but you failed when you copied from the usb You need a yellow tracky do rap palette parody.  He's stressed before the battle pmt Your girl needs tlc.   I'm gonna put this away now Don't get twisted. He's a proper G on his facebook.  Then what they were like. Yes. So what then what when you get killed by rent You better not phone us Then he was like mate, it's serious.   That's a facelift Then you said get connected with the map you will speak Make you leave don't come back. That's lunacy.