Hey guys, it's MJ the Student's Actory and today I was going through the news when I came across this article that I thought you might find interesting. It says you can now get insurance for your offensive Facebook and Twitter ends in South Africa and for those of you who've been on my channel for a while, you know that back in 2015 we made that anonymous social media app and it caused a little bit of trouble. So I'm quite interested in social media and insurance. Especially insurance that covers the legal costs because we were sent some nasty legal letters. Fortunately that case was dropped and nothing really came of it. But let's focus in on this product which gives you, it's a liability product which they're calling SlipUp Social Liability Insurance Policy. So really, really cute name. I like that. What I don't like is that there's basically a million exclusions or they've excluded all the things that people normally find offensive. So anything on race, culture or religion is excluded. Which kind of like defeats the purpose of this product. It's like guys, we're going to sell you life insurance but if you die from the three main causes of death, that's excluded. I don't think anyone would ever buy that life insurance product. So it's strange that they've created a product and the three main risks they have left out. But we'll let that slide and we'll see what else this has got. They make cover up to $500,000, just less than $50,000. I don't know if that's enough to cover a full on legal case. I mean lawyers can get quite pricey. I mean they charge almost as much as us at trees. So I don't know if that's enough. 120 rent a year, that is quite low. And that's taking in their whole admin and expense costs and stuff. That means that the risk, like the actual risk premium of that I'm actually expecting to be very, very small. But let's actually go into their website. So in the article they talk about the SHA specialist. I think this would be, let's see, what would this be? Let's check our products. Maybe they've got the products written here. And let me actually just lower this a bit here. So this is their website. I've never heard of this company before. They do cyber. That's pretty cool. Social media liability. Let's see what they're talking about on this. So it's been out since October. It's been out since October last year, man. You're like reporting on it now. So yeah, let's see what, yeah, these are the exclusions. Acts of defamation or invasion of privacy. What's it called?  What is this thing basically covering you then for? If it's excluding the whole racial, cultural and religious ones. And now it's also excluding defamation. What does this thing actually cover you then? What? Does this cover you in case somebody offends you and you can get... Yeah, let's see what they say. There are numerous examples where people have found themselves in hot water in social media communities for saying something they believe to be innocent, which was taken up in the wrong way. Most social media users make statements that are not meant to cause any harm, but they can lead to complete public outrage, which can have devastating consequences for the individual. In light of this, we've launched a liability product through its broker that can purchase to cover legal fees and damages associated with defending themselves against allegations of privacy invasion or defamation of a third party via social media. Wait, wait, wait. For defending themselves against allegations of privacy invasions or defamation of a third party via social media. Okay? Exclusions. Any acts of defamation or defamation of privacy... Oh, with religious cultural racism. Yeah, we read about that. Defamation is related to your employment or profession. Any acts of defamation, getting rights to acts that could roast a prior of this. Defamation, any of your direct family. Oh, that's... Most of them are about ex-spouses and they've excluded that one. So what is this? Is this if you insult some random person on the internet because you can't insult your boss. You can't insult any of the major ones. You can't insult your family, specifically your ex-spouse. And what does this thing do? Situations where a claim is fraudulent or false. I don't... Hold on, do they actually say what this could... This product is aimed at individuals and that the social media insurance... What? This product is aimed at individuals and that the social media insurance, that doesn't sound right, can only be purchased directly from brokers selling this. I don't know. I don't see what does this policy cover. Maybe... I don't know, maybe I'm going to get... Because this... I don't... I really don't see what this thing would do. Oh, let's see if we play the video. Maybe the video will let us know. Your first of its kind and... Well, it is loud. I don't think you guys are hearing this. Be careful what you post, not everyone is a friend. The road to ruin is paved with thoughtless tweets.  Oh gosh, I'm on YouTube. Do you know what your kids are sharing? Gosh, this video is intense. And you guys, I don't think I'm getting the audio, but there's some heavy, heavy bass on it. Okay, so the ad's pretty cool. The ad is very, very cool. But what does it do? What does it do? Because if you say something...   Jimmy used to beat me or something like that. And then Jimmy gets all upset. He's like, that's not true. And then, you know, he sues for defamation. That's one of the biggest cases. But this is the case of the exclusions. I really, I really don't know who any third party that is not in this exclusion. I really don't know. Yeah, there's a fact sheet. Let's see what the fact sheet says. Let me... Because I really, I don't see what this does. I really don't see what the point of this product is. Yeah, are you on Facebook? Do you understand the legal? Yes, so it's about defamation, but it excludes all of the big ones. So I really don't get this product. I really don't understand why anyone would want to buy it. And that's probably why it's so cheap. It's so cheap because it, yeah. I don't know. Maybe you guys have got a better insight on this one. But I really don't understand this product because of all the exclusions. The exclusions, I mean, reading those other ones as well, it's like saying, like I say, it's like buying life insurance where the top three cases, the top main reasons of dying, those are excluded. And then reading those other things, it looks like the other top seven, or the other seven in the top 10 are also excluded. So I really don't get the point of this product. Anyway, let me know your thoughts. I think it could be an interesting product if they just designed it a bit better with the exclusions, especially around the ex-spouse stuff like that. I don't know. Hopefully one of them watch this YouTube video and can give us a message in the comment section explaining what exactly this covers or a user case that would do this because I really, really like to know how this product or what the vision is for it because the exclusions are killing the product. And that's a little bit, I'm a little bit worried about insurance in the sense that a lot of people buy insurance. They think they're covered. They don't really read the exclusions because insurance policy documents, they're so long. They buy this insurance. They sign it. They think they're covered. A court case comes up. They think they covered and then they go and claim and they get smacked with the exclusions. So I'm going to say this is not a good product. I don't know. I don't know. What are your guys' opinions? Please let me know. Anyway, thanks so much for watching and I'll let you know if I come across anything else that's interesting in the actuarial world and I'll make a video for it. Cheers, guys.


Hey guys real estate game here today. We're gonna be playing granny and roblox because they recently updated it about a day or two ago So let's check it out and see what the update on about. I'm dead. Oh man. Wait. Oh, yeah We're here with Roblox super boy man. Okay, so press play. Okay. Now. We spawned in nice Wait, I think this is a new map. Oh, no, this is a school map, right? My god, they got the red key right here Master key. Why can I grab it? It's not letting me grab it. There you go. What's going on there, man? Padlock key Why can't we grab it man? Do we have to run over it? Okay, press D No, okay, how do we escape from here master key? I never played this map It's like she went throughout this whole hallway already because everything's open I'm trying to hear some footsteps, but I don't hear anything get the cutting. I don't know where they're at I haven't played this map man. Let me just have a look around to see where the stuff is Okay, there's nothing here God My the only one left because if I am okay, there's somebody here. She has the cutting wires Come on. Let's go I'm gonna follow her because she has them and she has to go cut something, but oh there she goes. There you go, man I got the master key. Oh no granny's coming girl. Come on run this way. No come this way My god run Wait, she didn't get her. She's a good passer wait. What there's two of them There's twins. Oh my god. Is she trying to block me? Dude granny's coming from that way. I'm out of here. Oh the master key Okay, we can't use it yet. Oh, we did use it. Okay. We got that Okay, when you did oh no no no no no no no run like every sprint here. Oh My god, I think she heard that man. I'm I'm pretty sure she heard that Hopefully she did it Where is she at? My wings are out.  I mean no harm Granny I Just want to get out of here You old lady. Okay. She got the drill. What is it drilled for? Never seen the drill before Okay, we use it. Hey, that's the girl that's working with granny. Oh my god. Okay.  Look at Twitter. Hey Twitter What's up, buddy? Wait, is she dancing? Is the granny dancing man? I know why is she killing them? She's only killing me, but not them That's not fair man Look at me. We're just dying here. Yeah, no big problem man. Just leave me here on the floor My god. No, she's camping Come on. Help me pink girl Where's she going? Dude look at granny. She's just dancing it. She's making fun of us. That's not cool game over All right, man, well play again. Oh no, we have to leave and join right so we can start another game. Okay, it's a new round Hopefully we get a big granny. I like being granny. Wait, why does it have my granny picture right there? If I'm not even dressed as granny anymore What the cap I think that's a new map. I think that was part of the update Change map voting. How can we change the map vote? I guess Change the map change the map pick the new map We don't want the old map. Oh man. I guess we're gonna play the house Please let it be me. Please Please please No, come on. Yes Dude, yes, we got granny. No mercy robloxer boy. I'm gonna go after you man. I Showed low mercy when I'm granny Because granny takes over me See She killed me, but I did her so much your granny wake up in 15 seconds We're gonna end this round so quick Because I'm the best granny Even though we've only played this like once or twice But we still gonna do good at granny Come on There you go My god, why does her neck move all the money it come here, man, how do you place the traps? I forgot with the T for e Tier e. No, I forgot a police trap. Somebody tell me please Have a blade of forever I'm sorry, Stephie. Get smacked Okay, we got her Wait, she's knocked right. I don't think they can pick her up. I think they can but yeah Let's just live you're there. I don't think anybody's gonna get her come over here, man They run so slow My god Okay, they haven't gotten that yet All right, well we got her. Excuse me part of me. We just put you out of the way. That's pretty funny Okay, where's everybody else at the meats right there still? Okay, downstairs Hey Roblox super boy come here No, that boy's gone. Look at him. Come here. I want to tell you something man. Oh, man He just ran away once he saw me I'm pretty sure he's still gonna be coming in through that side. But yeah, I like his waiting Let's wait for him right here. What she got up. How did she get up? Oh, no, that's not her I thought it was that girl we got in the beginning You know coming after you right? And I'm gonna catch you Shortcut ah, she went straight down.  Come on granny at least fall down the stairs so we can move quicker How did that not get her? Oh, there you go. We got her in the wall We got you. I See you right there Can we smack her? I guess we smacked to the wall. Well that kind of helped out Okay, now let's head down here No, nobody here there. He is come over here man. You got mr. Get smacked Okay, now we need Roblox every boy. He's the last one. I wonder where he could be Okay, where'd that door open? Where did that door open? I Don't know where it opened that. Let's just hide in the locker Cuz he's carrying me No, he's not. Oh, there he is But how many people are left I hear a lot of footsteps I think it's just him right Where'd he go man? He's quick. Does he have like upgrade?  No Come over here. Stop Freddie No, he got away.  He just fell over. Oh, they're coming. They're coming. They're coming Okay, guys, we have to be sneaky boy. Yeah, I got him. No, he's gonna run in there. Are you kidding me? Can we smack him through here? Dude, it can't reach. It's like right there. Come on granny crouch. Only a granny could crowd So come over here Come here, man. Do you want to tell you something? I'll give you a cookie. Oh my god. I guess we can't get him Wait What what is that?  No Dude, he's so quick.  It's not fair man. I have to upgrade my granny Come on granny. You're faster than that Dude, I thought we had him that we were so close Okay, somebody just opened the locker. Oh, there they are Wait, it's two more people Come here. Come here boy. Come here boy. Get wrecked pinky. Excuse me. She's blocking the way though Wait, why is he going upstairs? Oh, he's gonna jump down Hopefully he has to move the thing out of the way Hopefully he has to move the thing out of the way because it'll give me time.  I don't know why you came up here should have ran across the other way He did have an option to come this way, which was the best option for him Okay, excuse me Where is he yet? Come here There's nobody else man. It's just Roblox super boy He was down here somewhere. Okay. He's not here anymore Where could he have gone? How do you set the traps? I've been trying this whole time You know I got out the door. He left He didn't escape the door so closed. I hear his footsteps. Oh I see him. I see you dude. I Saw his foot under he doesn't know that I saw his foot. Oh Wait, that's not wait. That's somebody else. That's not Roblox super boy Come here Well, she's trapped How to keep oh cuz people keep leaving and then some join that's why the more people keep getting it the game Okay So works in this last boy be a Like there's another guy. Are you kidding me? Hey, man, what's up? What are you doing at my house? What are you doing at my house, man? Huh? Tell me something Say something want to dance with me No, we can't dance right or whatever man get smacked. I Didn't even touch him with the smack or whatever You still got him somehow Okay, they didn't really do anything much to try to escape Didn't grab the meat the spider nothing. We still have the hammer up there Dude, where'd this guy go? He's the last one I need. He didn't get me. I know Matt. Why are you at?  I'm a talent. Oh, what? What happened? I'm guessing the round was over man. I Didn't even get him though, and he didn't even leave. He's still here Kick this out or something. I don't know man. Well, thank you guys for watching. Thank you guys for the amazing support This is granny and roblox I think this might be the best one as of yet because it is kind of like they've been updated like the spider part Which is pretty awesome. They keep it up to date All right, you guys what free new the channel make sure to subscribe and turn that notification bell on and I will See you guys next time


We've got all-star Taiwan Walker on the bump for the Mets in Pittsburgh looking to repeat what he did in the first half where he had a 2-5-0 ERA just been lights out this season and this one is brought to you by DraftKings. Download the DraftKings sportsbook app, use promo code Johnboy when you do to let him know that I sent you second pitch of the game for Taiwan and he gets the first out and that's beautiful but things get ugly right afterwards is that outside fastballs flared down the line into the corner and we're gonna get a stand up double whoo then next batter curveball takes that one down the right field line and the pirate score run and this kid is getting handed a broom from his dad and he says let's sweep him a dad says yeah I'm glad I brought this out this is gonna be fun next ball one ball two ball three ball four first and second now first pitch no go sends that back into the same corner that's gonna score one run that's gonna score a second run oh man base is clearing double does he step on second base I don't think he did but no one cared no one challenged it he was chatting with stroman earlier in this series now he's all pumped up next one ball one ball two ball three ball four polanco walks polanco steals second base ball one ball two ball three ball four uh oh base is loaded only one out here's where it gets really funky we get a swinging bunt down the line goes to just touch it and say that's foul umps says no that's fair now everyone's going around the bases as no one's playing the ball three run bunt single here's the view that the umpire had you can see the angle that he has it's kind of similar to the angle we have with this camera replay and I mean it starts foul it's coming fair and taiwan knows it's coming fair so he knows he's got to touch it before it's officially fair because as soon as he touches it that determines where it is fair foul and I have no idea man just no idea if you're a pirates fan you see it with one set of eyes if you're a match you see it with another as a unbiased third party I just have no idea I just think this camera angle doesn't tell us anything and the ump surely didn't have a view that he could pinpoint that but taiwan flips it in the air and I think it's too risky to do that you got to keep that in your glove kudos to the third base coach for waving everyone home reading the plate perfectly he waves him home he waves the next guy home taiwan goes to collect the ball by that time it's too late oh they score he's going to start yelling he said no fucking way man that's fucking horseshit that was fucking foul the umpire he doesn't want none of it but roas comes up and they lost in heartbreaking fashion the night before now this game starts off heartbreaking fashion so roas is all fired up but yeah I mean look at this view I got no idea you could show me another angle where that's touching white or you can show me another angle where there's the tiniest sliver of dirt in between who knows here's the other angle that taiwan had now he had a better angle than the ump it's still too risky to just flip off but managers all sorts of fired up he starts yelling and screaming at the ump maybe he's asking them to ask the third base ump who should have a better view they get chest to chest face to face he starts dipping and dodging we get the other ump now coming in he's going to play some defense good defense might I add now the is that the pitching coach he plays defense to the umps gather up and they say I think we got everything you know pretty good here I'm happy with it all right let's go tell him he says yeah no we're we're pretty happy with everything that we did you want to review it could the Mets have reviewed this I mean it's so inconclusive I guess you're not going to review it they leave taiwan in to face another batter which I mean at this point his head's got to be in such a different or such a bad place he walks that guy and now the Mets are down six nothing with two on in the first and the acting manager is going to come out and say oh you're all good we'll pick you right up and he's like all right yeah pick me up and then the Mets do pick them up they strand them they score seven themselves they win the game they don't get swept and everything kind of gets erased because that's a hell of a win by them man this one's brought to you by draft kings and I got a hot tip for you download the draft kings app use promo code John boy when you do go to the sportsbook and if you want to place a bet on the Mets on Sundays keep in mind that they have seven wins and seven losses on Sundays and the fact that it's a Sunday doesn't matter at all you should look further into who's pitching in the lineups and where they're playing and and all that other stuff don't solely bet because of the day of the week because they're they're exactly 500 on Sundays now


So, yes, as parts say, we're going to go back to the beginning now and we're going to think about children, and in particular we're going to think about how children develop a sense of emotional competence, how do they learn about emotions, and why is a study of emotions relevant, why should we care about emotions. So, way before children know what emotions are, they're already dealing with emotions from a very early age, from birth really, we're dealing with emotions, and gradually as children grow, when they go towards childhood and adolescence, they grow towards achieving hopefully a sense of emotional competence. So what is emotional competence?  So emotion expression is the ability to make others understand what you're feeling. So little babies do it through facial expressions and through vocalizations, such as crying. As children grow and they start talking, they start mentioning emotion words in their speech from about the age of 18 months. And second component of emotional competence is emotion regulation, which is the ability to manage your own emotions so that you can function successfully in any given situation.   As a child grows, they tend to regulate their emotions behaviorally and later on cognitively. Emotion regulation is a crucial skill for children, as research tell us, that those children who can regulate their emotions successfully are much better liked by the peers. And finally, emotion understanding. The ability to understand your own emotions and other people's emotions. We go generally through three developmental stages. So from three to five years of age, children learn to recognize facial expressions of emotions, and then also they learn to understand that external situations causes and provokes emotions. So for example, you tend, you're likely to be happy if it's your birthday. Between the ages of five and seven, we understand, we learn how to understand mentalistic emotions. So we understand that all the people might be feeling different things as the ones we're feeling. And we also learned that children, people can hide their true emotions. And finally, between the ages of seven and nine, children learn about reflective emotions. So they learn about ambivalent emotions. So we can have two conflicting emotions at the same time. So you might feel happy and sad at the same time. And they also learn about moral emotions, such as shame and guilt. So the question then is, how do children learn about emotions? How does a child, a little child, learn what crying means or what anger means or why the parents might be fighting? Because they are upset at each other. How do we learn about emotions? So we learn about emotions in the context of the family. So it is with your parents, with your siblings, that you learn how to deal with emotions. You learn to recognize your emotions and all the people's emotions. And you learn how to respond to those emotions. And later on as children grow, they learn about emotions with their peers, their teachers, the media. But of particular importance is mother-child conversations. So there is research saying that those mothers who mentioned more emotional words to their children have children who understand emotions better. But it is not only the frequency of emotions conversation which is important, it's also the quality. So the more explanations that you give your children about emotions, the better understanding of emotions they will have. So for example, it's not the same if I say to my child, I'm not going to play with you today because I'm sad. But if I tell my child, I'm not going to play with you today. I am sad because I had a problem at work. So the more explanations you give them, the much better they will get. And understanding of emotions. As you must be thinking now, why are emotions important? What should we care about emotions? So emotions, they play a crucial role in children's development of social competence. So emotional competence and social competence are very, very closely linked together. And also emotions play a crucial role in children's ability to learn, and especially within the school environment. So those children who are emotionally competent, they're more popular among the peers. They have more friends. Children like them better. This is because they understand what's going on. They understand what children are feeling, how should they respond to them? They know when to interact and not interact. They tend to mention more emotion words in their speech. And research tell us that children tend to like those children who mention more emotion words in their speech. They also display more prosocial behavior. They help others more. They kinder. And as a result, children like them better. And as a result, they make more friends. And they have lower levels of psychological problems. These children are well-adapted to their lives. They suit well in the peer group. And when you're suit well in your peer group, when you're happy, you're less likely to have psychological problems. When you know how to react and to confront problems, you're less likely to have psychological problems.  They have more problems in their social relations. They tend not to know what other children are feeling, how to respond to those feelings. And as a result, sometimes it happens that the peer group rejects them, so they get isolated. Or sometimes they get isolated by themselves. They just exclude themselves from the group because they really don't know how to interact in the group. And also research tell us that, for example, those children who show anger frequently, are less liked by the peers. Those children who create conflict often, are less liked by the peers. Children don't like, usually, of the children creating conflict. And they also have higher levels of psychological problems. So children with low emotional competence, they tend to display more eating disorders, anxiety disorders, depression. And in terms of learning and education, children who are emotionally competent, they're better able to adapt to a transition. From nursery to school, this is a huge gap for the children. So when you go from nursery to school, not only you're facing more difficult demands, but you also have one less on one support. So this is a huge step for children. So those children who are emotionally competent are better able to face this challenging situation. And as a result, they can do better than transition. And they tend to do better throughout their school lives than those children who struggle through this transition. And also children who are emotionally competent that show better academic performance across their school years. One reason for this is that these children, they're happier at school, they're more engaged, they go happily to school. And when you have no problem, when you're happy at school, you tend to focus better in your learning. You can learn better than if you're struggling in the playground, let's say, for example. And also these children, they tend to deal better with the stress that the school provokes. They have more confidence in their ability, so they tend to do better at school. And also there's another link showing that children who are emotionally competent, they tend to have a better relationship with their teachers. And research shows that those teachers who have a good relationship with, when a teacher has a good relationship with a student, they tend to demand more of that child. And the child wanting to please the teacher, they work harder, they do better. So the link between the teacher and child is also very important for children's learning. And in contrast, children who are not emotionally competent, they tend to have problems in high cognitive processes. So they have problems sometimes in their working memory, in their planning, they have problems understanding what the teacher is demanding of them, and as a result they do worse academically. And they also tend to have display behavioral problems, such as they tend to be excluded from the group, they might show antisocial behavior. Another range of these, so maybe hostility and aggression towards others. And so is there a way that we can improve emotional competence? So there have been some studies, some intervention programs designed to improve emotional competence. Most of them have been done in the States, and they deal with the skills, such as self-management and self-awareness, social awareness, relationship skills. So for example, these programs, they will get children engaged in mentoring programs, for example, all the children will mentor a little child, or they get children involved in charity work, or social community work to make them engage with the school, because the more the child is engaged within the school life, the better he tends to do academically. And they also tend, for example, in social understanding activities, they tend to use, if there's a conflict in the classroom between children, they tend to take those opportunities to discuss the emotions that those situations are provoking on the children, so they might discuss the emotions in when they read books, or when they watch a movie. And they do have good results in intervention programs, especially when they are long-term. So children, when they do these programs, they tend to show better attitudes towards school, the self and others. They show better academic achievement and they display less behavior problems. So there is a way in which we can improve children's emotional competence. And just, so in some, I think you will agree with me that emotions play a crucial role in children's social and emotional life. And I think it's very important to keep in mind that schools and parents, they should not only focus on the academic subjects that they learn at school, but we should focus in raising children who are emotionally and socially able, because by doing so, we're giving them the tools to be successful in life. And I'm gonna pass it on to Garron, who's gonna tell you about his amazing research that he does here. Oh, there's a question, yes. Anna, we have a question here. If a child misses out on emotional learning due to circumstance, for example, not attending school, is there a way to do this later in their lives? I think not attending school is not a problem really, because as we've seen, a family plays a crucial role. And if a child doesn't attend school, he will have friends in the neighborhood, he will have an extended family, he will have his family. So it is not a case that only the school can do it. We all, I mean, we all take a role in helping and raising children's social competence, all the children that we have around us. So now we say no, the school doesn't play, the school is not the only factor. It's an important factor, but not the only one.


Everybody forced here up to 2223 mosaic basketball fast break five bucks number one random teams With the random right here the silver packs will be included in this random So the name portion the top five are each going to get a silver pack Not a separate one just all together here. So good luck everybody Again 2223 mosaic basketball fast break five bucks number one seven times And again on this name portion the top five will each get a silver pack with their order one two three four five six and seven got roy m down to TJ w so the silver packs roy m gets two Yep, uh, then wing c Andrew a and alexandros Yep, and then alexandros All right, uh, so again, it was roy m down to TJ w and then we'll do the uh teams here one Two three four five six and seven Okay, see down to atlanta Thanks again for the fill everybody. I believe we are sold out for the night as well So i'll check that right before we start to rip here So get your spots for tomorrow get your spots for tomorrow for nattox live as well Roy m thunderseltix wing c Cavs andrew a rockets alexandros pelicans Robert s raptors nets Hayato with the blazers l2 t wolves matt s nicks robert s bulls matthew b spurs andrew m wizards orials See pacers jake w clipsons john w magic or you'll see nugs tj w pistons light m and mavericks jake m heat brandon s with the jazz andrew m kings ben h bucks victor o grizzlies ben h sixers peter m lakers robert h warriors john m hornets and tj with atlanta Yeah, you would do the pyt finest ua as well Pretty uh good pricing as well. I think so teams as cheap as like 15 bucks And then obviously you can get like psg man city rather than you know randoming for it So yeah, check out fanatics live guys app dot fanatics dot live Just a rapper top loading. That's uh, Sean chains Um Yeah, shanno chains Good luck y'all first look at fast break release today So gonna be discos pretty much all discos um Yeah, there'll be a rookie variation in here one auto and ten exclusive Um Like discos essentially we'll call them discos. I don't know if they call them that anymore, but that's what they are Oh my god jacus winston. Wow. Hello Garland's blue to 85 for the calves luka autos and fast break. I do not know 100 That's a that's a question for the checklist. You got disco vacelle shade on sharp Exactly paul Appreciate that buddy Rikki discos to party walker for the blazers And I know the pyt's for mosaic football went super fast there are There's a full case worth of pyt is listed for tomorrow There's a three boxers too So you can get those like more expensive teams at a cheaper cost because it's three boxers So we're looking for like houston or carolina or atlanta like that's a good way to do it Disco is zion and you can just buy up and then every single break And uh, there's the variation of shade on sharp There you go blazers nice one They just buy them all four What's that? Oh, it's an auto nick van exel autograph for the nuggets nick van exel Thanks vaughn. Yes luka does have fast break autos Him and jaden hardy here you're looking for monta morris disco There's a breakaway levine purple is a patrick williams for chicago It's a 50 Watson there's an ivy in there pj washington jr. Sohan Hey, what's up bolts? We're doing pretty well, dude. You hang you hanging in there over there The west coast of florida silver dany green palo kelly ubré so chettes Ricky disco is brice mcgowens for the hornets Let's go dolphin stuff.  It is true. We're sold out for the night everybody Thank you all very much Yeah, you do get one auto per box in this You get an auto a rookie variation and then it says 10 of the discos get like I think it's about two or three Would we get two numbered that time? 85 patch of williams for the bowls It's like two or three numbered And there's some other like base discos and stuff Kobe whites He throws more than just he throws an elbow. He also other curry, dude That is yeah, it's filthy because you can't you don't know where it's going because he's not like flowing He's throwing it, but it's just it is a knuckle curve, right? It's gotta gotta be because it's fastballs like 95 Yeah, rookie disco is fun techie. Oh, that's nasty.  Yeah, the knuckle curve is scary because like if it's not working for you You're gonna get crushed What if we got the knuckle curve moving then? Oh boy disco perto A math or a rookie variation pacers But making models y'all look at this guy This guy greg what make and model is the auto come on Okay, is that an auto? I thought it was a black last time that there was an auto It is an auto this time again, buddy healed number to 49 for the pacers west coast best coastal forda Disagree with that necessarily You need a better baseball team though discos a bonus Need a better need a better uh baseball teams You're just gonna time jake out all the time now I've never seen time out jake's actual account. Yeah, nice purple chat home grin. Okay. See rookie here It's a 50 great chat Yeah, bolt is close Peter something buddy healed.  I'm down I'm down Disco middleton a little season for everybody. Oh my god. Don't even bother I'll just go to 7 11 Get some beef jerky and some pringles Bennett the comathrin rookie disco for the pacers some gummy bears disco bullock mavericks Sohan let's keep it going here Purple in this pack cards. Come on cards purple is a manual quickly Number to 49 for the nicks red bear and pizza bear little caesars 7 oven has sushi. They're legally allowed to sell sushi The lowest I'll go is like public sushi disco Reeves Pretty sure you can dustin. Can you not rookie discos to bards with junior rockets? I know from the from the app. You can do it pretty easily I haven't tried that though on the desktop Disco david mitchell kings. I'm sure they're gonna keep updating and updating and updating so I'm sure that's common Got matherin on the variation pacers the second one of those What's new york pizza baby? Is that the one that lane got one time and it is terrible? Oh, it's right down. They just built one down the road. Oh kong wu hawks auto to 25 You go with lana. Yeah, lane will go to like a different one over them They're like right there. Yeah, they're literally on the way here.  Anthony Davis Lakers You go in there. I just get so many different things and I'm like, let me get a gatorade. Let me get a four pack of beer Let me get a some gummy bears They need to start putting they need to start putting baskets in 711, dude. I'm like Walking around the stores. Yeah get up to the counter. You want to bag this? Yes Disco van vleet.  I was egg bull bull for the magic Got all the food groups. I got a beer rhesus peanut butter cups Scratch tickets and uh And some beef jerky you got to get protein so beef jerky Disco de vante gram for the uh spurs You do what I had to go return something that I got on amazon And the place to return it was whole food. Yeah, they're like partners Ricky Disco, jaylen williams for the thunder. It was the fastest A lot of the whole foods they have lockers in I do when I used to live downtown Orlando I would get whole foods delivered so much because it's like two hour and it was like free grocery delivery if you spent like a certain amount and I was like Dude, like even if it's whole foods like you can find like they're not crazy expensive anymore Disco Lopez cash Like whole the public's closed the gap the whole foods real quick The the price is not that different. No So you're just getting like basic stuff.  Yeah, you're going to 7-eleven.  No, I'll have that sometime I'll get some cookies.  I don't I forget what it was They got their bags out there for you to buy got disco robin Lopez calves Jaden ivy Pistons very I try to bring my bags. Well, sometimes I just don't have them It's like a more basic whole food sprouts got their sumo bowls. It's more just like food There's not like a bunch of supplements and like Stuff there Jabari Walker or just sumo for the bowls there on the auto Yeah, hope his liver. Yep. It's so fast, dude Usually get there like an hour Let's go Devante Graham I know I moved back in that area.  That's about it purple Rui Number to 50 for the Lakers plus sometimes on the app. I'm like on like Amazon. They'll have like certain They'll have deals on certain things. I could use 48 eggs. Yeah 48 natural light 48 eggs Yeah 48 natty lights, please Did they even sell that at Whole Foods? Disco, Conley's Teebles Natty like They probably do they probably do What's so what's the places you can walk around with a beer while you shop? That's the good places right there And Dixie and like Mary's got it. Do they oh, yeah Silver O'Congoo for the Hawks get hammered there When there was a lucky's near me in Orlando I would literally go there just because I could get like a slice of pizza Eat that real quick and then get a beer and then walk around with that while I shop They had cup holders on the carts, dude. Yeah, it's the best Literal best idea of all time. It's like going to a mall where you can just walk around with a beer That's the best disco Highland Clippers Dude Vaughn. Yes. The restaurant I used to work at in Sedona was like half a mile from the Whole Foods in Sedona Oh my god. I went there when I was working doubles and I'd have like an hour and a half in between I wouldn't even get the restaurant food. I'm like, you know what?  We're in florida walk through metal tech Yeah, dude. We're in florida Hey, whatever happens in Miami, Orlando is never far behind Orlando is never far behind what's going on in Miami. That's just a turnpike drive away, baby Got an 8 in out of 85 for the sun's palo rookie base Disco nirkage blazers chat Holmgren base Shawnee and hammer one big C Yeah Rookie disco and Jordan go win for the wizards I was pretty shocked, too Disco tireshones grizzlies, I kind of want I like always want to go grocery shopping, you know Uh shade on sharp for the blazers Like, you know what? Kind of feel like going out and getting a beer, but I might have to grab some bags of chips. Yeah, boom Need some eggs or something boom We're good That is a dylan brooks gold auto to 10 for the grizzlies gold to 10 brooks auto for the grizz W grizz disco mpj nugs Montage is luka And guys app dot fanatics dot live you can sign up for fanatics live and join breaks and watch breaks all the good stuff purple joe engels That's magic legend right there to 50 for the bucks Disco at dia for the wizards You're gonna chat to him Got mosaic melton for the sixers Just make sure they know it's you. I wish I could hear what he says. He's gonna be happy Got disco coro calves All right, rookie disco hardy for the mavericks Disco brogdon for the celtics Doing for the break All right, so to 85 we had eighton Hardin davis patrick williams and garland To 40 or to 50 we had engels hachimora quickly chet holmgren and patrick williams Autos of the sunmu Okongwu 25 Buddy healed to 49 nick van exel And billen brooks gold to 10. All right y'all moving on to number two. Thank you very much


All right let's get this thing started. How the heck is everyone? I need more than that. Come on. How the heck is everybody? Thank you. Thank you. It makes me feel more comfortable. Thank you so much for coming to this humble little talk.  I'm feeling the feels right now. So in this talk we're gonna talk about JavaScript. I feel like I won a lottery being able to talk about JavaScript at a Ruby conference and I feel like it's one of those pieces of the real sack that's still just pretty terrible in general. And we have an opportunity to talk about how to make it a little bit better. But it's interesting at this particular conference there's actually been a lot of talk about JavaScript. I'm talking about like proper backpacks and like the zombie apocalypse and whether or not JavaScript should be in your zombie apocalypse proper backpack. Try to say that five times fast. And so I wanted to tell you just about how we solve the JavaScript problem or not how we solved it but how we're using the right view framework to help us write better Rails apps and better JavaScript on those Rails apps. My name is Michael Chan. Go by Chan Tastic on Twitter and there's a much younger happy version of me you might find there. So I work on an application called services. It was launched in 2006 and started on Rails 1.13. Services is an application for churches actually. It helps us help churches organize volunteers. There are timelines, services, all that kind of stuff. It's pretty cool and believe it or not there is actually a market for church software. So I mean it started in 2006 so our approach to JavaScript has kind of been yes, write it. And as you know after a little bit of time Sprinkles tend to turn into mountains. So we needed a way to better structure our JavaScript applications, right? So in 2012 when we were writing our second app we started to kind of look at the landscape and see what people were doing. So we looked at bigger Rails shops. We looked at Shopify and they were just starting to work on a project called BatmanJS. Has anyone in here used BatmanJS?  Yeah so anyway so we did this and it was really interesting. I mean it had all of the kind of markers of a 2012 JavaScript framework. It was two-way binding and you set up a whole bunch of observers to kind of track state and update things and whatnot. And so we built our application in two pieces. We had the API on one side and we had the client side app that customers actually interfaced with. Now this actually created a whole new host of problems for us, right? Because now we had two sets of controllers and two sets of models and two sets of validations and two routers. And like you don't realize how much you really enjoy form 4 until you don't have it anymore and it's like it's terrible. So really our app started to feel like this, right? We just had like two cakes like stacked on top of each other and like this was a terrible situation. Any change you know in the front-end app result didn't change in the back-end app and it's just no good. We sort of changed this app but I asked the product manager for that team I said okay do you have any particularly juicy cards where state was like just unbearable in our Batman app and was kind of solved in our when we moved it back to just rails. He said are you kidding like all of them? He then proceeded to send you like eight cards and eventually gave up and said okay just search for cards that have hard refresh in them. And so what this means is we had so we had parts of our app that were so unreliable that the best solution for our JavaScript application was just to say like oh if a user ever comes to this route it's probably not going to work let's just refresh it.  So as you can imagine or as you might know Shopify kind of abandoned Batman.js in 2014 we're kind of like left holding his hand like what do we do like and they've actually been pretty vocal against client-side MVC since then. So this is Toby the CEO there just talking about how ridiculous client-side is. I think he tweeted at some point about how the Batman project could cost them like a hundred thousand dollars or something like that just up in smoke. And as David mentioned yesterday or on Tuesday Batman Shopify has been really instrumental in kind of building out TurboLinks 3. So again we kind of followed Shopify's lead and as we built the rest of our apps or rebuilt some of our Batman apps we rebuilt them squarely on the rails path right and you know rails path sprinkles sjr turbo links and actually to be honest we kind of like it I know that's you know like controversial in here but like you know we're pretty into it. But we were still writing a lot of JavaScript there were a lot of places this is from pull request that was opened it's just a gift kind of like showing something where we have a lot of like transient state right like this isn't event that's this isn't an event that's going to get sent to the server and then respond with some you know server rendered JavaScript right like this is purely for the user this is just a user interaction it doesn't need to be handled by a rails controller. We also have pages that are like fully real-time so as I was saying we have services we have a service that plan helps you plan services and then this is kind of like a rundown for that and this happens in real time you have we use pusher to connect a ton of devices we have iOS devices and the person running the presentation can you know move through and that's gonna kind of change these items attracts how much time has gone by there's like a real-time chat thing it's like I mean it's pretty exciting it's like a JavaScript NBC's person's like a dream. So what we needed was we needed something that would actually scale from these small interactions that we needed it for to these big full-on pages of our applications where everything was real-time we found React to be instrumental in that and instrumental in us being able to stay on the rails path but then just use as little JavaScript as we needed to solve a job particularly this concept of react components so we'll talk about that a little bit more I have two goals for this talk so my first goal is that you'd be able to walk out of here and ship a react feature in an hour take you like five minutes to set up and then like you have 55 minutes to code so that's my goal if any of you accomplish it tell me and I'll like give you like a digital high-five and then my second goal is that you don't make the same mistakes that we did we made a ton of mistakes I mean as you can see we made a ton of mistakes in JavaScript and we made a ton of mistakes just porting our application logic to react so I don't want you to make the same mistakes that we did I'm gonna try to show you kind of the ideal path that we're using right now for all of our new development so let's do a react primer react is a JavaScript library by Facebook it's for creating user interfaces using components components do three things they render they receive props and they maintain state you you do pretty well to think about a react component as a partial with locals so let's say we have an audio service and we want to show the songs that are in this album right so this partial should make sense to anyone who's done rails for a day and so that'll render out something like this it'll render out an unlawful list of songs this particular list is 1989 by Taylor Swift yes thank you I may or may not have been able to create this list from my mind but so we're just gonna do the easiest steps we can right we're just gonna create a new partial file we'll just dump the whole thing in there and then we'll say render songs right easy so now if we really want this to be reusable right we can't say album songs here right we want to kind of abstract that a little bit and so we'll just say songs will require some type of local data and then our view we update this to say okay songs is gonna be album songs and so now if we want to show a list of Taylor Swift albums these are like I each of these albums has to have like at least 50 plays on my it seems like she's the best so we're just gonna iterate over the albums I'm gonna spit out a title and we're gonna use our partial again now these are different but because we're yet because we're sending songs in as locals it doesn't matter the partial doesn't care so you know this so let's do it in JavaScript now so instead of render partial we have a little helper called react component and instead of using songs which is going to look for the songs partial we would use the songs which is going to look for the songs component the window object yeah which one oh sorry yeah yeah so I'm gonna sorry this is the same partial code I'm just blocking parts of it out so all right so now we're gonna grab songs off of the wow these are terrible now thank you thank you for that so we use the songs component off the window object I mean instead of sending locals in we just send a hash in but it's the same thing we just say songs album songs and in react we call these props short for properties so props are immutable kind of if you were at you who does rust talk yesterday he talked about how rust has this concept of ownership and borrowing and how ownership is the right to destroy or modify something and when you pass something down as props like that component should not modify it destroy it like they just have the ability to view and use it so let's define our component is it can everyone see this now everything's looking good okay cool we have we have a songs variable say react create class it's a class with a render function okay we're gonna render out a on our list we're gonna grab the songs off of props and I'm gonna iterate over it with map so it's a little bit different than the ruby code above it and because we're gonna have blocks we're gonna actually call function for each of these for each of these items which is gonna take the song and spit it out as a list item song dot name all right let's go let's go over that one more time again just real quick so if songs it's react class has render function ul grab the songs off of props maps over them calls this function for each song and returns a list item with song name okay so let's practice so I had this idea of let's take a rails app that everyone here knows about we'll take the 15 minute blog and we'll add some real-time comments to it whoa okay so if you haven't seen the 15 minute blog this is the inverted version of the 15 minute log so there's a there's a block in there like this where we have posts we're gonna iterate over each comment and spit out the comment body with an HR because it's 2003 so let's go straight to straight to react so we'll create a comment it's react class the render function and that render function is going to return a deal with an HR in it and we're going to take our comment right off props and interpolate that out okay pretty simple so here in our view we're gonna use our react component helper we're gonna spit out the comment component and it's hard to say I should have chose a different example comment component and use the comment up body there right so our app goes from looking like this to looking like this the astute viewer will say those look exactly the same and they would be correct except now these two comments are being rendered in JavaScript so that's pretty cool so let's let's do the rest of this we're gonna take the whole block now we saw this with songs gonna create comments it's a react class the render function spits out a div takes all the comments maps over them runs this function for each we're gonna pull out the body of the comment and in react we have this cool syntax where we can use our comment like like an HTML tag right so we didn't have to do anything we just run that and we can send in a comment like we were with props as an HTML attribute so that's cool so we're just gonna send in the body cool take that out change this comment send all the comments down and now our app goes from looking like this looking like this the astute observers again say that looks exactly the same and you are correct except now the entire comment blocks block is rendered in JavaScript it's pretty cool so let's get to the real-time bit right so we have a comments component that renders out comments we have a comment component that renders out a single comment we're gonna create a comments container and what this is you can think about this kind of like a Rails controller right so this comments container it knows how to fetch comments and it knows which component to render when it has the comments it wants so again think about this kind of like a Rails controller this isn't special it's just kind of a convention this container convention so here we're gonna kind of ditch all the stuff that we had before we're rendering out the comments directly and we're going to now give so we're gonna use the content comments container and we're gonna give it a path now and say hey this is where you're gonna fetch comments this is where you're gonna fetch the JSON for comments this is that what that comments container looks like this first half is the fetching of comments we have our render function at the bottom and we have this get initial state so these are the API's that we're gonna talk about this is these are just the things that we haven't talked about yet these are for kind of managing state and whatnot these are the place where we actually interact with and set that state so let's let's dive into it so we have a comments container it returns a comments component and we're gonna start by just giving out comments of like an empty array right so this isn't so this is gonna render out nothing hey this is our first interact interaction with state as we have a special object for that and react and there's props and state it's the only two ways that you interact with data this is the second of those this is state so where props is immutable state is designed to change this container this comments container knows what state comments is in and it knows how to get new comments and how to set those comments so now we can use this this API called get initial state and this is just a way to kind of protect ourselves and when we're doing an asynchronous call to the first time we render render with an empty state at least not send undefined all over the place so again our we're getting our state from comment state all right so this is our function this is pretty simple we're actually I'm gonna take the comments path prop that we sent in and we're gonna fetch that JSON on six oh sorry that we passed in from that view on success we're gonna take that data and we're gonna use a special function called set state I'm gonna say hey the state is now is now the new data that we got back you can think about this set state as like a refresh a refresh button for your component okay it anytime you call this method with new state it's going to totally re-render anything that's down line of that tree so in that case it's going to render our components or our comments component and subsequently every component after that we have another hook here that we can use it's called component will mount and that's just an initializer function so when this components ready to go it's initialized we can run this function and here we're just gonna say hey get get all the comments and we want to do that every second so we're just gonna use polling for now I'll show you some more interesting examples later so now for the first time we actually see a change hopefully you can see it but as I add comments to the left screen they're gonna get loaded in the right screen this isn't particularly exciting but we didn't write a whole lot of code to get here and the code that we wrote is all in one place like it's totally isolated to those three component files we didn't have to change like you know a JavaScript file and then update our view to have like a dom node and all that kind of stuff we just it's all there this is totally isolated we can you know implement it totally differently you know in the future if we need it it's very cool so another cool thing about react I want to show you is it's very smart about the way that it does updates might be kind of hard to see but if you look at that list of comments you'll see that it's only doing an insert of the last comment that I added so the way this works is that react does re-render on on every set state so right here we're setting state with new comments it does re-render but it renders in memory and it just does a diff to say like hey how am I different than the dom and then it renders or it says okay we need to change these few things and then we'll be up to date but it doesn't like grab the whole thing out and then just do an insert of the whole common block this is also pretty cool for a lot of performance reasons so I showed you about like four things right there to actually manipulate states so what are a lot of we're the number of things that you need to know to be effective with react right off the bat well it's not too many I'll show you a couple of things that I've shown you already and those that we haven't so so first this is how you render out a component in your jobs group or in your Rails views this is how you send in props super easy so this is a greeting component we're gonna say hi Bob or something like that this is how you define a component we're just returning an h2 that says hi and we're interpolating the name out and there's a thing called prop types which is pretty cool where you can actually specify what type name should be which is really handy when you want to read for the for the reusability of these components it's really awesome because now in development if someone tries to use this greeting component and they're not quite sure how it works if they try to send in a number they're gonna get a really cool error like that or warning like this in the console and it's just gonna say hey you're trying to use greeting but you're sending in a number as name and we really need a string there's a method called get default props and this is kind of like set initial state or get initial state where you we can set initial value so if someone uses this component and they don't pass in a name we're just gonna say guess so we'll say hi guest and kind of think of this as like already equals in Ruby set state this is like the refresh button of your react components again initial state you saw this we can kind of set an initial state for our component component will amount this is where you would do things like get JSON this is as soon as the components ready we're gonna fire off something and you know get some new data and handle that data it also has a sibling called component will unmount and this is for things like if you are attaching event listeners so you would have component will amount component will unmount as this component goes in and out of you you'd attach a vent listener and then you would kind of remove that event listener clean up after yourself this works if you were using service and events with pusher we're using pusher pretty cool so it's about nine things you need to know like that's not a lot of things right a lot of things you guys live out there you gals alive out there everybody live out there this is nine things this is incredibly small amount of things that you need to know and we're not telling we're not telling it how to be smart about updates it's just doing that by itself we're not you're not grabbing dominoes and like changing them out and doing all this stuff we're saying hey we want this to render whatever the state is just like you know render that state you know just every time you render just you know do it the right way and then figure out on your own time how to you know insert in the most effective way so I want to show you a little example this is from our services live app that I was telling you about in the beginning so if you watch you can see the clock in the app looks so weird so you can see the clock and you can see on the right the only updates happening is is that like inner HTML which is really cool like I mean this whole like in memory this entire app is re-rendering and it's just sending in the it's just sending in the new time so this is we're getting you know second snapshots of this application here's the the chat application as I had comments you can look in the the table right there it's just going to insert those table roles rows so I want to talk shift a little bit to implementation so this is something we struggled with a lot there was at one point every single app that we had that used react was doing it a different way so I'm not going to tell you all five or six ways that we were doing it but I will tell you the way that we that we landed on the way that we feel is the most effective and the most honoring of rails in the asset pipeline so we use react rails gem this buys you a couple things it buys you that helper that I was telling you about the react component helper that we've been using in all these examples it's really smart it uses ujs to mount and unmount your components and it's really smart about turbo links so whether you use turbo links or don't use turbo links it's going to do the right thing it's very simple to set up you just add this gem you run this installer and installer is really pretty minimal all it does is really give you a components directory to you know to put all your components in it also gives us you this really cool generator so you just say react component greeting and I'll spit out this really cool you know all the code you need to render out a greeting it allows you it has a nice little syntax for prop types so if you know that you need a name and a string it'll render out this for you with the prop types in the top so if you haven't used rails assets this is incredibly cool project what it does is it works on bower and so it will here let's see it works on bower so in your gem file all you have to do is add this source block and then you add the you add these gems that you can find on the react rails assets site and so as you can see there's just a prefix that rails assets alts rails assets react router or whatever and what what rails assets does is it works on bower and it'll pull down the bower repository alt or react router or moment j s it'll pull that down and it will create an honest to goodness gem for you and return that to you so you have like a honest to goodness gem created from a bower JavaScript or CSS repository and this is super easy this is the easiest way that we found to be able to pull cool JavaScript libraries into our rails apps so the mistake we made was fighting the asset pipeline we worked a lot with trying to use browser fire webpack and all this kind of stuff and there are benefits there and I'd be happy to talk with you afterwards about what those are but we found that for the most part the easiest the easiest solution was the best solution for us so this is great it communicates well our teams are really happy with it let's talk about languages so some of you might have been watching and saying like okay I don't understand what this what this magic is happening the whole like HTML and JavaScript and so some of you might have heard the controversy around JSX and I don't really think this is a big big deal I like it I like seeing a JavaScript right here in my components it's nice that I don't have a separate file that's doing this at the end of the day it's no different than the way like ERB works or handlebars works it's just processing out it's preprocessing our JSX into function calls like this but we don't have to look at that we don't have to write that we just write it as if we were writing HTML all right so that's the JavaScript one react rails comes out of the box with support for coffee scripts so you just pen with coffee on the back so you lose a couple brackets and parentheses and whatnot the weird part is that you have to back tick escape out the JSX which isn't a huge problem if you really love coffee script that much we don't so we just don't use it it's also weird that you have to use this because this being back tech back tick escaped and you can't use at inside your component you can use it everywhere else but I'm sorry inside the template use it everywhere else but on inside the template so what we've really come to love is yes six there's a little flag you can set up in the react rails gem that will convert yes six into yes five for you so this is great now this has a little bit of a different syntax which is just fine you get used to it we really love it because it buys us all the things that we really love about coffee script but not copy script and we can just return this JSX right there so the first thing that's a little bit different is that you define things as a class so we define this as greeting class and it extends react components so before we were creating we were using create class to define our components here we're going to just extend the class react component also prop types get pulled out of of the class and they're used as a constructor property two things pretty simple one nice thing is that you can actually react is extremely smart I was telling you about the great warnings and errors that you can tie into so if you try to use an API that's strictly dedicated to the Kriac create class way of doing things when you try to do this as a class you're gonna get a warning and it's gonna say hey get initial state was defined on go comment a plain JavaScript class this is only supported for classes created using react create class did you mean to define a state property instead look this is an amazing error and it's like all just like switching from like JavaScript like ES6 and like look they're doing amazing like I don't even know how they like figure this out for me and they're telling me exactly what I need to do they're telling me where I need to solve this problem and what I'm doing wrong I need to do you can learn a thing or two about copywriting from this error this is amazing anyway so we go and oops we changed that to the right thing which I apparently don't have a slide for so early on we made the mistake of not embracing JSX we did a lot of somersaults to try to get around using JSX and just drawing out the functions ourselves and coffee script and whatnot and we found that the best path is just to embrace JSX you really start to love it after about like an hour and this is where Facebook and the react team is hiding a lot of the implementation details from you so the most painful updates that we've ever had are the ones where we were trying to use coffee script instead of JSX and something wasn't hidden from us because of that so use JSX it's awesome don't make the mistake we did use JSX is really great and I'm starting to see more and more documentation and react I'm using ESX I think it's the way way moving forward I a lot of people who are using react really embrace ESX so I want to leave you this morning with just this concept of only as much JavaScript as you need the idea here is stick to the Rails path as much as you can and just just do the minimal amount of JavaScript you need and I feel like react helps you there so this is our oh man my cakes look all funky now so this is your Rails app inverted this is your Rails app with sprinkles and this is your Rails app after two years of sprinkles this is your Rails app using a client-side NBC and this is what I imagined TurboLinks 3 to be like where you're actually using the sprinkles to kind of like pin down the Ruby views on top of the cake but I don't know and this is the party that we're having with react JS at Planning Center thanks so much