Na jibu suwa? Wei sana. Without further ado, bin simbana tuka uniside kuchwa wacha. Yes. This is coming from the... This introduction, I hope I do it well guys. I really hope I do it well. So, this baby girl, Ash, she is not only beautiful, but she is as kind as she is pretty. If you don't know, I knew her before I came to Y254. That is the total of how many? Almost seven? Yes. Mambo si matatu. You don't want to be happy? Adi, I'm a sliver.  Help me just introduce or welcome the lovely, lovely Mutonitiyongo. She is an actor. She is a writer. She is a vlogger now. She is just everything. She's a powerhouse. She's an entrepreneur.  You're just... Na una chizangachini though, uta ni ambia yo story badahe, but yes, haia. Fomali, please introduce yourself to the people. Although I'm sure, ni me fanya, ni me fanya kazi. No. Mo jayangu badahe. Welcome Adi. Thank you so much. First of all, ni na kabash. Ojo ni me kapa ibi ni kwa wait. Ni kwa ito bia wa ni kwa sherehe. Thank you so much, Val. Ni kwa ni anya utu mejwana from Wayvark. Wayvark. Mkitaka story tu ta futes, tu ta pa au ex, ni ni ni tu ta pa story. My name is Mutonitiyongo.  Yes. and I'm a mom. Okay, what's honey what's your story? Yes. What you talk about in the pen's story, this girl, so let's get me join her. Una chwa ma? I see that. This one. An a post picture two years ago, alena photoshoot fulaniin happy kwa na kasmat. So I came here and he was a captioner me jikro up hardee up alafana galee a cini. So as soon as he came here he was like, make up, buy a cini. Na na ni meenda shole, alaful anatupatia tu akaka kasa-spen So caption niya ke li kwa hey baby Siti niya kina nani Ata siti Hi also Uki ena kwa instagram ya ki utona postia 2 years ago Uki se mahi Madam Juzi ame ame toa pitchaful I li kwa hey baby Like 2 years later deutla realize Uyu Uli tiza aje tini And I have a whatsapp number siya titi na nabano skona juo Mi kaze wuni kula tulim How did you play us like that? I didn't play anyone Okay even before baby I've always been a private person You know that Val I've always been a private person I feel like there is a life that you should keep for yourself As much as you're a public figure Amo otona kujua Jike kwa maisha kako You know like babies I feel like babies are very you know personal Ya But sitya wu baya Hey how did you like your own TV Like nili pigezo Stop lakini wu stana Na na post bad of Siya tia li atya kwa post Actually nothing stopped I was still in school I was still acting on TV Wow Nothing stopped Ni yo 2 day nili nda ho siya yalafu You know Yalafu ya Siya fkos kuna iso man Karikavari Wow Nothing stopped Ya you're a powerhouse Hey Kwe mpeze nginibwana Oh Nisi sitya Una eza abo You find after To tell us what came first Okay Mimi when I met you We met at the theatre Ya But then when I went to the theatre So you came to join I want to join I want to join She's such a good actor For shame So from that I think you were still Simultaneously doing TV And also writing Kuna yengeli kuja fas Is there one that connected you to the other Or you just kind of fell in love With the creative industry No no I feel like the creative industry Is very much connected I keep saying I've never been jobless Is a high school location Kenda audition And I pass And I can do rehearsals Theatre Okay sorry Set books Mi theatre bad Travelling theatre So that's how I started And then up in between I started writing I started writing For a show that was called Santa Lala on Citizen And then even 2 Saina and KBC Ivo Zina kwa ngazimemari Creative industry Meshkanatu How does it work Exactly Nakunako Cast Type cast For scripting They see this And they see Credits written by And they give you a call Or do you have to audition All over again Um I think I would call it an audition It's an interview Kus akuna wene producer Neza trustun Neza andika Kus there are different types of writing So of course you go for an interview Yeah Alafu You write Akuna kufunga macho SMSU na nijoa broi Industrial Okay akufunga macho Namibia ma bad script writer Ono na sasa ninda Saidia kendo ina trauma Yeah But you have to be good Yeah People think that When you've been around You've been around on TV For so many shows You've been also on vernacular shows And atas kuna The law in my mother Iyondon Na nangai na nibambat Venyo lukuna post Sana-sana Is it Just easy for you Because people know your face Or again Do you have to go through the process Just like writing Achatun kuku Umasama how many years Seven Seven That's when we started theater Sindo Before that Niko bado nishahanza So trust me It's a process Akunanga suju iyo uku julika Iku julikana You have to build your brand You have to build your name People have to trust your brand first Iku Iyo story aku juana ina ishanga Like una julikana Takuchuku aval ju na kujua But maybe you cannot deliver Maybe you haven't worked hard For your brand So uta drop to The faster you rise The harder you go Yes Alright tell us Something about what you doing On KBC juo Nta ulezwa nisi pa ulezwa KBC I write for not one But two shows A show called Stringed And a show called Next Mail Yes Mili kuanga featured Kwa stringed Uli kuwa nani For So ali niangaliwa kona nakamuizi But that's not the point Actually in this one Yeah Yes Onokubuka karaksha ni miyako Actually atasikuwa nani Uli kuwa tu ekstras Uli biya nani Nili kuwa ekstras Nili ambiwa Masi anaka Nami tokatua Uli kuwa timu Onakamuizi kuja Wow Uli kuwa nani biya karaksha No It was a while back It was a while back We'll make return But neza sema I was an actor Kwanza na sayu mongezande Yes Timu tu Nasi seme Jesus Black Jesus Timu tu wa doksot Atstongia na yukonje I'm really glad you asked that So there's the difference between writing and casting Yeah Where we come right away niyangaliwa seme Iven ya iskript niyandavala nakakufa niyakaz Actually most of the time it works better when I know how you look and what you can do It works better But sayu juwa wa sayu Wote wa yukoskript So sometimes trust head yana na producer Sometimes I have someone in mind Akiyanda kuwa timu maybe Atoshimboga We see things differently So most of the times writers would want to work with karaktenya na juwa vizuri na najoneza deliver Yeah So they kinda work hand in hand Okay Previous guest at Gotomba is Alice Omeya I'm not quite sure what you study for but kwa industry entertainment being created If you had the option go to a desk job like 8 to 5 or 9 to 5 Would you opt that I've actually done that 8 to 5 Waja Ya I laugh Nipo ku jujuwa Expression Self-awareness is very important I used to love it because again it wasn't far from the creative industry but the fact that I'm there 8 to 5 first of all wana juwa miyam dosupo who have a million things to do minitafanyi minitafanyi So 8 to 5 kuwa e desk na feel So nge kwa na fanya Actually before I left I started feeling na inakujangaivi nge kwa na mkasu bui na feel Ten So nile okay Sometimes I would even text and say I have a personal issue I came for my boss as you name it Personal what Inetangwa I used to have a word Nene siziku uli zaninini It's personal Personal emergency ama Ya I used to have that Kwa nge kwa na feel Me don't want to do this 8 to 5 no Nene za takaku kamin 2 hours ni talke then ni rode but it was a struggle for me and that's when I realized as much as I lost the job I didn't really want it because I wanted to do I wanted to spread my own needs Ya Have you ever felt It's just takiku se ma insecure but anxious a little bit Like where's my next E kazi meisha okay E shoi meisha Meskata mati to mekata discontinued Now at Tananziawa pite na Am I just saying kwa swim for you No no no I used to feel that before I discovered I am a super woman I can do status day tisha Very nice No I used to I used to wait for jobs I used to wait for jobs It was bad But the main scare Wasa ni waneza go through depression Okay siku go through depression But it's a very very bad space But I realized I actually thrive in doing many things I E wiki niki wana ki tumoja We can't so hard for me Niki wana ki tumoja it's hard for me I do so many things and I love it I'm too choka but Ya so I used to wait I used to wait So now how did you How do you stop waiting Wanyana kartu sayana Sama Sericale said ya Ekonomi You Okay vahal ukonami go umbeli Umbeli And a brain Uno na ibrain Okay let me start with YouTube Aki do you know how much you can do na YouTube Mi era naju I haven't done much I haven't done enough But naji Thanks Nimaji Nimaji na siyo yote niajibu You see advert but niajibu Niku anase ma Migu Miku ano So you have this thing called a brain But then you can do so much And our problem is We overthink Uno na vahal na Anaku kujanga pasubuia na hosusho Una nzaku kiria kaisu Demaki God am en bless But adjui what you went through with that But just start Kuna simu skuiz just record yourself Start Kuna umse na kwangatikto So I think an appeal to the kikuiz more Aungi aki kikuizana But anami anza kakitu You know how you laugh at our problems So come and juice it Na kumkate miwa ma shuja de Kuna kitu anase ma tii Sa inki kiku ya liku anase ma Tu mii yo fahu Tawi jai jenga nyumba Wendyo shuja Shuja umusuali kwa kemabi You see it's so funny But it's the truth You know the truth is very funny Umse sa ii zile brand akonazo So you see alianza kakitu Na naji reko dingi tuivi Selfi kwa gari Ana kwangatuna position moja gari So you know you have so much around you Can do And make something out of it So don't just wait It's usually say Pesa ni all about value True So it's all about the money Umongi ya wezmi Muka umgoza mi shikanishi hiyo Dusha shikanishi Dusha shikanishi ha Muna ukwa hiwi na na ni flosi Yundoni mi changamka Okay And there is so much power in starting something Start Imagine Isi kwa tizi na kwangakumon But when you think about it They really help Start with fear Akunanga ki tutayansu ukwa Confid, ah mi na weza 4 o mi ni post Akunanga ki tukayo Ukiyona ukwa ibo It's the truth Ukiyona ukwa comfortable Shida Imagine just Just stretch Just start with fear Enda enda But there is song anayo Kuna malu tafika Ufili ya I get it I feel like half the struggle is just starting Ukshanza Things kind of just start falling into place And then There is always a moment where Usha So you start hosting I am still using your example You start hosting this show And then unafkamalu Nanzaku feel Okay what else Usha kwa gwiji Una nasa yundos Una ni yuna So it's Ima tkwa complaints Even atkwa kugro Uzi ni manisha Like kumaba bea Just in case Usha kwa No but So another challenge Challenges na kwangapwa When you think about it positively Vengetu Sijini ja na ma love Nma kwa nas kumarefu by the way Alafu iwo two thoughts Nma sama As na just Very uncomfortable Samo ya ni meka ni ki sama I got this Na I'm feeling like Alafu Jaka Vin simbata kwangi DJ Residentu apa Tu mekutena leo asha nipati Aidea And we're going to hook up after this Just boom Wait to pay boom Ngetu Just See us after this by the way I'm so excited Thank you Okay tell us about your YouTube channel And where do you get these celebrities from Okay My YouTube channel is called Modoni Fiyongo First of all let me start Anna before we get to YouTube Let me na kwangamodoni fiyongo LinkedIn everywhere My Facebook is hacked It has been hacked for the last two weeks Aki wa chatrinu ungeleisha ma fans Uteni pechan No ungeleisha Aki wa na danimindo na postizo Ni seime Siyo Mimi Na klosi kaya metu kakusimata Exact same me Anata ma ni Mimi No no Wait Wait Nga klosi kaya metu kakusimata The people who are using his face His images Alapua na ita adult movies Pujeni mindi na nga ita What's happening Oh my God It's a long story But I really hope I get it back Ni me lose followers Ni li kwa 51k Say ni kwa 48k Imagine 3,000 people Wa me unfollow Which I understand Because imagine sa zoto na ingiuna Pa tamodoni fiyongo And never make a ring And attack her So Aki I've been hurt I'm working on it Ni me fuka point na se Actually Iki enda yende But the fact that my face is there Ezi ni na tumiaizi vitu Ah mi yuki tu na nilbo So ni kifunga pagingine Isi po rudi Please follow Aki Duma na atu akuna kwa gana backup account Kuna kwa kitu kaya yo First of all before me fukishio 51k Ni li kwa how long Consistency just Anyway back to my YouTube So I have a YouTube channel Called Modoni Fiyongo I haven't really Say that this is what I do Okay I'll show you my day I'll show you my week But my biggest show Is called Know Your Superstar Wato me kwa kinulza Kwanuna hostu ma superstar It's because Celebrities have so many stories And we have so many expectations We have so many We have so many stories It's good to know someone's story first And that is what Because I've been an actor before And I'm an actor, I'm in the limelight So I really understand People need to know your story For someone to understand you So your show siya tiniyama Superstar peke To tender to evoke unengine na kamiya Everyone So What else Yondo show niko na yosai YouTube Okay I like that you're diverse Wato kikwana kwa TV Especially when you have a role That may be so many bad girl Bad girl amma tuku kuna kitu Ineza kasi tisha audience They associate that with you But this is behind our YouTube This is what Modoni Fiyongo really is like I actually changed that narrative When I did the low in my mother It's my show Mmmhmm Hey you manza wala wa story Kenyashali kwa pasindo So we produced the show The low in my mother And I did a very I'm not a housewife Okay atu jawana But wala watu anasemanga I want a stela in my life Kuz na itwa stela kwa yosho Baka nga nga lea nisemi Wa And yeah I did it Which was very different from What I've been doing before I used to fight I used to Nili kwa na characters by and by So it was a Kumataen kuwa kwa stage Ali nishawti ani ka lea Wacha wala wala wala wala wala wala wala Wacha wala wala wala wala I think the first one Nice director Oh Ali nishawti ani ka lea But sorry It was hard kwa za kulea Lafutu na jawana But hey I think I do it easily Hiyambesa ini kwa badga Okay Mkaile Like Sunona itwa Say you want to cry So actually it was a challenge for me To be nice, to be proper To be Yeah Wow Thank you Last question for you I'm sorry Admin I told you this one It's just very close to my heart And I'm so glad I got to interview you Feel like I'm giving back to you Hey Hey How the last version of you Was not apparent So how is it being apparent And still being a superwoman All at the same time Being an entrepreneur Being in the creative space How is it? Has anything Have you slowed down?  N pastuto, sa pani, me ni kuwa na sahani Di lengbu U mtoto na kupiahanga But it's true him toha nakuja na blessingiki nu Kus e mi sikoile place Lemi tell you, when I got a baby in one years time Nili kwa nishansi ksya a whole business Kitu nili kwa nishana kwa kikata kafungu abya shara I did so much in one year. That is just one. And I was still in school. Desta wna jwa skulfi sim chezo. So yeah, it hasn't been easy. But I thank God. It's time guys. It's time. I want her to finish one more time. Just her handles musili chape. Your handles please. But then if you want, everywhere. Facebook met me. How do you... I'm a hakiwa. Don't listen to those people who are doing those things. But don't follow the links. The hakiwa pair. Okina sherehe or you go out. How do you keep safe? Ok, first of all... First of all, know your limit. Kuna yopat, before towingi yoshi rehe. Oneeza kunyua, glasses ngapizawain. Just know your limit. Second, who are you hanging around with? So be very safe. Have the right people. Know your limit. And also be very observant. Yes, be very observant. Ah yes, rewind the subtitles. Give me like three for comments on this. Yes, so whatever they are saying, wukundani. We have Michael Truman and Asama Chindin again from Naibasha. The thing I usually do to keep safe is to talk out on a date. An advice girlfriend ya kia put on flat. I'll explain instead of heels. In case of emergency. Biyo. An eza toka mbiyo. Roger Simia can see you from Kitale, the King Dantez I can also see you. Sam kush na kuru anasema presenter salimika sana. To salimika see what the buzz. Attawez, presenter YouTube. Salamu. Man James. A long time I'm a James. Thank you for watching. Anasema mvua kidogo lakini. Akorada. Thank you. Thank you. Anasema mvua kidogo lakini. Akorada. Wizjo pia na muwona. Rapi. Okay. Meka na nini. E ya kwen naivi na pia kwen naivi. Anasema also Tindin. All the way from Moranga. All right. Thank you. Your handokta? Atma seikta. And she had mentioned about kwingia matatu. So wukini ona kwa matatu jas nwa mkapulin. Me too. We all know each other. A magni e tu.  Exactly. Ibemba. Di je vincimba kwa West 1 Kila Mali. Ya bigger to everyone muwanyame kwa na mimi. Me de yestakum. Natu na sumakama na tukapatase reha 20 kwa pegia kwa tukwate. Yeah. So that we get all that information. Yeah. All right. Thank you so very much. One more thing by theis to the Oxtasif. Theis to tell me, na nusgring up kabla ni juevi adult juice na ina ni niyaji. Hier Ole Ok Practice Practice Days... Days of experience Sayo kwa kivi? Kwa kivi, yaa Baa kwa kivi, kwa kivi, m�i kwa, kivi? Hei Ok, we'll clearly have this conversation later guys. Thank you for bringing us, Thank you for allowing us into your space. Have a wonderful weekend. Remember it began here. Hashtag social, Friday, We'll be bringing your weekend on a week. Deminator of Val and I am bidding you a very very very happy Friday and a good weekend. But stay here, channel White Five 4. DJ


What's up, everybody? I'm EvilRabbit. We're here on a set of Corsa to talk a little bit about Modeling of cars. I know a lot of you guys have been asking how to build your own set of Corsa cars and stuff like that So we're gonna get into some of the basics and start building a new drift car. We are staring at a v8 powered 350z, but that's for another episode But we're gonna get into building a car and stuff like that modeling it how I do it things I do to change the cars up to make it my own and things of that nature So make sure you follow me on all social media all of which are found in the description box below So the biggest thing we need to do first and foremost is pick a car that we're going to do So I do like BMWs since you guys know I work for BMW So I figured why not do the M4 GTS here in a set of Corsa So this is a model that was done by somebody and we downloaded it It is a very clean model. I love the halos and of course the lights and everything work Of course, we're gonna have to edit their brake lights and things of that nature and the interior is very Plain now the GTS does have the factory cage in there So we're gonna be adding some bars to this cage I would delete the big foam padding to make it a full blown out drift car so When we need to get a car out of a set of Corsa is the first step getting out of a set of Corsa and into our modeling software so That is done by right here in The CM showroom you have unpacked can five now if you don't have unpacked can five that's because you don't have Developer mode activated on your content manager Which to get developer mode is simple and very easy basically you go into settings You go into content manager and go into general and then right here where you see app version Click on that a whole bunch of times I've already done it So won't do anything you click on it a whole bunch of times and a little message will pop up that says activate developer mode I do is click activate developer mode and then install all the plugins that it'll ask you to install It'll have all the plugins here They'll show up under the little plugins menu and you will install all of them fbx converter And all this stuff and this is all activated with developer mode. So it does look like I have a new Update on that but that's not what we're working on So once you have developer mode active and you go into Content and go in the cars find the car you want click see him showroom to pull it up You can take a look at it do what you want with it We're gonna have to do some Modifications on it because well, you know, we are gonna make this a full blown-out drift car So we go click unpack can five it's gonna take a minute depending on the car file depending on your processor Depending on you know what you have and then we will get the fbx files and the texture folder with all the textures That are part of the car with a license plate the interiors the brake rotors and every knitting Nitty-gritty stuff now that stuff's gonna come in to play a little bit later So basically once you get the fbx when I come up here, we're gonna close our content manager I would recommend creating a folder. I have a folder on my desktop. That's his ac mods We are not gonna work with those because we've already been working with that Got the dragon in the background dragon center so I Created a folder to the ac mods take the texture folder and the fbx and the 3d object File that you got from exporting the kn5 and Drag it over into the ace into a folder or whatever I have my ac mods folder and now they're here I have my physics for my 14 and I got some different tire Different tire textures and things of that nature in here as well if I want to rock some falcon tires on the cars And next and tires things I've pulled off of other cars for texture files so now We have to get into our design studio which I use 3ds max so we're gonna open up 3ds max and we're going to import the Fbx file into 3ds max and pull up the model and then start doing some tweaking and things of that nature But 3ds max does take a little bit of time to load So be patient and if you don't have 3ds max you can use other tools, but I'm just showing you what I use so Once 3ds max opens up. There's a couple major things that you have to be very crucial to get and make sure That you do when you're importing files and such because otherwise you'll have like an RC car or something So we're gonna maximize this well. We'll use a normal perspective use right now. So you go in the file Go into import go into that folder you have and you should have an fbx file Click on the M4 click open You're gonna want to do file content is add you don't want to do update or animate or you just want to click add It's gonna import all of the stuff for 440 more elements and all those kind of things you don't need to worry about anything else the biggest thing right here is under advanced options Unit scale the scale factor. You got to make sure it's one So if you see if I scroll through this it changes no matter what it is whether it's meters decimals centimeters millimeters wherever Wherever that number goes to 1.0 Make sure you import it as a 1.0 because otherwise like I said you'll have a little RC car or a massive giant monster car on the track so Click okay It's gonna import everything so now you can see we have a different views top frame wire frame and stuff I love working in the default shading the perspective one, so I'm just gonna maximize that so here is our Car in our design studio now. We got a bunch of stuff out here These are just different camera flying cameras and things that were modified into the car We're not gonna mess with anything like that right now So what I would recommend doing first and foremost to start is get rid of all these boxes right now So these boxes if you go into tools and you go into scene Explorer You'll see every bit in piece of this car You'll see every little arrow door and the door opens up to poly meshes and all kinds of things which could get very confusing So if you're first starting off and you want to do basic stuff like change the wheels and do little bits and things That's what we're here to do today. I could get into full-blown Building a whole model whole shell and texturing and all that stuff But that takes a long time and I just want to give you guys a basics because I know you guys want to know basics on how to change wheels and do interior work and stuff like I do on My cars that I built so what we're gonna do is we're gonna get rid of all of these blue boxes We're gonna highlight all the blue boxes. We're gonna right-click and we're gonna go to Hide selected get rid of those boxes get rid of all these boxes hide selected hide selected And we can get rid of all the boxes we can bring them back, but we don't need them right now So now we have a clean working Basically platform so If you guys notice a lot of my drift cars don't have windows It's because I don't like to have the windows in the cars because when you are drifting you have to close your windows Anyways, or have them open for purposes of that So if I click on the window and I click delete it's gonna delete the outer layer of the window It's also gonna delete the outer layer of the mirror So I don't want to do that. I Mean, I guess I could delete the outer layer of the mirror But for sake of that if there's things that are combined that you want to delete one part You go up into this little elements area Edible mesh and you can click on elements and I can click on just the mirror or window And I can delete just the window portion Now if we go back this windows by itself, we're gonna click delete and now we can click delete again Now we have no window in This car so we're gonna do the same thing for the other side because I don't like having front windows in my cars Just because like I said when you're on a drift track or in a real car you have to have your windows down So we have the windows down so the the M4 GTS has come with some pretty cool bucket seats, but of course, you know, we're gonna change those up We're gonna be thrown in some NRG seats and we're gonna be changing up the interior We're gonna be adding a manual shifter an actual handbrake We're gonna be getting rid of this wheel, which I think we can get rid of the outer scale We can get rid of pretty much the whole wheel so That's how you just go in deleting simple objects and you can do the same thing with say your wheels So we can click on our wheel We can go down here where we have left front wheel if we max that is the box for the wheel Which you're gonna need to keep because you got to keep everything in that box because that's the scale box of the car This is what the game knows is the wheel anything in here in this wheel box will rotate like a wheel and Suspension wise as well anything. It's in the suspension box Will also turn as like a hub and stuff of that nature So these are all the boxes and stuff that the game needs to know for the data for a set of courses That's why getting a car pulling it out and doing basic stuff like this is the start of it Now I don't really like the wing too much on the gts But I think we're gonna leave it for sake and purposes now We can also delete the m4 which would also delete that portion So we would do the same Simple thing of doing elements and then we can highlight this and we can get rid of that stuff We're actually not gonna get rid of the m4 logo. We are gonna get rid of this license plate though Just click on it click delete simple as that. It's gone. No more license plate and We'll leave everything else It is we can delete the hood and delete there and it doesn't really have a good model of an engine in there So we can actually delete that and put an engine in there if we wanted to that's a little more intense We're gonna control a Z that to get our stuff back So basically we got a car from the game into our modeling studio. We deleted a couple basic objects So we are gonna be switching the wheels on this car and putting a full cage in there I think we can delete this padding. Yep. Yep, there's a full roll bar under there We can delete the foam little strips there now if we want to be able to see through this We can click on it and do the same thing we did with the box. It's hide selected hide selected There's many layers apparently there we go now we have Also looking what is all that is that the silver wire ties? There's our silver wire ties, so we're gonna get rid of those wire ties because we don't need those I do love the look of the interior of this car. It looks like it has almost like a fuel bottle in there or supposed to be a fire extinguisher We're gonna probably put a real fire extinguisher in there. So We are slowly starting to build this car So make sure you guys follow my channel if you guys want to continue the modeling of this m4 We're gonna be doing a lot of work with the m4. We're gonna be doing the wheels We're gonna be doing the suspension work. We're gonna be getting into a full blown out drift car because I have not built one of these yet So you guys are gonna follow me along as I'm building this car So make sure you guys follow me on all social media all of which found the description box below In the next episode of modeling. I'm gonna get into getting rid of these wheels even though I'm kind of A fan of these wheels in a sense, but Not so we're gonna get rid of the wheels. We're gonna put some other wheels on it We're gonna do the interior work and stuff like that Then we're gonna get it back into the game export it into the game Take a look at what looks like in-game and make sure everything works So make sure you guys come in back for the next episode of basically modeling basics here in a set of Corsa to do your own custom cars From a normal car or change a car that you like to make it your own So as always, I thank you guys for watching. I'm evil rabbit. I'll see you guys on the track


Hello, my name is Mike Moore and I'm going to talk about real-time rails with Sync. So, hi. Hello. How's RailsConf? My name is Mike Moore. You might know me as Blomage or Blomage, depending on how you want to pronounce it. It doesn't matter. I am very happy to be here. I'm leaving in about an hour to fly home, so I'm only here for this. And I'm 100% totally prepared for this. I was not up all night. I did not make these slides 20 minutes ago. Yeah. So, who likes live coding? Three people. All right. Okay, we're going to talk about Sync. Sync is a fantastic little rails engine written by Chris McCord. Is Chris here? There he is. If you don't like it, that guy right there. You can find it on the GitHub. That's at Chris McCord slash Sync. So, yeah. Let's do this. All right. So, I have an app. And I'm just going to load it up here. And it's a very simple app. I was going to have a little bit more interesting app to demonstrate this, but I ran into an issue, and maybe we'll talk about that at the end if we have time. But this is a very simple blog-ish type of application where we've got posts, we've got comments, we've got users, and some tags. Oh, and also, this is the get repo for Sync. So, please check it out. Okay. So, I want to just demonstrate this very simple rails application. So, I'm going to look at a little bit of code, and we're going to add Sync to this application. And we're going to turn it from a very classic kind of cruddy rails application into real-time. So, a little one note before we start on code quality. This app is intentionally unfactored. So, there is lots of places where you might apply some design in an application that I have not for this. But the reason for that is so that I can, we can refactor it to Sync a little bit easier without having to unfactor it along the way. So, we'll go ahead and get started. We have a series of posts. And then, when you click on a post, you go to the post show action. On that post show action, we've got a series of comments. That is no different than going to slash comments other than it just looks a little bit different. So, we're not going to be looking at comments on the actual resource. We're going to be looking at it on the post resource. And that's it. So, you know, you say hello RailsConf. Whoa. Oh. Also, disclaimer, I cannot type in public. So, this is going to be very interesting. So, I can go ahead and I can add a comment. I can delete a comment because it's owned by me. I can go into posts that I own and I can edit those posts. Stuff like that, right? Pretty simple. Okay. So, let's bump this out a little bit. So, here is our application. Same thing as we saw before, our home controller is the home page. That showed the Jumbotron there. This is all very bootstrappy. I'm sorry. Here's our post controller. Almost straight out of the box Rails resource here. Our comments controller is nested underneath our posts controller. We've got a little bit of additional calls here for access. Those are defined in helpers. This may not be how you would do this in a real application, but for demonstration purposes it fits the need. And I can use these methods in the controller and also in the views. Okay. So, let's take a look at the route. So, you see we're not cheating. So, we've got nested comments under posts. We've also got tags. Let's take a look at tags real quick. Tags are just a string attached to these various posts. And so, if you click on the Rails tag, you see there are three of the four posts that are tagged with Rails. And then there is a list. So, let's say that we have this application and we want to make it more awesome than it is today. One of the things we really want is we want to approximate what some of the apps that are using heavy JavaScript MVC frameworks are accomplishing with their responsiveness and just kind of like updating the UI because something changed. And so, instead of basically rewriting our entire front end, our entire presentation layer, and then also creating an API to support that JavaScript presentation layer, it's my assertion here that we can use Rails the way Rails is intended to be used, but still gain a good large portion of this type of functionality. So, let's go ahead and jump in. All right, so the first thing we want to do is open the gem file and we want to add a few gems. The first one is fey. And the reason we need to add fey is just for development. So, we're going to use fey for our browser to talk over a WebSocket back to the server. And then fey also needs thin, but we don't like thin very much, so we're going to not require it by default. And then the last one is sync. Okay. So, we'll bundle install that. I told you I couldn't type. There we go. So now we've added sync to the application. We need to go a couple of steps further. The first is in our application file, we need to add the JavaScript for sync. And so this will be loaded as part of our normal application JavaScript. It will get pulled in by the asset pipeline. And then also we need to go into our layout, our main application layout, and there's another JavaScript tag that we need to add. And that is going to be... We're going to use a little helper from sync. Adapter JavaScript URL. And we'll talk about what all these mean, hopefully by the end of this. Okay. Now we're going to go. So, what we need to do before we do anything else is we need to start up fey to run our WebSocket connections. So, we can do that pretty easily. We can just say rackup sync. Oh, I'm sorry. One more thing. We need to... Let's take a look at our generators. Oh, gosh. There is now this install generator that was added by sync. So, let's go ahead and run that generator. That will create a rackup file and a configuration file. So, now that we have that, we can run this. Now, this is going to run fey in the background. And then here, we can just run our application, come back over here and refresh, and nothing has changed, but it all continues to work. So, fey is running, but we're not actually talking to it, but we know that it's up. So, that's the important first step. I don't particularly like having to open up two consoles. So, one of the things I will do is I'm going to create a new file called a new proc file. And then inside of it, I'm going to have a Web entry. So, you can't see this, but this... I have to scooch down to... So, you can hear me. And it's killing my back. You sure? Yeah. All right. Exact. So, rack up. Sync... Sync, are you? The other thing we need to do is come back over here and add foreman. So, let's install that. Foreman is a gem written by Heroku. And so, if you have lots of services that you are coordinating, foreman's a good way to start all of those. So, now instead of going to multiple terminals to open this up, I can just say foreman start. And it will start both. So, that's kind of handy. All right. Let's take a look at one of these... one of these pages. What I want is... I want to be able to come over here onto this page. And I want to add a new comment. And I want people to see it as soon as it shows up. Right? So, if I say see me, my browser refreshes, but all of these browsers over here won't necessarily. Let's go to this guy. So, if I, for example, delete this one, it still shows up in these other browsers. And I would really like it if it would disappear as soon as... as we ask it to. So, let's make that happen. To do that, we're going to register our active record models to be synced in browsers. And sync is going to take care of all of the communication from our Rails application all the way down to the browsers for us. So, to do that, there's a couple of things we want to change. First is, we're going to open up our comment model, and we're going to add this little declaration called sync all to it. This is going to insert the sync DSL into the model. So, now whenever the model changes, it will try to notify the browsers that something has changed. We also need to open up our controller, and we need to enable sync here as well. Okay? And this is, again, just to... So, the controller knows to look for all the messages from the models that something has updated and responded appropriately. Let's take a look at the post show action. Like I said, this is a mess of HTML. This is not necessarily how I would do it, but this is how it is. We've got kind of two main areas of the page. The first is, at the top, we've got all of the content for the blog post. So, the title, the user, those tags that are on the blog post, some editing links if they are there, and then also the markdown of the body. Okay? Then after that, we've got our comment section, which is just going to iterate through the comments. And because we're showing... And then we're rendering a partial for the comment. And then after that, there's also another area to add a new comment if you can. So, if you're logged in, you should be able to comment. And if you're not logged in, you shouldn't. And that's what that add comment helper there is guarding for us. So, we want to make... We just want to make this sync. It's pretty easy. What we're going to do, we're going to change this from render to sync partial, and then we're going to say that our resource is our comment. So, we made it just a little more verbose than what it was before, but sync needs that. The next thing we're going to do is we're going to add a new directory under app views called sync. And under sync, we're going to add another folder called comments. And under comments, we're going to add a new file. And that's going to be called comments.html.erb. That's going to be our partial. So, when we say sync partial here, instead of looking at our normal template, it's going to go look for the one in the sync directory. And for the most part, we can just take our trusty old partial that we're using right now, and copy and paste that. We can kind of trim some of this out. One of the caveats of using sync is that we can't really do stuff like this. We can't ask about the current context in which it's running, because this will get pushed out to everybody. So, the same strategy you have for caching templates, caching tools within your application, you're going to apply that same strategy to the real-time updates as well. So, stuff like this is probably just going to have to go. Right? We can have the username, we can have what the body is, but we really can't have all of those editing options. Oh, did I? Thank you. Name those. So, comments instead of comments. So, that's our first step. The next change we want to make is whenever a new comment comes, we want that to show up underneath. And so, instead of calling sync, we're going to call sync new. This is going to watch for new comments. And here, the resource is going to have to be a comment.new, is that right? We can probably go a little bit further and say posts, comment.new. Okay? So, that's not a lot of changes. What we've done is we've added sync to the repository to the application. We've registered all of the JavaScript. We've went ahead, moved some of our HTML from the original locations to a new location under sync. And instead of calling render, we're going to call sync and sync new. What's that? Post, yes, thank you. Live coding, ladies and gentlemen. Yeah, I transposed the parole. There we go. Pair programming at scale. All right, so let's see if this works.  Now, Firefox is not logged in. Safari here is logged in by Stanley, who's back there somewhere. And then Chrome is logged in by me. Okay? So, let's see if this works. Who wants to place the bet? Does this work? Anybody know? All right, let's see if it works. All right, there we go. Does this work? Okay. Yay! So, what's nice about this approach is that this is going to go out no matter how many clients you've got connected directly. Every time your assets change, your resources change in your application, they can be notified in real time. Okay? We didn't have to write a whole bunch of JavaScript. We didn't have to change how we were architecting our presentation layer. We're going to use the same infrastructure that we're using today. All right? Okay, now, because of this, I kind of lost my ability to edit. And I would like to have that back. So, what I want to do is in this loop where we're saying, you know, we're going to add this new sync partial, what I really want to do is I want to say if you can edit the comment, right? And that's current user. What I really want to say is that if I can edit it, I want to have the same partial I had before, right? But, if I can't, then I want to use the one that is going to be synced. So, it's a small change. But what it's saying is is that if I have permissions to edit it, I don't want it to be syncing. I don't want to be notified if it changes because I'm likely the browser is going to be changing it. And I really want the tools to be able to edit and delete. So, I'm going to come back here and refresh this UI. And you notice now, because of that, I have my tools back, my edit and delete. So, I can come back over here and say yes. It does work. See that updates there. Looks like we've got a little bug. And then eventually I can actually delete it as well. And it gets rid of it. Okay. There's another bug with this. Do you guys want to see what it is? It's pretty fun. Here is let's go to this one. Here's a blog post that doesn't have any comments yet. I'm going to go onto this different blog post, right? And say we've got a bug. When I do that, my comment is showing up on this different blog post, right? Because right now we're looking for all comments whenever it gets updated. We're going to add it to this page. So, what we need to do is we need to scope these comments to this page. So, let's add that really quick.  And we're going to add a new scope. Now, this is going to be different than a normal scope. It might be a redundancy, but sync needs it. So, let's add it called buyPost. And it's going to take a lambda. And we're going to give it a post. And we're going to say where postID is postID. Okay. So, we've just added a scope for post. Then we're going to come over here into our sync partials. And we're going to add that scope here. So, let's say scope.buyPost. Let's also add it to this one. Okay. So now, if we refresh this over here, and now I'm logged in as Stanley, I say oh hi. It shows up here, which is what we expect, but on this other one it does not. Okay. And if I refresh this, we'll get rid of that comment. Okay. So, scoping is easy as declaring a new scope on your model. In the same syntax we're using for normal scopes. And then whenever we render out our partials, we have to reference that scope. What do we need? The scope in both? Because there are two different partials. It would be possible to... No, it affects both. The scope affects both. The reason why there are two partials here is that whenever a new comment comes into existence, we want that to be listed. So, we can move that around theoretically. I believe. Let's not touch that. Live coding. All right. So, sync is a pretty cool little library. It does quite a lot for us. What it's going to do is it's going to hold a connection via WebSocket to a server. And then it's going to put mechanisms to talk to that WebSocket. And then when our resources change it will render those templates and push that out to that WebSocket which the clients will then pull down. So, without re-architecting our presentation tier, we are able to take advantage of real time. And we're able to do it without a major change to how we're organizing or architecting our templates, our files. We can go just a little bit further as well. So, let's open up a Rails console. Okay. And we'll say, let's get just a comment out of here. All right. So, I got this comment right here which is Jason saying that he's watching but he's kind of on a delay because he's not actually in the room. Okay. So, here is syncmodel.enable and this will allow all changes that happen within our process that's not running on the Web server. Still a Rails process but we're not actually running on the Web server. It's a separate process, maybe a background job. But now all of our changes that we make can also be reflected in real time as well. So, let's pull this guy over and watch that happen. So, we can change this to what should Jason say. So, I don't know. Real time. Okay. So, let's pull him out. You see that his text is right here. I'm watching kind of. When I call save, it will change and it updates right here in real time. And duplicate. Why? Chris, why? Applets. Afterwards, all right. Okay. Let's continue and add this to some of the other pages as well. So, let's go to posts. Let's do the same thing. We want to sync our posts as well and our post controller. We want to enable sync here. Enable sync on our post controller and in our post model. So, let's go ahead and take a look at our post index page. When we're listing all the posts, we're going to go through and render the post and then if we have, if we can, we'll add well, have a button to add a new post. If we look at that post partial, you notice here, again, we've got some logic in here determining whether or not we can edit it and whether or not we can remove it. So, this logic is problematic when we're talking about a cache template that's going to get pushed out to everybody because not everybody's going to have the same amount of permissions. So, what we'll have to do is we'll have to just take that out and I'm going to take it out and put it into the index template. Well, actually I'm just going to take it out of this view all together. So, again, in order to change our template from a static template to a real-time template, we're going to say sync and partial is a post and then our resource is also going to be that same post and then if we get a new post, let's just list him down below. We probably don't need to scope on this one. The big problem we have is all of this edit information. So, let's go over here to posts and get rid of that guy. So, I'm just going to remove some code here. I'm going to remove all of this editing. Anything that's going to talk to current user or the current request is not going to work. So, let's get rid of that. And now let's take a look at our post pages. We're asking for posts that doesn't exist outside of that block, so we're going to say post.new. So, again, user not logged in, user logged in and a different user logged in. So, if I come over here, I want to add a new post. Sync works. Let's add that. So, Stanley added this post. It shows up immediately on Mike's browser and also shows up in the not logged in browser. Let's come over here. We'll say congrats. Now, this browser over on the right, the comment is not updating, right? Let's go back over here. So, here, we've got one comment. Stanley says, I know. And that one comment here is still not updated. So, we've got changes happening on a sub-resource, but it's not changing our template. Thankfully, there's a really nice DSL to make that happen. So, we'll go to our comment control or comment object and we'll say sync touch post. Okay. So, this is similar to normal touch. If you want to have a resource that you want to touch through an association, whenever it updates, it works the same, only it's a special one that it'll work for sync. So, let's save that and refresh all of these browsers. Okay. So, now, they all have two comments. I come over here. Let's have Stanley add one more. Add one more comment. Chris. Now, the comments are updating multiple times. I'm curious why that is. What did I miss? One hour ago. What did I miss? Okay. There's one more there's one more view of posts here and that is the actual post page. So, we can edit this. So, we can say it sort of works, but now this page isn't updating and this page isn't updating. Right. So, I've updated this post, but the other browsers aren't updating on the show page. The reason for that is because we're not syncing the template on that page. So, really quick, we'll see we'll show you just how easy it is to do that. We'll come over here to show. We have the same information where we're pulling out all of these links determining whether or not we can edit it. I'm going to punt on that. I'm just going to put that down below. So, it's not going to be part of any template. So, if you hit this page and you can edit it we're going to show you those links but it's going to be outside of the outside of the parcel. So, I'm just going to say we're going to sync a new parcel and it's going to be called I cannot type. It really is so uncomfortable. So, a new parcel, we're going to call this postFull because we have the full body embedded in it and the resource is going to be that post object and that's really it. We come back here to our sync directory and our posts create a new file we'll save this as postFull and then we'll come back restart all of these browsers come back here and edit this and say it really does work what am I missing? I did refresh the browsers. Let's refresh it one more time. Huh, alright. Again, it worked an hour ago. So, that sync I'm out of time but we've used this on some internal apps dealing with monitoring and instead of pulling continually asking for new information just organizing your Rails app like you always have with templates and having those templates update whenever resources change has been just a really, really great fantastic thing. There are caveats. It's a little touchy as you can see but it's definitely been getting better over time. I would just like to leave you with this little pitch that Rails has benefited over the years from being first to popularize certain approaches for web development. It was there at the very beginning with Ajax. It was there at the very beginning with REST. I strongly feel that if we are not able to do real-time information within Rails that people will move on from Rails and I totally think that you don't need to. I know that there's a lot of functionality that's difficult to do with Rails as it is today so people are looking outside of Rails for the presentation but there are so many advantages to rendering your HTML on the server that we just need to think a little bit differently and a little bit better about it. I'll open it up to questions.


Preseason has been going pretty well. We started training a few weeks ago in the morning, so it's two hours in the morning, plus some lifting in the afternoon. We have a lot of new kids on the team, 11 total, so, you know, they're trying to learn how we do things here and, you know, how we train, because we do train a specific way, so, you know. But all in all, they're working hard and I think we're improving. Overall is a goal for each team. We're looking to move up in the standings for the conference. The men were 11 out of 12 last year. The women were 10 out of 12. The men were still a small team, a young team, only our third year. I'm hoping to move within a top 10, top 7, possibly. For the women, I'm hoping for a bigger jump. I'm hoping top 5 or top 4 overall. Individually, for the guys, I would like to get someone in finals again this year. This year is the second year team. We had our first team all-conference swimmer and on the women's side, we had our first second team all-conference. So, on the men's side, I would like to get back to that first team. For the women, I'd like to get at least one, if not two, first team all-conference and then two second team all-conference within the conference itself. We did well last year. We're growing quickly and we didn't graduate any scores, point scores from last year. So, when you take away nothing and you add point scores to your team, you do get to grow quickly. I think the biggest thing is hard work. And, again, growing as a team, they're still so young. We have more freshman and sophomore on the team than we do anything else. So, I think as a team, we're still evolving and still growing. We're trying to create a culture of winning, of hard work. And I think if you put the hard work in and you believe in what you're doing, you'll succeed. So, again, I think if everyone buys into what we're doing, we swim as a team and we work extremely hard, I think things will really pay off in the end.