Senator Ted Cruz gave Yale students a reality check over the attempts to silence conservatives at their school and campuses all across America. Wait, is that not the most inherently contradictory statement ever? They're trying to silence people, but he went to their school to talk to them. Okay, so it seems like he's not being silenced and conservatives aren't being silenced if they're going to schools. I mean, earlier in the stream, we talked about Ben Shapiro going to a college. I literally said I used rap speech. You sound like a bozo, bro. And you can't even make your wife web, bro, so what's good? So, are you getting silenced or are you not? Which is it? Because I see conservatives speaking at college campuses all the time. I mean, am I able to say that I'm being silenced because I've never been invited to speak at a college campus? Can I claim that I'm being censored? I mean, what's the standard? I'm just curious. When you come out of school, most places you work are not safe spaces. Most bosses are not going to be overly worried about injuring your fragile feelings. Ted Cruz wouldn't know this because I don't think he's ever had a real job.  This is a career politician who hasn't had any experience with the real world. Now, yeah, of course it's true.  But all this talk of safe spaces is like the anti-SJW rhetoric that YouTubers were bitching about in the 2014-2015 post-Gamergate era. Like, why are you still talking about this, dude?  Senator Cruz, along with many others, also signing an open letter demanding that Yale punish the disruptors. Wait, you just talked about freedom of speech. And now you want to punish the disruptors?  But yet, he wanted a safe space to talk about how safe spaces are bad.  Like, even while they're making their point, they're brazenly and shamelessly hypocritical. Jesus Christ! You want to punch the disruptors? That's freedom of speech, too, motherfucker. It goes both ways. Goddamn! They just don't even care about looking like imbeciles. Protesters at last month's free speech event.  Author of the Rubin Report host, Dave Rubin joins us on the React. Dave, what about the senator going back to the eye of the storm with that school with thought which was remarkably unpopular with the student body? Well, good for... It was unpopular, but he still went. So, was he silenced? Ted Cruz, and of course Ted Cruz is completely right here. Look, you have a right to protest. It's the most American right there is. But Ted Cruz is trying to punish them. Did you not listen to the segment, Dave? He signed an open letter trying to punish the disruptors. That's freedom of speech. Seems like he's the sensorian, right? Seems like he's the SJW who wants a safe space. So, which is... Like, I'm so confused, right? My head is spinning. Are we pro-free speech? Are we anti-free speech? Which is it? Voice your opinion and you can do it peacefully and properly, and that's what the free exchange... So, only peacefully and properly? Can I not be loud when I voice my opinion? I mean, what are the parameters when it comes to freedom of speech? Really, what this is about is freedom of speech for me and not the. That's really what this is about.   No, they're allowed to do that. Free speech goes both ways. Ideas is all about what you can't do is use your free speech to shout down somebody else. You can't... You absolutely can.  You can absolutely use your freedom of speech to shout someone down. So, if somebody has a microphone and they're speaking to a crowd of people, if you don't like them and you heckle them, that's a violation of their free speech, but isn't it a violation of free speech to silence the heckler? I mean, I don't think they understand the concept of freedom of speech.  Wait, so, okay. So, he's acknowledging that there are limits to freedom of speech, which is correct, right? The First Amendment doesn't guarantee absolute speech. You can't yell fire in a crowded room. But he's saying that these students, they actually... They crossed the line. Their speech wasn't protected speech. Okay, what in particular? Because they protested and they shouted at people who gave speeches at their schools. They crossed the line.  They just use the words freeze speech to make a point and make their opponents seem like authoritarians when in actuality, they're just as snowflakey as the people who they're denouncing. And it's sort of like, at this point, enough is enough. We have let the inmates run the asylum at virtually every college in America. And until the administrators, the professors, the donors, until they all decide this can't happen anymore, it's going to continue to happen. They're saying that the donors and the administrators should shut this down. Doesn't that sound like cancel culture? I thought that was also bad. Dave Rubin was screeching at the top of his lungs about cancel culture. I'm pretty sure that Ted Cruz was shrieking about this quite a bit as well. But now all of a sudden, cancel culture good?  They are completely inconsistent. They have no core political ideology. It's just the left bad, woke bad. And that's it. That's the entire ideology. That's not an oversimplification. I suspect at this point, the institutions are probably too infected and we just need to build new things because it doesn't seem no matter how many times. Build new things. We just need to build new things. Okay, Dave, riddle me this.  Definitely a free speech, by the way. Do you think that you'd be welcome, Dave, as you walk in and introduce everyone to your husband and your children to them? Do you think that these institutions would welcome you? I think that you got a reality check not too long ago and that they don't welcome you.  They're homophobic and bigoted. So this whole alternate thing that you want to build specifically for conservatives, not only does it sound like a safe space, but it's interesting that you think they'd welcome you there, Dave. How naive you are. You guys talk about it, or I talk about it, or Ben Shapiro talks about it. They just keep marching, so maybe we just actually need new things. That's freedom of speech, and we just need new things.  Do they not feel embarrassed?  They want a safe space. So because they want a safe space, we actually need the safe space because they're mean to us.  Well, that's a great point. Is it a great point? What point did it make? We were looking at where the speakers were shouted down, is it was a free speech event, and they didn't want to hear one's... Sounds like they were exercising their freedom of speech. Does it not? Out of it. And I think it was about a week after that, then a federal judge suggested, on a appeals court, he sent an email out to other judges, and he said, I think we should hire clerks from Yale Law School because I don't know that they can be fair given the fact that they won't even listen to both sides of a story. Well, Brian, first off, it's 2022. irony is long since dead.  Well, there's nothing we can do on the irony factor. Agreed. Agreed right there, Dave. It's not just that we're allowing these kids to shout down speakers who are invited. That's freedom of speech. That's what freedom of speech is. They're using their freedom of speech. Do you not not like it?  Are you trying to cancel them? I just feel like they have to understand how inherently contradictory what they're saying is, but they don't.  By the school. I mean, in Ted Cruz's case, we're talking about a sitting senator, right? So it's that then the education that these kids get, the very things they learn, the things that law students should learn related to the exchange of free speech and protest and peaceful protest, they're learning all the wrong things.  And as Ted Cruz said, you get out to the real world, you have a real job. You better be ready for occasionally someone might say something upsetting to you and it doesn't get, it doesn't mean you get to burn down the office you're in or take down the company with you, which seemingly is happening all over the country. Oh, it's happening all over the country. Oh, okay.  Can you name a single example of that, Dave? Don't think so. Burn down because your book is called Don't Burn This Country.  What a grifter. What a grifter. Surviving and thriving in our woke dystopia. Yeah. The same woke people who he's denouncing, who he fought to get him the right to marry and are still fighting for acceptance of him and his husband and children. He's saying they want to burn down the country.  I swear to God, of all the conservatives, he is the worst because he's not even good at grifting.  Thriving in our woke dystopia and it's on sale today. It reminds me of what Ronald Reagan said in his inaugural address in 19- What did he say? What did Ronald Reagan say? The actor. Devon. And this is a quote from it. Freedom is a fragile thing and it's never more than one generation away from extinction. It is not ours by way of inheritance. It must be fought for and defended constantly by each generation for it comes only once to a people. Oh yes, and it's definitely the right Ronald Reagan's party who's doing that.  When Florida introduced their don't say gay law and then inevitably signed it into law, more states did. Now we're at like 12 states that have their own version of don't say gay and that's basically don't ask, don't tell for teachers, forcing teachers into the closet. It's a form of censorship. And can you guess what their position was on this?  That it's good. As a gay person, he's literally like, oh no, I think that we should be forced into the closet because it's bad to groom kids and I also canceled my Disney Plus membership. Now we canceled it before over the Gina Corona thing, but I guess he got Disney Plus again and then because Disney admitted that they want to include more LGBTQ representation, he joined in with the GOP and Republican propagandists who were screeching about this. And he canceled his Disney Plus membership because Disney wants to include LGBTQ Plus representation. Now that's bad apparently because if kids know that gay and trans people exist, then you're grooming them. They'll be groomed into that lifestyle because it works that way. So it's going to be really, really difficult for Dave Rubin to raise two kids with his husband. I don't know if he's going to lie to his children and say that his husband is actually like his bestie. I don't know how he's going to do that because if he is agreeing with the GOP that if kids know about the existence of homosexuals, then that's grooming them.  How are you going to walk that fine line? How are you going to do it? Aren't you grooming your kids?   Okay, this is almost finished. Tell us about your book. Man, does that quote ring true now or what? In essence, that very much... Man, does that quote ring true or what? You weren't even listening, Dave.  I want to plug my book. Please just let me get to the book plugging, and here you are. We'll let him plug his book.  This is what the book is about. You know, we can all mock the woke kids and make fun of them for the gender pronouns.       You should probably thank them, but instead he's shitting on them because he wants to make money by grifting with his right wing audience. Suddenly two plus two is five, and that being non-racist is suddenly racist. Motherfucker, that's what they're saying. Oh, well, two men can't have babies, and you're having a baby, and then they're shitting on you for it.  Like, the lack of self-awareness here, it's just astonishing to me. The rest of the stuff, but you have to give the devil his due. That really is what this book is about. They have marched through our cultural institutions, our educational institutions. That's what you're doing by having a kid.  They think you're part of it, Dave.   Institutions, as we just talked about, are political institutions. They have brought in collectivism, socialism, communism, Marxism, whatever you want to call it. I wish. And they're destroying the foundation of America, starting with the foundational documents and the history of America. You know it's also destroying the foundation of the family? Homosexuality. Dave, that's what they'd say, and they say that you're doing that, and you're still doing propaganda for them. No dignity.  Yeah, Dave, your parents probably didn't hug you.  He decided to put money over his own human dignity, and he's like laying at the bed that he made for himself, and it's just, it's pathetic. This book is really, hey, give him some credit. You may not like what they did, but they've done it. We all know it every day. Another crazy story comes out that we all have to cover. What can you do in the midst of that to not just survive but thrive? There are things like, hey, maybe don't go to college and get $150,000 into debt and then have some job that you don't really like. Maybe learn a trade. There's all sorts of ways. You know, take care of your digital assets so you're not so reliant on big tech. And that's how you defeat the like. These are sort of basic things in some way, but we need them now more than ever because as I said earlier, these guys are not stopping and we all know it. Great ideas, great book. Check it out. I don't get what the solution is, but if I'm part of the woke mob, Dave, then I've got really bad news for you. We are not going to stop. We will keep wokeifying everything. We will keep pushing.   Like, if Dave Rubin's friends had their way, he would not be allowed to get married at all, but yet he's fighting for the enemy.   Tucker, get away in. No? Okay.


Let's just say it feels great to be standing here in front of so many future leaders. It gives me immense pleasure to welcome you all to the fourth edition of GIC annual. Today, we give you one of the most pressing problems throughout the world, and we ask you to be change makers and give justice to the thousands of people waiting. This year we try to accommodate all possible global issues that have either been caused by historic councils or are being faced by a present population due to our lack of awareness. Today, you have the power to simulate those pardonings which failed and led to war, poverty, injustice and environmental degradation. Many of you have been asked to represent national agendas or stans that you may personally disagree with. This open mindedness is the essence of successful diplomacy. The opportunity to understand and analyze all positions including those such you oppose. You have acceptance of different viewpoints, distinguishes our conference and I believe it will prove crucial as you assume leadership roles in a time percentage. As you have said by our honorable Prime Minister, in the year 1997, birds used to tweet. Now human beings are tweeting. There was a time when images of rivers and forests would pop up when one searched Amazon on the internet. We are all connected now. We live in a world where zeros and ones are just rotting around. So what impacts one in one corner of the world will eventually impact us. Now what form this impact is going to be in is in our hands. The problems are everywhere and as leaders of the future we give you the power to come up with innovative approaches to help confront the challenges facing the global community. What we ask from you today is to stand up and help us make a better world. A world that is connected in all sorts. A world with every boy and girl they work for. A world where you and I have faith in our leaders. A world where you and I can stand up and work towards a better future. Our first committee is the Paris Peace Conference. Despite the Treaty of Versailles and other treaties from the Paris Peace Conference being drafted almost 100 years ago, our goal today is still marked by the decision made during the summer of 1990. You will debate the fate of defeated Germany and how to solve the many tentative disputes caused by the Great War. The committee will be chaired by Koma Nikala and Weishter Nasli. Our request to stand is the Supreme Soviet Union. After overthrowing the century-old Romano-Monarchy, Russia emerged from the civil war in 1921 as the Uniform Soviet Union. The world's first Marxist communist state would become one of the most biggest and most powerful nations in the world. Delegates will be seen discussing alternatives as compared to those which was done in the designation of USSR. The committee will be chaired by Pratish Sharma and Weishter Diyasha. The committee will be chaired by partition, borders and accession of princely states, special powers and privileges granted to accessing princely states. The committee will be chaired by Rana Balva and Weishter Manikar. The committee with one of the most disputed agendas is Lok Sarha. Delegates will be asked to solve the Ayutthaya dispute, but they will be representing the two major parties involved. The committee will be chaired by Manan Sharora and Weishter Sanjana. The committee will be seen discussing the ongoing issue of Venezuela, when Venezuela is facing an unprecedented economic and political crisis. Delegates will be asked to solve this, representing different nations. The committee will be chaired by Me, Tehla Nishtesi Sharma and Weishter Radhish Gupta. For this conference, Islamophobia existed in premise before the terrorist attacks on September 11, 2001, and it increased in frequency, notoriety during the past decade. The committee will be chaired by Kushi Aslam and Weishter Riyam Manikar. The United Nations Framework Convention on Climate Change. We are all aware of the real-time effects of global warming, and it is a high time that we take action. The committee is expected to come up with an action plan making policies that help in the control and reduction of global warming. The committee will be chaired by Gaurav Vrnani and Weishter Soma Manikar. Delegates let me comment on the most rapid ask-and-possible in the diplomatic services. You added this hall as junior delegates, and you would leave as ambassadors. Dear future leaders, I thank you all for your commitment and wish you all a most stimulating conference. With the power of President Me, Mr. Vrnani, as Secretary-General, I declare this conference open.


e're going to get back a future that we're going to have to keep pulling Right connect gives you back a future and here we're saying await that future So we're going to have to store that future somewhere and that's going to be here Um, and that's going to be if we're stuck on step one We're going to keep pulling the sort of I guess this is really going to be something like waiting on And anytime you pull on a step you're really pulling on whatever that waiting on is So this is going to be some info future Uh, and the the output is going to be something that step two needs Right, it's not really going to be a step two, but it's like right You can think of it as a step two Here, uh step two is going to be while it's still going to have the z So let's just like say that all these have z Ignored from now because it's not used It is however, we're going to keep the c which is going to be the the tcp stream Because at this point we do have the c right because step one was a future that we've finished pulling on Well that eventually gave us the tcp stream and then in step two When we get to this await point now, we already have the tcp stream because this poll eventually returned ready So this tcp stream we now have Uh, and then what this is going to store is another sort of waiting on and that's going to be an input future Whose output is going to be like u size. So this this is Future returned The future that's returned from c dot right but we have to be a little bit careful here because um We might start to wonder what's going on here because c dot right Takes a mutable reference to c Right this input future is going to sort of not quite consume c but it needs c And so it's sort of tied to a lifetime of c But c is stored here So this Internally contains a reference to c but c is stored in ourselves And for those of you who sort of have dealt a little bit with this This is known as a self-referential differential data type so, uh Imagine I have some type foo and inside I have some data and data is say a veq u8 Then I also want to do the store like a self-refer Which are going to be a slice It's going to be a last two or something And half is going to be a slice Into data Right, so half is a pointer into ourselves I guess a better example of this actually for reasons they'll become clear later So I have a data that's like a A Buffer that's stored inside of foo and half is going to point to half of that data But this is really weird because imagine that we have some code that looks like F is foo How do I even make this? Right, so so this is going to be something like zero thousand twenty four How do I set this? How do I set that type? I don't know how to set it right that I don't have a reference to foo yet And let's say that imagine that somehow I managed to create it in the first place Now I do say z it's going to be box new f So I'm moving f So now instead of f being on the stack f is now on the heap but now F dot half or rather z dot half Is still pointing to the stack It's still pointing to where f was because I haven't in this move. I haven't updated half So half is now a pointer Into somewhere that I don't control anymore somewhere where the data really isn't Imagine sort of the example the trivial example of this here. I change z dot data zero to be like false I guess one the z dot half still points to f Which has been dropped so that's not okay, but even if it was Even if somehow that reference hadn't gone away this value is now like Wouldn't see one for sure. In fact, it would probably just see garbage or something that's been reused But we need to be able to express this kind of type in order to have async away Because this this future we're waiting on is using the stream Okay, so clearly there's just something very weird going on here. We need to have a way to express this Now there have been lots and lots of proposals for adding self-referential data types to rust And it turns out it's really quite hard. Of course One way you could do this is you could say that half is going to be a A pointer a raw pointer That we're going to manage ourselves But we can't do that if the user is allowed to just like randomly move foo around We have no way of guaranteeing that that pointer is always correct And so Really this problem turns into one of Can we guarantee That foo does not move Once we set half Right So at some point we're going to set half We're going to set the value of half to point it to foo right imagine there's some like initialization step Like there's a foo init function or something and that's going to like create data And that's going to create the pointer of half into data And of course there's no way for user code to deal with the state in between So the user code will only ever see sort of the half pointer being set correctly But if the user ever moves foo or specifically if data ever changes memory location The now half would be no longer be correct And so in addition to that having been Proposals that have been sort of how do we create a cell for an differential data type? It has sort of reduced to how can we express that something isn't allowed to move So there have been things like in pole not move for foo is something we've seen There have been a lot of proposals for this but none none that have really worked all that well And this has been a major problem for how do you express async away because we need it for async away And finally a while ago without boats and Eddie B and some other people I think without boats was sort of the first one to realize this I think he links to the I think they link to the somewhere here To the blog post they wrote rendered Without bores, that's new In my history, that's weird. Yeah, the it's on a different url. So it doesn't really help me So sorry, it's on a different computer. So I can't even get to that Here. Ah, there we go. Um So Down here somewhere What they basically did was Spent a bunch of time trying to think how can we do how can we do async away, right? So this starts out by talking about separate self-referential structs Then sort of talks through well, what do we actually need? How might we get it? And then here They basically realize that we have all the parts we need in the type system We need to just need some very small proposals And this was back in january and this was basically the breakthrough that we needed for how do we express this in rust Uh, and then there are a bunch of blog posts in some on how to polish that api. In fact, there was one very recently on This one that's on Well, that's one of these though All of the anything here that mentions pinning is probably worth reading if you want to understand it The observation was that we can we can get sort of support for this Basically the thing we want to express with async await that something can't move once we've started once we've once we have it be self-referential Using the notion of pinning Uh, and so pinning can you link to the voting site you made last time? Ah, sorry. Yes Sorry, so the pinning api is is what they came up with in the end. Um, and pinning has a lot of very Sneaky details. There's a lot of Intra ticket contracts that are being maintained, but I'll do my best to try to explain what's going on so pinning introduces Two new types. Um There is a pin pin type p Uh, where p is sort of a pointer type. So where p implements the ref so there's a stroke pin great, uh, and then there's a trait called unpin This is a marker trait. So it's automatically defined for all types Uh by the compiler just like uh clone and sorry just like send and sync um and the basic idea is that Uh, this is the first thing I really understand the need for pin api and it's relation to async await Oh, I'm glad glad to hear it. Um so Where this gets tricky is remember how up here We need to be able to express the fact that once we've set this pointer Then foo will not move And that is what pin expresses. So a pin if you have a function foo uh And you get some argument x and that argument is a pin So p here is any kind of pointer type. So a mutable reference or reference of arc rc Well, let's say you get a mute t Sorry, I'll take some t What this tells you so if you get an argument of type pin There's a contract so basically what if you get a pin, uh Whoever is calling you is promising the following. They are promising that either Uh t will never move again Or T implements on pin. Okay. That is the contract uh Now this does not say anything about t If it's not if you're not if you're just given a t right so t here is any type And so until you have it in a pin, there's nothing special All this is saying that either t will never move again the moment you give a the moment you get a pin Right of of any type. This is similar to if I gave you say, uh Uh box t Right that i'm saying that once you get this t will never move again or t is unpin And remember I mentioned that uh unpin is a uh an auto trait. So it's something that Every type unless explicitly explicitly offs out of it. So impo not unpin Ah, no, no, no, no Unless you have an input like this Then every all of your types are going to be uh unpin now The unpin is a little bit of a weird term that there's still some discussion about what these things should be called uh The argument for calling them what they are is that Unpin should be read as a verb So, uh, you should read this as Uh, if something is unpin it means that it You can if you're given a pin of it you can unpin it and that's okay So unpin as in a verb it's not yeah, uh, this is saying If you have a my type You can and if you have a pin of a thing to a my type you cannot unpin it We'll see how that explains, uh, no So it's the question is uh, is it auto implemented because it's an empty trait? No, so, uh You can have traits that have no members that are just a contract Auto traits are special in that the compiler will automatically give every type That trait if all its members are that trait This is not true for every marker trait Uh, although that so That said, uh I don't know of any empty traits that are not auto traits In the standard library Uh, in other crates, you could usually easily use them for markers of varied kinds, but they're not necessarily the same Uh Yeah, so unpin is special unpin and pin are known, but well sorry unpin is known to the compiler And it has been marked as So in the standard library, you're allowed to write auto trait Which basically tells the compiler this trait should be applied everywhere. You cannot define your own auto traits at least not currently So it is it's a reserved special trait. It's not as a reserved special name But it's in the standard library and the compiler knows that it's an auto trait Uh, and that's why it has this um this propagation this auto propagation Uh, and so the way to to think about unpin is Is in terms of this contract, right? Either t will never move again or t is unpin Uh, and if something is unpin what that means is That It is uh If t is unpin, uh, it is not sensitive to being moved Sort of right, so Uh Off-topic question about generics. Can you specify generic must not implement a trait? um Not currently You can only declare that something does not implement a trait You cannot depend on something not implementing a trait yet Because it turns out to be fairly hard for the compiler to do negative reasoning Uh, it would be nice for for specialization, for example, but I don't think you can do it uh so Think of our referential Data type foo up here So foo would not be unpin Or the other way to think about it is if something does not have any self references Then it doesn't matter if you move it Right, it's not sensitive to being moved so even if someone pin it and Like if you moved it, it's not like your data starter would break. Nothing would be wrong if it got moved And so that's why if I just declare like a bar And that has like a V which is a Vecco bool And maybe some like buff that's a Vecco u8 And maybe it has like a Z that's an R, u-tex Uh Atomic Use is a terrible type R, u-tex Hash map Tuple of u-sized bool String like who knows so complicated type this type is unpin because it's not sensitive to moving If you move it the data structure is just as valid as it was Right foo on the other hand is sensitive to moving Right, but but that doesn't mean that you can't move foo It's just that once you rely on this half value Once that's important to you Then you can't move foo Right, if you ever if you once you know that you're going to start using half So once half is something that you're going to access Then it matters the foo is not moved. So therefore foo is not going to be unpin Uh, so here We're gonna we're gonna have In our code unsafe impo Sorry, it's not unsafe impo not unpin for foo This is saying that foo is sensitive to being moved And now what that means is I guess we can bring this a little bit closer Uh unpin is not unsafe It is always okay to declare a type to be not unpin You would just if you do it you're doing yourself a disservice if it's not important Right because nothing if you say that something can't or is sensitive to being moved Then that just means that people won't be able to move it if it's in a pin The reverse on the other hand is problematic Right if you have something that is sensitive to being moved But you don't market as such then that would be problematic Now the the name unpin is a little weird because you end up with this double negation And that's part of what's going on in the discussion In the stabilization effort right now We'll see whether or not it changes But there's some arguing for unpin being the right word, but it it um Reads somewhat weirdly like when you talk about it. It's a little bit weird If you create a custom self-referential struct it should impo not unpin. Yes, exactly Uh, I don't think the compiler is going to be smart enough to do this automatically So it because it doesn't know that half or half here points into self Right half could be a pointer to somewhere completely different in which case foo is unpin So it's only because the semantics of half is that it points into self that it is self-referential And furthermore Only matters in the context of pin so unpin on its own is not important It is only important in the context of pin and we'll see exactly how that all ties together But imagine that I set half And then I just like never touch half again Right so half is pointing into self, but it's like never used then of course obviously foo is still unpin because Even if foo is moved nothing's going to break on foo Or for example imagine that I do some What's a better example of this we'll see how this ties into futures later, but I think that's the basic idea Okay, so why this is all matter well If you're given a t that it's unpin or not unpin you can move it all fine unpin does not restrict moving in any way However, if you are given a pin of a type Then the contract is that either t's or the the Target Let's actually write this out. Um, there's an impulse D ref An impulse is going to be a p t D ref For pin p Where p D refs into t I need to make sure I get this implementation right. I think this is right. Yeah Uh, I guess type target is Okay, so this D ref exists for pin no matter what the type is right because if you if I give you a read only reference to The target of p's pointer, then it's still not going to move right. You're just going to read it. That's fine D ref mute is where it gets interesting So D ref mute for pin Uh Where p implements D ref mute? Sorry the sorting here is a little bit important for clarity So, uh notice the pin always implements D ref into the target of the pointer Right, so that's the thing up here and it does so unconditionally right as long as p implements D ref Which is like box implements D ref arc implements D ref rc implements D ref most things implement D ref Pointers references, of course implement D ref D ref mute is where it gets interesting. So Imagine that we just implemented D ref. We did not have this restriction. We just said that it also implements D ref Um, this is problematic because this gives me a mutable pointer to t So what I could write now is um The code that we had above up here So I have a Have a foo Well, actually I have a I have a pin box right, so remember foo is is uh Not unpinned so it's sensitive to being moved um And I have one of these now Because it implements D ref mute What I can do is I can use mem swap or mem replace on The D ref of f right So D refing f is going to give me the mutable D ref of the box Which is foo. So this gives me a mutable pointer to foo And I can just replace that with some other foo Right, there's nothing stopping me from doing this. It's totally safe The problem of course is now I just moved foo. So if I previously gave someone this pin Then the guarantee that I gave them namely I told them the t will never move again If t is not unpinned Right, so this sort of implies this the statement down here implies that if t is not unpinned Then it will never move again foo here is not unpinned So therefore it should never move again once I have it in a pin that here I'm causing foo to move right the old Z here is now going to be the old foo So the the the old thing that was inside f has now been moved And so this is clearly not okay Right And so the sort of insight here is we're going to require t to be unpinned for uh For d ref mute to work for pin for this to be safe now. This will not compile Because foo does not implement unpinned So this code will not compile in fact now we guarantee that just foo will never move Once you put it in a pin, there's no way to get it out of the pin like pin doesn't have a way to destruct it Right and you cannot d ref mute it So you can't get a mutable reference to t and so therefore you're not going to be moving t You don't have a way to move it right, so this is the core insight of pin that You can only get a mutable reference to the thing inside of it If it is unpinned if it's safe if it's not sensitive to be moved Right now, of course, there's one thing you can observe here, which is if I have some code where I know that I'm not doing member place right, uh I have some code where I I just want a mutable reference into foo because I'm going to change a string in there or something That's all fine. I'm not moving foo Right. I'm not doing member place. I'm not moving foo in any way Then I know because of the code that I've written That it is safe for me to look at look beyond the p in a mutable way. And so that's why pin p There's an implementation on pin Which is unsafe As mute. I don't remember exactly what it's called, but it's not important Uh, you get some mute, uh, p Right, this should be target p target So, uh So I can have this unsafe This unsafe as mute, which given a yes, this is going to have P implements dref mute Right, so this is saying this function is going to basically just do a dref mute as well But it's unsafe because it will only give you that mutable reference if you promise that you're not going to move the target right, um Does the compiler consider dref mute similar to dref because of the names Um, no no the compiler doesn't do that although D so the the trait dref mute extends dref So in order to implement dref mute you also have to implement dref, but it has nothing to do with the names Uh, is it kind of sad that you can't get a mutable reference to mutate it but not move it? I think your answer Yeah, yeah, so the answer the It would be sad if you had no way of getting at the thing that p points to if you sort of know that you're not mutating it And that is exactly what we're getting at here We do have an unsafe way to get to the target But the the unsafety here is you need to promise not to move t Basically, you need to manually uphold this con contract that he will never move again Right If if you're unpinned if your target is unpinned You know that it doesn't matter to the type whether it's moved and so therefore it's fine We we can give out the mutable reference because if someone chooses to replace it that's fine food doesn't care And the fact that we the thing that we promised in the past was just that if we move it it's not going to matter Uh, so this unsafe implementation comes along with this contract that you don't replace it Notice however though that pin is only one level deep Right, so if I uh, if inside foo There was something like a U size Now has to be string uh So foo now has this Has all so itself has a pointer to a string Notice that it using only safe code It is totally fine for us to say uh It is totally oh I don't know how to phrase this If we have Ah a better example of this is actually the other way around bar Has a foo If we have a pin bar Right Then it is totally fine for us to deref this because bar is Um bar is unpinned Right, so it is totally fine for us to now move the foo inside of bar There's no problem with that all we promised here was that Bar is not going to move That's all this pin promises. It's not saying anything about foo inside of bar. Um And this sort of brings us full circle to futures So pole takes a pin mute self Now think about what that means When pole is called We promise that self will not move Or that self is unpinned And and uh keep in mind here that if we have something so pin also has this uh Uh as mute self Which returns a pin Uh A pin of mute p target and notice that this is also safe Right, so this is turning a this turns for example a pin box foo Into a pin mute foo Right, that's that's necessarily safe a pin box foo promises the foo will not move And a pin Mutable reference to foo also promises the same so we've done nothing weird by doing this Right And so this is an entirely safe method because you still can't move foo if I give you a pin mute foo You would still then end up having to either use this unsafe or the target type would have to be Unpin and so this means that if we have a pin box foo Then it's trivial for us if they imagine the foo was a future Then of course now we can Easily call f pole That's fine because this pin can be trivially turned into well, I guess it would be like asmute, right? Uh this pin can now be turned into a pin mute foo and so if Uh foo implements future that is the same as a pin mute self That's now we're given this And to bring this then full circle to async await Now that we have this pin We have all the guarantees that we need for async right This the compiler made async block We will not unpin for compiler made async block We know it's not unpinned because there's sort of self-referential stuff going on here Right, but once we start polling we know that it's not going to move And before we start polling it's fine for it to be moved, right? So if you just have one of these You can move it as much as you want It is only the first time you call pole that it's going to add the pin to it And so this is why um In the async await if we look at what it actually does Here you'll see it Pins the future that you give it it creates the future So this would be like the foo right so it it um Gets a gets the future part of the foo Then it pins the mutable reference to the foo So basically establishes the contract that from this point forward I will not move foo and then it starts pulling the future It starts pulling the mutable reference the pin of the mutable reference to foo and so now um Inside of here Once we start going into step zero step one step two all of those are calls to pole Which means that we're getting a pin of mute self Which means we know that foo will not move and therefore this self-referential stuff is fine because we know that this will not move anymore But until you call await Until you start pulling it you're free to move it because we know that it's like in this state We're moving it is fine Today we're going through all of futures and tokyo and async await and pin Uh, I think it would be hard to follow from this point if you don't have an experience with it But I recommend you go back and watch from the beginning. I think we've done a pretty thorough job of going through all the things Uh, so whether something is pinnable or not is governed via unpin and not unpin Sort of so every type is pinnable You can always make a pin of some type key The question is just what is the contact you're establishing and the contract for all pins No matter what the type inside of it is that if you have a pin of something then either So remember the the type of pin is always a pointer It's either that the target of the pointer will never move again Or that the target of the pointer does not care whether it's moved So for example, it's not self-referential Yeah, so in some sense Unpin or not unpin dictates which contract you are tied to when you make a pin and so That is then what enables us to do this because now The the moment you start polling this You know that it will not move anymore or you Or in the case where like you implemented your own future If your own future doesn't have any self references in it then it's trivially unpin right self is going to be unpin and so therefore Writing your future is fine Because writing your future you're given one of these Self is unpin therefore the d rough mute of the pin is safe and you can use it And so it's just going to be you can basically just write self dot whatever and you get a mutable reference to self Because it's unpin. It doesn't matter Okay That is pin And that is what enables us to have async away Uh, and that is currently what's about to be stabilized Now some of the names might change. There's a lot of discussion in this thread Uh, and about these double negatives the There's one other thing that is the proposal for stabilization ads and that is um Imple not is currently a nightly only feature So this is similar to if you want to declare that something is not send Like uh, sorry if you want to do something like Imple not send for my type This pattern of implement implementing a negative you can only do for auto traits Because they're the only things that are not opt in.  The name is annoying So in std pin They're adding a struct pinned Which has no contents. So it's like Similar to phantom data, right? It contains nothing. It's a zero size type And inside the compiler, of course are allowed to use negative implementations. And so there's an impulse not Unpinned for pinned The reason they do this is now um, if you want to if you So for foo what we would do is instead of having this Requires nightly Right, so instead of doing that which requires nightly We just add like a Not unpin This and now because pinned is not unpin foo will be not unpin because the compiler only sets Auto traits if all members have that trait Right, so this adding this to the standard library means that now even though they don't stand Stabilize this you can now have things be not unpin on stable Uh, I've been looking for more approachable resource to understand all this information related to futures in async await And I must say this has been the best for that I'm glad to hear it. I I do think this is part of the reason I did this dream in the first place was because There's a lot of interconnected components here And there's a lot of stuff you need to understand and I think it's actually valuable to go through all of it Like sort of the entire Like ball of stuff um Because they all interconnect and understanding all of it is important. So I'm glad you find it useful Did it require many more compiler features or is it more in a library level? So that is one of the things that is really cool That is one of the things that is really cool about pin and why I recommend you go back and read those blog posts because it's sort of this gradual realization that We can do this Basically without adding anything. So pin is not special It does require that you add an auto trait to the compiler but adding an auto trait We don't want to add lots of them, but it's like pretty Trivial that's the only thing you add and it didn't require a feature, right? It just required a Adding a type and an auto trait for it, which is already something the sorry adding an auto trait To the standard library, which we already have all the other auto traits So there's no feature needed in the compiler at all to add pin And then the realization the pin is all you need for async await. So async await is not Async await does require compiler features basically because the compiler has to generate this business, right? It has to implement it has to take code that looks like That's a take code that looks like this And turn it into This enum and the corresponding input future and so that is something the compiler now has to learn to do Basically sort of know what variables to capture and produce each step of this enum But that's about it But so I mean that was somewhat complicated But it was more the realization that pin is all that's needed to make that work Does that answer your question? I think that was what you were asking Um, okay Right. So so pinned uh, it's the last thing that is proposed to be stabilized in In uh, in stabilizing pin, right? So the the stabilization efforts that we're going through are Stabilizing task in future. So that needs to go into the standard library to get futures Uh, future requires pin. So pin is being stabilized Um, and then async await the rfc has landed Uh, I don't know if the I don't think there's a stabilization issue for async await yet Yeah, probably not So this is going to be the the sequence of things that we're going to stabilize I guess pin first because it's needed in futures and then stabilize task in future so that Because that's going to be needed in the standard library in order to have async await And then hopefully we'll see the ecosystem sort of move towards using the standard library future and task stuff So that would include things like tokyo has to move to it, which is a non-trivial effort, but the work is sort of underway One of the problems we're having is that the The sort of pinning stuff While it is really cool and probably basically what we need It is a pretty big change to how you write futures because you now need to think about pinning and changing all of the Ecosystem around futures and especially everything that's built on top of tokyo and tokyo itself to use this just requires a bunch of work But it is undergoing And then once this is stabilized then at least hopefully we could Finish the implementation of and stabilize async await and then hopefully we would just have all of it But that is still a little bit of a ways off. I think the hope is to have async await in like Two release cycles or something I think There's some discussion, but I don't remember what the Conclusion was in this in this thread, but I think the hope is to get it out pretty soon although it's a trade-off right because These are Really tricky things and you need really good documentations, which is one of the things that's currently kind of lacking If you look at the both the rfcs and the implementations in the standard library that they're proposing to stabilize the documentation is Okay, but this is why I made the stream as well right to try to give people more Wholesome introduction to all of the concepts the concepts that are involved and the documentation in the standard library isn't quite there yet Where it gives you that kind of full interconnected Picture of what's going on and so my hope is that that's something we get into Or manage to make a part of the stabilization effort But So we don't want to sort of stabilize in a rushed way, but I do think we're getting to a design We're now we're understanding why all the pieces are there and hopefully now you understand it too In such a way that we can get async await which we all really want In like a reasonable fashion Um, I wrote a little crate with one trait the rats many pointers many pointer types into a pin type It's called pinpoint. That's a great name Uh, you can call pointer as pin Yeah, so there's um There's a bunch of work on building So one of the things that's complicated about pin is uh You want to be able to say Uh, if I have a pin If I have a pin to bar, sorry a pin to box to bar Or I guess at mute bar Uh, is there a way for me to go to a pin? mute foo for example um Specifically like sort of project into this field Is or It might not be the best example. Let's go with that one. Anyway, is there a way for me to do this safely? through uh barred up foo It turns out it's actually fairly difficult to express What the requirements are here the requirements basically if I remember correctly is uh Oh, actually that's separate. Um, yeah, so so exactly what this uh, what you need for this is a little unclear There's a a crate though that's intended to Do this for you, which is this pin utils crate Um, I think I think it was pin utils. It could be wrong. That might be mentioned here somewhere Yeah, I don't remember where it is Yeah pin utils, okay so pin utils has a basically convenience methods for Interacting with pinning uh pinpoint is probably a similar kind of thing. Um And the hope is to provide some kind of mechanism for Um for giving out this kind of sort of transitive pinning Where you can say that if bar is pinned I can give you a pin of foo But we don't have exactly the mechanism for that yet. Um The the only other things I wanted there's one more thing I wanted to mention, which is and you may have seen this already Um For this New in fact we can look at this here Creating a new pin based only on reference Uh Right, so the rfc goes through basically everything we've gone through here But for new This is missing something from a while ago Yeah, this this rfc is a little bit older. This doesn't include There was an older version of pin that had like pin and pin box and pin arc and None of that is no longer needed. What what I give is still that is sort of the new instantiation But I guess this isn't the right one Um, uh, I specifically wanted to show you the constructor So there's a safe constructor when the target is unpin. There's an unsafe constructor if the target is not unpin And I want to explain why that is So I'm gonna require that p influence era All right, that's actually something I've missed in all of this like all of these need to have the bound p as the error um If you want to create a new this is actually unsafe pointer p Gives you a so the question is why is it unsafe? right, so there's a there's a safe implementation which is If p target implements unpin So this is safe But why is this not safe? This has this basically just does this So that's safe. Why is this unsafe? um, the reason is I We basically want to avoid in in the case where you don't have Where you have a type that is not unpin We want to avoid ever giving out a mutable reference to t Right, because if we do you can remember a place and now the the value moves Imagine that I write sort of a malicious if you will like I write like bad box And what bad box does is just contains a box t And I implement d rough for bad box Right, just ignore what the implementation is and then I implement d rough mute for bad box and it gives out a mutable reference to the thing underneath, right I'm soft on zero Right, so this all seems fine. This is all fine But here for a brief sec. Uh, yes For a brief second here. I have access to a mutable reference to t in d rough mute Right bad box Whenever the pin chooses to mute to go through d rough mute I as bad box implementation of d rough mute I can mutate some so imagine the bad box in d rough mute Does a memory place With like t default or whatever or who knows mem uninitialized I just moved the t But the target is not unpin But I moved t After it's been pinned And so clearly that's not okay. And so the reason that we need new to be unsafe Even that we need new to unsafe when T is not unpin is because we need to guard against this. We need to make sure that at no point Does anyone have a mutable reference to t? And do something like this. So the unsafe here is also like I promise that my d rough mute Does not move t It's basically the promise you're making in new unchecked Uh, so foo contains a Unpinned there is no unpinned. Uh, are you talking about Pinned or are you saying that foo contains a type that is unpin? So pinned This pinned is really just it is really just this it's a way to Uh opt to say that your type is not unpin without having to write this line Which you can't write on stable. That is the only thing that pin does Pinned that is pin and d like this thing That is the only thing it does now if foo contains If foo contains something that is unpin that does not matter Pinning is just a guarantee about the immediate dereference and nothing else I hope the documentation for new unchecked will explain the required invariance and reason for them Yeah, so this is one of the things that's going on in this, uh, discussion is Uh, there's been a lot of discussion about like exactly what should the docs say And I learned a lot of this from reading the stabilization thread I don't know what it says now It has changed a little bit, but the the plan is certainly that it should that uh That all the documentation will explain exactly what all the invariants are because they are really subtle for pin It is really it's really subtle why all these things work and why it ends up being safe And I'm I am positive that like throughout the things I've told you there are probably things that are false But you know it's gotta you gotta start somewhere um Let's see Oh, you saw the My paper in the morning paper. Yeah, that was pretty fun um It's interesting because I have I have had a bunch of academics that have said it the other way around that It's interesting to see someone who's an academic be in rust circles um Okay, I don't think there's anything else I wanted to talk About sort of futures or tokyo or async await Uh, is there anything that you feel like you would like to hear more about? um In any of the stuff we talked about so far Or other things you'd like me to cover About this stuff Anything that's still unclear you want me to go into or you want me to talk more about the sort of directions we're going forward I think it's now it's sort of the now. I think I've given you The entire package, uh, and if there are still things that aren't clear, I think now would be a good time to cover it Uh, while you're thinking about that, I will go pee Let's see What comes for the next stream and when do you plan it? Um, so if you missed it in the beginning, uh, I wrote this website This is a previous stream that's been filed. Um Where you can vote on what upcoming stream ideas you'd like to see it uses rank choice voting. It's pretty cool You just pick a unique username and then you drag and drop the uh the ideas into which ones you would rather see me cover um, the next stream will probably be in Three weeks probably I have a bunch of plans coming up. We'll have to see I'm not entirely sure um It looks like the next thing is going to be porting flame graph which is a cpu profiling tool or visualization tool. That's really cool Uh, to rust we probably won't Port the entire thing, but it's it it would be a slightly different streams I wouldn't talk so much about async and stuff, but rather do a more performance oriented thing Um, which I think could be really fun. So it looks like that will probably be the next thing But feel free to vote there. That'd be a good idea. Um What is this channel about so this channel is about the rust programming language and in particular, um Uh introducing more advanced concepts and talking about and writing more intermediate or advanced level rust codes you can see like real code being written Um, I think yeah, I think watching the full recording later is probably a good idea There's a lot of details here and it might be hard to follow in real time Um, I recommend you also go back and sort of draw some diagrams for yourself and see if you can explain it to yourself Why this is this is correct. There are lots of details that I've sort of skimmed over or skipped And so feel free to try to dig into some of this documentation yourself. Um, that's a good point. Uh, tokyo has recently done sort of a Uh Big documentation effort it's still underway. Um, but if you go to tokyo rs documentation, there's now here so No going deeper This section in the tokyo documentation As reasons have been written and it's basically going into things like the runtime model like why It goes through things like what is uh, exactly how do the runtimes work? How do you how do the executors work? How does the work stealing work? How do you interact with io and reactors timers? How how would you build a runtime yourself and what do you need? There's also tokyo internals, which is still being written that goes into even more detail Even more stuff about reactors and non-blocking io. I really recommend you go read this. Um, there's also the doc push repo which is all about improving the documentation for tokyo and so Especially now do you watch this dream? I highly recommend you go Like look at this And see so there are a bunch of issues about where we would like more documentation to be written If you feel like there are things that you now understand or even if they're saying you're still learning like try to contribute to this because You could really help people Understand how futures work how tokyo works how the ecosystem works how async weight and pinning works for that matter Like contribute to this small and large would be really helpful in order to improve the documentation of the ecosystem And that it includes the standard library too Like if you can help improving the documentation for stuff in the standard library related to this Especially sort of futures and pinning without lands That's great Is there anything in rust for csb or actor based concurrency? Yes, um in particular the Is a crate called actix Which is all about implementing the actor model in in rust And uh, I haven't used it too much myself. It builds on top of tokyo Um, I don't know exactly how the integration works Um, but it's basically you have a bunch of things that are actors that operate on their own state and they only communicate by sending messages to one another This is very similar to like the orlang model And it's supposedly very good There's a it's primarily built for something called uh, actix web Which is a web framework that uses actors to build sort of a microservice oriented architecture for websites And I've heard good things And now you may be better Better equipped to understand how actix works under the scenes too I don't know how well this is documented for How the asynchronous part of it works, but at least now maybe you have a better understanding of how the internals might work For csp Not really There's been Some discussion about adding support for a yield keyword in tokyo But you sort of need it to be at a lower level than that. You almost need it to be a compiler feature Basically to give you continuations Um, but now with async await it might be that you can express csp and yield in particular using async await But I don't know that there are any immediate plans to do that But I think that's something you would need to get closer to true csp Um when implemented my own future, I'm fairly sure I understand what to do If I need to return not ready, but maybe do a two-minute example of a simple custom future Uh a simple custom future. So, um, there's one more thing I want to highlight before I do that uh One of the goals of async await is that you shouldn't need to implement future yourself as much Because you should be able to just use async functions and async blocks and async closures and await to just Write out what you would normally have done in the implementation of the future, right? So this basically means that you Uh like Many cases where you would previously implement your own future and sort of keep an enum Where you walk between different states like are you connecting connecting to google google.com? Are you writing stuff out? Are you reading stuff back? And sort of manually handling the state machine of that future You could just do as an async function instead using await and it will be a lot easier to write As for the contract with not ready It is really just a matter of any time you return not ready make sure that Something is going to wake you up and remember that you can always assume that if something Else returned not ready to you then they have arranged for them to be woken up. So you don't have to do it So this contract really applies transitively Usually, uh, that is actually worth pointing out in the future's crate There's a macro called try ready and what try ready does is pretty much Pretty much looks exactly like this So the idea is that if you call if if you have some struct like my future And you have a bunch of fields and one of them is you like your future You have some inner thing that implements future of some kind Then when you're implementing future for Your own future Right, then you're gonna have a poll I'm gonna return so remember that Poll is just an alias for this All right, I guess if we're gonna do sort of new fancy futures then really Gonna be this now right remember that how Future 0.3 just got rid of the error So we can just get rid of all of that error and result related stuff So if you implement future for your own future, then like you're gonna do a bunch of things and pull And at some point you are going to pull the inner future Right, then you have to be prepared for the fact that the inner future might return not ready in which case Maybe you can make no progress right But but it might also return Something in which case you can make progress and the try ready macro lets you do this And so that's gonna it's basically like the question mark operator except for futures This is going to be if poll returns not ready then just return not ready from me as well Otherwise give me the thing that was inside ready The reason this works Is remember this means that you're returning not ready And the question is have you have you arranged for yourself to be woken up? And the answer must be yes because this inner future Also must maintain that contract that if it returns not ready It has arranged for the task be woken up So it returned not ready and will be woken up So when you return not ready, you will be woken up because it will be woken up And you're on the same task, right any any chain futures are on the same task Um And so that is usually when you're writing your own futures That is usually the way in which you uphold that contract Is just that you're using other futures that are themselves upholding the contract Uh, doesn't await use the yield keyword internally? Uh, I sort of lied Um, sorry Okay, so if we go back to So down here This right so remember how we talked about what await sort of expense to See how the rfc says roughly expense to this so As it says the yield concept cannot be expressed with existing rust code And it's not really yield, right? It's really Store all the stuff all the stuff on the stack Into the struct that I generated right into this Special future that's like the async future And then return not ready But it's also not just that because it also needs to say the next time you basically Uh, the way to think about this might be When it when the compiler constructs this enum For something like this code is too far So we we sort of claimed that this async await stuff turns into an enum like this What it really does is it Um, does like a match on self And if it's step zero Then it does this If it's uh Sort of this If it's step one Then it does like self dot Waiting on dot And it sort of does like try ready of that All right, so this is like the next value or I guess see Right, and then if it does get to that then it's sort of kind of awaits for that and that it moves like Self is equal to step two Right in here. It's sort of like Self is step one You see sort of what I'm getting at like This is really what async turns into Right, like self dot Whatever I guess waiting on Dot pole So this is uh, then self Is step three So this is how it gets around that problem of not Re-executing the previous stuff is because each of them is in a separate step And so it just uses the self because self is an enum it uses it as like um Uh as a state machine so that it can move between the different parts Uh without executing the previous parts again And so this is why that the yield inside of a weight is not really a yield It is like a Set self kind of thing Um Yeah, so so so this is why uh brian mentioned a while ago that like That you can sort of talk about async as generators and that is true You can sort of think of them that way, but they're not really generators. They're just Magically or not magically created but just very carefully constructed enums with matching And they really are special like they require the compiler to generate very particular code Uh The patreon link. Oh, I should remove that from youtube. Yeah the Because I'm an international student in the us It turns out that I'm not allowed to have other sources of income and so I had to shut down my patreon, which is kind of sad But such as life I guess I uh In some sense, I didn't start to do this to like make money either. I think it's I think it's fun to educate people and I think it's uh Fun to write code and I think it's fun to have people to interact with while building things and sort of getting new feedback As we go so that is sort of my reward Um, but it was a bummer, but there's not nothing I can do about it sadly, but thanks. I appreciate the sentiment um Think I think that's all then unless there are any more outstanding questions so a lot of content we've covered so Going back and looking over it one more time is probably not a bad idea and sort of drawing things Pretty drawing too Well in that case if there are no more questions, uh, I think we're just gonna end it there Four hours. It's pretty good Pretty good. Um, I hope you found this useful helpful educational I hope the the ecosystem around futures And asian computation and rust makes a little bit more sense now If you have other questions then feel free to sort of reach out. I'm on twitter. I showed this earlier, but I am This person So feel free to reach out there or send me an email And then I will be happy. I'm also in mastodon now for those of you who are a little bit more paranoid about like privacy and not wanting to Give twitter control over your social spheres. Um, so I'm here as well. If you want to follow or message me there I I pay attention to that too Reach out if you have questions if you have ideas for upcoming streams too I will add those happily to the the voting site that we now have It will remember your votes So if I do one stream and then I do a second stream, it will still tally a sort of year the remainder of your votes But you do want to check back every now and again to see if there are new things to vote for if those may be of interest um I also really highly urge you to contribute to the tokyo documentation push Part of it is also not about tokyo Like the the doc push is all about documenting basically all the stuff We've talked about today and the futures in async ecosystem Of course, it's a focus on tokyo, but it also discusses just what are futures like? What's the execution environment like and contribute to that because it's going to help other people find better documentation to learn from in the future And Yeah, I'm glad you all came to join Have a great rest of your saturday and I'll see you and Three weeks time, I guess Bye


Hey guys I'm Jared. I'm Ben. And we just saw Blade Runner 2049. 2049! Yes! But I haven't seen the other 40s yet. Will I know what's going on? If this is your first time here and you want to know a little bit more about movies make sure you hit that subscribe button and hit the bell notification so you don't miss anything here at Movie Nerds. So we can't really say too much about Blade Runner 2049 because anything that we say would be considered a spoiler I think. Our very presence here is a spoiler. Yeah this is all classified. But what we can say is that Blade Runner 2049 follows Officer Kay who's played by Ryan Gosling as he is hunting down replicants like every other Blade Runner before him. And in the course of his job he uncovers a conspiracy that could threaten to take down society as they know it. As they know it. As they know it. As they know it. I want to ask you some questions. What happened? I've covered my tracks. Scramble the records. We were being hunted. By who? What do you think Ben? Okay everyone's heard things about this film. You've heard things, you've heard whisperings.  Yeah. Who knows if it's a masterpiece? It's not up to me. It's not up to me to decide. But once I say that word then you know. That's all that people are gonna hear. If someone doesn't think it's a masterpiece then they're gonna come back and they're gonna take me down. Yeah. I'm just gonna say it's a solid, solid sequel. Yeah. One of the better sequels in recent memory that I can think of. And it feels like the first film but it feels different. It adds to the kind of story. Yeah. Builds on that initial story. Yeah. Denis Vanuve puts his stamp on it. You know, it references Ridley but it feels fresh. I don't know. I was just, I was very impressed with this film.  Yeah. I honestly, like, I think this is up there with one of the best films of the year for me. What did you think? There's a lot to unpack in this movie and by a lot I mean it's a very long movie. It wasn't quite prepared for the, it's about probably two hours and 45 minutes. Yeah. It's pushing, it's pushing three hours. Yeah. It's definitely like a movie of our times, you know, like we pack so much into these films now but the difference I think with this one is it doesn't feel bloated. No. It is long but it doesn't feel bloated. It's not. Yeah. The difference is that it feels deliberate rather than just cramming in stuff for the sake of cramming in stuff. Like they could have edited stuff down but it wouldn't, the pacing would be off. This is a very, very deliberate movie. The pacing is very, is very deliberate. Yeah. And as the first film, you know, there was, there was long sections of that first film where, you know, characters were just sitting there contemplating what was going on. There was Van Gels's music playing in the background. This is very similar. So the difference here is you've got an ominous drone from Mr. Han Zimmer and contributions from another composer and perhaps even leftovers from the first composer, Johan Johansson, who was booted off this film. Well, I'm booted, you know, him and Denier Friends. Well, you can hear him all over the trailers but so they've used him in some respects. But yeah, Zimmer is all over this from basically the first frame. Which isn't to say it's a bad score.  It's timeless. Yeah. You know, it's not quite that, but it references that score a little bit.  The roof was actually, I don't know if the roof was gonna give way at one point during the screen. Yeah, I felt it. It was shaking a bit. So Baby Goss in the lead role. Baby Goss. Baby Goss has grown up now. Baby Goss can fly. I mean, we all knew he was a good actor, but he has, it's a really tough role that he has to play in this film. It's a lot of long takes, so he has to hold your attention for a long time, and he does that completely. There's a lot of scenes in this film where you just want to, you know, feed him cereal like that. There's that many takes. I feel like someone's gonna do that at the moment. Oh yeah, for sure. But he does really well. Yeah. I don't think it's a spoiler to say that Harrison Ford is back. He's in all of the trailers. Yeah. And he was really good. Yeah. I don't think it's the Oscar-worthy performance that some effusive reviewers have given him credit for, but it's a solid effort, and he takes the Deckard character to a new place that we haven't quite seen before. So it's a nice change of pace for Harrison. Yeah. He's got a great, it's a great build-up to meeting Deckard for the first time. Yeah. The whole, you can feel like, you know, the audience is kind of waiting for it, and it doesn't disappoint when they do reveal him. So Jared, the important question that everyone wants to know is, will Roger Deakins win an Oscar for this film?  The color scapes, the way that he set the frame up, it's just spot on all of it. And I think that's part of what draws you into the movie for so long. Like, if he didn't set these shots up so beautifully, you wouldn't be there for the whole time, I don't think. Yeah. This is one of those movies, like most of Deakins' jobs that he's done cinematography on. You could just pause it at any moment, and it would just be like a painting. Yeah. You know what I mean? Yeah. And, you know, sometimes I think that people don't understand exactly what cinematography is, you know, a certain level of, you've got to give credit to, like, whoever grades the film, the color grade, but this is more than just color grade. Like, there's some insane lighting in this movie that all comes from just the crazy mind of Roger Deakins. So I think him and Mr. Villeneuve paired together equals magic. Very special, very special indeed. So I think it's pretty obvious we really dug this movie. It's a long one, so be prepared for that, but it's more than worth the wait. 35 years in the making, and they knocked it out of the park. Anything else?  Yes. I always say this shit, but just, can you just, can you just do it for me? Just do it for me. As usual, hit the subscribe button if you want to see more from us, and until next time, I'm Jared. I'm Bet.


So guys I am back with another how dive is to video and today guys we have another big one packs full of interesting things We have brand new missions tied to super earth a bug container back pack New weapons as well as a brand new patch which hit the world wide web Probably about a couple hours ago actually dropped when I was asleep But today we're getting to it all now the winner of yesterday's 2100 Super credits giveaway can see on the screen now if this is you hit me up on my disco link down below now Do you guys want to win 2100 super credits or a copy of how dive is to it's simple Liberate this video of a massive thumbs up if you could smash 50 likes that would be unbelievable Also, make sure you are subbed with those post notifications turned on and leave me a comment down below I will pick a winner from the comments section and announce them and tomorrow's how dive is to video Okay, so where do we even start today? We'll start with the brand new mission objectives Super earth props and even more bugs at these data mines come from the one and only mouse TTV Over on ready and we'll see an unscreen now guys some real real Interesting things now most of these are believed to be tied to new missions coming as you see carry Flag we see briefcase we see the missile silo the oil pump we see the orbital cannon We see raised flag restore power Satellite relay these are like I said a lot of things to do with missions that are not that gonna come But we also see larvae now This is something really really interesting which we'll move on to in a quick second as I say guys This list goes on and on and it's believed that these are going to be a part of new content New missions is all audio sounds that we will see and here in the game in the future So we're gonna move on guys and now we see things that insinuate new missions regarding bugs or new bug missions So to say we can see here content objectives bug strategy and blocker What is going on there guys? We see assassinate chargers. We see we see deploy Flag area mark a bug hive. We see bug lava container backpack, which again is what we're gonna now move on to This is very very interesting So if you look at this image right now on the screen again tied to one of these new missions coming now See this kind of like terminal. This is no doubt where you have to Collect this from or take this to but what we are looking at here guys is you look at this players back We can see a backpack container very small baby bug or a lava inside of it Which is very very cool, but it doesn't end there guys We have an actual fully textured Model of this backpack which we will check out in a quick second. Well, this is seriously seriously interesting Now if we move on we see content and we see super earth and we see super earth props here We see Speakers vending machines warning lamps currently building grounds. We see a forklifts.  We see base lights. We see super earth caches. We see rocket walkways We see retracting poles. We see all kinds of things now This will not be the first time we've seen super earth pop-up in regards to a new planet or a Destination we will have to know that liberate again We saw leaks and datamined images probably like two weeks back now We saw an image or a collage of all the maps and super earth is right there in the middle of it We've seen in-game ads where it states millions of being killed upon super earth. There's been audio files There's been so much more in regards to super earth being a planet We will have to take back and defend and liberate people so yeah This just adds more fuel to that fire now when it's coming. We have absolutely no idea And you also must remember as well guys There's been plenty of super earths upon my research and my understanding Once one super earth is destroyed we move on and find our new home and we also call that super earth too So yeah, so super earth will be a place no doubt and I cannot wait to see this in Again, and we also see with it super earth samples. I mean what else do you need to hear super earth will be coming people Okay, so we're going to move on and we have this right here capital defense mission This again a state could be a reused acid. I'm not sure but hey just thought I'd throw this in now moving on and this is Terrifying here. We see files that refer to acid chargers Acid chargers people that is absolutely terrifying We can see right there acid well charger acid charger bull. So hey Chargers weren't enough for you. It seems as though the mace be acid may explode acid upon you I have no idea. But yeah, so now moving on to further content further new things coming And this is in reference to the illuminate enemy faction. We know are coming into the game So you can see here content and objectives what we're seeing here guys is No doubt a part of some kind of mission some kind of objective on a certain map Well, we have to interact with a artifact maybe and it states here that we may have to pick it up And I if that's has physics to it. So yeah, just know that a part of some kind of objective on an Illuminate infested Planets. Yes. So very very interesting people. Okay, so I'm gonna go back to that backpack in here guys I'm screwing again. Thanks to mass TV. See a few close-ups of this backpack looking very very Interesting, I can't wait to see what mission is the part of but hey, it gets even crazier people because The legendary iron sights is fully textured This backpack with that larvae inside of it with that small bug inside of it and it looks Absolutely incredible again. This will be something you wear on it You're back part of some objective on mission on a planet to come. So yeah, that's very very interesting to think about And I'm screen now again. Thanks to our insights because the natural larvae animations of what it will do inside this glass container When you run around that battlefield and this thing is swinging about on your back. So yeah, very very cool guys Next up we have a very Interesting post again This was done by mass TV and it shows in game sort of like credit cards in regards to how dive a credit card Not sure what these are. It'll be just speculation right now There's not much information on it. What we see a couple of these Again, I think they're called how box cards or they're being referred to as how box cards Maybe these are just a new in-game Currency we know new currencies are coming in regards to those research points Maybe these are just another form of super credits in game Maybe just get a boosted amount of them if you find one of these who knows guys, but they're very very Interesting we are seeing credit cards in game for the game like what? And we also guys see this weapon right here.  There's no to which way is about the vet Okay, so I'm gonna end the video on the latest patch that hit the game This was a patch promised last week due to all the problems we were having which they blamed an arc weapons So the patch of 1.0.0 0.1 04 states hello all small fix common in today overview What's being done in this patch fix the arc based weapons fixes game No longer freezes when firing arcs from the following weapons and stratagems arc thrower arc shotgun and a tesla Tower now this was the issue many many players including myself were having with a game crashing constantly So yeah now can jump back on and liberate He put but yes there we have you guys a small patch for today I would afford at least some unknown issues they spoke about in the previous patch Maybe an added in and fix for this one i.e. adding people cross platform things like that But obviously you're gonna have to wait longer for that, but there we have it guys for another how diverse to Video guys have enjoyed it leaving a like really helps out if you like what you see I want to see more be sure to subscribe and hopefully guys. I will see you on that next one


Hello everyone. It's an honour to be a part of this year's prestigious Indian digital marketing awards by exchange for media as a juror. I'm excited to go through some of the most creative and path-breaking marketing ideas in the digital space that would be a part of this year's nominations. The power of great advertising cannot be underestimated and it can have transformative effects on brands. With the great success seen in this year's Cannes Festival by Indian brands and agencies, India has become a creative powerhouse in the global marketing and advertising industry. I look forward to seeing this innovating marketing ideas and how they have impacted consumer behaviour. I thank exchange for media for allowing me to be a part of this incredible platform and witness the great work done by brands and agencies. I wish you all the best to the nominees and may the best entry win.