Hi guys, this is Jason here from the Nathaniel School of Music and in this lesson we are going to learn about rhythmic anticipation, a simple and effective way to make your piano pattern sound a lot more groovier. In this lesson, we are going to just take four chords in the key of D major, D major as you people know has two sharps namely F sharp and C sharp, okay.  So we are going to essentially play them in a nice pattern where we play the chords evenly together and then change it a little bit and try to bring out a sense of groove using a topic called rhythmic anticipation, right. So before we get started guys, I would request you all to please subscribe to our YouTube channel and turn on the bell icon for notifications if you haven't already. It will help us to move forward and become like a super famous channel, okay. So we are going to just take three chords for this exercise. We are going to take the three major chords of the D major scale, namely D major. You can learn that in any of the respective inversions. You could say D F sharp A, F sharp A, D, A, D, F sharp, okay. Then you could do the four chord which is the G major chord, G, B, D, B, D, G, D, G, B. And with any of the chords you are going to play the root of the chord in the base hand or the left hand. So for D major you play D, for G major you play G and lastly for the fifth chord A major you play A bass and one of the available chord options which are A C sharp E root position, C sharp E A E A C sharp. Now why do you need these inversions? Just to make the shift between the chords a lot more effective, a lot more smoother. As we always know chord inversions make life a lot easier on the piano by creating a nice shift and also great voice leading movement. So it's also sonically great for the listener. Moving on. So the first objective for you guys is to play these four chords in a nice succession perhaps one bar per chord would be quite nice. So you play four hits in your right hand, two, three, four, change to the A, change to the G and back to D. Let's do that again. One, two, three, four, A, two, three, four, one, two, three, four, one, two, three, four. And as always we are trying to use inversions to make the connection a little more easier okay and a lot more ergonomic. If you haven't already do check out my video series on chord inversions we will be putting it up in the description. So watch that in detail that will help you to shift really well and get all the mechanics going for your chord playing. Anyways, so now that you've finished playing that each chord four times you can also play a very simple bass by just holding the left hand once, one, two, three, four, change two, three, four, change two, three, four, back two, three, four, okay so that's the basis.  So the best way or the easiest way is to start by dividing the beat by two. So that will be one and two and three and four and one and two and so that and is at the 50% mark of the beat. So if beat one is here and if beat two is here the and is somewhere in the middle. So you count one and two and three and four and one and these are very tried and tested symbols which is used all over the world so just go with that it's also not too much of a tongue twister when you speak it right. So you go one and two and three and four and change and two and three and four and change and two and three and four and back and two and three and four and and what's nice about getting that time feel into your system is it could actually translate into something cool in the left hand. So the left hand could create something like and two and you see what's happening here with my thumb or the other finger I'm either latching on to the fifth of the chord or the octave of the chord and I'm playing it nice and soft so it doesn't really cloud the sound too much it still sounds quite pleasant quite peaceful you hear the right hand more but you feel that division by two time feel you know so remember to keep your pinky held and that other finger will need to keep playing the time field which is and and so now that you've got that or once you have got that the next thing we are going to do is to apply a very very exciting thing in the field of music or musical rhythm called as rhythmic anticipation so what we do is the first bar we just play as we are playing and three and four and while the second bar the A chord or the A major chord which comes in I'd like you to start hitting that chord not at the one of bar two but hit it at four and of bar number one so that'll be one and two and three and four and one and three right so latch on to the end of the four and you're going to change the chord by playing the A major chord so it actually comes before the left hand shifts to the A which will be beat one of the next bar and now I can go on and toggle and so you'll see that you can create a nice on the beat and off the beat kind of a interplay so let's see how that goes again one and two and three and four and that was off to a major and four and G on the on and that's the off D major on again and four and two right so and even the G went off now and four and it kind of gets a bit infectious you know keep doing this speed it up slightly can play some other chords if you want I'm just getting carried away a bit here and so on and so forth so the whole idea is to anticipate and that adds an off beat flavor as well as the on beat flavor be a bit weary of your piano in the sense your left hand should try to not follow the right hand you may not want to do and that's a bit muddy when the two hands play together right it's like a nice drum groove that's what a drummer would do the drummer would play something and then complement it with something else okay so again the groove eighth notes rhythmic anticipation there we go on and if you guys have a problem with playing the chord changes perhaps you want to work on that later or before you know first do the chord changes or else you could practice rhythmic anticipation with just one chord and just get sort of the independence of both the hands going something like this and one just focus on the end and once you get a grip on D change to a G okay so that's about eighth notes now I plan to stop the lesson here but what I think we should do is also go to divide by four which is sixteenth notes right who doesn't want to do that that'll make it sound very groovy and very funky so if you divide by four you can count it in the conventional way as one e and a two e and a three and a four e and a one e and a two e and a three and a four e and a so now you're dividing the beat by four parts you're going to get a lot more off beats three off beats to be clear the 25% mark or the quarter point of the beat the 50% mark which is the end we learned earlier and the 75% mark which is called as a so one e and a so the a is what we are going to now push that one of bar two back towards so it's going to be one e and a two e and a three and a four e and a two e something like this right four e and a two e three and a four e and a so these off beats also if you observe I am getting a little bit more excited at the off beats that I feel is very very important when you're observing the off beats otherwise you're not going to feel the groove and for the audience to get up on the floor and dance well they have to feel something exciting and you should first feel it I guess before you send out that groovy energy to towards your audience so let's focus on the of the four and that should do for the lesson so you go two e and a three and a four e and a one e and a two right so that's second chord and the fourth chord every alternate chord is anticipated Let's do that again 1, 2, 3, 4, and again your thumb which was once playing 8th note ghost as we call it has now moved into the 16th note domain because your mind is sort of reacting I've done another very important lesson actually which I'm going to share in the description it's about how to feel the groove a lot better or count a lot better I've actually taken a very popular ARM on baseline and I've broken it down quite well so do check out the link in the description and as always if you're not if you're struggling a bit with chords watch our chord inversion series we have a very detailed list of videos which will help you shift your chords a lot better okay so that's about it guys you have 8th note anticipation 2 and 3 and 4 and 1 and 2 and 3 and 4 and then you have 16th note anticipation which means you're moving the next bars beat 1 a a little before time you're anticipating it as we say 1 and 16th note right so I hope you guys found this lesson useful and I hope you're going to use it in your music right now and as always this is Jason here from Nathaniel school of music do subscribe to our channel if you haven't already share the video with your musician friends and as always turn on that bell icon for notifications for all of our upcoming videos which will hit you quite regularly as we normally do cheers have a good one and stay safe


Today, the Tennessee Titans seek a win over the Los Angeles Chargers. We pride time, man. We're trying to get it done today, but we're going to come with it. We're going to come with it, baby. City needed. After reviewing the play, the runner lost the ball. Fire for CrossFit Boat. Hey, man. Listen, man. It's Kevin Byron here. Sometimes you trade your own luck, man. We had a blade of grass to play with. In history, baby. He's much presented by Farm Bureau Health Plans. I'm Lance Smith. Here with Mark Mary Annie. How are you, sir? It's good to see you. It is so fun doing this show after a big win. So fun, man. It is. Coming off a win, this is nice. Big win. Big win. Everybody's positive. All the optimism. So good. I love it. Thanks for having me. I'm walking three feet off the ground. All right. Well, let's kick off the show. Shall we? We've got a lot to talk about. It is fun talking about these wins. No doubt. All right. So we've got four down to the mark right here. So this game, man, this was the game. Tana Hill is getting the start. And what a start it was. That's right.  And we were looking for a little spark on offense. Ryan Tana Hill comes in. You knew that he would be ready for the challenge, but you really didn't know he would come out and do what he did, throw for over 300 yards and lead this offense to his team. And that's what he did. And that's what he did. That's what he did. That's what he did. That's what he did. He's got over 300 yards and lead this offense to a big win here at Nissan Stadium. Yeah, 23 of 29, 312 yards, a couple of TDs. The the pick he had was a flutter from when he got hit, but still dynamic game. I mean, he was on fire throwing in some tight windows. That's right. We saw athleticism from him all over the field moving out of the pocket extending plays thrown into tight windows, thrown in tight windows in the red zone. Really saw it all. He led this team. Led the offense with some conviction really, Really really excited and kind of pumped for what this could mean for this offense as we progress in the season here Sure sure when did it when you were watching the game and wanted to set in for you like oh, he's He's on a mission. I'll tell you it was the first drive It hit me when he hit Johnny Smith who was absolutely not open. He threw a back shoulder ball Defender didn't see it put it on him where only Johnny could make the play and I thought all right man He is he's out there gun slinging and this could be a good day for the offense And it turned out to be good and and he just went with it from there and finishes with over 300 yards Absolutely also hats off to Johnny for that because Delaney got dinged up that's right tweaked his ankle So Johnny had to step up. All right. Well, let's uh, let's move to second down talking about these receivers because we talked about Tannehill Stepping up well the receivers really stepped up too because I mean they were coming back to the ball really running decisive routes between Davis and Brown they combined for a 12 receptions 144 yards and a touchdown Humphreys a clutch on third down. That's right I mean, when did the Titans become a receivers? Listen, we know we have a stable with these guys We know that they're overflowing with potential One of the key things that I think Tannehill did was hit these guys in stride so that these receivers Could go out after the catch and make plays Tange sharp gets involved with a big touchdown Adam Humphreys on third down I mean there was he was spreading the ball around to these receivers and they were making plays again This is no secret man with these guys are playing good We can make plays with this this playmaking crew is up for the task each and every week And and that's why I think that's why I'm so excited because if we can get these guys the ball Yeah, they can do the rest now Would you say I mean much like a I guess a rookie sitting on the bench Watching the starter do his thing and then coming into play. I mean Tannehill's obviously no rookie He's a starter in his own right, but he's had all season to watch our offense do what it does see what's missing I mean that that just helped yeah, and I think I think jumping in the game like last in two weeks ago As the backup is a different mindset this week. He's got the full week to prepare He gets all the reps in practice gets to prepare for the defenses And he showed that this is why John Robinson went in the offseason picked him up. This isn't a young guy This is a this is a KG vet with a ton of NFL experience And and kudos to the front office for getting this guy because he was ready He was ready to play and he could be the guy to lead this team You know for the rest of the season and take us where we we're trying to go the receiver in you position You know so well I on anybody anybody really standing out to me and how's the rookie looking for you? I'll tell you what man AJ Brown continues to impress me each and every week and He's he does the little things he prepares He makes the catches he gets the run after the catch. He's extremely physical Yeah, usually with a young player you have a little bit of the deer in the headlights look But it looks like he's he's understanding the game He has no wasted movement. He's he's very efficient and I'll tell you what it's exciting to watch him and Corey Davis work Because you got to pick your poison. Yeah, who you're gonna stop and they both can hurt you Well speaking about speaking of a young guys and picking your poison. Let's move on to a third down right here The 19th pick overall in the draft coming off ACL surgery eight months removed from it shows up and shows up Jeffrey Simmons was a game wrecker and only played 33% of the defensive snaps a monster a freak a Difference maker. I mean I don't first sack of his career. I don't know how to even describe this guy I have so much excitement watching him and in I can't think of another guy who had more Hype and more build-up and then he lived up to it in every stretch of the imagination This guy is gonna make a difference every play. I've been so impressed by his Overcoming adversity his off-the-field stuff His interviews his attitude and you know, I gotta be honest when when we called his name on the draft and realized that he We may not get to see him this year. I was very you know Yeah, I was upset by it and his coming out party this weekend was everything I could have ever imagined So I apologize. I didn't know he this guy is the true definition of a freak of nature And there are so many plays that he has left to make and he's just going to accent everybody else's play around him Casey's wakes Harold Landry's Sari French everybody. We are halfway almost halfway through the season We have one of the best defenses in the league and now we add a difference maker Like this guy like Jeffrey Simmons and you're just going this could be nasty and he does he makes a difference every play He's bench pressing guards and interior linemen and for a young guy to do that is extremely impressive One play in particular that he bench-pressed guard on the right guard in particular moving on to fourth down the goal line stand How was it? Did you love it? I? Mean you got a 10-point lead and all of a sudden we could be losing this game to get multiple shots at the goal line And this defense stood up like I've never seen before And it was Simmons who stood up that right guard and forced Gordon to go wide and Wesley Woodyard chopped that ball out Like a lumberjack You heard Kevin Byrd in the intro saying that this is going to be one of the greatest games I'll tell you what they are going to talk about this goal line stand Yeah for a very very long time our fearless leader Wesley Woodyard knocks the ball out But if we watch that playing slow-mo, there's Jeffrey Simmons blowing up that right guard Yeah, pushing him four yards deep into the end zone on the second play of the inch from the one inch line Yeah And here we go a rookie coming in there and making a difference making play saving the game getting us the win and Potentially pull vaulting us into you know the season down down into the playoff stretch and now we're one game back from the Indianapolis Colts Yeah, I mean you know our defense is good. You know our team is good You know what we've got but seeing that happen knowing that we can do that a goal line stand I mean it gives me chills talking about I've watched that play over and over again and one more thing One more man. I'd like to talk about is the 12th man The fans never let up the entire time that we were down on that goal line. Yeah Just went like the voice in the back of your head is making well we gave it a good shot They didn't let up absolute ruckus It was a full team effort offense defense special teams and the 12th man man. He played a huge role It was so fun to watch it really was it was so exciting to be there and you know We got another home game this weekend. So we'll be talking about that right. It was exciting. Keep that noise up Let me hear it again You know 15 minutes can save you 15% or more on your car insurance and with that We'll go to break with our Geico fast 15 stick around Titans blitz. We'll be right back And we'll take a little break right now. It's half time on the show break from the X's and O's that is you're with us We're gonna talk a little rock and a hard place right now So we ask our Titans players no question every week this or that you know, would you rather have it? So I'm gonna ask you think about this answer. Okay, we asked them if they would rather have Social media, but no movies or TV forever or you get all the movies and TV you want but no social media So you think about this you can ponder it too. This might be an age thing too as well But right now here's what our Titans players had to say about it and rock in a hard place presented by Snickers I could give up social media pretty easily I Pretty big fan of movies and TV. So I would definitely want to keep that. Well, I'm pretty bad at both I don't watch television and I'm not on social media very often. You know, I try to be cool in real life rather than You know on the web. So I might probably be okay with either one of those Never use social media again, dude. I already hate it. I love it, but I hate it's a big.  Okay. I'll say wait I'm gonna try to do this I never watch a movie or TV show again Cuz I can just get on social media and find it and see what they're talking about maybe watch it They got all these apps. I'd be in the Netflix social media Never use social media big movie guy I've never used social media out now watch movies and TV Social media out the door got to watch my movies It is an age thing I think the the older guys are like they can do without social media Totally. So where are you on that? I think I'm the same way I think for even productivity standpoint, I think I should probably give up social media So it wouldn't it would be better for everybody if if we gave up a little social media in our lives I mean I get that and I feel the same way. I mean kids these days and their Twitter's But yeah, I gotta have my movies I mean, it's it is a tough one and when you talk about forever It's like, no, I don't know sometimes I have fun surfing the social media web But I could probably give it up. I gotta have my movies and without TV. You can't watch Titans Blitz. All right Very important Corey Davis actually teamed up with the Farm Bureau health plans to work with the National Second Harvest Food Bank recently This is a very cool thing. I love when the Titans can give back to the community So check this out and on the other side. We'll talk about this game coming up a next home game against the Buccaneers right now Here's Corey Davis. Well, we're here helping with the backpack program It helps kids that maybe go home on the weekends from school that don't have food Farm Bureau obviously Agricultural roots feeding people it's kind of our heritage. So it kind of made sense We started doing work with second harvest about three years ago We think it's important that we help feed those that are hungry here in Milton City I'm second harvest just making some backpacks for young kids. I kind of had something similar to this when I was little We don't really have much so we'd always have to come to a pantry and I mean Oh, we can't food or whatever we can but mean something to me just to come back and do whatever we can to Hope the youth today. We had Corey Davis great guy I slowed him down a little bit trying to pass things down to him because he was pretty pretty quick But anyway, it's great to have him here and show his interest and again his desire to help Give back to the community. We do a lot of things with the Titans So I think bringing all of us together second harvest Farm Bureau and the Titans makes a lot of sense. I mean we came out here. We got a lot of fun They're blessed to work with and I definitely love tomorrow again Welcome back to the Titans but presented by Farm Bureau health plans Lance Smith here back with Martin Mariani And let's uh, let's talk about this got a two-minute warning here on the show. So we got a game coming up Talk about stacking wins. We're coming off a win getting another win. That's what this league is all about We got a build on this win And uh, it's doable against Tampa Bay another home game here at Nissan stadium And uh, just all about gaining momentum and getting this snowball rolling down the hill and uh making some momentum happen All right, first key to victory Pressure, uh, james winston because the dude's coughing it up quite a bit Well, there's a couple things we know about james winston. He can get hot And he can also throw you the ball a bunch. Yeah, let's keep it He doesn't mind this is a team that put up 55 and beat the Rams That's right So recently so they can do that and then he goes back last week Before the buy and throw it gives it with the ball away six times I think five picks and a fumble and here's some of those Great highlights here. So we want to see more of this at Nissan stadium this weekend You know, our defense is nasty. They make them work for everything and we would love to see james winston Have a have a miserable experience here on sunday afternoon Yeah, exactly Well, it's like even if you can't get him to the ground because he is mobile And like it's going to present more opportunity for our secondary I'm just going to lay it out there right now. Logan ryan Kevin byer both with picks just going to say that just put like that So lay that prediction there it is bold prediction Next key to victory Don't give up the deep ball because going back to what you're saying about they can air it out That's right This team is bringing a bunch of weapons and chris godwin and mike evans along with oj howard at tight end Are very very big playmakers and we got to shut these guys down You just listed off logan ryan and kb in the in the back in the secondary for us We're going to have a tough challenge with these guys And nothing that they're not going to be up to the task for but these guys present a Major challenge on sunday and they've been doing it all year. You uh, you said something So so chris godwin averaging seven receptions 110 yards and a td averaging per game through six games Also averaging 15 yards of reception evans averaging 17 yards of reception oj howard 13 yards of reception They catch the long ball This is one of the best three three sums in the league at you know for their weapons and james wason can get hot But we also have one of the best defenses in the league in the best secondary chris godwin undercover one of the best receivers out there So they got some ammo coming in but we're ready to shut them down You said something to me before the show started behind the scenes that uh ryan fits patrick four years back Buddy yours played with chris godwin. And what do you say? He said chris godwin is one of the best most athletic Receivers he's ever played with he does everything well from the short routes to long routes He makes every catch right everyone's talking about mike evans and here on the other side You got this playmaker chris chris godwin. So They'll they'll know where he's at on sunday So, uh, just real quickly then the third key to this I think you got to keep chris godwin and james winson off the field and we got to continue this offensive development We got to put drives together That's right. And the tambourine bay buccaneers coming here with the number one ranked rushing defense in the league And the 32nd ranked passing defense in the league. It's a huge very lopsided. That's right So we're gonna we're gonna put together a good game plan again We have one of the best most physical running backs in the league. He runs downhill. It'll be strength for strength there But we like I said, we gained a little momentum a little confidence this past weekend against the chargers And we just need to keep that going nothing outside the box Just get tanny hill going early and get that get the ball in the hands of these receivers these playmakers like we talked about And good things will happen all all all things come together to make a great win on sunday Yeah, I believe it's gonna happen. I know it's gonna happen, but you're right I mean there is a formula to it. You got to stick to it. All right, uh parents out there with uh youth playing football Listen to this. This is very cool parents football clinic happening monday november 4th 6 to 9 p.m. Here at nissan stadium It's going to include sessions on strength and conditioning proper equipment treating or avoiding injuries ton of info For parents and it's all free unless you want to drop me some money It's uh, no, it's a great event because I mean, you know, this is it's a tough sport So your physical sport you got your kids playing if you're worried about your kids And you don't know how to coach them yourselves This is the place you want to be uh, and it's a very cool thing that the titans are putting on so I dig that All right, we got more titans blitz on the other side. I got a question for this guy right here talking about social media So stick around titans blitz. We'll be And welcome back to titans blitz because i'm by far on bureau health plans lancy mark back with you It is now over time here on the show And time for wendy's hot take of the week. So mark, I ask you this we were talking about social media earlier um In this day and age after every game There are some really well informed fans out there and i'm not just opinions being put online, but they're breaking down plays they're using the all 22 film and How much of that if any and does it have any influence whatsoever on our players? Maybe do our coaches privately? Maybe secretly look at that stuff and go, huh? I think I think all of the above. I think that players Take a peek at it sometimes some players more active than others I think that there are a lot of fans out there that are educated and informed And there are some that are not as well, but I think that you know overall What's important to remember is that most of the time you see these guys From behind the face mask and what I love about social media for fans is that players become more accessible And you can see get to know guys more personally You get to see with cori davis out in the community a j brown was out today at a school visit I saw on social media things like that are really beneficial now guys picking apart your play and And critiquing you and you want to fire back at somebody sitting, you know behind their cell phone it happens But it's a new it's a new day in age. It's not going away So it's definitely something players got to get used to but play from a player perspective You have guys in the league that grew up with it grew up with twitter grew up with social media It's just a fabric of of their every day. All right. Well, uh, hey man, it's good to see you again Thanks for being here always fun after a hot man And I hope we do this again next week after a win.  Right You got to tighten up. Thank you for watching glad smith. This is mark. There any See you next week y'all


You Hollywood types are all soft and weak.  I'm John Cena, and I get the honor of playing Peacemaker in Mortal Kombat 1. Peacemaker is a character built for Mortal Kombat 1.  Dick weed. He's trash. Man, it's a whole lot of attitude.  To be in the Mortal Kombat 1 universe and now be up against competitors like Scorpion and Sub-Zero. I mean, I'm hitting with Hall of Famers. Mortal Kombat 1 roster is so stacked, but I just gotta be selfish here. My favorite character is Peacemaker. And of course, be on the lookout for Eagly.


My god, Joe Biden just got one of the biggest f***ing views in American history from college football fans around the country. Not one, not two, but at least four different college football games from around the country featured fans telling this fake president what we're all thinking. Enjoy.


how to create a perfect checkout page and what not to do.  They don't finish the process. So why would you make it worse? You don't wanna make it worse. If you watch this video, I'm gonna show you some of the best ways to improve your checkout page and some of the major mistakes that a lot of people make.  So with that, having been said, please do me a favor and subscribe. Hit that subscribe button down there. Turn it from red to gray. Don't forget to turn on all bell notifications so you're notified every time I go live or I upload a video. This checkout thing, guys, will blow your mind as to how much money you're losing if you don't improve these checkout pages. So what I wanna do is I wanna go through each individual step, show you what you can do, you can apply it to your website and you're gonna make more money. Number one, forgetting to tell them about your other products. Yeah, on the checkout page, you should have an area at the bottom that has other products that are related to what they bought. They've already got their wallet out. They've already got their credit card out. They're likely to buy more products from you at that point. But keep in mind, think about this, just the number wise. If somebody's on your checkout page and you offer some products, there's a certain portion of the people that are gonna add those extra products to their card. Now, flip side is if they're on the checkout page and you don't offer any other products on that checkout page, what are the odds of them adding more products? Well, they can't do it because there are no other products. So it's very important that we add more products to that checkout page, complimenting products that they may also buy. Number two, not having a path to the checkout. And what I mean by that is as soon as somebody adds something to their card, you should have an area that says go to cart to check out. If you don't do that, they may have to hunt for it. They may not be able to find that little cart at the top of your page. And if they can't find that little cart at the top of your page, guess what? It costs you money because they may not ever check out if you don't provide them with easy paths to the checkout page. Here's an example on the screen right here. This is called Top Shop. And every time you add something to your basket, you can go to the checkout page. You can see the big red circle there where it says go to checkout. Number three, don't make them lonesome. What do I mean by that? What I mean by that is have some type of support, have some type of ticket system, some type of chat, something that they can do if they have a question. Now we use chat boxes and people can enter information. They can also go to the frequently asked questions page from that particular chat box, but you gotta have something. They can't go it alone. I mean, a lot of people are really good with computers and then there's a lot of people that aren't really good with computers. Okay, so if they aren't and they have a question and you're not there to help them out, you're gonna lose a sale. Number four, not having any security. People wanna feel secure.  That little bit of assurance is enough to push a lot of people over the edge and make them go ahead and check out. Number five, not having product reviews. Product reviews are so important guys. Nowadays people look at product reviews as if they are the end all be all. Now I go out to lunch a lot and dinner and I use Yelp and I'm always looking at the reviews to see what was written. But I'll tell you, a lot of the reviews online I think are bogus. I've been on Amazon a number of times where I go to click the reviews and the reviews in there may be glowing reviews, but they're not even about the product that I'm looking at. So I don't know why people depend on these things. However, you can't go by what I think. You gotta go by what the masses do and the masses say if they see a lot of five star ratings, a lot of really good reviews, they're probably gonna buy the product and if they don't, they probably won't. So you gotta have reviews on there. Make sure you add reviews. There's a lot of softwares you can use to facilitate this, find them, use them and display them. Number six, don't make them click too much. Don't make them click too much. If they gotta do too much work, they may not check out. Now, a lot of you will have your website set up where they have to register for an account to buy a product. And while that may really help your opt-in and build your list and all that, what you don't realize is a lot of people do not want to create an account. And since they don't wanna create an account, they won't buy from you. So you wanna remove that from your site. So how can you collect names and how do you build your list if you're not having them register? It's really simple. On my site on Survival Cave Food, what we do is we actually have, if you want to check out registered or if you wanna check out as a guest, but if you're a registered guest, you earn points. Yeah, you earn bonus points. And when you earn those bonus points, you can use those for future purchases. So if you wanna encourage somebody to do that, let them do it, but do it in a gentle, nice way where they actually get rewarded. Don't just make them do extra things to buy from your company because you're gonna lose sales. Number seven, forgetting to tell them about future offers. Now, it's true that customers are not gonna be visiting your site every day to see what the new offer is, but you have to give them a way to know about your future offers. Let me put a website up on the screen and show you what I mean by that. Right here, you see, sign up to our newsletter. I wouldn't say newsletter. I would say something along the lines of get our latest sales, put your email here or download some special or some freebie or something along those lines, but collecting those emails is super important to you. Number eight, make it as uncomplicated as possible. I see so many forums on websites. You have billing address and you have shipping address. Now, I understand that some of your websites are set up that way, but you can get around that by having a box they can tick and it says, ship to the same address is the billing. Make it easy for them. Don't make them put in information twice. It's overkill.  That's just a fact. The easier you make it for them, the better off you are and the better off it is for them and you're gonna benefit with more sales. Number nine, not allowing them to make changes. Oh my gosh, this is a big one.  Make it easy for them. On your checkout forum, if they wanna delete items, they wanna add items, make it super easy for them.  And you say, well, I changed that. I wanna have salad now, not soup. He goes, okay, well, I'm gonna have to take your whole order over again. Yeah, that would be irritating. And it's irritating on sites too. If they hit the back button, they should get right back to the forum they were already at. It shouldn't wipe out everything they have and I've seen a lot of sites do this. And number 10, not checking patterns and analysis. Now, what do I mean by that? You wanna check what sales are happening, okay? You wanna find out which products are more prominent than others, which ones sell better than others, which price points sell better, which your average sale is, all those things. In addition to that, you wanna have a heat map.  Where are they clicking? Where are they going next? If you see certain patterns on your website, you need to fix it. For example, we had a picture on one of our websites and it was just a picture. It wasn't a link, it didn't go anywhere or anything like that. But when we looked at the heat map, we found out that a lot of people were clicking on that picture. They were clicking there to go somewhere. They thought it was actually a link. So what did we do? We put a link there and we sent them somewhere where we could make more money and it actually made us more money. But if you don't know where they're going, if you don't know what their patterns are, if you don't know what their habits are, you're missing out on a lot of business. Now, you may be in the beginning stages where you don't have that many clicks, but now's the time to do it.  You're gonna be shocked where they actually go.   What's causing them to do that? You've gotta figure those things out. And the only way you can do that is with data. Fortunately, we don't live in the olden days. We don't have brick and mortar stores, right? Where you have to look at people coming in the store and watch where they walk every single day. That would drive you crazy, right? But on your website, you can. There are patterns. There are heat maps. There are things you can employ on your website to improve the actual system, to improve the pattern, and to improve your sales. So I hope this video helped you out. I hope you get it now. I hope you understand all these things that you could do on your site to improve your sales and to make more money. Now, you probably really didn't think about your checkout page before. It was probably just something that came with the template of your website. Almost all checkout pages now can be altered. If you have a website where it can't be altered, you probably are in the wrong spot, okay? Because most of these checkout pages can be altered. Now, a lot of the very basic website companies that give you a website on the Super Cheap, they're not gonna be able to make these changes. And that's why you should move away from them right now. I highly recommend you building some sales pages in Cartra. Cartra, you can make any changes you want in there. You can make changes to your checkout page, your sales pages and all that. And it's a great marketing tool. If you don't know about Cartra, look down in the description. I am an affiliate for Cartra. You can click on that link and it will take you to a page where you can actually watch a video and you can see exactly what it does. Absolutely free. You don't have to opt in. You don't have to give your email, none of that. And you can see exactly what Cartra does. I highly recommend it. And if you do like it, which you will, if you watch the video, you can get it for $1, just $1. So go check that out, check out Cartra. It's a great way to build your sales pages. And then if you have one of those cheaper websites, you can send them from your landing page stuff on over to your website at some other point. But make sure you change that website. If you can't make changes on it, that's a problem. That's a real problem. You'll wanna switch companies. I hope you enjoyed this video. If you did, give me a thumbs up. I would really appreciate that. Don't forget to comment below. Put any questions, comments, suggestions. Tell me what your weather is. I don't know, let's get a conversation going here, okay? Put something down below. Don't forget to subscribe if you haven't done so so far. Click that button. If it's red, click it, turn a gray. Don't forget your bell. Turn on all bell notifications so you're notified each and every time I go live or if I upload a video. I really appreciate you watching on my channel. There's 1,100 videos on this channel.  You can get a full digital education on this channel to start going through videos. Make it a task. I'm gonna watch 10 videos a day on JR's channel. Until I get really good at this, until I make a lot of money. All the things that are taught on this channel are things that work. They're not theory. They are actually proven things that work. Wouldn't you rather do that than listen to somebody else's theory? I do e-commerce every single day. I sell courses every single day. I'm online every single day. I do what I teach. Isn't that what you wanna do? You wanna learn from somebody who actually does this stuff? If so, get in there, watch more videos, and I appreciate your attendance. Thanks so much for watching this video and I'll see you in the next one. Hey, thanks for watching my video. Don't forget to subscribe to my channel and click that little bell right there so you can be notified every time I do a new video. Also, click on one of those videos there. Keep watching on my channel.


Hi guys, thank you so much for staying up for the last talk for the day So this happens to be my third talk actually fourth if you count Meta refresh and I think here on your JS who has been Going awesome and more and more awesome. So a big cheer to the has gig team and I think to the entire community as such And I really appreciate the money details that you guys get into and keep improving every single year. So that's awesome Okay So talking about demand-driven applications primarily with graph ql I Tend to think there are three big problems when it comes to being web development The first two you probably already heard of which is cash in validations and naming variables And I like to add a third item to that which is adhering to Jason contracts And the reason why I say that is because pretty much in most of the engagements that have been a part of The Jason contracts that we agree upon at the start never seem to be the same when it project goes like things keep changing over and over and that's not a great thing and That essentially leads up to this whole situation of where the API tends to become a bottleneck for us So if you look at it, you have the data layer and you have the experience layer So data layers where you have all your databases Out of them being powered by microservices and you have the experience layer That's being built on your angular's your reacts and the view Jesus of the world and the mobile applications on Swift and maybe Kotlin nowadays so these of them keep moving at a great pace and is the API layers job in the middle to try and make sure that the Data that's coming from the data layer is Massaged and represented in the right way that your experience layer can see it on the top and that's where things don't work very well and The date the API layer is also where a couple of problems keep on occurring So the first one is like I said your API is keep changing and changing an API is never a good thing for anybody Every time new features get added in and you want to change an API your front end There's a very good chance of front-end applications can break and to sort of avoid that what you land up doing is sort of versioning your API's and when you version your API's you'll end up having to maintain a whole bunch of API's with just small incremental changes over The other thing is network latency, and I think network latency is the one that sort of affects the most to your API layer And and that is more pronounced when it comes to mobile and then that's family because of the way cellular networks work Right, so every additional request that you're making to an API The amount of payload that it downloads or the amount of time that it takes or it actually puts in a lot of Slowness to the loading of your app. So network latency is one of the biggest factors that affects an API layer And the last one is documentation The way rest works the way we build our rest API's Nothing is the whole API is of no use unless you have documentation that tells you what API's to hit or what data's to get back on So those are couple of challenges that we land up facing with your API's and the whole idea of Demand-driven architecture is to sort of minimize some of those problems and make life a little better So before we get into that Just a quick look at how traditionally we have been working So if you look at it, we obviously nowadays work in a component-based architecture You have a parent component and a couple of child components under them And the parent component is usually the one that goes makes a network request gets back a big chunk of JSON Takes the data that it wants to render renders that passes the data further down to the child components And each of the child components render the data So they pick up the data that they want to see render it up a lot of data gets wasted unnecessary information Which you do not get to use at the same time certain components need some data Which they haven't got from the parent components and what they land up doing is when they go and make another network call Get that data and and render so that's essentially how most of the application that we build nowadays work and Which is fine, but you know if you look at it your components are sort of doing pretty mundane things You know, there's no smart intelligence over there. You get the data I just render it and that's probably other reason why you call them as dumb components I know they call them commons for a different reason, but you know the baby biller applications are pretty much rather dumb When it comes to demand-driven things work a little differently So here every component knows that this is the data that I want to display and the component will make a request to the Parents saying hey I need to display the component give me these three or four fields that I need and that goes to my parent component And that intern goes to the root component and the root component will collate all the data fields that That all the child components need makes one network call to the top gets the data in and renders all the data back down And what happens with that is every component gets exactly the data that they asked for which means not more not less Which is a very efficient on the network for us. So that's how one of the primary principles of the way demand-driven architecture works Right and graphql is one of the tools that works on this principle and if you ask me what graphql is Basically, just three things that you need to keep in mind one. It's a query language for your API To it runs on the server. So it's a server set runtime and it uses a type system So that's three basic things you want to keep in mind And while you're talking on this you also want to know what graphql is not because there's a lot of confusion around it People tend to misunderstand it. So just want to come throughout a couple of points out there So for one, it's not a database Things like graph database like Neo4j is a graph database graphql does not store any kind of a data. It's a transport protocol It's a client-side statement. It's not a client-side state management library Just because it was made by Facebook does not mean it is limited to only being used with react and relay And actually it's not even just limited to JavaScript and the node world. It's much bigger than that And finally it's got nothing to do with Facebook social graph. I Had people coming up and asking me so what I we built enterprise-based applications and we got nothing We don't need Facebook friends. We don't need friends or friends and likes so can you still use graphql? I was like, of course you can use graphql. It's got nothing to do with the social graph So these are a couple of things that graphql is not so what exactly is graphql? So when Facebook decided to launch graphql They simply pushed it out as a set of specifications of how query should be written And that's all that they did they did launch a small reference application on top of that But the main thing that Facebook owns for graphql is the specifications and what that did to the community is every community went in picked up the specifications and built a graphql server on their own favorite languages and by that now We have got graphql servers available in pretty much every possible language That's out there. So which means you do not have to know JavaScript to use a graphical server if you work with Scala Haskell Ruby you can work with graphql In addition to that, you also have a couple of client libraries that use graphql. These are optional You may choose you want to use them it makes life a little easier But otherwise you can just write plain vanilla JavaScript. So relay and Apollo are a couple of clients that are a lot more popular in the space How does the graphql topology look like so? You have the bottom You know your databases You've got your order management systems or inventory and all of that or the data from that is being powered up by micro services And then you have a graphql layer that is sitting on top of that It's essentially doing the plumbing over there so you take data from all these data points and Graphql builds one big scheme over there and your frontend application whether it's Angular react or if it's a native App built on Swift or maybe native script all of them hit one single endpoint There's only one endpoint that all of them hit to get the data back So you don't need to know what are the various APIs that are there I don't need to know what is the parameters that I'm going to receive nothing I just need I just work with one single endpoint. So that's the beauty of graphql So the way graphql works is so as I said every component defines the data needs So here I have a component that says I need name email address Whatever I simply create a JSON object of that send it to graphql And graphql respond back to me with the JSON object with the data filled in and what comes with graphql is a very nice interface called Graphql wherein, you know, you can live Sorry, pretty much live mode writer queries and see how the responses look like I'm going to try and show you a couple of examples of this like I said graphical is a very nice interface for building For testing a graphql and there's also something called launchpad Which you can access it at launchpad dot graphql.com So this allows you to write build a JSON schema Build your queries and actually see the live results. So think of it like J has been but for graphql So you have a left interface wherein you create your schemas and in the center pane is where you create your queries And on the right hand side is where you'll get to see the outputs of this queries So I have a couple of Pads that you can just look at so at the heart of graphql is something called the graphql schema So this is where like I said, you do the plumbing work, you know all the data coming from the deep from your API You keep them all concentrated in the center and you create a various fields that are there out there and your front-end application Will simply ask for this fields and inside a JSON schema There are just primarily two basic things one is the fields and the second one is what the field should resolve to So if you look at this particular thing, these are a set of fields that I have So let's look at the first field is one field called. Hello, and it's of type string So like I said graphql is a type system So every field that you define you have to define what the type that goes along with it and for this field called Hello, I have a resolver function and a resolver function is nothing but a JavaScript function and inside that I could do whatever I want So for the hello function, I simply say respond back with a hello world and If I have to build my graphql query, I Will write hello. So that's my field name and if I run it It should respond back with a hello world wanted to respond back with something else. I just change the parameters here So let's say Yes, who rocks it would update my field on my rat panel So that's the output over there and you will see that value has changed to j rocks. So it's as simple as that Let's look at the next example where you have a field called show cities So so the field is called show cities what it returns back is actually an array of strings and in my resolver I'm simply returning back an array of strings out here so if I go in and say Sure cities and you notice graphql is doing an autocomplete. So, you know makes life a lot easier for all of us if I run that I Probably get an array of cities over there. So that's my second field So you can create fields that respond back with integers Skillar values like strings bullion floats. You can also respond it back with a string This is a third type of Feel that I've created it says get area it takes in an input of a radius Whose type is integer and it runs back a float Very simple thing and in my resolver. I essentially have a formula that calculates the radius of a circle so if I have to try this out I get area and I say radius and I give a radius of say two and Should get my radius over here so Graphql at the core of it is very very simple a field and a resolver function Which is nothing but a JavaScript function and do whatever you want inside the JavaScript function And what was the resolving value comes back as a response to the field that you requested for That's that's the whole base of Graphql and if you look at it so easy that you know you can actually start seeing how you can start mocking it how we can use it for mocking data because clearly when you're building front-end applications Your API is never ready right how many times are in situations where you're building a front-end application that your API is a hundred percent ready Very rarely your API is are never there your contracts are there Yes, your existing contracts are there you agree on the contracts We take them put them into static JSON files and go and start building your entire front-end your applications are very close to Going life your peers are still not ready and by the time your APS come in ready They're different from the contracts that you have gets very frustrating And I think that's where graphql's beauty comes in because that solves a problem for you So one it's a very Sorry, that's an example of mocking so I set up a graphql server I define my data types and you say these are my data types and this is how my Schema is going to look like that's all that I need. I don't need to care about anything Now because graphql knows that every field is associated with a certain type It knows what to respond back with so if it's an integer is going to respond back to the random number It's a string is going to respond back with the hello world That's how you can do that and that's a small library that actually does it for you So over here there's a small module which says add mock functions to schema It's available as a part of the graphql tools the ones you import that in Mocking capabilities available for you over here. I can go in and try so I've got a couple of queries and You know you can see that I've just named the queries. I say got a query called with an name called author Maybe I can go and run that if you're going to run author on the right hand side You see the responses have come up. So that's all mocked data So whether there's an integer field it will respond back with a random number if it's a string It's going to respond back with the hello world because that's what my module is providing me right now Which sometimes isn't very great. You know, I want to have a little more realistic looking data Or I want to get more control over my mock data. I can probably do that So thankfully I can go in here and I can define that if it's an integer Respond back with a triple one in this particular case So if you notice Where there's an integer it will show up as triple one. Maybe I can go in and add a age field over here Let's see how that works. So H would also show up as a triple one If I want to define a certain string Simple enough, so that's my custom string that's going to show up now for every sting value that there in the system if I want to get a little more creative I can actually get rid of that and do something pretty crazy is like In the string because it's a function. I see I create an array of random strings and I randomly assign a single string to Any random value that showing up over there. So every time there's a string it'll randomly pick up an element from the array and show It up over there. So that's how you can start over customizing your mock data, but you can do even better There's a very nice library out there called casual. It's a nice npm module called casual You can input the casual module in and what casual does is it creates very realistic looking fake data for you so yeah so I can input casual in and Over here say for example, if it's my user object, I'm just going to go and disable Come in the score out and I say get me a real looking name and get me a real looking age So if you see you got a nice name called Mrs. Jonathan snub, Sheena and The age is 48 and the reason the age is 48 is because I've defined that I want the age to be a number between 18 to 75 So so that's casual for you. I can even go ahead and Give an address field and when I want I want a stream name. I want a city and You actually get random names of the cities and all of that. So this makes it a really functional mocking server for you Use this get started go and build your entire application Now your schemas are set in tomorrow when your API is ready All you need to do is just go back and add your resolvers to each of the fields your fields do not change They should ideally never change your fields not change and if it feels don't change all the front end application that you build your mobile apps and native apps They're all going to and you react apps. They're all going to work as this is just the resolvers. What are you going to change and do the plumbing over there? So you can take a mocking server and take it to production without having to discard anything away So that's another classic example of how graph kill can actually help quite a bit so there are three types of operations that you can do with graphql the first one is a query which are essentially reads and That's what you saw The other one So that's how a graphical query will look like you essentially pass an object These are the three fields. I want to respond back with those three fields The second are mutations so mutations are where where you go and update record So these are right operations and in a mutation you pass the parameters that you want to change and you pass the parameters that Graphql should respond back with after the change has happened and they could be different They don't have to be the same in this example because they're likes I'm just responding back with the like but I could say update the likes but respond back to me with the name of the product That is there that will still work The third is subscriptions and I think that's one of the coolest features here. So Subscriptions allows you to do real-time reads on specific fields and they keep listening to certain mutations So even if a mutation happens the subscription will trigger and those fields will start showing up Now from a query standpoint, they're pretty much similar to the way you work with a read query But things start to change on the server side So so I think till about a few months back these specs for the subscription was still in draft mode And they were not fully released But the Apollo team went ahead and kind of released a full fully featured version of subscriptions on the Apollo server And that's primarily based on web sockets So if you want to use subscriptions in your application lead to do a little more You know for queries and mutations is just about going and adding a resolver function and you're all set But with subscriptions, you have to go about setting up a small Subscription endpoint you need to set up a subscription endpoint and you need to set up web sockets So this is on your express side prefer code additional and In your resolver you'll have to use pub sub so use a pub sub to keep listening to an event of a mutation and every Other event mutation is happening. It's going to go about updating the fields So for me if you ask me, I think subscription solves a lot of Modern-day problems that we have faced right so just so one of my pet peeves is this you know We live in a tablet world we have like 30 40 tabs opened up in a browser and out of which seven or eight Tabs belong to the same application that we have like we work on github I work on github pretty often and I'm working on a repo. I got a bunch of PRs I got a bunch of issues that all opened up in different tabs I've blown close a couple of issues merge a couple of PRs and my damn count is different on every single tap So the I'm count count of opening issues is very different. I guess very frustrating So need to keep refreshing each step to make sure that my counts are all same same as a thing with e-commerce, right? I've got four or five different product pages opened up I've added a couple of them to the cart and my cart items and cart number is not the same across different tabs And and I think that's where subscriptions can actually come in and solve that problem for you So this is a small example that one of my colleagues built in Shalini is Shalini around here? But so Shalini is a very young colleague of ours and you know I kind of help her out with GraphQL and today can you help me build something with subscriptions and she came up with this down in a couple of days So what this is is a product listing on the left hand side and it's a cart on the right hand side And you got subscriptions enabled for your items to cart and your cart page every time a product is getting added to the cart Yes, up things should start popping up over here without having you to do a refresh She's had to cut immediately it shows up on your cart page and the count is also changing on the top So now your browser tabs are all synced with each other So that's a small video of how subscriptions can work in Query fragments. I think another cool thing about GraphQL. So if you remember at the start I talked about how you have queries How every component can make a demand of the data that it needs and it'll pass up to the parent in GraphQL you do that with something called the query fragment and if you look an example over here on the top There's probably like a card component a profile tile can call it as so you got a profile pick You got the name and some information on what the status is and how long have they been a member? So all the data is now created as a fragment and that fragment will simply define that hey This fragment is called public profile It's on type of the user type of person and it's got a name field profile field status and a message and Then you also have another component called the billing component billing address component Which defines that I need the street address. I need my city. I need my state and we zip code so on and so forth So every component I just define the fragment of the data that is required for that component And then what happens is on the parent level using a simple spread operator These fragments are pulled in and your entire Query is built. So again a simple example for this so on my left hand side is The whole GraphQL schema. It's got all the information about the user first name last name display about the blah blah blah every single thing And what I've done in my query is I simply create small fragments So this is my public profile information which simply shows display name and avatar and I've got my private profile It's got more information with things like email Billing address and stuff like that and then depending on what page I'm going to query from I define What data should I be pulling in if it's going to be my personal profile page logged in profile page? I want to pull in both my data if it's just my public profile, then I'm just going to pull in my public profile information So if I query profile page I would probably get all the information in so data from my public profile and also from my personal profile and if I query only Public profile I get only those two data points in and now because these are fragments I can just go in and I can so for example I know I know this component is being used in like five or twenty different places and now your project manager comes in and says Hey, you know what just can you just add this one additional field over there? Which essentially means you need to go and add it and all the different places not only the component But also the component is probably the same place But the APA that's been using we'll have to make sure that that feels are available all over there But now with very fragments. I just need to do it at one place So I could just define it over here and every single place where this fragment is being used will automatically that additional information of members since And that's all casual by the way. That's casual mock data. That's out there So right from date and everything can be pulled in so that's graphql fragments for you. Okay, so So these are a couple of good things about graphql There are a couple of not so good things about graphql and the first one is the classic n plus one query problem Uh, so the way graphql is structured right every resolver function runs asynchronously asynchronously within a promise What can happen due to that is the same record can be hit multiple times So the n plus one problem is where you got multiple queries hitting the same record and returning back with the same result And that happens very often with graphql So if you see this example over here, I got a list of friends And I got a best friend for each of those friends And there's obviously a convenient possibility that that my best friend is somebody else's best friend also And when I run a query like this, what happens is on the network is or on the database is going to make all these calls And it will realize that the person with an id2 is getting called multiple times, which is essentially not a very good thing And that's a problem happens very often with graphql And I can probably show that with a small demo So the same example that we saw put it up in graphql. I got a list of friends and I'm trying to get the name of the best friend and also my friend's best friend So when I run that I get to see a bunch of names And you'll obviously notice that some names are duplicating over here. So shellesh for example Is the best friend for a lot of people. So his name shows up here multiple times And on the database What's happening is that particular id is getting called Multiple times and that's the problem. So to solve this you have something called A data loader So this is a very small library that lay by and put together apparently it's like I mean He and is one of his friends sort of where programmed and wrote it in a coffee shop And he's just about 300 plus lines of code So very small library, but this sort of solves the whole problem of rn plus one And it does it in two ways So your data loader basically does just two simple things it does batching of all the queries and secondly it does Caching of the records that have already been queried for Right and if I have to go and enable this in my application reasonably simple I would go and import my data loader in And I also obviously create a new data loader instance And then in my queries where I'm simply doing A very regular find by I'm going to route it via my data loader So I'll just save it I run my same query again. I get the same results Which is great, but the good thing also is It's just like one So one call went into the database for the data. So at the most you just get one or two calls So that's later data loader And I think if you're using graphql on the server, you should definitely give this a concentration The next thing is uh, so a lot of A question that keeps coming up very often is how do you do authentication and authorization with graphql? And I think the plain and simple answer to that is you don't So as per the specs and for the guidelines, it's recommended that you do not do any kind of authentication in the graphql layer But uh, you kind of do it above and below. So just to get everybody on the same page Authorization and authentication is likely two different things right authentication is where you want to validate whether the user who's coming in Is a genuine user or not? So if the person is a genuine user then let them even access the api They're not a genuine user Just return back with an error and don't even let them touch the or api. So that's authentication Authorization on the other hand is you want to check whether the person who is making the transaction Is he authorized to make the transaction or not? So It could be like, you know, if you're an admin, then you're able to make right changes to certain fields If you're not an admin, then you're only able to read so that's authorization And the recommendation is that you separate them out and you do it this way So you have authentication on the top so you sort of in your express layer or in your server side layer and once that is uh And once your authorization layer is there and the first request that's coming in is valid Then it goes through your graph ql layer, which is transparent doesn't do anything And then it goes and checks on your authorization, which is essentially Sitting on your business logic or in a database layer And then if that's valid, then you allow or disallow certain transactions to happen So that's essentially the recommended practice that how you recommend using using authorization or authentication with graph ql If you're using node and express very standard tools, you had use passport You can use the jwt tokens. You can use by crept the standard things that you do So they all on the express layer that's there graph ql you do not want to ideally do that Having said that you can do it if you really want to do it, but the recommendation is that you do not Sure, I did not do that So that's about it. Okay quickly Uh, let's try and play a small game So this is an application that we kind of built together It uses angular on the front end because angular is an awesome app. Yes and It uses graph cool, which is a hosted version of the graph ql server And app is very simple.  So it is using queries to read the list of Libraries and show it to you. There is a mutation. So you don't have to click on a star It goes and mutates the value of that particular object And with subscriptions, it will keep sorting and making sure that the the library with the most number of stars comes first It's on firebase and it's using free graph cool So not so much of traffic or load is going to take but let's give it a shot So that's a url if you guys can just open up your mobile phones and try and Hit it bit.ly slash get hyphen stars. So bit.ly slash get hyphen stars. That's the url open it up on your mobile phone You see a bunch of libraries Sorry, get stars. So go ahead and start if my subscriptions and if my servers hold up, hopefully you will see these The library is opening up. You can try and see if they're in staying in sync with what You are clicking and what i'm getting to see. He was moving forward Nice to see angular out there. Let's react our react the angular move forward Wait a minute and then you can just stop it so Yeah, so anyway, that's a small demo out there and the codebase is also available on bit.ly slash get hyphen stars hyphen code Essentially take it to a GitHub url and go and play with it. Like I said users angular for with aot and users graph cool in the back end So that was about it for the demo and so I never was an opportunity to give public service announcements at js so So we as a community are extensive users of open source pretty much every tool that we use every library that we use is open source our npm projects are you know our npm modules have anywhere around 800 to 900 Modules in and all of them are free, right? So we're huge consumers of open source and I think it's sort of time for us to start contributing back To the open source community and you can do that in every possible way very small small things You know, obviously you can raise issues Over your various libraries that you're working on and not only just raising issues I think it's more important to try and make an attempt to fix those issues So try and make an attempt to fix those issues raise a pr Try and see if you can do some improvements on this. I think just in the course of me doing the stock I found I was just obviously playing through a couple of github libraries and I found there are so many opportunities for me to contribute back in terms of improving their code simple things, you know like Missing out of package.json just going at those dependencies in or as simple as your npm start script is not probably using nodemon make it use nodemon So very simple things do very small small things But start contributing back to the open source community because unless you do that Uh, the core people who are maintaining this is probably getting burnt out trying to just answer all your issues. So That's one if you are Getting started with open source, uh, the talk was happening down there was many went for a moment Otherwise there's a very nice article on medium by kensy dot which is first time was only go and have a look at that It talks about how you can start contributing to open source And also in github go and look out for these tags called first time was only beginners or help wanted so Pretty much a lot of libraries of their web pack and angular and so many more they have Tasks which are simple Which are more you know, which new people can go in and start working on go and search for those particular tags For those repose see if you can make any contributions and send keep raising prs I think that will really help us grow as a great open source community And that's about it from my end. We will take questions. I still can't hear you Hello, yeah, yep better. So, uh So this is about probably the demerits of graphql how we can You know get into trouble with using graphql. So typically rp applications. We want to authorize So as if someone has rolled this he can only Uh see these fields and he can only uh, this is an important call because this is put In graphql. How do you handle those things? And sometimes it probably becomes an overkill if you are using graphql for such applications I think graphql makes sense. Uh, when you're you've done something like Give me all the comments for this user id and then for that comment give me the user id and for that user id give me all the likes Where the schema is more dynamic But in applications you want to restrict what the user wants like you will say that once a user hits this I'll only give him the specified response. So what are your views on this? So I would kind of disagree a little bit saying you cannot use graphql for enterprise applications You can but to answer your question with regard to how so I think a question is more with regard to How can I selectively show certain fields to a user based on the type right? Yeah, so so What you can do with graphql is so there are directives called skip or include So I can say at the rate skip or at the rate include and I can mark certain fields for that So, you know, for example, you can use query fragments with the classic example was a public and private So there is a public private profile I can put it under a directive saying at the rate include and I say if that user category or bullion is set to true Only then include these fields. So even though it's a part of my query, it will not render it unless my condition is set on the top So that is possible with graphql selectively showing fields The other question was with regard to sorry Yes, so Yes, so your graphql sort of gives you access to all the schemas that are available But then the person who's building an api for you So if you look at the person who's building an api, he or she also has access to the entire database in a certain way So the same person is the one who's kind of transferring on to graphql. So I wouldn't But then like I said, if you look at the example that I showed you the authorization You could still have authorization on your microservices layer So even though you have that field in graphql, you could still reject that at your microservices layer or on your actual core application layer Let's do that We have time for one more question So I am new to graphql. So, um, and I would like to know a little more about the uh server side deployment That's that's what I would I would like to know all right, um, so One of the one of the when you say someone's a deployment, do you mean languages or how are they deployed? Yeah Yeah, yeah, so so specifically like can I can a single server also cater to graphing as well as a rest base calls or that has to be a dedicated servers No, they would be different servers. So yes, they would be different and um, how how do they interface with database? So like I said in graphql, when you have a resolver function inside the resolver function You could write whatever code that you want to return back So if you want to write code to hit a mongo db database or to hit an interest api and bring it back You can do that. Okay, so it's nothing to do with graphing as such No, so graphene. No, nothing when we say it's a graphene Or graphical graphql. Yeah So graphql is like the server language graphene is I think is an open source tool that allows is similar to graphql Actually, it's I think a product of graphql. Yeah, I think that's just a spin-off of Yes, it's a graphql implementation on one of those languages. I think I have a number on my list So that's a python port of graphql. Yeah, that's there. Yeah, and uh, so it is just it works just like graphql It is a graphql server Um, another thing is, uh, can you show me, uh realistic request Not not just the payload, but I think this might be something better taken offline so that we can let everybody go home So you want to see how a network looks like with the graphql? Yes. Yes. Sure. I can show that It's essentially just a post with an object attached to your url So even a query is going to be a post. I'm sorry even a query is a post. Please catch up with Vinci after the talk Thank you very much


Burley in their change-cat of all-glue. That's a heavy collision between Barnes and Francis. And Francis has taken a whack here, a high one from Ashley Barnes, and Terry's keeper at his hurt. I think it was his knee. We're going to have a little look here. Oh, so it's the full bottom of his boot. It's studs and right down the side of Simon Francis' face. From the left. Right under the goalkeeper again, and Ramsdale has to be right on his metal. And this time, tips of the way over his own crossbar. Excellent way of the game by Ramsdale. The way the ball swirves in. And there's a corner to come. That's a very, very important touch. That's going in well. If he doesn't get that, that is swirling into the far corner. That's a nice quick from King over to the far side of Stacey, who's 10 yards over the half-way line. Now Joshua King, out on a wide position now. Flores went into his calm wheel, so to know if he could have taken it down, was in. But it's whizzed off the turf past him. Fraser from the left-hand side, deep to the back post. The header's in there, and wider the post from Mepham. He got himself on the end of it. King has just tried to place that in the corner. Ended up being relatively, you know, not a bad side. He's off balance, wasn't he? The ball's coming over his head, so very difficult. Rico again, in towards Gosling, headed clear. Lover on the volley, back towards goal. Always swirving, though, with five yards wide. Yeah, a way to try. Perhaps could have had a touch and finish. Lennon out this near side, one-on-one with Rico at the moment. Couple of step-overs, back to the end of the box, and Westwood into the near post, and the header. Goal is given. Same as last week, a protracted delay. And same as last week, it might be the away team, who've nicked a 1-0 win late on.