Warning, this video will contain spoilers up to chapter 1041. You've been warned! Hello my Nakamataichi, this is Joy Girl, and I want to discuss what's become quite the complex and complicated prophecy concerning Joy Boy, The Dawn of the World, and how this might relate to Momonosuke. And of course this has been partly brought on as a result of the latest chapter 1041, where Yamato suggested that Momonosuke might actually be the prophesised figure to bring about The New Dawn. And I think this is quite a juicy detail and a lot of fans have been speculating about what this means for Momonosuke, how he relates to Joy Boy, if Momo is Joy Boy, which is an idea that I've discussed in the past because I do know that some fans have been speculating for some time now that Momonosuke is actually Joy Boy. And that idea has always struck me as quite intriguing because for the most part I've always assumed, and I think it's safe to say that most of the fan base probably assumed that that figure is actually Luffy, you know, as the main character, with all of the connections that could be made between Luffy and Joy Boy. So initially, reading the last chapter, reading Yamato's words, it did confuse me for a while. But then I've gone back and I've had time to reread some of these chapters and reconsider all of these elements of this great prophecy. And I think I've clarified it in a way that makes sense, or at least to me makes sense. But I want to share my thoughts with you guys and I want to hear what you all have to say about it. So I want to start with the statement that Momonosuke is not Joy Boy. And I think that might be good news for quite a number of people because I've seen some very passionate comments on this topic. I actually saw one comment from my chapter 1041 review with someone saying that if Momonosuke is revealed to be Joy Boy, then they're actually going to drop the series. So I'm here to share the good news that no, you don't need to drop one piece, keep reading, because I really don't think that Momonosuke is going to be revealed to be Joy Boy, but I do think that he's a crucial figure in this prophecy about the dawn. And I think part of the confusion is that this idea of the dawn has been brought up multiple times down the series. It's been referenced by a number of different individuals all through different contexts, and I think they've all sort of touched at it from different angles, even though they've all been circling around the same idea. For example, there's the idea of Joy Boy not simply being a figure of the past, but perhaps being the figure who's going to bring about the new dawn, the dawn being mentioned by multiple characters, most notably the Miks and the Kazuki Clan or Toki, and then the idea of sovereigns that the Sea King mentioned during Odin's flashback, and then the way that they were talking about it. It seemed to suggest that that sovereign was again referring to Joy Boy or at least this other prophesized figure, the other one of the sovereigns obviously referring to Poseidon or Shirahoshi, and then all of this possibly going back to the figure that Roger is waiting for. And I do think that Luffy is Joy Boy or is the prophesized figure central to all of this. You know, he's likely to be the Joy Boy of this generation if that's how the whole Joy Boy thing works, but at least Luffy is the representation of the dawn. And I think this has been established from very, very early on in the series. Apart from the fact that Luffy is of course our main character, I think one of the clearest indicators of this was as early as the Marineford Ark, where Whitebeard during his final moments tells Blackbeard that you are not the one that Roger is waiting for, and then going on to warning Sengoku and the world government that there will come an individual who's going to change the world. Or as he said it, I think the words were challenge the world and turn it upside down. And again, I think it was pretty clear even in that moment that the one, the individual that Whitebeard was referring to was Luffy. And yes, of course a part of it is because again, Luffy is the main character, but then there's also the fact that Whitebeard saw it necessary to tell his sons to protect Luffy and make sure he survives. And sure, that was partly because Luffy is Ace's brother, but also I think he saw Luffy's potential and at the very least understood Luffy's significance. And I think these last words from Whitebeard now have even greater significance and makes a lot more sense now that we've seen what we've seen through Odin's flashback knowing what the Roger pirates found at Laugh Tale. After finding out all of the world's history and its secrets, Roger says that someone will be born and will surpass us. And then Odin similarly says that they must open Wano's borders before Joyboy appears. And from these statements from these two characters who we know to know the world's secrets, it seems like both of them are suggesting that there will come a figure in the future. And I think that then pretty heavily suggests that that could not be Momonosuke in that case, because Momo was already born at that time. And this goes back to a point that I did discuss very recently about Momonosuke and the possibility of him being Joyboy in a very recent video, because going back to the conversation about the Sea Kings, about their sovereigns, again, they suggest that a sovereign is going to be born soon. And again, can't be Momo, because Momo was already born at this point. And then like I mentioned in that video, when you look at Chapter 626, when Otto Hime is talking about someone who's going to help guide Poseidon use her powers for good, we see a silhouette and that silhouette really resembles Luffy. And then when you start thinking about silhouettes and how they have been used to unveil some of the lore of One Piece, we saw really recently a silhouette of the Sun God Nikai in the Wano arc. And of course, we've already made the connections between that silhouette to the silhouette that we saw of Luffy in Sky Pier, the same very arc where we saw the idea of a Sun God being mentioned and that silhouette of Luffy also again quite heavily resembled the silhouette of Nika. And then when you think about Sun God Nika and the idea of a new dawn, the dawn symbolizing the rising sun to bring about the new day, I don't know, I think the symbolism is all there. And then going further, we continue to see Oda continuously heavily pointing to the idea of Luffy being the dawn, most particularly through Pedro before we get to the Wano arc. Pedro says on more than one occasion during the Hokek Island arc that he's certain that it's the Straw Hats who's going to bring about the new dawn, that he has a suspicion that the Straw Hats are the ones that the Minks and the Kazuki Clan have been waiting for centuries to guide them into the dawn of the world. And then this is supported by Oden during his flashback as well because he says that Wano and actually the entire world is waiting for a figure and then also that when that figure comes, when that time comes, Wano must welcome that figure, must be prepared to work with them. And I think that this statement then points to the idea that this figure is a figure coming outside of Wano, therefore, again, it can't be Bomanosuke. What's really interesting is that Yamato seems to believe that this is all referring to Luffy as well. Because in Chapter 1016, we see Yamato tell Kaido that Luffy is the one that Oden has been waiting for, which is a really interesting word choice because it's along the same lines of what Whitebeard said that there's someone that Roger is waiting for. But then the fact that Yamato said this of course raises the really interesting question of how then this connects to Momanosuke and what Yamato said to Momanosuke about him being the one to bring the new dawn. Because Yamato has actually said this a couple of times. Chapter 1041 was not the first time that Yamato told Momanosuke you're the one to bring the world to a new dawn. This was also said in Chapter 996 when again Yamato told Momanosuke you're the one that's going to guide the world into the new dawn, again, based on what was said in Oden's journal. And this is what Momanosuke must have also realized for himself, also reading his father's journal because we then see him say in Chapter 1014 that it is imperative that he survives. But then I think what's important to hone in here is actually the word choice. Because I think it's important to note that whereas Yamato said that Luffy is the one that Oden's been waiting for, the wording when talking to Momanosuke was that Momanosuke is going to be the one to bring the world to its dawn. Not that Momanosuke himself is the dawn, he's going to be the one that brings the dawn. So then when you piece these together, I think it becomes pretty clear that both Luffy and Momanosuke have really important roles to play in this upcoming great war that's going to turn the world upside down. And based on everything that we've gone through so far, Luffy is going to be the reincarnation of Joy Boy, he's going to be the representative of the dawn, you know the prophesized figure, the sovereign that the Sea Kings were mentioning, the one that Roger and Oden have been waiting for, but then Momo will also play into this prophecy somehow because Momo is going to be the one that brings the world to its dawn. And I think the way that Momanosuke fits is exactly through Oden's prophecy. Now some of you guys might remember that quite a while ago I made a video explaining that Toki's last words, her prophecy about the moon being unaware of the dawn and the nine shadows, I discussed in that video how that is actually Oden's prophecy and that Toki is actually just repeating Oden's words because even though it's generally referred to as Toki's prophecy in the series as well as by the fan base, it's pretty clear that those were Oden's words to Toki which then Toki repeated to the rest of the world. And as a part of that video, I said that Oden was talking directly to Toki as well as through her actually calling Toki the moon unaware of the dawn, but also this obviously doesn't relate to Toki alone. The moon is representative of Toki, the Kazuki clan, of Wano as a whole and even of the mix. The symbol of the moon is really heavily integrated into all of these characters, into all of these players. And that really makes sense in terms of the prophecy because the Kazuki's, the mix, they are the moon waiting for the dawn. As Pedro said, the Kazuki clan and the mix have been waiting for the dawn for centuries. And in that sense, they are the moon, they are the night time waiting for the dawn. And I think the most representative of this symbol right now is Momonosuke. And the way that it makes sense is that Momo is most representative of the moon right now on behalf of his clan, on behalf of his people, on behalf of the Kazuki and the Mink Alliance. And Momo is the moon who's going to bring the world to its dawn. And this can be translated to Momo being the figure who's going to bring Luffy to the world. And this was actually essentially said as much in chapter 999, where we actually see Yamato say that Momonosuke meeting Luffy out of all the pirates he could have met and bringing Luffy to Wano must be fate. Because obviously bringing Luffy to Wano isn't just going to save Wano, but it's going to be pivotal to what continues to unfold for the rest of the world by using whatever they uncover, whatever there is to uncover at Wano. You know, by finding out how Wano is connected to the world's history, all of its secrets, Luffy will be able to use that to turn the world on its head. And Momonosuke, as the Kazuki heir, is going to be critical in helping Luffy achieve this. Because I think that's what Yamato is referring to in chapter 1041, when Yamato makes a reference to Odin's prediction. Perhaps Momonosuke must carry on the will of the Kazuki clan because as Odin found out that the Kazuki clan was the one responsible for closing Wano's borders, it is the Kazuki clan who must now open it. And I think whatever Odin found out, I think he realized it was his mission as a Kazuki. And in a sense, I think it was actually a mission he saw that he himself was responsible for fulfilling, but then realized as his time was coming to an end that that will must be carried on by Momo. Maybe what he wrote down in his journal wasn't even that Momonosuke himself is the one to bring about the new dawn, but that it must be the responsibility of a Kazuki. And that's why Odin told Toki, should I die, you must use your powers to catapult Momonosuke, the next generation of the Kazuki, into the future to achieve this mission to fulfill this prophecy. And then so if we go back to the prophecy, if we can peg down Luffy as the dawn and Momonosuke as the moon, then that leaves the nine shadows. And I'm going to go back to a theory that I made ages ago, that the nine shadows is actually referring to the straw hats, because if you don't count Luffy, who represents the dawn, then there are nine straw hat members ready to fulfill this prophecy as the nine shadows that's going to cast the brilliance of the dawn in that the straw hats are going to be the one that helps shows Luffy's brilliance to the rest of the world. And if you think about it, this is what Pedro had been talking about all along as well. Pedro's mention of the new dawn is one of the earliest times we saw this idea being introduced to us. And when Pedro mentioned it, when he talked about the new dawn, Pedro always referred to the straw hat crew, not just Luffy but the straw hats. Now as to whether this means the straw hats will play a role in the fight against Kaito himself, which is something that I said I would love to see as part of my theory. Now that seems a little more unlikely given the fact that the main combatants of the crew are pretty much out of commission. So maybe this will just come into fruition in a more metaphorical sense, but then again, given what we saw in the anime openings of the straw hats alongside Luffy in facing off against Kaito, maybe we will actually see this in a more literal sense as well. I guess only time will tell. But for now, this is how I've interpreted all of the elements of the prophecy. Momonosuke as the moon who's going to bring about Luffy's dawn to the world, and then with Luffy's nine shadows, the straw hats, who's going to back him up, who's going to help Luffy's brilliance shine, and this is how we're going to see the world turn on its head. But then let me know what you guys think of how I've clarified this, let me know by leaving a comment below. Don't forget to like and share the video, please do subscribe if you'd like more One Piece discussions, you can also join our Joyfleet Discord server, or even become a Patreon member. And I want to thank all my patrons for help supporting the channel. This is Joygirl, and I'll see you again soon.


How important is the beginning when you first hit the stage? It's pretty huge when you start because if you don't have the right footing with the crowd, you're lost. But when you get to be a veteran, it doesn't matter. It really doesn't matter.  But you know that even if for whatever reason, you can get them. Yeah, it doesn't matter. As a matter of fact, you can throw them back and get them back again. That's where you get really great.  Because when you're on stage, you know the future. You control the future. They don't know what you're going to say, but you do. It's a very unique thing that way. You can never fail if you think of it the right way. So once you get to that place where you can just kind of go backwards and forwards, anger them, make them happy, get them in a frenzy, bore them, and you know how to control that, that gives you the ability to try a lot of different things.


The topic that we're talking about today is embracing collaboration with JRuby and JavaScript. My name is John Crosby and during the day I work at Engine Yard. At night I work on quite a few open source projects and many of which spawn the ideas for this talk today and yeah, that's all I'll say. I also work on the Engine Yard cloud platform. We've got several of our engineers here today, actually half of our company is probably here today. If you have any questions about that, obviously look me up, I'd love to talk about it. Incidentally, we are hiring, it looked like everyone was hiring when I saw the whiteboards out there but we are also hiring, if you'd like to work on a team of really bright people who are a lot of fun to work with, please look me up or anyone on our team. Okay, so I thought that the focus of today's presentation would be a lot more on the mechanics of how bridging JavaScript and Ruby works and we're an agile shop at Engine Yard so we like to create something, put it out there, let users test it and iterate on that and so I've sort of been doing a mini version of this with this talk and people I work with and other friends that I can annoy occasionally and usually the mechanics, once you've extracted them into a gem which I'll show later, are fairly simple but most of my time is spent explaining why you'd ever want to do such a thing and so I think that's probably the most value that I can provide for everyone here today is talking about the why's, how everything works together and I think that you'll see that the mechanics are pretty clear but we can talk about some advice on how to use these things and so in doing so instead of just having a technical tutorial walkthrough, I thought it would be more fun to work at this from the viewpoint of a set of themes. The central principle of driving all of this it turns out is the principle of dry, do not repeat yourself and I think it's really nice as a software engineer if you can find some sort of core principles that you're working with when you're developing that help drive all your decisions. It helps make things more clear when you're designing user interfaces or deciding how to go one way or another with code and finding a central principle is actually a fairly popular topic. If you've been to some of Jim Wyrick's presentations you know he's searching for this grand unified theory of software development and if you have a chance to hear him speak definitely check that out. It's a really cool way to think about the software that you're building but it goes beyond that even to music. Very odd one of my very favorite jazz guitarists Pat Martino.  He's an amazing improviser. He does jazz, bebop guitar and I just happened to hear him out in the lobby earlier today and he's got an amazing life story if you have a moment to check it out. He was basically getting to the peak of his career back in the 60s and 70s and he was playing this gig at this huge festival and then totally just went silent and so I think the other musicians he was playing with thought this guy is like trying to have a big dramatic pause here or something but what actually happened was he was suffering from a brain aneurysm while he was on stage so not too long after that he had emergency surgery to save his life. Forgot everything about who he was, how to eat, that he even played guitar, had to relearn absolutely everything and now he's back at the peak of his game but one of the things that makes him so awesome is that he has a central principle for everything he does with guitar improv that extends from a core concept of guitar geometry and you don't have to buy a whole stack of books to learn how to play using his mindset it's just a central principle that you can use to guide your entire exploration so a little bit of a divergence but really cool that you can extend from core principles in this way. Some other smaller themes that we're talking about here are pragmatism not to be confused with short-sighted practicalism. We'll be talking a little bit about performance, some surprising interactions some of these things have with the idea of craft or software craftsmanship. We're also talking about collaboration obviously and a much larger theme of just the web itself so to kick it off the first thing is the intersection of pragmatism with the web or in the context of the web and my proposal for this talk jokingly started out saying as web developers we live in an arranged marriage with JavaScript but I'm probably missing some cultural subtleties there and I probably should have said something that would make a better analogy which is you can consider it like siblings right we don't choose our brothers or sisters that were born into families with but we are living with them and that's the way it feels a lot of times as Rubyists when we have to interact with JavaScript and there are several strategies you can use when you're in this situation the first one is the one that I personally use for a very long time avoid it try not to write JavaScript on consulting projects I can remember advocating very strongly for this for a long time you know we we can't write JavaScript it's different in every different browser and this was in a Java gig at the time and we need to be able to unit test everything we put out there how can we be totally sure that this thing's the same and all these browsers and all these works unless we can unit test it things are different now you can unit test JavaScript in the browser and at the command line if you didn't know but that was a good strategy at first I think some of us then went to generating it right there's there's a whole RGS thing we won't talk about today but other strategies were even in Pearl land I worked with this guy named Matt Lins back in St. Louis where I come from and he was rolling his own Pearl web framework like everyone was in those days and we use something that would generate JavaScript so we had a regular expression of course because it's Pearl and we were talking about the types of data on the server and we can use that same regular expression the browser to do some simple validation it was kind of a nice abstraction there and there's another area where you can do code generation like Dreamweaver again won't cover that but people used to use it to make tacky mouseovers with really tacky beveled buttons and browsers for navigations you remember what I'm talking about another strategy that's a little bit more recent is using JavaScript as a compile target I don't like this one because it's not very pragmatic and so let's just have some fun talking about why this is a beautiful JavaScript object it's it's a property foo that has the value of bar and loading that object into a bit of JSON or from a bit of JSON from URI is exactly this simple if you're using something like jQuery on the client side I like that and that's has some affinity with the way that we do things in Ruby contrasting that with the Google Web Toolkit and we can have some fun with this because a lot of us don't write Java here the Google Web Toolkit compiles Java down to JavaScript and in their environment it probably is pragmatic because they have a lot of Java developers but the one thing I didn't really like about that is they're not using web protocols or what I like to consider the web protocols they're using a mechanism known as RPC and so again it's not very webby so we could throw that out and I unfortunately did a very long lived experiment integrating GWT in Rails using a plugin and so to start that I ripped out the GWT RPC stuff and started using GWT REST and this is not what this whole thing is about today don't worry but the way it looks is instead of having this JavaScript object you can just throw up there this is Java so Java needs to know everything about what you might do with this object and if it can be different in different scenarios especially for schema-less things then you need to define an interface you need to say this thing's probably got an ID because we're storing in the browser we need a way to populate it to and from JSON and then maybe in general they'll be sort of the same so in Java if you want to load some class you don't know about ahead of time you can load it using this trick doesn't work in GWT or at least the version I was using at the time so you do whatever good Java developer does you start making factories and you have like for example this create interface that returns something that implements this resource interface and then it gets better instead of having this simple jQuery line that we saw we have a response callback of course there's an abstract class above it of course it implements an interface that GWT is expecting and then yeah you get this thing back on your response received hook you use the factory to create it implements this thing and then you populate it with your JSON text that you got and then call back into the framework ouch that's a lot of code but we're not done yet yeah well wait there's more so on the rails into the spectrum since we can do cool things with Ruby we can inspect the MySQL data store we know all the properties that are available so we can use that to code generate unfortunately this class that extends foo base which will make fun of in a second but if you have something that Java guy would call business logic that would go in this class you could change it all the time it's not very brittle because it's not going to get overwritten with subsequent generation that is not very dry because it's going to end up being duplicated on both sides defense so more fun here this base object that we extends this is the thing that actually implements resource and it has to know about every property in the active record data model so that's where this string foo is coming from and we again we populate it and those three dots there it's just lines and lines of pain all the way down so I am making the case today that that is not a very pragmatic way to integrate javascript with your code and it's not very webby as a slightly different take that I won't spend time making fun of because actually kind of cool as the guys doing cappuccino they have objective J in the browser it's a little bit more like objective C it's a super set of javascript so you actually don't have to bridge if you don't want to you can just write javascript directly worth checking out if you're interested this last one is definitely not pragmatic but I think it's a more forward looking way of thinking about this in Rebenius if you're familiar with this it's a Ruby implementation built on LLVM the low low level virtual machine and what LLVM is is a compiler toolkit there's just a series of phases things go to to get to machine code on the other end so it's language front end like Ruby C C plus plus objective C Apple's using it to do some pretty cool things these days they eventually end up at this intermediate representation it looks like high level assembly language it has functions doesn't quite look as gross as assembly and then finally there's a back end it turns it into machine code so in Rebenius you've got Ruby source actually goes to bytecode eventually ends up at LLVM intermediate representation and then generates machine code so there's the summary the cool part is that these back ends are pluggable on LLVM so it's it's feasible to use Ruby to generate this IR and then write a javascript back end for LLVM so what that would actually allow you to do is run Ruby code in the browser with no plugins which I think is compelling because I think that we've been saying as a development community over and over again we don't really want your plugins in our browser and we'd like an open way to do these things that's one way you could do it and because this IR is totally language agnostic every language compiles directly to this you could do things like Python into this intermediate representation that then compiles a javascript Haskell you can you can get as crazy as you want and then what yeah you can think of it as decompile yeah that's probably better a better way to look at it that if you see the reputation of this javascript going on here you could imagine a model where as the browser vendors if they would adopt something like this low level virtual machine code we could all write whatever languages we wanted to and run those in the browser so that's not very pragmatic as we said what about today so getting in the meat of this embracing javascript I think is the best way to deal with it at this time and this allows us to embrace collaboration in various aspects the first one we'll talk about is collaboration in the human context so I took these numbers from github if you look at their code that's hosted there 25 percent of the code on github is Ruby that already is very cool that's a huge community lots of us are already here I've seen a lot of faces that I've only seen avatars for here today and it's we have a cool community so already that's big win but if you look at the percentage of javascript code on github that's actually pretty large compared to all the other languages 17 percent so again that's a big community of people that we could be working with but the Steve Jobs boom moment that we get to here is that if you look at languages that have an affinity for the web python parole php java things like that it's nearly 70 percent of the code on github is in a language where people are typically dealing with javascript in some manner so that is a massive community that we have the potential to collaborate with by sharing libraries across our language boundaries now we can extend this principle into machine-based collaboration as well and this all funnels out of the dry principle this was my prompt personally to implement a framework called cloud kit you can find on github and I'm going to use cloud kit is sort of a storytelling mechanism here so that I don't bore you the idea is to mount these restful collections without too much tedious repetitious work so if I'm building a rails application for example I would typically generate a controller if I want to have some collection called things that I'm managing right now I generate a model I generate migration question will set of tests depending on what test framework you're using and how how they like to do things you generate a helper and a set of views to do all of your credit operations and then if you're doing heavy javascript validation or or I shouldn't say validation work in the browser user interaction then you end up writing or generating javascript models that match these and controllers as well in the browser contrast that with cloud kit which abstracts all these principles I was able to reduce it to one line of configuration in a rackup file so now you can say expose things and now you automatically get these things that would require code generation and duplication in rails so you can get a collection of things out of the web service you can get a specific thing this thing with the ID one two three all the historical versions of these things even specific versions based on the e-tag ABC for that one in a previous point in time you can post to create new things inside the collection you can do a put to update a specific thing you can also delete things of course and then get and head are interchangeable if you just want to get the metadata about an object there's even more but we're gonna wait a second so now we've got one line of code and we're still writing and generating javascript models and controllers so again there's still some things that aren't really dry there so let's see if we can take those out dry this up a little bit more and we can do this using machine based collaboration the principle here is that there's a root URL that anything working with the service can boot strapped from and you can ask it to return things like what collections are hosted on your web service now from this point I have an end to everything else hosted on the service and so in addition to things that we just talked about you can use the HTTP verb options which surprisingly it isn't used a lot and I think it might even cause a 500 and older versions of rails but you can you can ask for the options that you can perform with this things collection or what you can do with all these specific things and what according to the spec should happen and does in cloud kid is that you get an allow header back saying these are the operations you can perform on this object or this collection of objects and so I use that to create a plug-in for cloud kid called jQuery cloud kid and that enabled me to do things like set up a store just this jQuery plug-in you boot it that's just like your on ready function and jQuery when you start something up once it boots it's actually synchronize all your data with the server so all your collections are local there they're a mere of what's in your user data on the server and you can do things like create objects and it's all asynchronous because you are working with user interactions and then you can use it just like you might expect so this is sort of an intersection of themes here on our path to jruby and rhino uh... this is machine-based collaboration uh... following this dry principle leveraging human collaboration language like javascript that's running on arguably the collaborative platform which is the web before we get too excited about how we're following these cool principles and doing cool things we should note that we've totally overlooked querying which is also very common we need to be able to ask questions like all things that have a food property that's equal to bar so how would you typically do this you would write an active record thing or you would use some sort of custom finder you'd extract those parameters in the controller you might ask questions like does this apply to all my controllers because maybe it's pagination i want the second set of ten in this whole data set and then you need to make sure that the view sends all the correct parameters and all the different views that you're using if you think about how this is playing out you've got data already loaded once you've interacted with the service a little bit and the browser is on the server so what about a situation where there's a poor network connectivity or you're on the train which is where I do a lot of my personal hacking uh... do you do you limit your users from searching when they're not connected to the internet because they already have the data there so why should they have to be online to ask your server to search the data that's already local and then return it back to them again that's not very dry so let's clean this up other problems it's different for every single web app it's a one-off snowflake sort of situation it's not using machine-based collaboration it's certainly not collaborative with other people because it's not shared or standard so json query uh... from the sky named chris zip and dojo land this sort of standard lets you ask things in a cross service manner so i can say these things give me all them that have food that equals bar rating greater than this or this little double period here is recursive descent so any nested object has rating that's not equal to three sorted ascending by the rating and give me items ten through nineteen you can do this in the browser or on the server so then your question is now do i write two versions of this one in the browser one on the server also not very dry so now we have this sort of pragmatism here like we don't want to duplicate our work we want to keep it dry we want to use these types of collaboration and that's what finally prompted using a bridge so this isn't an impractical wild crazy experiment as much as this was actually needed and that's where this came from so running javascript on the server side now several choices that you can make one is no js note is really cool if you haven't checked it out i was pretty excited about the first time i saw it and uh... start using it from day one writing a lot of code in it it's pretty fast if you write it what would look like a rack app in node it's using google's v8 engine and it's using all non-blocking i-o so i was able to get like thirty seven hundred requests per second on my laptop in javascript which is unheard of previously it's good stuff check it out the thing i didn't like about it is that if there's anything that node doesn't provide as a rapper to v8 that means i'm in c++ land which i don't want to be in and so i had to toss that one aside being pragmatic there's also spider monkey that's the c-based javascript engine that's used in firefox a lot of projects do use that couch db vendors spider monkey i think mongo db is made the switch from rino to using spider monkey as well and there's a ruby project called johnson that's a ruby to javascript bridge also uses that i ran to the same problem there as well uh... it's a good project really good people hacking on i know that it's it's getting there maybe it is already there now but i was i was pushing part of it that was causing some seg faults and i couldn't get in a troubleshoot that because i'm i'm not really a c-person by trade there's also a web kit and i think chris wanstroth wrote a bridge to use this with mac ruby but again that i can't i can use that because i was thinking about ways i might want to play this thinking about jvm performance and stability in production plus this idea just being pragmatic finding a way to do this today is what led me to j ruby in rino actually happened during it a hack day at engine yard and i i was just frustrated and i just thought okay i'm gonna try this out i'm gonna write some stuff i'm gonna show that it's a fault and i'm gonna try to try this in uh... j ruby and rino and insured that it doesn't seg fault that was my act best demo watch this not say fault but it worked so j ruby as you know ruby on the java virtual machine rhino less people know about but that's a java library that you can access um... it's also from a zilla and you can use that to use java to script javascript techniques for crossing from j ruby to java it's actually pretty nice j ruby guys have done great work on integrating this uh... so if you're looking to do something like this this is sort of the approach that you can take there's java code i found on the mills illa website that's showing how to use rhino from java so you've got some import statements you're setting up a context which you can think of as your your javascript session and then finally you have this scriptable scope thing that you can call commands on that's uh... manipulating your session basically to convert this to ruby it's pretty simple you keep the import statements there in j ruby you obviously don't need the semicolons you can take off the typing information here in the the third line we don't need to declare types in ruby you don't need a semicolon in parentheses done with that line we can do the same trick with the next line it's now a little bit more concise it's not quite idiomatic because of the camel case method calls in java but uh... the j ruby guys have also done some work there so that you can use uh... which might call snake case to make this integration very smooth so now we've got something that we can command from ruby and it's actually talking uh... through java to javascript by rhino so after working with this seeing ways that i could use it i decided to abstract it into a gym uh... that's been published is called snarl it's on my github account it's also on gym cutter the slogan i got from ben burkart at work javascript in disguise it was taken from the cover of this javascript book but i can use rhino because the mozilla guys already stole that so i picked the closest thing i could think to to that and this is this transformer i had a variation this toy as a kid uh... until one of my my neighbor stole it i was really ticked off but this guy's name was was snarl so so this context that you created in ruby as called snarl javascript context you just create a new one of those and from here on out you can just play with it like it was a browser session so context evaluate one plus one in javascript that returns true on in ruby land there's also you can do things like in javascript you can assign functions to variables so here's a simple function to increment whatever number you pass in and then because you're doing this in the same context later on you can make another call to say increment this number i just passed in there it is comes out to four that's not super scientific or or elite uh... you can also think of this context as your your global scope so if you want to set a variable put food set the value equal to bar and then if you want to get it back out later you're also just saying get food returning bar where this starts to lend a little bit more power to you while you're writing code and wanting to share code with other people is the fact that you can load a whole javascript library just by calling this load function we'll get back to some cool things we can do with this in a second keep in mind though that if you are using something like this that crossing the bridge is definitely not free uh... so keep all your interactions with it course grain for example if i'm going to evaluate some javascript here and iterate over a collection of ten thousand items and just keep in incrementing those of storing them in a total really trivial stuff shouldn't take long right it's not bad it's point oh four seconds and that's using uh... the bridge in a course grain manner if we want to do the same thing using ruby and in the middle of this tight loop context eval this javascript actually was pretty sad about how poorly this performed i thought maybe some string interpolation here so i took that out just hard-coded some number in there almost no difference at all six point nine eight seconds just uh... in iterate over this measly little ten thousand objects here so don't take that approach when you're building your library and i thought in building this i would be creating ruby objects that live in javascript and vice versa trying to proxy them back and forth it just wasn't a pragmatic way to go i've not included any of that stuff in my library because it's it's not very useful at this point maybe someday it'll be pragmatic however if performance is not a concern and you would just like to say provide a scripting api for users to use in a one-off manner then there is a project uh... by this guy named cowboy d on github called the ruby rhino and after blogging and sort of talking about this a little bit he sent me a message on github very cool feature and we decided to collaborate so i think eventually we're gonna mix our projects in the same thing but he's taken a more fine-grained approach so if you're interested in that sort of scripting or seeing the techniques that he used that's a cool project to check out and i don't know whether he'll host my code or i'll host his but doesn't really matter as long as we're we're collaborating so back to this jason query idea we talked about earlier this guy chris zip who wrote the javascript library and dojo to implement jason query he's provided that in a dependency free manner for other people to use in other areas of javascript development so in cloud kit what i end up doing is keeping the whole framework but then right at the end using this jason query library so the way it works is it just attaches to a root DOM element here and you can say pass in whatever query came across the wire and then give it the collection that it's searching that seemed cool is a pragmatic step forward but it's really scary from a performance aspect because this jason thing means all of your data so how are you getting all this data especially if you're storing it in ruby land it just doesn't seem very feasible to pass your entire database as an argument to a function though we'll get back to how we solve this problem in a minute we're gonna take a diversion here validation normally if you're going to validate some objects what do you do you're using active record ruby on the server and you're duplicating those same validations in the browser with javascript and that is sort of a pain it's also it's not very dry so again let's use this to help us out it's also if you're duplicating things here you're not letting the machines collaborate with themselves to solve the problem for you you're going through this exercise that requires a human fill in values submit it and then see if it worked but there's no way for me to tell ahead of time if my thing is going to fail I just have to try and see if it breaks and that's not very good interaction design so this jason schema is another thing also by chris zip he's quite the thinker and he's quite prolific with standard proposals how about that oh yeah cool sorry about that sounded quiet to me suddenly okay so jason schema this is me declaring that I have a person that's an object because the other top-level thing you can do in in jason is just have an array as the outer thing it has these properties the person's names a string we've got some things about the birth date some men's and max we can use an integer if you want to use like Unix time or maybe a string but the format we're expecting is date time and it's also optional if you want to tell me how old you are I'm not going to push it so the cool thing about jason schema is that you can use it in combination with something called lard or low-level resource descriptor also there's sort of an intersection there with another spec called HTTP link headers so just like it in html you'd say a href rel something or other you can do this in header land to for machine interactions so we're saying that this thing that we just grabbed this thing number 123 this hypertext reference here with the semicolon scheme on the end of it the relationship is described by and we're using jason schema to describe this so this lets me detect what I expect on the server side to be the validation and even cooler and there I think they've done some experiments with this in dojo land you can use that to generate user interface elements like if I know that there's a string here I can generate some things just to start with start iterating on user interface it's a pretty cool technique and then obviously we return this foobar thing so again there's another library out there called jason schema all these things by the way you can find on my github account I've usually taken the libraries if they're not on get I put them in github and then write a test suite around and most of them aren't tested so I've read unit tests to first learn about the library and allow me to start refactoring or trying to mold it into the situation I'm in so using it we can say validate here's name Carl Huda and I pass in the schema that we created earlier this is just going to say yes this is valid and then we can try to mess it up pass in a number for the name and we get this thing back saying no it's not valid and then we have error messages number number found but a string is required and here the path to the thing that was busted is using something called json path which is kind of like x path but for json I don't know if they invented it with that in mind or not yeah I'm not sure so this again this is using machine collaboration to keep things dry and the unintended consequence that came out of this was actually a performance benefit and that is that this big entire database that we passed in as a method argument in JavaScript land we can actually index that for querying performance using json schema so thinking of JavaScript and json being sort of like Ruby they're schema free you can kind of do whatever you want with them there's a lot of things you don't really care about and you're not going to be searching on but there are property certain properties that you might care about like for a user you might care about their name so by declaring that using json schema you're saying this is something that exists for everything in my collection and that's something that's that might be important so you can use this information to control how you index the data I think this is maybe a little bit more usable approach than say map reduce which will cover you in all situations it's not saying that you should do one or the other I think maybe in conjunction this will be something cool to see in couch TV someday where you could just overlay this schema on a collection to say they sort of look like this and then you can spin off workers on the back end to try to keep this the index is updated and you can index things on the way in that raises the next question where do the indexes live if you keep the indexes on the Ruby side if you imagine a request coming into your server you have to think about the data that's coming in you can't just slap it in the database you have to look around in it and update some indexes but then on the JavaScript side you don't know about those so you end up crossing the bridge again it's really fine-grain manner and we saw the performance of that just completely stinks so the idea is lots of bridge crossing is bad let's try not to do this so this spawned yet another project extracting everything in cloud kit that was at the database layer on down into its own JavaScript library and it sort of models itself out after datamapper I haven't actually open sourced this piece yet but maybe by the end of conference I'll get enough hacking to do so I was previously using no JS as I mentioned earlier and I'm in the middle ripping out some of the assumptions I had in there for that so again modeling itself after datamapper or active record you're doing all your create reads updates and deletes in JavaScript all your callbacks are also in JavaScript so you can attach before saves after creates things like that and your indexing also lives inside the database in JavaScript and the cool part about is in the datamapper model you have this concept of adapters so you're not always using datamapper against a sequel store for example sometimes I saw you hit a live code one time a Gmail adapter for datamapper it was pretty cool to see it in a lightning talk but he was persisting data to Gmail over IMAP so in my case in this thing was to adapt inside the JavaScript database I have two adapters right now one is an in-memory adapter where you'd expect to find JavaScript objects in the browser the other piece is a local storage adapter also fully functional so if you go offline Safari Firefox IE all support this idea of local storage so you come back online later it's it's basically like a long-lived session that's tied exactly to a single domain name the cool part about that is beyond that you can run this exact same database on the server side so for example in my Ruby project using this bridge I can run the same database have a different adapter that's because it's in Java or JRuby I can actually adapt that to the file system so now we have the same indexing strategy the same validation strategy and the same storage strategy on both sides of the browser and the server this completely dries up pretty much everything left that I've been complaining about here so then you might ask what's left well not a whole lot but this is again this is sort of targeted towards a heavy JavaScript interaction type of app so the routing it's still in rack the benefit and also middleware so authentication in cloud kit for example in says saying expose these resources you can say contain them and automatically puts open ID or OAuth in front of those collections well we can keep that stuff in Ruby and still work in that world but it also allows us to continue to integrate with existing Ruby app so if you have a Sinatra app this rack based or or Rails or Merb that stuff can continue to work and you can continue to share code there if you want to take it one step further just try to go all the way off the deep end at this point you can try to reduce context switching even further by saying yes I'll keep my routing in rack however racks interfaces that they're just calling lambdas to return functions back to the browser basically you could mount JavaScript middleware in rack using snarl so rack does your routing gets gets the point where it's saying here's the request that came in you can hand this off using snarl and mount that and write all of your code in JavaScript there taking it one step further than this is something called JS GI so if you've heard of WSGI is the Python standard for this web server gateway interface that was what spawned rack this the Ruby parallel to that they also have one called Jack in JavaScript and it's sort of this JS GI standard so to wrap up here the the surprising other theme that ran across was this idea of crap this came came up over some really good Mexican food with a co-worker named Gilberto Medrano is here if you have a chance to talk to him he works with us at Engine Yard on user interaction design he's very bright and I've been able to learn a lot from working with them but the idea is that if you really care about the application that you're building and you're working let's say on something that has lots of interactions that need to work very well hopefully all of your apps are like this but I've seen some places where that matters less you can do away with terms and actually try to consider them to be obscene like front-end developer that's our front-end guys gonna do that he's the CSS guy and you can do away with other terms like that's the back-end guy's job or all have my DBA write these sequel scripts for me I hear less of this in the Ruby community but it is really prolific in the Java so the idea there is that everyone working on your development team takes full ownership of what they're building and it's more like the craftsman model you care about everything that you're building every interaction with the user and because the context that you're working in is very close to the user experience because you're using something like JavaScript then your mind is also naturally connected with the user and how these things work so I think it's a compelling way to promote collaboration even outside of our developer communities just with the users that we're building our applications for so we've covered here is basically the pragmatic ways to use JavaScript in the near term with JRuby and Rhino and also talked about some crazy far-fetch ideas of using LLVM and running Ruby in the browser and all this has been driven from this core engineering principle of do not repeat yourself that is it we aren't able to answer some questions in here this this is all my contact information my personal site Twitter my GitHub account I'd love to work with you guys on projects if you're using things like this but for now we looks like we've got about seven minutes left but there's any questions I'd love to answer no none of these are being used on production apps obviously JRuby is in production in a lot of places but these things I've been working on have been more experimental and I've been hesitant to ever slap a 1.0 on CloudKit for example because of all this flux in the background and trying out these different models but my personal intent is to use this in a production environment for some apps I'm writing in JavaScript they're not not for work at this point yeah you're envisioning that as more of like a I mean client-side validations specifically with that you were thinking like not as a substitute for server side but as an analog so it would do that first and then go to the server which would do it again to make sure that everything was right yeah so if you're using JSON schema you actually would have the same set of code running on both sides of the fence and yeah just in case someone had disabled those protection mechanisms submitted requests you'd have the same thing running on the server side there I would imagine that for the really simple cases those will be the same but that there are some times when you don't want to expose some of that information in the browser so you would you would probably have to supplement that on the server side somewhat saw some other answers you talking about offline databases whether it's offline or online it doesn't really seem to matter yeah and strikes me that obviously you want one client only download the portion of the database it's relevant yes and when you're running on the server side you execute against just portion of the database it's relevant to that client or do you run against the whole database and do extra stuff to limit the way you would in your regular Rails project to say no clients dot right so the question here is basically the scope of the data that you're querying is it everyone's stuff siloed or is it all shared and and how do you secure that I've stepped around part of that in CloudKit when when you say expose it's just all open data anyone can do anything with what's created when you say contain it's you're only working with your own thing so when you put it up there you're the only one that can do anything and access it the next layer that I've started designing with this adapter layer that I was talking about in the JavaScript engine is using a form of ACL so put this ACL which I'm trying to come up with a way to represent that and Jason that would be fairly generic but put this ACL on this collection that I've created and the users are all indicated by their open IDs so we can even grant permissions to people on other websites or other services right now I haven't totally tackled all that I think that there's going to be some some more optimization to let the drill out yeah so implementation wise for databases if you're using local storage in the browser there's just some native code that you're actually getting access to there there's also like in Safari there's a local SQLite database that you can access I started using that but it was actually more complex and why I needed which is in the local storage which is more hatch key value-based but on the server side that's that won't scale really so the old cloud kit model was using Tokyo cabinet which is ridiculously fast very stable it's a C library with really good Ruby bindings several projects are working on that but to make this work with the the new JavaScript approach what I ended up doing was creating an append only array that I'm using for storage so every time you update something it just goes on the end and that would it obviously works in the browser it's not a big deal but on the server side then you're just appending to the same file and you can avoid some corruption I totally stole that idea from couch DB but I think that's a it's a good model for doing writes safely exactly yes as in yeah it Jason even doesn't really care about the schema unless you tell it to you so the thing I'm working on right now is how you apply the schema to a collection and I don't have all that worked out yet like how it's going to spin off workers for things you haven't cared about previously but now you care about their structure but I don't have all the answers there but the idea is that once you declare the schema for a particular collection that's how it knows what it is but it doesn't care about anything else it's just all JSON data so as a user of it in JavaScript if you want to access a property that hasn't been declared it's fine you can set properties you haven't declared before no big deal this is long as you're not stepping on something that you've declared to be a certain format well you can actually set up your database as totally schema-free yeah but yeah then otherwise when you're booting it you have to say here's my config yes not particularly active record adjacent schema but the thought-bot guys how I originally found out about them is they were working on this library called jester which was an active resource client in JavaScript yeah to use rails in the back end I don't know where the project is at this point but yeah yeah I think Tamer's here he might be able to answer answer a little bit of that any other questions yes okay yeah for everyone's benefit there's an update on Johnson coming at the lightning talks tonight so I'd be very interested to check out what's going on there thanks awesome no I'm not are they presenting at the lightning talks by any chance or and what's the names of those libraries again okay red and Ruby JS two other JavaScript Rhino bridges that are available oh Ruby to JavaScript gotcha gotcha okay we should wrap up I see other people coming in I'm right at 45 minutes so thanks a lot


Hey, my name is Johnny when I'm from Buford, Georgia, and you're watching kicking their bass TV guys. So today's a whole nother day And I have a lot of stuff to do. I got to clean up the rest of my tackle And a few other things to get done also the tailgate to my truck This right here this picture is so blurry Sorry about that wind noise if you're hearing it, but this picture is so blurry and I'm gonna get this redone It is really windy today All right, I'm pissed There's a freaking nail on my tire Dang screw right there. I need to get that taken care of I'm probably gonna go ahead and actually do that now Screw getting the tackle ready right now. I need to go get this handled as I'm I'm so mad right now Like so livid You don't know idea like I've already had to get a few sets of tires for this truck just for the front not the back, but They're freaking expensive like they cost like 500 bucks That doesn't mean I have to buy a new one for that, but eventually I'm about to buy some new ones soon so I already weighing down like these things is and um That just pissing me off. I'm just gonna ask for a patch. I'm gonna see if they can patch it I'm gonna go to the discount tire this where I got a bouncer rotated literally like three days ago So I'm gonna go do that get this done, and I guess we'll continue on with the day Getting all the tackle ready on that show Org is taking out. I just can't wait till my good luck comes There's actually two there's a nail in my tire, and then there's that one I didn't think that one was all the way through and he doesn't either. There's another nail here So there's that one right there. That's the screw. There's a nail right there Guys, I my luck. Well, it's just great and he said in the top. It was like a three-hour wait Now I have a meeting to go to Now I have good ZD counts. I don't have time for this.     It didn't it just stayed the same Put some soap on the nails are bubbling because I swore like when I saw that like my tire was a little flat So I was like it might be in but my tread's so thick on those tires That it shouldn't have really mattered which it didn't it was just the other one. I don't see that so schedule appointment for Tuesday At 8 30 so you guys you guys will be back here Tuesday at 8 30 That is literally like three times in the past week.    I was so bad, but of course, I'm not gonna buy two new ones I said grand How about to do that? I'm here. This is gonna be a busy day. I'm gonna have to get all this tackle right here Big boxes if you watch the day other days vlog There's so many boxes of crap and I need to go through it Figure out what I'm gonna put in my truck figure out what I'm gonna put in the boat Like I'm just gonna get like these boxes right here. They're like completely empty I'm gonna get like worms and stuff like that. I'll put all my worms in here I'm gonna try to kind of like reorganize everything and get stuff that I need like just original colors like green Pumpkin that might need some like pink worms stuff like that It's gonna be fun I'm just so glad it's not like burning hot in here because it is usually like a thousand degrees in this building So I'm gonna set the camera down Enjoy this time This is drop shots. I went through like drop shot worms and like little like fishes and stuff like that Got a lot of green colors got a lot of pink colors box filled right there It's just the good stuff that I'm gonna use I'm I don't know if I'm gonna keep that in the truck yet Or the boat cuz I think I have a little bit of stuff in the boat, but I Guess we'll see and I'm moving on to the next box You know, I made a really bad decision.  I'm not kidding I think it's so heavy. I'll have a worm box in the boat Let's throw like a few packs worms in there usually so I'm gonna pack up some sinkers and some regular finesse worms into this Bop, I'm really sorry If I like came off bad in the beginning, which I mean it was a bad day, but I apologize I Hope it's not down in your day. Don't let this down your date.    I don't know why I Didn't even acknowledge it when I was mad, but now I'm like, I am hungry The boat is actually packed up completely the truck of all is packed up completely Everything's done. I got I'm so happy. This is all over with everything's cleaned out all my dad's stuff's clean All the boat everything's cleaned out Hey, what's up? Did what? Let me look I've been working Yeah, that's the one with the bright Yeah, that one is bright isn't it just caught this Chris just not believe it all I was like, dude, I don't think It's finally got the back tailgate on that's the brand new one looks much better the pictures not blurry You know it's crisp So everything's good shout out to Alec man. He held her up this whole truck.  I'm just not getting homes around 7 o'clock right now. I've been gone I was I woke up at 6 30. I believe I went to the gym Went back home took a shower went straight to the tire shop. So it's like When you get this done now and then you know the weight and everything Then I mess with my tackle then I went to the ZD cows got that done and now I'm here There's been a long day and I'm just exhausted and I'm actually going it's my friend's birthday. So About to leave the house now But there's no excuses I gotta keep grinding gotta keep pumping these videos out for you guys You got to keep getting stuff done for college guys I'm just Creeping up on me and I got to get it done But guys, thank you so much for watching if you haven't seen any of the latest vlogs definitely go check them out I'll leave some of the links below and check out some of the Canada videos and the GoPro giveaway check out all that But thank you guys so much for watching. Please click the like button Comment below and subscribe if you haven't already. Thanks guys. I'll catch you in the next one


billionaires are not morally qualified to shape human civilization. Human civilization is being engineered in myriad ways by an unfathomably wealthy class who are so emotionally and psychologically stunted that they refuse to end world hunger despite having the ability to easily do so. The United Nations has estimated that world hunger could be ended for $30 billion a year with other estimates considerably lower. The other day, Elon Musk became the first person ever to attain a net worth of over $300 billion, a year ago his net worth was $115 billion. According to inequality.org, America's billionaires have a combined net worth of $5.1 trillion, which is a 70% increase from their combined net worth of under $3 trillion at the beginning of the COVID-19 pandemic. So we're talking about a class which could easily put a complete halt to human beings dying of starvation on this planet by simply putting some of their vast fortunes toward making sure everyone gets enough to eat. But they don't. This same class influences the policies, laws, and large scale behavior of our species more than any other.  After watching such footage, would it ever in a million years occur to you that I am someone who should be in charge of the entire world? I am going to guess no. I am going to guess that in the unlikely event that you ever decided someone should rule the world. After watching me let a child drown, I'd rank somewhere near the very bottom of possible candidates. Now imagine if instead of letting one child drown, it was millions. That's how absolutely insane it is that we allow this class to shape our civilization. And we most certainly do allow them to shape our civilization. Take Bill Gates. He spends a fortune on narrative control ranging from immense contributions to the Guardian to tens of billions of dollars in grants. And he's committed hundreds of millions of dollars to shady political influence groups as well. He's been influencing COVID policies around the world from intervening against the waving of vaccine patent restrictions to facilitating the worldwide rollout of digital vaccine passports. He's been giving countless media interviews about COVID-19 and vaccines despite having no medical degree or indeed any qualifications at all apart from a net worth of $136 billion. This is after falsely pledging to give his immense fortune away over a decade ago. His net worth has more than doubled in that time. Jeff Bezos has been a contractor with the Pentagon, the CIA, and the NSA. And experts have claimed that Amazon is trying to control the underlying infrastructure of the economy. As sole owner of the Washington Post, he ensures that a hugely influential news outlet will always be staffed by people who will help manufacture consent for the status quo upon which his empire is built. And his grand vision for humanity involves shipping us off-world to breed in giant rotating space cylinders. Billionaires Reed Hoffman and George Soros have teamed up on a narrative control operation called Good Information Incorporated with the stated goal of countering misinformation and disinformation in the news media and the unstated goal of elevating empire authorized narratives about what's happening in the world and undermining unauthorized narratives. The World Economic Forum has laid out an agenda for giant corporations to move beyond their unofficial and unacknowledged role as unelected leaders of our world and become open partners in the governance of world affairs alongside our official elected governments with more power than ever before. There are almost infinite examples I could highlight, but I think my point is clear. Billionaires and billionaire corporations own our media, manipulate our economies, determine the fate of our ecosystem and shape our world, and they are the very least qualified among us to do so. Nobody who makes the decision day after day to let millions of people die of starvation has any business making decisions which affect other people, much less decisions which affect everyone. The fact that the billionaire class and its lackeys make this depraved decision day in and day out permanently disqualifies them from any legitimate claim to having the empathy and compassion that would be required for such a job. They are too narcissistic and dysfunctional to be permitted to have any power or influence whatsoever, much less the ungodly amount they wield today. Billionaires should not exist. They should have their power and wealth taken from them. And the steering wheel of humanity should be given to the ordinary people who are infinitely more qualified to navigate us through the rough waters ahead for our species.


What's the word y'all? Game five, the Andrew Wiggins game. I cannot wait for 10 years in the future. And I'm talking about the Andrew Wiggins. Every time we got, you gotta flash the three. Andrew Wiggins game five, bro. If I would've told you, we're gonna be game five of the NBA finals. Let's go two years ago. Two years ago, if I would've walked up to you on the street and say, hey, we gonna be in 2022, the Warriors gonna be in the NBA finals and we're gonna have a game where Steph Curry hit zero threes. The first game in 1300 days by the way, where he hit zero threes and Wiggins was gonna be the best player on the court that also had Clay Thompson, that also had Jace Tatum, that also had Jalen Brown. You would've laughed at me. Andrew Wiggins was announced as an All-Star started back in February and I laughed at it.  And Wiggins has made me eat those words. Part of doing what I do is being able to accept when you were wrong. And Wiggins has made me look foolish and I'm happy for him. The way his career completely turned around is amazing and this is a testament to hard work and being in the right scenario in the right situation. He was an amazing rookie and then he started to be an empty stats, empty calories guy. Will he ever be able to defend? Remember that part of Wiggins? You remember a couple years to his career it was like he got all the tools, all the intangibles to be an elite level defender but he don't care enough. We're in the NBA finals and Bro has consistently do five games, had Jace Tatum in a stranglehold. Jace Tatum in a stranglehold and today 26 points in a game where Steph Curry struggled heavily. Come on man. Last game he had he set a career high in rebounds because well, we're starting auto-porter and we don't really have that great of a rebound as in our team. Somebody can do it. I guess it'll be me. Wiggins, we're from this dude that seemed like he was all about his buckets and nothing else to be in the dirty work. I'ma do everything our team needs guys. Think about Wiggins three, four years ago. He would have games where he had 20 points, one rebound and one assist. You're like, Wiggins, what the? If you ain't scoring you're not contributing. That has completely flipped on his heads and I'm looking forward. Listen, everybody knows with the conversations about to be on undisputed, on first take, on whatever talk show thing tomorrow morning right as this video is dropping. Is Andrew Wiggins the finals MVP? I'm not accepting that. There's no way we're about to discredit Steph Curry. Listen, I know he didn't have a good game today but we not about to act like game four then happy. We not gonna act like before today he wasn't averaging 34 points per game on an extreme amount of efficiency. You feel me? He had one done, bro, he had one done. And they still won that game, you feel me? So far through five games Steph Curry is the finals MVP. That's all I'm saying. And I know tomorrow that's all people gonna talk about. And Wiggins deserves, if we're doing a hierarchy no matter the team, who's second in MVP? It's Wiggins, but he's second. You feel me? Be sure to subscribe to my newsletter The Enjoy Basketball Newsletter. We are so very close to 30,000 subscribers. It's crazy to say, it's completely free. You just sign up, you get emails Monday, Wednesday, Friday, some of the best sports writers that we can find, you know, give their takes and talk about all things basketball, the Enjoy Basketball Newsletter. And if you're already subscribed be sure to be checking your emails on Monday, Wednesday, Friday so you don't miss out on content. Like when we had that merch drop last week or two weeks ago, whenever the hell it was, I'm already forgetting. The people that were subscribed to the newsletter knew the exact date and time before everybody. I'm just saying, drop number two was coming around the corner faster than even I anticipated. So you need to be subscribed to the newsletter. Again, it is free and it is just content, content, content. It is just step one of this thing that we're building and I want you to be in on the ground floor. So subscribe to the Enjoy Basketball Newsletter. Link is in the description. Anyway, let's get back to it. Andrew Wiggins, what again? No, no, no, let's talk about some of the other things too. Because this was not solely the Andrew Wiggins thing. Andrew Wiggins had an amazing game but you also saw some of the other step up. And if you watch our podcast, that is the Through the Wire podcast. Here I am just plugging everything. Through the Wire podcast, we're very close to 100,000 subscribers on YouTube. So if you're interested, we publish on Tuesdays and we publish on Saturdays. Either way, in that, you know, sometimes I try to give people different content, right? So you like, Kenny, why would I subscribe to your podcast channel when I hear all your NBA takes here? I give more over there. That's all I'm saying. And in the last podcast, which was Saturday, I was like, the only thing I'm a little bit afraid of if I'm a go to say Warriors fan is that every single game, Steph Curry had to be a supernova version of himself for us to win these games, for us to be in these games. And I was saying that it's unlikely that he continues if we're in the entire series. So what he was doing was amazing, right? It's like, this is one of the reasons why he's one of the greatest of all time. But still, even the greatest of all times end up having duds. And I was like, I don't know what happens when he has a dud. Is somebody gonna step up? Clay Thompson had been the best version of himself. Wiggas was doing his thing, but you know what I'm saying? Jerry McGreen was a negative through the first four games.   And Wiggas again, with his 26, Gary Payton, the second, got all the minutes we won. I sat at the end of the game for, he had 90 minutes and I was like, Steve Kerr, please play him more. 15 points from the guy. My shooter guard slash center, is what we always like to call. You feel me? He had a couple of ducky and tight possesses. We were like, he's six three. Yes. And then who else was it? Jordan Poo hit the half-core heave. Hey, when you hit a half-core heave, it's like raps. That's all the momentum, especially when you look at that third quarter, it wasn't the avalanche that we normally see from the Warriors. It was the other way around where the Boston Celtics come out with eight straight May threes. You're like, damn, what's happening? And then for Jordan Poo to come out and hit that last shot was big for the momentum. It was big for the crowd. And that's the second time he did a shot like that. You know what I'm saying? Shout out to him. But very early on I was impressed with the way Jerry McGreen came out. You know what I'm saying? He backed up a lot of his talk, right? Through the first four games, like I said, pretty much a net negative. He had been, I want to say bad on defense because he's Draymond Green. He wasn't the guy that was the front runner for the defensive player through the first half of the season before he got injured. The other team was looking at him and like licking their lips. Jalen Brown, though he was making a lot of tough shots through the first couple of games of the series, he was really going at Draymond after game number two because game number two was when they switched the rotation. And today he came out aggressive. He scored four easy points right off rip. He was out there passing, he was rebounding and the overall stat line looked like eight points, six assists, eight rebounds, a really good game from Draymond Green. Even though, you know what I'm saying? It's Draymond Green. So you got some antics where he's getting into the face of the opposing team. He ends up fouling out the first player since like 2000 they said to foul out of three NBA finals games. Hey, it's part of Draymond Green's brand at this point, fouling the hell out. But again, a good performance from him as well. And in my mind, there's only a few things that can beat this Boston Celtics team. It took a supernova performance from Steph Curry in game number four and then Wiggins having an out of body experience considering the complete game that he's given up. But the one thing that was consistent in every single one of their losses is that they've been shooting themselves in the foot every chance they get. There's a stat that has been going around for the beginning of this game. They showed it two times on the broadcast that when they're, when they have 15 plus turnovers they don't win. Guess how many turnovers they had today? 18. Guess what the opposing team had? Six.  It's not gonna win you any game. Not gonna win you majority of the games. There's no way. And that's been the one consistent thing for all of the, pretty much all the Boston Celtics' losses through the last four months of basketball. I was like, when they're shooting themselves in the foot they will not, they will not win. There's only a few things that can beat them and themselves is one of those things. There was the second quarter. And I think it was Bezos that made the tweet. But I was thinking the same thing. They got into, they got the words into early foul trouble. They were in the bonus for like eight minutes left in the second quarter. And you would think when you get that you would get to the basket a little bit more because that's what, that's what got you to this position. We get to the second quarter. There's like five straight possessors where there's nothing but three pointers. And though they finally made one, it's like, man, let's go back to what was working. Let's get it downhill and doing some of these things. They just didn't, they didn't do that today. And it's just unfortunate, you know what I'm saying? I think a game like this showed the age or the lack of experience from some of their top guys. They had a game where Steph Curry gave them a dud. This is a game you need to win. This is a game you definitely need to win because I don't know out of the last two games and maybe you last one game if you're gonna get another performance like this from Steph Curry. You needed this game. Especially since like three out of four game, the winner of game five wins the series three out of four times. There was a stat that was going on on the NBA PA's Twitter. Or actually it's a little bit less. And it's like 73%. Either way, you get what I'm saying. Winning game five is extremely important. That's in the NBA finals. Now the silver lining for the Boston Celtics that earlier in this playoff run, they were down three, two to the, to the box. And that's where you got that crazy performance from Jason Tatum where he gave him like 40 some points and they got to game seven and they blew him out. So the series is not over, but I could tell it's a little demoralized and losing this game where you had great defense on Steph Curry. Let's not even say they had great defense. I'm being honest with you, Steph Curry missed a ton of wide open shots, you know what I'm saying? But listen, you prevented him from dropping another 40 piece, which is an improvement. And you still did not win. It's got to hurt. And listen, he may was going for it, man. He understood the importance of the game five. We got Jason Tatum playing 44 minutes. Jaylen Brown played 44 minutes. 40 minutes for Marcus Smart. They were legitimately running like a six, seven man rotation for the majority of this game because they understood the magnitude that is game five. They get one more home game and you got to go back into that chase center that was as loud as ever and try to steal one. It's one game at a time at this point. There is no tomorrow. That's the mindset you got to have. There is no tomorrow. This next game, which is on Thursday, which I like. They give them some time to travel and kind of settle down so the product that we get is not terrible. There is no game, there's no game after that. You have that mindset going to game number six, like this is a win or go home situation. When I'm looking at this, right? I'm looking at the box score right now. I'm gonna read something. There's only two people in this game out of the six man rotation that they, seven man rotation that they ran that had more assistant turnovers. It was Al Horford. Nope, I'm sorry. It was Robert Williams. Robin Williams should never have a turnover. So yeah, he had two assist, zero turnovers. And then Derek White had three assist, zero turnovers. Jason Tatum, four assist, four turnovers. Al Horford, one assist to two turnovers. Four assist to five turnovers for Jaylen Brown. You got two to four for Marcus Smart. And then Grant Williams, who's not even got to have the ball that many times, won the two. Again, shooting themselves in the foot every chance they got. I mean, but if you just look at that third quarter, you would have thought, oh snap, it didn't really matter. And then we get to the fourth. And then it did. He also left 10 points at the line. I don't know if I mentioned that earlier. You have to be able to make your free throws, bro. You have to. And you lose by 10, you left 10 at the free throw line, asking the team to shoot 100% from the free throw line. It's unrealistic. But you give yourself away by the chance to the fact that you don't have to play Luke Cornette any minutes.  Shoot 60% better from the free throw line. Is that too much to ask for? It shouldn't be because you guys are NBA players and some of the best. And that's why you're in this position. But leaving 10 at the line is insane. They got 31 attempts. I didn't even realize it was that many. They got 31 attempts. And I was getting tweets about, like, Kenny, what do you think about the officiating, yada, yada, yada? I'm so done. I'm not, listen, unless it is something super egregious, and I mean super egregious in game six or game seven, I will not be referencing the officiating because we all agree that it's ass. What more do you want me to say from that? It's bad. You know, even Mark Jackson on the call was saying that, hey, eventually you got to step up from yourself. And that was after the Marcus Smart technical foul in the third or early fourth quarter. Agreed, but like this is what the referees have been doing. You know what I'm saying? I don't think we have the conversation of how we fix it in the middle of the NBA finals. And honestly, I don't know what the answer is. So if we're going to next season, how do we make officiating better? I don't know. Holding them accountable would be dope, though. Say the same thing about Umsen and the MLB. If you're missing calls, I'm not saying dock the pay, but there's got to be something. You know, we're the NBA Finals. So these are the however many refs are in a rotation that the NBA has decided. These are the best that we have. And it's bad still. I'm just saying. You feel me? I'm just saying. So I don't know, dock the pay. So that would be crazy. But I mean, NBA players get docked pays when they do stuff bad, right? You get ejected. That's what 25 Gs or this. That's five Gs for talking explicitly to interviews, you know, so I won't go to that scale because referees aren't making that much money compared to the NBA players. But you give them saying there has to be something. There has to be something. Dang, I hate to even talk about this considering how excited I was to see Al Horford in the NBA Finals since game one. You know what I'm saying? Do I need to say anything more? I'm not. I didn't expect him to average 20 for the series. They'll be unrealistic. We're still talking about Al Horford here. But in the first three, three series, three series, I feel like I saw his impact way more than I'm seeing in this series. And maybe that is because his role is just slightly different since the opposing team is going ultra small in a lot of the cases. I don't really know what's preventing Al Horford. But again, I don't need him to drop 20 today. He shot 50 percent from the field and had nine rebounds, nine points. But he hasn't had the impact that he's had that made him one of the reasons why they got to this point. Al Horford, going into this series, was real life like having people had a conversation. Like, hmm, what type of money is 30 something you are Al Horford going to make? You know what I'm saying? And now we look at this finals past game one, you're like, oh, what is Al Horford out there doing? You know? Again, I don't need him to average 20 or put up 20. But I check my phone. I check my phone for 30 seconds. Y'all really about the Pustus, Andrew, Andre Igodala, Andrew Wiggins thing.  We got to be better. We got to be better. Do you not understand that before tonight, Steph Curry was averaging 34 on 50 percent shooting 49 percent from three and gave them 43 points in a must win game four? Do we, are we forgetting that? I know reasons he buys is a real thing and I understand it. I'm a victim of it too. But not to this extent. Listen, I've loved the game that Wiggins has played this series. The defense on Tatum has been amazing. The offense tonight in a couple of games throughout the series has been amazing.  I think we have this thing where we just try to negate the obvious. It's right there, y'all. They still got to win more, one more game. They still got to win more game. But like, it's right there. And in my personal opinion, in order for Wiggins to win finals MVP in game six, he got to go off of 40 and Steph got to have 15 and go another game with no threes. Even if it's that, I still believe that the voters might still give it to Steph Curry because he didn't get the Iggy one. And then Katie got the other two. And the fact that even at this point is Steph Curry a ton. You know what I'm saying? So it might be that good old, here, here, you deserve one early. Here, just take this one. Kind of, never mind. I was gonna say something hella disrespectful, but I know this person has a bunch of stands on Twitter and stands scaring me. I'm not, I stand scaring me. But there was an MVP in recent NBA history that felt like him, take it. Dang, I was complaining about stuff. Even though it wasn't him, it was like his fans. I'll leave it at that. Let me know what you think. Steph Curry's the fighters of VP so far. Great, we on the same page.