Alrighty. Alrighty. Alrighty. I'm gonna wait for just a second and kind of see Let y'all or let the tweet go out. I'm just gonna kind of kind of get in my environment ready here I mean a new code sandbox. Um, so that's always a good thing Hey, what's up, Adam? Welcome. Welcome. Welcome Glad to have you Yesterday was fun yesterday was way fun. Okay, let's see. I think I got everything I need here Wish there was a shortcut for Zen mode. It's really easy to get out of it. Not quite easy to Get into it Adam, did you make anything? Did you make anything else using hooks yesterday? Did you continue to play with it? That context thing you showed me yesterday was was dope Yeah, yeah, you're telling me so um, so yeah, so I Last night I spent all so let's see. What is it react? Nope Podcast calm Yeah, I'm really excited. I hope I have the energy to do it. So so last night I was up until five in the morning Editing this show I Literally just like I went to sleep at like five something.  I gotta do I gotta do a stream I said I was gonna do one every day this week and Anyway, and now we're here. That was like 10 minutes ago Anyway All that said this is such a fun episode of react podcast I definitely recommend you listen to it if you're interested in In this I mean if you're if you're here you should listen to this podcast because it's all about react hooks and All of the things that are happening like now all of the things that are working on all of the like ideas Just all of the things that like I had questions about they all talk about kind of where the origin was and everything It's really awesome Anyway Yeah, so that's it I was I got no sleep last night because of of this episode. So Today might be a little bit short Because my head is just not right and my fingers are kind of achy. So anyway Okay, cool. Cool. Yeah, it's um, I mean it's a little bit You know kind of like recap of like what they were talking about but there's some nuggets in there about like kind of Where the future is with react fusion and ahead of time pre-compilation and all that kind of stuff. So It's um, it's real cool and it's just kind of fun to like sit down with them and talk about the tools they're making Or hear about the tools that they're making So I'm gonna open up the docs for this one and And kind of go right in so Today we're talking about use Context and use context is fairly simple But I just want to kind of bump around the the edges a little bit I might use this as an excuse to check out the new context APIs that were released depending on how our time goes I don't suspect that we'll have a lot of like really big revelations About about use context So maybe we'll go go that direction. Maybe I'll just take a nap. We'll see So, let's let's go. So there's the API reference and use context is the last of these basic hooks actually Realized I reset my screen last night For working and it might not be ideal for coding so or live streaming So let's see if that works I Guess just let me know if that didn't fully break everything and you can't see me anymore So, yeah, so Yeah, so that's the last this is the last of the basics basic hooks now um my understanding is that Basic just means that these are gonna be your bread and butter hooks. These are the ones that replace Or not replace, but they give you the capabilities that you had with class components before into function components Now that is also true of these but these are more of a specialization Either around the type of state or perform really making certain things Very performant, which I don't think is really a word but whatever making them perform performance oriented making them faster and Or kind of things that we have very like strong specializations of use effect that opt into the scheduling So kind of prioritized or deprioritized in the the render cycle now I don't know a lot about these yet, but that's my understanding. That's the That's how um, I know like use mutation effect and use layout are different than use effect Anyway, we'll dive into that when we get to those But that's kind of the idea that this is the last one that actually Provides you a capability Is like provides you a baseline case of capability in a functional component So let's take a look at it. So we did use state use effect On Monday and Tuesday and today's Wednesday we're doing use context So it I mean even the docs are incredibly simple So this will be a little bit more about setting this up than anything else. Um, so use context we just create a variable Context we want and then we Or with the name that we want to give it and we say use context and we actually pass it a context Now we can define that in place. We can import it from another part part of our project We can do whatever we need So let's see Accepts a context object the value return from react dot create context and returns the current Context value as given by the nearest context provider for the given context So that's where it will explore today is the nearest context provider Kind of setting up multiple context providers and then just kind of exploring Adamid an awesome demo or I think Yesterday and do you mind sending me a link to that again? That was cool The Or I I'm almost positive as you I'm if not I apologize because I only got four asleep last night So if not, I'm sorry about that But it's attributed to you in my mind. So We're we're we're stacking content. He used context to kind of retain previous values of the document title and So we could render change that document title and then change back Yeah, once that that component got removed from the component tree. Oh awesome. Cool. Yeah, just pasted that in Let me get that Which I thought was really nifty So I thought I'd show it now And then we might even use this as um as as some of our example today because it's super cool So yeah, so he's pulling in use state use effects use context Um This is the let's see. Yeah, this is the little component that changes the That renders the name profile and then use document title. He sends it the thing and Oh printers going that means someone's going to be in here any second. All right. Um, okay Yes So, yeah, so then um, yeah, so then there's use effect which let's see Takes the default title off of context this app context that was created here Puts the title in there restores the default title and then changes um on any title changes Um, and so you can see we have so here's context provider. This has the The default title provided here in our app Um, and then uh, let's see when you oh, yeah, I'm not gonna be able to see it Here we go. Okay. So um, you saw it was react avat first We toggled this off it goes back to my app Then turn it back on and it goes back to Adam's profile So that was pretty cool. And that's kind of a um, the pretty good demonstration of Context used with the other things. So we might come back to that Um, so that is really cool. Let's uh, just I guess right now build up a context and And use that um Some of the most common examples printer Again, this was such a terrible time to do this Okay, so I have um a microsite on context. So I might be pulling examples from there And just because it um, I was It's where I'm most comfortable with so In context there are three pieces of of context always. Um, there's going to be Uh, your context creator. So you're gonna create context and this um in here can be whatever you want And this is the demo. This is the the way that I always think about it.  So that's the name for for my context Um, I can Export that from a module. I can I can build it right in place. I can do do that wherever I need But this is the transportable nugget of that. Um the this expletive context Now inside the um context There is a consumer okay, and um We can use this using the like the traditional example or the example that was added in 16 three I think it is is that we could use a um Create a component and use the consumer with a render prop. So it's going to pass in the word We'll take that and Display whatever it is that we want to display now the kind of react team has not been super secretive about not Loving render pops. Um, even though it's a Uh, though admittedly, it's a you know a great way to compose some of these things using just the component model um, but The the goal has always been as far as I understand is to to to provide this because it's a it's a pattern that people are familiar with um, but then also provide Uh a hooks version for functions and then a class version. So uh moving on um, you can there's also a provider in here So I have this other component called grandma's house um And it provides a value for context poop And It just kind of renders its children so When we have a visit to grandma's house um, so this is a visit to grandma's house component And um when the context is grandma's house The contextual exclamation is going to use grandma's house value And uh, say oh poop instead of oh shit, which I would say by default So, um, this is uh, that's that's how I remember that stuff um, so let's see. So let's see so Let's Go about creating a context. Let's actually recreate this example With context I gotta find my thing and close that one. I'm just gonna delete clean some of these up. Okay, so I need to throw in the app Throw all this in the app to make it work So visit to grandma's house All right, cool. Yep says oh poop look at that um Make this bigger Okay, cool. Oh poop Okay, again, we will kind of walk through all that code. Uh, I'm gonna rework this using hooks So first we're going to take the use context hook off of the react object and then Kind of change the places that we're using context. So Let's see that would really just be this contextual exclamation If I am seeing that right Okay, cool.  I always use function just because I hate I always go for this terseness and then I always need The the block for some reason Particularly now that's going to become more and more true That I'll need that block. So um, I really Just use the the function keyword all the time now It doesn't differ dramatically from the um from from this version So um, you could do that too if you feel better with this version For some reason, I almost never see this with a block very very commonly Um, so same thing though. So I'll just leave it. I'll I'll leave it this time Let's see. So use context And we are going or sorry let whatever we want to call it. Um Word actually no we know that Yeah, so it's going to give us the value directly. So this will just be word of Expletive context Okay, so we're taking we're using this we're create we're using context and giving it our full context the Which includes a provider and consumer? And uh, we're just taking the word out of that. This is this is such This is so nice. Um in which case we can get rid of this get rid of this I think get rid of this And it still works um That's amazing That's a lot less. That's a lot less code and it is so much clearer. I really like this hooks api um in in context that's That's great. Man. Oh man. I love it Okay, cool. Um, so that is awesome. Now. I don't think any of the rest of this Uh changes dramatically because this is just um We still need a context provider. Okay, so that's still going to happen. Um, but Yeah Okay, cool That's looking good So really the only thing is just this one that was consuming the one that uses the consumer anything that uses the consumer Is now going to be able to use use context instead of the consume the render prop consumer And that is a beautiful thing. This is So much better and we remove all of the non rendering components out of that hierarchy, which is amazing Um, okay, cool. Now. I want to try maybe Doing multiple contexts. So let's create another context Uh, we'll call this one theme And this one's going to have an object inside of it Uh and the text color is going to be a word that I never spell, right? But I love it Um fuchsia Actually, let's be explicit Okay, so we have um, we have a new theme context We've used react create context for that And um, we are giving it an object with just, you know, a couple color values. Um, let's do like text background color Um, is lime a color is going to be so so ugly. Um, okay, so we can do this again. So let Theme equals use context of theme context And uh, yeah, so if I put this in the Style So color Actually, yeah color equals text Theme That text color and Hmm, that didn't work. We'll see and background color equals text background Color it's very possible that I just misspelled future. No, this isn't working at all All right, cool. Let's figure out why so great context We're giving it objects. This is definitely not spelled right fuchsia Oh Fuchsia. Oh, there we go. There we go And then I might not be able to do this on a non-display block element Just make it pink It's gonna look terrible. That's less important. We got it working Oh Uh theme Real tired real tired Okay, cool. Oh, oh, that's That's special. That's real special I love this color. Caw. Is it how we do it? coffee I need some of that right now. That's sweet sweet coffee All right, so, um, yeah, so that is um, that is use context. It's pretty simple Um, there's not a lot that we need to do. So let's um, let's do this. Let's create a uh Unquote the board. Oh, yeah. Yeah, sorry. Yep. Yep. Yep. Yep. Sorry. There's a little bit of a lag, but yes, uh Got it. Thank you Keith and good to see you.  Um, so yeah, so thank you for for for wearing with me this morning So one thing I want to do is I want to um, I guess stack some contexts So, um, we have this like expletive context and we say like oh poop, but we can do um, we can do more we could uh Just kind of add another Oh, no Apparently there's a keystroke around the letter p that you can do to reset the page. Um How did it work without a provider? Um, Luca, I'm not totally sure Uh with a question. Oh, how did oh, how did this work without a provider because I'm just consuming this Um, but I'm not uh applying a provider anymore. I see what you're asking Yes, um Yeah, so use context. It has a default um and that I'm providing that default here So if I delete this default it should all go away Um, so I'm providing the default but um where I create a provider Um, so I I'll just use this. Um, so we have a theme context um If if grandma's house wants to use different colors Um, I could throw those in here Change that to theme Um Hit something wrong. Okay. There we go. So so now I'm providing in context and that went away. Um I suspect because I provided it. I accidentally just copy and pasted the other values. Um, so let's uh, give it some new values So text color is going to be blue um text background color Oh my gosh, I hate blowing red together. It looks so terrible. Um, let's do maybe like a more like Halloween-y themed Oh, it's so gross Keith are you like just clawing your eyes out like right now Um So yeah, so so that's why that that worked. So the um, let's see The theme context doesn't have a provider. Yeah. Um, yeah, so So yeah, so where there is no, um, so This this um object or this Value that you pass in whether it be just a string or an object Um is going to be your default value. So where there is no provider This it's basically acts as like an implicit provider Um, so that you can always have these fall back values. Um just in case So this is like kind of like the default theme and then we have this like Halloween-y type theme that we put at grandma's house. Um, so Yeah, so that's what we um, that's what we got right now Uh, let's see. So we got two themes. We got two providers at this point. Um Um Let's see. So we've stacked that now. I also wanted to show you that order matters. So again, we we just have this. Um, very You know, it's simple and honestly, so I'm gonna I'm gonna say something for a second. Honestly, I think that uh, it's so funny that theme is Something that is used as an example like all the time in the docs Because I think that this is like a really terrible way to actually like I wouldn't theme anything like this when css custom properties are a thing. Um Just saying This this seems this seems terrible way more way way terrible. Um, css custom properties are amazing. Um We use them and I love them. Um so That's just a that's just a tangent. I just feel like that's a terrible example of the whole like theme thing. Um One of those things that like demo as well, but then in practice is just a terrible terrible idea you'd never want to do So we have uh expletive context. We have theme context. Um Great can you change this to pumpkin? Oh pumpkin. Um now we can also stack these contexts So this might get a little bit weird. Um So wait, let's see. We're at grandma's house um We can we can insert new contexts at any point in the tree. So like let's say that I didn't want to do that uh, oh Oh poop, but um, we're at grandma's house, but because it's halloween time Out here. I'm gonna actually move all of this. So we're at grandma's house Um, but it's halloween time. So we're gonna insert this theme If I can do that See unexpected. Okay. So it's complaining about my jsx. It did something wrong in jsx land Back out back out back out Okay My theme can context down Okay, cool. Now that works. Oh keep hitting save and having to scroll down. Oh I need to figure out how to fix that Um kind of get the end of my thing there Okay, so I'm inserting now this visit to grandma's house. I'm inserting a provider for that halloween context Now, this is not what grandma's house usually looks like usually it looks like that it looks like our default, right? But I'm inserting this this context here, which is awesome. Um Now it means that I can also insert an expletive context. So even though Typically we say oh poop at grandma's house. Um, I can insert an additional context because it's halloween um and I don't know why I keep getting the order of these wrong Um, now I can do a festive one and we'll call this oh Oh pumpkin Which we had before but I can't type this time Okay, cool. So yeah, so that's what we've got. I'm gonna move this mic down a little bit Okay, so you can kind of see see what's happening. So this is the this is you know, we've we've encapsulated You know, oh poop in a grandma's house. Um, but now we can do these um these other themes So we can um, what don't I?  Let me pull these out. It's kind of getting a mess in here, but um context always feels like a mess to me Anyway, just based on the nest thing. So Uh, we'll call this Halloween Also, happy halloween everyone Happy halloween So we'll take our props And we will take this and we're gonna move that up I'll return it. Oh, it's real messy there for a second. Um And we'll spit out props.children And save that And then we got to add it back in but it's a fun morning here in in my office Um, so on this one We actually we can kind of encapsulate that in from the outs I No, we won't be able to we'd have to insert it It's kind of a good question is Yeah, we'd have to re I'd have to compose these differently than I have I'm not so this example is kind of lazy because I do everything in line So in reality, I'd want to take props here props.children Um Actually, I can do this Let me take that out Okay, so then I'm going to insert it Here So this is where I would typically do this type of composition close visit to grandma's house Oh Too much going on Okay, cool So I would typically do this more in my app right because grandma's house doesn't need to have the expletive in there I'm there's going to be all kinds of other things that I'm going to be put in this visit to grandma's house So that's a terse example, but kind of like a misleading one because they're fixed together So now in this case in my application where this logic would live Now I can insert a halloween context where it makes sense in context halloween context is oh Not context. It's just a halloween component Cool. There we go So, yeah, so that um Yeah, that works pretty pretty well. So we're we're On a visit to grandma's house halloween and we get this contextual Exclamation with which is contextual on halloween and um on grandma's house. So um Cool cool cool cool cool Um, so that is See we covered covered use context. We covered This theming thing. Um, I showed you this What is it this? Code sandbox. Um, it's in the the chat if you want to click on that and explore it This is adam's context example from yesterday Where he was able to retain the default title Which is very cool. He should definitely look at that because that is a fun one and it incorporates what we were doing yesterday um Let's see. What else there is um I would like to before we end make one of these a class component. Um, just for the sake of example because um, again react just put uh, what 16 six out which has a um a static context type consumer for uh for A class components So let's explore that What time is it 9 34? Yeah, we're probably gonna get out early today Good. Good. You can use the rest of the time and listen to react podcast um And here the there's this little funny bit in the very beginning where the the core team is singing and I love it I I didn't even ask for permission. I just put it in and Yeah We'll see how that goes for me. It might not be invited to the next conference. Um So, yeah, so, uh, this is pretty easy. I'm just hearing me blamber this morning. Um, so, uh, so you just use static, um context type um Equals my context. Okay, cool. So then that puts that on this dot context. I got you Okay, cool. So this context context type is um is a very special word. We have to use that precisely It can be whatever now Something to know about this is that this is um Let's see. This is One context per component. Um now the other model that we just saw with the render props. Um, you can compose in like multiple consumers This one you can't this is one context per component. So Choose wisely. I don't know if that'll change at some point Or if that's the plan that like basically this is the one and use the render prop for the other one for for more Who knows? I cannot say I just uh, I just do what I'm told So let's um So this becomes a bad example for us because we're actually able to in these functional components do something that we can't do in the class components Which is um use multiple use context via hook. So that's awesome. Another reason that hooks are amazing Uh, let's see. So I guess let's make another like a class component that um We can stick in this same context and um have it know I guess we'll just have it know about grandma's house only since it can just be one. Um What should this component do Call this like a want candy Oh man Yeah so function want candy And then this is gonna say. Oh, no, sorry. Uh, we want to do this as a class class Class want candy extends react component I'm gonna have render in here And let's see. What's the default message gonna be? um And so much typing with these classes Um, what's like a young like a young candy Uh, oh Reese's I don't think that's actually More younger than uh, what i'm gonna put for grandma Okay, cool one Reese's Yeah, okay. Cool. Cool. Cool. Um I don't think I spelled that but don't care. Um So let's see now What I want to do is have a so I'm gonna make a candy context Uh, that will look like let candy context Go create context And I'm gonna put Reese's in here And now I'm gonna do this dot context And we'll do static Context Nope, did that wrong Lowercase context uppercase type equals Candy context Create context is not defined Okay, cool. So I'm creating a candy context giving a default value of Reese's So that's the fallback value. So I don't need to admit provide a provider to get that value. Um And then we have a class component. It's using static context type equals candy context Which allows me to get that off of context. Very cool Now it is possible. Um, I think there is a If you really wanted to get multiple context in here, I think there's just something called Uh react adapt. I'm not saying this is sorry Michael scott redapped um Now I'm not saying this is a A great idea for what we need to do Man, I can't find it. I think it's called react. Oh adopts. Maybe React adopt Render props render props everywhere um, I think what this allows you to do is to um, you can you can like adopt you you can like compose. Yeah, you can compose Different contexts together, I believe. Um, thank you. Yep adopt took me a second there. Um You can compose different contexts together So there's an example of a theme context and user context And then it's just creating this this single context with the consumers of both of those It's possible. I don't know. I can't say for sure that you could use that to get around the restriction of one context per component I'll leave that as an exercise To to you Report back. Let me know what you found if if that interests you for me. Um, I think as long as I have hooks I'm just going to keep trying to use hooks because that This is Just unbelievably nice Um Okay, gotcha at I'm saying it combines multiple render children props Based components together. I see I see so not the full contexts So, um, looks like that wouldn't work. Um, so yeah, so I guess just use hooks because it seems like they uh, they are a winner here If you need multiple contexts, um Um, so let's see. So that's good.  I feel like my my brain is broken at this point. Um Oh, that's right. Okay.  What is it? Werther's? ridge Werther's original Yeah, Werther's Original do you want a Werther's original? Unexpected token and it's something Something wrong I always do Looks like it's not here though. Oh, gosh. Yeah, I totally screwed up grandma's All right, screw up that context down there. Um, let's see put this back Whoo, you've seen all the nasty code motion this morning Now this is interesting that didn't work. So we're gonna dive into why Oh, because I deleted it. I'm so tired I Haven't had coffee at either. Can you believe it? Can you believe it? Want a Werther's original? There we go. So, uh, so grandma's house. Um now has providers for Uh, the expletive context and the candy context So when we go to grandma's house on halloween, we can um You know, she'll say oh pumpkin and uh and say Wanna Werther's original Anyway, so that's a bunch of stuff with context. Um, the biggest my biggest takeaway today Is that um, sorry I'm moving around a lot is that um, this is cool that you can do this. Um, the one context is fairly limiting. Um, so I'm honestly I'm I'm thinking That I don't know unless I'm missing something and we can do more with this Um, I'm having a hard time thinking of a place in my apps that I would need only one context. Um Yeah Yeah, so I'm thinking in a lot of cases and also I'd be really hesitant to limit myself if I knew that there were options where I could use more contexts Gracefully in the future if they were provided to me So this is um, this is questionable for me Um, I I mean, I think it's great. I think that this um dysfunctionally needed to exist and it's great that you can now get these values off of context Um, however, I I imagine that I will be using this very infrequently because the other models Um allow me to kind of gracefully go into multiple contexts, which um has absolutely happened It's kind of the same reason, you know that I was saying that I don't really Write components with that let style anymore. Um because while it looks curious I almost always end up having to do more work in it and especially now that we have hooks And that's how I'll opt into kind of augmentation That is gonna be I'm I can't imagine ever using this let syntax because I want things to be easy to change I want to be able to opt into the change really quickly. Um without having as you saw I'm not very great at code motion. Um, sometimes I miss things That's like I'll do something and then it's an error and it takes me a couple minutes to get back on track So the less code motion the better for me And um, I feel like that's going to be the really the biggest value for this. Um, this use context um hook Is that it it Really reduces the code motion to barely anything. Uh, you just opt into the hook Um by uh, you know saying use context and then you use you use the values Um, and it's not like a fancy context thing that you're getting. You're just using those values Where you get them? So those are those are my thoughts after this, um, you know 45 minutes with context Looking at both the use context api and also this static context type api um So, yeah, that's uh, that's what I got. Um, obviously I have a little bit of work ahead of me I'm gonna need to update this document with some of the new context options Um, but yeah, uh, if you if you have questions about context, um, I'll probably be summarizing What we learned today into this document and um Yeah, so this was fun, uh, I guess before we go are there any questions um that you want me to answer Um before we're done or attempts to answer Um, I'll I'll give it a couple minutes. I'm just gonna kind of look over this And while I'm thinking about it, this is a good practice. Um Uh reacts looks like I already got some issues on here. Okay, so we're gonna create a new, um issue uh react gs.org Context No, that's legacy Okay, come on. I guess I found it in the blog. Maybe it's not maybe it's not documented there yet Static context. Okay, so let's see. So add Static context type example classes Um that example lives here um And then we'll go to hooks I'll go to the api reference. We'll go to use context Create a new issue add hooks use context example That lives here and summary of why Use context is preferable limited code motion multiple contexts Static, what is it? Static context type over render Okay, cool. Maybe myself a couple issues. So don't forget. Uh, so that's great. Um, let's see. So, um, Eric asks, can I use hooks in my project? Will the api change? I want to start using hooks in my project. Um Right now, so the official stance is that right now they're unstable I'm sure that it says that right at the top of the document Yeah, so this is an open rfc. They're calling it discussion. This is an alpha version So it is best to assume that they are unstable. I know that they're very well thought out. Um, however Um, I was able to or I was privy to see some of these These hooks before they got announced and I mean even up to the day like certain names We're changing so, um I guess it depends on your tolerance for risk. Obviously it is important to I'm kind of explore these things and no I Like use context, I imagine is going to be a safe one. I cannot imagine that that name is going to change Um, it's possible that you might get additional, um arguments past that like, you know, they might stack them in an array like they do with use state um It seems incredibly unlikely that use context is going to change. Um and I I imagine that one's going to be incredibly safe to use I would say use state is probably going to be a safe one to use effect seems to be the one that people have the most objection to Um, so that one seems the most risky in my mind Um, I mean, I guess the official answer is is that you can't assume that they're going to stay the same um But um, I think that use context is a pretty is going to be a pretty safe one Personally, uh, don't come after me. That doesn't if that doesn't seem to be true. Um, But I think that's going to be the safest one to use um Yeah, I think that's it. Cool. So, um, yeah, I made my issues and uh, and um, I don't see any questions That's a great question. Eric. Um, I would I mean it's really up to your tolerance and kind of how much work you're willing to put in now and um, you know at the risk that it might change and you have to change it back or change it to something else later Um, let's see. Um, yeah, that's it. So, um, again, uh, if you want to see more videos like this, um I'm gonna try maybe for the month of october to do them like pretty regularly like once a day I was thinking that every day they'll probably be shorter though. Um, every day maybe do like a, you know, build a custom hook Um, or maybe build a library of custom hooks, um, you know together And we can kind of talk out the process of each of those things Um, I don't know. So anyway, subscribe hit me up on twitter. Um at chantastic if you um, if you're interested in that You want to see more of these videos? Um, tell me what you'd like to see. Um I think tomorrow I I might brave it and I might do use reducer Admittedly, I don't know anything about reducers. Um, but um, it might be a short one And we'll just show you kind of like how it works. I'll like copy and paste a stoplight example or something Um And then the rest of these I think these are so likely to change I might just go real quick and uh use memo use callback and use ref Those are I think these are pretty likely to change. Um, anyway, uh, that's it. Yeah, so, uh, thanks for watching again Hit me up if you have any questions. Um, thanks for uh hanging with me in the chat and give me good feedback and help me It's fix some of those problems. Um, I look forward to doing this again. Uh, tomorrow. Hopefully I'll see you then Have a great halloween actually. Yeah, enjoy your halloween if you celebrate. Um, just enjoy Wednesday All right, see you later