Thanks, everyone, for attending our talk on crossplane and Argo CD. My name is Jesse Suin. I'm one of the co-creators of the Argo project and co-founder of a company called Acuity, which offers fully managed Argo CD in the cloud. And speaking with me today is Victor, who you probably already know from his very popular YouTube channel. Okay. Yeah. So my name is Victor. I'm from Rabant, a company behind crossplane. And this is a bit difficult subject because we're talking about tips and tricks. How many of you are using crossplane today? The rest of you might have trouble to follow up. This is going into all the troubles that this guy was facing with crossplane. Anyways, so let me give you a very quick introduction, very, very quick introduction into crossplane, right? And I'm going to show it in a way from the point of view of history, right?  Some of you are probably using Ansible still, and they were all based on the idea that things are mutable, right? I know that they can do immutable things, but based on mutable principles, you can call that the first generation, what later on became infrastructure as code. And they were mostly based for better metal, you know, real servers, you know, before virtual machines and before cloud and all those things. And then we got into the second generation of such tools. We called that second generation infrastructure as code, with Terraform, Pulumi, RAL formation, all the good stuff that many of you are probably using, right? Now, what is happening right now with the emergence of Kubernetes is that we are moving into the next phase, and that next phase is using Kubernetes as a control plane, right? Using Kubernetes with all the good things that you all... How many of you are not using Kubernetes? Okay, I'm just checking. With all the good things and all the things you like, right? Now, extensible APIs, custom resource definitions, drift detection, reconciliation, all the stuff that we like, right? And the whole idea is that thinking of Kubernetes as something that transcontainers is wrong, right? That containers are just one of the implementations of Kubernetes scheduler, and we have many, many, many others. And one of those others is cross-plane. So what we're trying to do with cross-plane can be described through two main areas, right? One area would be one-to-one matching between resources in Kubernetes or custom resource definitions and something on the other end, right? So if you need... If on the other end you have EC2 instance in AWS, then you have a custom resource that you can apply in your Kubernetes and use all the good things that we like with Kubernetes to manage the EC2 instance, or whatever else that is, right? Ordering pizzas. It's up to you. I mean, depends on the providers. Now the second and equally important or more important part about cross-plane is the ability to create compositions, right?  What does it mean to you to have a cluster, to have an application, to have a database, right? What does it involve? And as such, when you combine all those things, you can expose through those custom resources your work, your operational knowledge to everybody else in your company. As effectively, we are through compositions enabling you to create your own internal developer platforms and provide services to application developers, testers, or whomever else is working with you, right? Instead of waiting for somebody to open a Jira ticket, right? How many of you like Jira tickets? Okay, cool, cool. Good audience. With that in mind, I'm going to leave it to Jesse, because he's been working with cross-plane in Nargo for a while and has some really good insights. Yeah, thanks, Victor. So today I'll be covering how a Q&A uses cross-plane and some lessons and learnings based on our experience with it. So let me start by explaining, like, why we chose cross-plane. So the main reason we wanted cross-plane was we wanted to manage our infrastructure the same way that we managed our applications. And that's using things like Argo CD and GitOps. So we wanted to apply the same tooling, the practices and processes to our infrastructure, especially when we want to encourage, you know, these DevOps-based workflows. So these days, the line between your infrastructure and your applications are getting more and more blurry. And so there's a lot of this coordination that needs to happen between your cloud resources and your Kubernetes resources. And the best example of this is things like IAM. So Amazon has IRSA and Google has something called Workload Identities. And even though, you know, we're a small team and we don't really have like a separate, you know, platform engineering team, we still wanted to provide the simple interface to developers to basically lay the groundwork for scaling up, providing standardized self-service infrastructure and just exposing a much more simpler set of knobs. And this enables us to treat our infrastructure more like cattle. So it's not like a big deal to, you know, create more and more of these things.  So these are the type of resources that we deploy today using cross-plane. We're primarily AWS shop and we only use three cross-plane providers, the AWS provider, Helm provider and the Kubernetes provider. We do have a presence on GCP but it's quite small and currently they're not managed by cross-plane but I think in the future that could change and we'll be, you know, pretty prepared to use cross-plane for both managing GCP stuff as well as AWS. So probably the most powerful feature that you want to be using cross-plane for is its ability to compose resources into higher-level resources, what they call compositions. And here are some of the compositions that we created for our own internal purposes. And so we started with up-bounds reference architecture.   For example, we changed it to run in three availability zones instead of two. We enabled KMS secrets encryption. We added the AWS add-ons and then we also did something, created our own add-ons which I'll explain in a little bit. But if you're looking to get started, I highly suggest using those reference implementations as a good starting point on modeling your compositions. And also you'll see this one composition up there called the IRSA composition and that's specifically to handle IAM roles and policies associated with Kubernetes service accounts and I'll get to why that's needed in a bit. So and along with those compute and networking compositions, we also have this concept of a add-on composition for Kubernetes clusters. Here I'm showing six such add-ons and each add-on is different from the other. So one example is the one will require different policies. And so their policy manifest will be different. Some is installed using Helm. The others are just installed through raw Kubernetes manifest. And so you can see which of these lower level objects are composed into this higher level composition. And so just to give you an idea of what one of the add-ons looks like, here's the spec for our carpenter add-on. If you're not familiar with carpenter, it's basically a better version of cluster autoscaler primarily for AWS. But so in this spec, you can see we just expose a few of the carpenter parameters that we're interested in. And so looking at this example, this cluster will want to use spot instances and it wants to only use these four instant classes and it will have like a max autoscaling of 100 vCPUs. So all of these values will get passed all the way down to the carpenter, config map, their provisioner. But how that happens is abstracted away from the user deploying this. And this is just an illustration of how this nesting of composition works. So you can see here we have this top level EKS composition and inside that you have things, your normal manage resources like cluster and node groups or they see provider. But then you can include your own self-written compositions like my carpenter add-on. That's composed of like a helm release and instance profile, provisioner. And then that thing encompasses another composition. We wrote the IRSA one and inside that is your policy, your role and your role policy attachment. So let's talk about one of I think probably one of my biggest annoyances about how privileges are handled in AWS. So AWS has this feature where you can give your pods IAM privileges without using long lived static credentials. And they call it IRSA, it's called IAM roles for service accounts. Google has their own version of it called workload identity and they work basically the same way. So the way it works is you have your normal IAM policy and your IAM role and they're attached to each other. And to give IAM privileges to a pod, it has to go through an OIDC provider which you create along with your cluster. Then you need to reference this OIDC provider in like two different places in that IAM role. And then you have your service account. The service account is the one that you want to give privileges to your cloud. And this service account has to have an annotation which references the ARN of the IAM role which we want to impersonate. And that IAM role should then have a reference back to the service account so this bi-directional trust is established. So this is a really pain to manage, but we use cross-point to kind of help coordinate and manage all these references. So to simplify things, we have this composition which we call an IRSA. And this IRSA resource accepts all of those previous things that I talked about as inputs. So what service account name you want to give permissions to, the name space it lives in, the OIDC of the cluster that name space and service account is, and then the IAM policy, the permissions that it wants. And so what the IRSA object does is it then creates the underlying AWS managed resources with all of those references and back references in place where they need to be. And so the end result is that we just have to create this one IRSA object. And then the composition kind of takes care of all these child resources and cross-referencing. So this slide is just showing the fact that we also use cross-plane to deploy managed resources directly. And managed resources are kind of like the lowest level provider resources that have a one-to-one mapping with the cloud provider. So there's going to be a lot of times where you just want to create cloud resources not tied to any other objects. In our case, we want to create route 53 entries or routes, transit gateways. Or maybe we just want to create a bespoke IAM role to give to one of our services. And so the example that we use as far as, let's say you have you create two VPC networks. In our case, it's an EKS VPC and then a database VPC. And then later on, we want to connect those two. So then we'll use cross-plane to deploy a transit gateway and then the attachments to connect those two VPCs. So you might be wondering, OK, where does Argo CD come into the picture? So far, I've been talking about add-ons and how we use cross-plane to install those. But what about Argo CD? And the answer is we actually use both. So there's some trade-offs that you should understand when you decide you want cross-plane to install something through a help chart or when you want Argo CD to do something. So the advantages of using cross-plane to have an add-on installed as part of the foot cluster object is that everything is handled in that composition. So you just basically apply that one top-level EKS object.  It has all the add-ons it needs. It's ready to use out of the gate. And this includes things like IAM privileges to the controllers that need it. But the flip side is that these add-on versions are more cumbersome to manage. So they're tied to your EKS composition that you wrote. And so let's say tomorrow you want to upgrade AWS load balancer. You have to kind of modify your composition to get the new help chart version and then publish that new composition. And so the upgrade process of that add-on is much more tedious. Also, if it's part of that composition, it also means that all the clusters that are created from that composition, they all get the same version. And so you don't have that flexibility of maybe picking different versions for different clusters. They're all kind of tied to what you chose in that composition. On the Ariba CD side, the best benefit you get is you can use a GitOps-based workflow for managing your add-on. So this means you can control the versions for different environments. Use GitOps to modify the config map used by those add-ons. And unlike a composition, you actually get to choose which add-ons get to be deployed in a cluster. So with the composition, you're basically deciding these end add-ons are part of it.  It's an all-or-nothing kind of decision. Some of the drawbacks of Argos CD using to deploy is it can't do this coordination and referencing passing of IAM to all the resources. So that's one limitation of Argos CD. And second, if you're using Argos CD to manage your add-ons, it's going to be like the second step. You create your cluster first, and then followed by installing some cluster add-on. So I mentioned we use both. And so we decide a different strategy depending on the type of add-on. And so there's three different kinds. The first is what I call critical add-ons. These add-ons are kind of essential for a cluster to function. For example, without auto-scaling, you can't even probably install more add-ons because the cluster doesn't have capacity to automatically scale up as you throw more pods at it. And so for these critical add-ons, we basically bundled it as part of the EKS composition that we wrote, and we consider it just part of the distribution. So then next is what I call the IAM-only add-ons. And so these add-ons are ones that need some coordination with AWS resources, namely IAM. And they need to do that whole cross-referencing stuff that I showed in that previous slide. And these are also things I consider optional. I don't need a certain manager in every cluster or external DNS. So what we do with this is that we use cross-plane to install just the IAM portions of it. And if we do want the actual controller running in the cluster, we'll follow it up by using argocd and install it. And then by then, the service account is already pre-created for them, and we don't have to deploy or do anything in the cloud. And finally, we have the other stuff. And so these add-ons have no dependency to AWS, and we just treat them kind of like normal applications fully managed by argocd. Here are some examples of some add-ons in each category. And currently, the only three that we consider critical and that belong in every cluster are carpenter for auto-scaling, the AWS load bouncer controller, and external secret. So every cluster that we provision will get those three as a default. And then we have these add-ons, which maybe the cluster might need. And so for those like external DNS, certain manager, ADOT, those all kind of require some AWS privilege. And so we'll kind of pre-create those policies for them, but not the actual workload objects, because that is handled by argocd. And then finally, that last column are the example of cluster add-ons, which have no tie-in to AWS, and can be managed like a normal communities application. Next, I want to talk about what we feel is a best practice for using crossplane. One issue you might face is that when you release a new composition or update a provider, it could be risky, because when you're updating those things, all instances of that composition get updated at the same time. And so it could mean that you break all your clusters at the same time. So what we do is we run multiple crossplanes, one per environment, so test stage prod. And then we progressively promote a composition through the environments just so we can control the blast radius if something goes wrong. Here's an illustration of this. So here we have those three environments, or AWS accounts. And you can see there's a crossplane in each account to manage the infrastructure of that account. And when we roll out a new version of our composition, then it first goes to test and stage and prod. And meanwhile, argocd is deploying to all the clusters that you see in this picture. So I'll go over some kind of tips and tricks, specifically with using argocd and crossplane. Because there's definitely some things you should turn on and off when you're using argocd and crossplane. So probably the most important tip I can give is this argocd feature called annotation tracking, which is not the default, by the way. It probably will be the default in the future, but as of now it's not on. So if you've been using argocd and crossplane, one thing you might notice is that argocd has a pruning feature. And it wants to delete resources which think it are no longer managed in Git. And it does it by seeing the live object and looking at a label and says, oh, that label was tied to this application, but it's missing from Git. Therefore I should prune it. The thing is crossplane carries over that label that you apply in your claims resource to the composite resource, which is kind of like a child of the claim.  It must be something they removed from Git. So what annotation-based tracking does is instead of labeling it with a simple name, we annotate it with a lot of metadata. And based on that metadata, we can we understand if something was a label or annotation was just carried over from some parent object, and we will decide not to prune it. So this is a feature you definitely want to turn on. Even if you're not using crossplane, this is a better way to use argocd. And it will be the default in the future, I'm sure. Yeah? You want to speak, you said? No, no, I said next week. Oh, next week. I thought you said you wanted to speak. OK, I have some performance tricks. One thing I want to know about crossplane is it can install hundreds of CRDs. And you're probably not going to be using most of them. The problem that happens is argocd wants to list and watch those resources, even if you're not using them. Because you might be using them and it needs to discover them. So this causes a lot of memory pressure on both the app controller of argocd, as well as the company's API server. And this is just an illustration of what's happening. So argocd has a feature called resource exclusions. And the idea is that you can basically tell argocd to pretend like these resources don't exist. And how this helps is that if argocd doesn't know they exist, it won't actually monitor those, which lowers the number of connections and pressure to the controller. Another use of resource exclusions, and this improves the usability of the user interface, is something called, crossplane has this object called a provider config usage. And for the most part, it's an implementation detail of crossplane. You don't ever manage those objects. And you probably shouldn't ever care that they exist. But the problem is they actually show up in the argocd UI because they're always children of the low level of managed resource. And so one thing to just declutter the argocd UI is to also ignore these type of resources. And then you'll basically reduce your resource tree by one whole level. Another problem with high number of CRDs is it makes something called API discovery pretty slow. So you might actually notice this from like Kube CTL itself. Kube CTL has to kind of ask Kubernetes about, hey, what kind of CRDs do you have in the system? If you have hundreds of these things, it actually can get slow. Argosd does the same discovery. But right now there's this bug or performance problem which makes it inefficient. So you can work around this problem by just bumping up the QPS, which we're currently getting throttled on, to the controller. And this should be a temporary work around that you don't need in the future. Health checks. OK, so if you don't know, crossplane has very homogeneous statuses for all of the resources it creates. So they all get this condition, like is the resource synced or is it ready? And so Argosd has this feature which lets you write a snippet of Lua script and evaluate the object to see if there's any return if it's healthy or degraded or progressing. And so here's this simple resource health check that you can write for that DB instance that I showed in the previous slide. And as you can see, just iterate the condition, see if it's not synced. And then if it isn't, it'll cause the resource to show up as degraded. And then you can see in this little screenshot, it'll actually get surfaced to the Argosd UI and you can quickly identify problems in your crossplane resources and get a lot better visibility. OK, some challenges we faced. One thing is if you want crossplane to adopt existing resources, it could be challenging, especially for AWS. And this is because AWS has this behavior where it just generates random IDs for some things, like VPCs, subnets, and security groups. And crossplane, when you recreate a resource, let's say you wanted to take over an existing one or maybe you're just moving your migrating to a different crossplane cluster. So when you apply it a second time, it doesn't know that existing one already exists and should adopt it. So now you're left with two VPCs. There's ways around this. You can annotate your resources with an external name so that you can take it over. But this kind of breaks the whole GitOps user experience because now you're incorporating IDs in your manifest when you didn't have to originally. But one tip you should practice, and I recommend this, to use formulated names for your composite XR resources and instead of relying on generate name for it. And that way your AWS resources get kind of human readable names. Some things, limitations in crossplane, but I think they're being worked on and will be addressed in the future. As of now, a composition, you can't conditionally create resources depending on input parameters. So for us, I would love the ability to enable or disable a cluster add-on based on some true false values in the parameters. Another example is we might have a dev version of a database that has more instances versus a prod instance. So today we resort to scripting and code generation to create two versions of the composition that are slightly different. And another limitation is we, crossplane doesn't have a ability to reference another resource and get status information to feed into the input of the current resource. So if you're currently working all within the same composition, it's fine because all the references happen in the same YAML. But if you wanna kind of a more loosely coupled process, or maybe you have an EKS network, another EKS network and you wanna attach them, today what you have to do is copy the VPC ID, paste it into that transit gateway to connect them, and then now they're connected. So it would be great if we could have something where I can just reference those other two things rather than copying around Amazon IDs. So far we've been running crossplane for the better part of a year and it's been working great for us. These are improvements that we wanna make internally. These are not things about crossplane. So currently we run like an dedicated EKS cluster as a crossplane control plane. And so the more environments we have, like then it becomes more expensive because you're kind of dedicating an EKS cluster for this. So it should be possible, I know it's possible to just run crossplane in a smaller cluster, like a K3S cluster, which in that K3S cluster can run in a real EKS cluster. And so now we can reduce our footprint to just one EKS instead of like three or four. Okay, so that's kind of our learnings and experience with crossplane. So I think we have some more time for questions. A few minutes for questions, yes. About crossplane or Argo CD or anything else? We have time for a couple of questions. Can you put your hands up? I see one there. With Composition Revision arriving soon in crossplane, do you think you are gonna keep a separate instance of crossplane to test between environments? Sorry. With Composition Revision arriving crossplane soon, it's a feature flag today. Do you think you're gonna keep a multiple instance of crossplane to test for each environment? Are you gonna have all? I'm not sure yet. It's too early for me to reveal. Still going left to right. Ask me again in a couple of weeks. Please come to the front for any more questions. I think it's pretty difficult to hear. Give it to us. We thank our speakers. Thank you. Thank you for coming. Thank you.


How not to die? Written by Dr. Michael Greger, one of the famous MDs from the States, it is definitely one of the most amazing books I've ever read. Was it so? Well, let's find out. Hey guys, Greg here, the founder of your reception, welcome to my channel where you can learn top secrets on how to achieve limitless productivity and performance. Subscribe below to start your journey. In this video I'm gonna share with you my top five reasons why you should read this book, what I've learned and one of the most important secrets that you should definitely know about. But before I do that, let me just quickly tell you that in the past years I've tried a lot of different diets. I went from keto to paleo, I went from paleo to vegetarian and I tried even vegan. And I've done this to see which diet can help me achieve the best results. Now after reading this book, I've completely changed my mindset and I've stopped using different kind of diets to achieve ultimate performance. But I've started using them as a foundation for a healthy life. What really happened is I actually started eating foods that are actually healthy for me based on the current research. Now just before I share with you my top five reasons why you should read the book called How Not To Die by Dr. Gregor, let me ask you this. Do you prefer eating animal-based foods or no, are you against it? Let me know in the comment section below. So if you check out the reasons, the first reason why you should read this book is because it serves as a guideline to healthy eating that is supported by a lot of evidence. And I mean it, there's a lot of evidence in this book. Secondly, it's very easy to read. It's fun to read and it gives you a lot of know-how, a lot of useful information that you can immediately use and implement it in your daily life. The third reason is that wherever the science is unclear, Dr. Gregor mentions that. So there are still some topics where we are still not sure if something is healthy or not and Dr. Gregor will mention that. So you can be 100% sure where is enough science that supports all the facts and where we still lack some data available. The fourth reason why you should read this book is because it will most likely completely change your perspective on eating and on healthy diets. And last but not least, it is probably one of the most comprehensive books on healthy eating right now available on the market. So what have I learned from this book and you know how I changed my lifestyle after reading the book? Well, the first thing that I learned is how not to die, obviously. You can find so much useful know-how, how to avoid different kinds of sicknesses from cancer to dementia, to Alzheimer's disease and so on and so on and so on. Most of the diseases that are currently killing millions and millions of people every single month or a week or even day, most of them can be stopped just by changing your diet. I mean, this is so crazy. I didn't believe in this before, but after I read this book, after I went through the evidence available, I mean, this is just amazing. Another reason why I like this book is because I got a good insight of why are neurotransmitters and why they're so important for our body. Besides all that, I got a lot of know-how and a lot of useful tips on how to switch from my current diet to plant-based diet, how to eat as healthy as currently possible. Dr. Greger also shares a lot of useful tips on how to avoid all kind of food that should not be on your plate and it also talks about the blue zones, like all the zones in the world where people live the longest and have the lowest amount of all kind of different diseases.  And besides all that, I learned a lot about different superfoods, herbs, even a little bit about different supplements that you can include in your diet or you should include in your diet to achieve the best performance possible. By the way, guys, if you want to achieve limitless productivity and performance and join the most successful people in the world, check out my special free guide which you can download below. So no matter if you believe all the facts that Dr. Greger presents in the book and there is really a ton of them, I mean a ton of scientific research and in a different studies, comparisons and whatnot. And no matter if you believe that or not, I mean after you read this book, it's going to be very difficult for you not to switch to vegan diet. And I mean there's a lot of different know-how on the market available, a lot of different discussions whether eating animal-based foods is good or not, is healthy or not, should we do it or not. But if you study the blue zones, if you study this book, if you check out all the know-how that is currently in 2019 available to us, I mean it should be very clear to everyone what is healthy and what's not healthy. And you know, honestly, I really love eating animal-based foods, I really love eating steaks and chicken breasts and so on. But when you look at this research, you definitely don't want to do this too often, you know, that's just how it is. So yeah, those were the main reasons why I like this book so much because it really supports, basically, it shows so much evidence and every sentence that Dr. Greger writes, there is a reference to it so you can very easily check what's true, what's not true, what does the evidence say and so on. If you want to live a great life, a healthy life and if you're serious about longevity, you know, then you should definitely read this book. By the way, this review was not sponsored by anyone, especially not by Dr. Greger so, you know, this is my honest review of this book and yeah, if you have any questions, guys, don't hesitate to contact me. If you want to join the most productive people in the world, then subscribe below. Don't forget to follow me on Facebook and Instagram and don't forget to download my free handbook. Hope to see you soon, guys.


So well, I see you've washed the car. Yeah, well I had to wash the saltwater off Leanne as you know We went up nine in my reach today, of course I will get to that in the fullness of time. Now, that's your first time up there, right? Yeah Yeah, what do you think? That was fantastic fantastic. Get a great time Stand that you guys got stuck because we never got stuck I think I think you might have got so I think you actually might have got stuck twice didn't you? We got Yeah, we got stuck, but we got stuck in probably the easiest place where we should have got stuck But it wasn't all about the beach I seem to remember there was something else before that during the day Yeah, you know there was obviously those those school visits. Yeah, we gave away some bikes Yeah, and from memory we got quite close to the cops today, didn't we? Was it 37 kids we got in that cop car? It was a lot of kids So we had lunch at Cape Reinga. What did you have? Well, I had a roll and a muffin put on by the officials, which was you know, it was actually Yeah, I think it was a bit of cheese in that roll too. Oh cheese rolls now that is it. That's fine cuisine Yeah, it did. Well, if I better go and wash the Sand out from underneath the car. Cool. You could come and give me a hand if you want. Oh, I didn't see you coming Give me a hand with a limo


On April 7th, the MCPON handed out the first e-tablet to the Navy's newest recruits. The e-sailor initiative is currently being tested with two recruit divisions to help determine how the tablet integrates with sailors at Recruit Training Command. The e-tablet will contain materials such as training videos, text, and access to professional development websites. For more information on the e-sailor initiative, visit the Naval Surface Training Command website. Ships assigned to destroyer squadron 26 pulled into Fastland, Scotland to commence Exercise Joint Warrior 15-TAC-1 on April 9th. The Joint Warrior exercises a semi-annual training conducted off the coastal waters of the United Kingdom. Joint Warrior is a series of numerous scheduled training scenarios including small bolt attacks, boarding operations, and air defense. For more information on Joint Warrior, visit their website.


Okay, so last time we looked at a formal definition of an extensive form game.  Now the idea of a single act game is simply that each player gets to act at most once in the game. So, can you tell me what would be a single act game described by in an extensive form? How would I describe a single act game through an extensive form? So an extensive form has an extensive form is a tree in which the nodes of the tree are divided into player sets, player sets are partitioned into information sets, right? So if a player gets to act at most once, then what can we say about, no, no. See each path in the tree starting from the root node going towards eventually the leaf node. Suppose this is one leaf node, this path passes through several intermediate nodes. These intermediate nodes are part of some or the other player set, right? And further they are also part of some information set of that particular player, okay? So if I am saying that each player gets to play at most once, how should the information sets and or the player sets be arranged? So let me ask you a different question. So if a player gets to play twice, what must be the case? To act twice, no, not two player sets. Each player has one player set, which is the set of his nodes, he will appear. Now the path, there can be, you can have situations where there is this path, here suppose the black path player, this is a node of player 1 and this is also say a node of player 1, whereas in along the blue path, this only this is a node of player 1. So along the black path, the player 1 plays twice here. So if the game goes along this black path, then he player 2 will have to take action twice, right? Whereas if the game goes along the blue path, then he would have, he can take, he has to act once. So now whether a player acts once or twice, it depends on the path, basically depends on how the game actually evolves, right? It is quite possible. So I have just defined player sets as a partition of the nodes and like and further information sets are further partitions of player sets. There is nothing to say that the game follow goes in rounds where first one player plays, then the next player plays. There could be a different path along, different sequence along different paths of the tree. Different histories in the game can generate two different orders of play for the players. So now if a player gets to play, so when would I, so when would I say that a player gets to act only once or at most once? See so the simple question is what does it mean in terms of information sets for you to say that a player gets, each player acts at most once? Well for that the basic condition would be that every path starting from root to leaf node has to intersect the player set of every player at most once. If it intersects a player set of a player twice, then it means that there are two nodes along any, there is a history in which there are two nodes in that history where the player needs to act. So single act game is simply that each path from root to leaf intersects players, player set, player set at most once. So this is what it means for a game to be a single act game. So single act game, so of course there can be parts of the game where a player does not get to play. So we have seen a game like that in the earlier where if you remember the one player if he plays this L1, R1, L2, R2 this sort of game. So if player 1 played L1 the game ended, so player 2 did not get to play. So it is okay but here player 1 and player 2 will get to play at most once along any history of the game, is it clear? Okay, so let us do an example. So this is player 1, suppose he has three actions left, middle and right. Player 2 now is here. So these are two information sets of player 2. So player 2 can tell whether player 1 has played L or not L and after that player 2 has so let us call these L1, M1, R1 this is called L2, R2, L2, R2 and the payoffs are 0, 0 minus 1, minus 2, 1, 3, 2, 0, 3, 2, 1 and minus 1, 0 okay and so and assume about players minimizing. Now let us again try to analyze this using, so I want to make the point that, so let us, we will try to analyze this game in two different ways, one by writing out the normal form of the game and the other by trying to sort of decompose the game in the way based on what we see in the extensive form. So if you remember the logic we had used earlier, I had told you that we can try to decompose this game in the following way that player 1 basically has this choice. The choice is to either play L1 and then engage with player 2 in a and reveal that action to player 2 and then player 2 and basically engage in a dynamic game with player 2 or not play L1 and engage in a simultaneous move game with player 2 with actions M1 and R1 right. So if you take the left part of the game what is the way of the player 1 can expect from this? So if he plays L1 what would happen? Yeah, so if he plays L1 player 2 would respond, player 2 is minimizing, so player 2 would respond with L2 okay and then player 1 will get 0 right. So in the left in the LHS game player 1 plays L1 and player 2 plays L2. Now what about the right hand side game? Now the right hand side game is a simultaneous move game. In the RHS game what can we expect? Well the RHS game is actually a non-zero sum simultaneous move game so let us write out the matrix for that. So player 1 what are the strategies for the player 1 in the RHS game? M1 and R1 and for player 2 is again L2 and R2. So player 1 gets, so the payoffs are 3, 2, 1 and R2 is then 0, 3, R1 2, 1 minus 1, 0 okay. So can you tell me what is the Nash equilibrium of this? R1 R2 right, yeah. So this is the Nash equilibrium. So in the RHS game basically what we conclude is that player 1 plays R1 and player 2 plays R2 okay. So in short what we are basically saying is that the solution of this game is now to be seen by comparing outcomes of these two games. So if player 1 plays the LHS game, he plays L1 and player 2 responds with L2. So the players get 0 comma minus 1 and player 1 in particular gets 0 whereas if player 1 engages with player 2 in the RHS game then he gets, then they get pay off minus 1 comma 0 and player 1 is getting minus 1. So player 1 therefore has to decide which one what he now plays and it turns out that well minus 1 being less than 0 player 1 would prefer to engage with player 2 in this simultaneous move game in the right hand side game okay. So in other words the and so the Nash, so the Nash equilibrium then is that you can sort of logically say that the pay off for player 1 at the solution would be minus 1 and for player 2 it would be 0 okay. Now again as I said this sort of reasoning we have done before but there is a little bit of a heuristic reasoning going on here because what we have said is we have tried to decompose the game into two parts. There is no as of now no proper theory for allowing us to do this decomposition okay. We are trying to sort of solve it almost like it is a puzzle we said okay well logical puzzle we say okay well what would happen if this would happen what would happen in that there is no theory backing this but it turns out that this actually is this kind of way of solving does in fact get you to earn Nash equilibrium up again and you can I will what I will tell you show you again is that this is in fact this is in fact this is a Nash equilibrium and I will okay. As I told you if you want to really find all the Nash equilibrium of the of properly find Nash equilibrium of a game you have to list out all strategies and then write out the normal form. So now let us do this more formally. What are the strategies for player 1? Player 1 it is either L1, M1 or R1. So there are 3 strategies for player 1. What about for player 2? How many strategies for player 2? 4 strategies for player 2 right yeah. So the strategies are let me write it like this. So first is first one is to always play L2, second is to always play R2, third is play L2, L2 if player 1 has played L1 and R2 otherwise and fourth is to play R2 if player 1 has played L1 and L2 otherwise okay. So this then gives us a okay can you list out the payoffs here for the 2 players? So this should be 0, minus 1, minus 2, 1, 0, 3, 3, 2, 2, 1, minus 1, 0, minus 1, 0, 2, 1. Is this correct? Okay alright. So now what are the Nash equilibria of this? So where is your earlier Nash equilibrium? The earlier Nash equilibrium, earlier equilibrium logic was saying that player 1 should engage, should play R1, get into the simultaneous move game and then play R1 right. So let us see is that like here somewhere as a Nash equilibrium? So it is this one right, it is minus 1, this one. So player 1 plays R1 and player 2 is going to play L2 if player 1 played L1 and R2 otherwise, R2 if in the other case. So that is that is gamma 2, 3 okay. So and if you see here this is exactly how we what we concluded. So if player 1 played L1, player 2 would have played L2, if player 1 plays otherwise, if player 1 plays either M1 or R1 then it is a simultaneous move game and in that player 1 should play R1 and player 2 should play R2 right. So that is effectively this equilibrium okay. So let me mark this. So this is the equilibrium we have already calculated. Now there is in addition to this one more equilibrium and that is this one, the one mark that I just marked with a star. Now what is this equilibrium? So player 1 here is playing L1 and what is player 2 playing? Player 2 is playing L2 right. L2 means he is playing L2 at every information set regardless of what player 1 plays he is playing L2 right. So if so player 2 is playing, so gamma 1, gamma 2, 1 here this here this is a constant strategy which means it is the strategy that player 2 would have played in the absence of any information right. So it is the strategy that player 2 would have played had these 2 you know these 2 be in one information set correct. So that is a strategy that is feasible for this player. So now actually let us go ahead and see so what if what would happen in fact if those 2 were a common information set okay. So if in that case the game what would the game become? The game would then become that player 1 has these choices L1, M1, R1. Player 2 now at every node has 2 actions L2, L2, R2, L2, R2, L2, R2 and you would have the same set of payoffs right. So can you tell me what is the matrix for that game? So now how many strategies for player 1? 3 strategies but how many strategies for player 2? Only 2 strategies for player 2 right because he has just one information set and 2 actions at each information set. So he is basically he has just 2 so it is effectively just a simultaneous move game in which player 1 has 3 actions L1, M1, R1 player 2 has 2 actions L2 and R2 okay. Now those 2 actions L2 and R2 are actually nothing but these 2 constant strategies. This strategy to always play L2 and this strategy to always play R2 right. By inspection can you tell me what should be the payoff matrix for that for this game? Yeah the first 2 columns from here right. This portion is actually the payoff matrix for this game because actually these are those strategies right to always play L2 and to always play R2 okay. So let us write this out here okay alright. So now what is the equilibrium of this? Yeah so you can check that this is the equilibrium of this is this one. So this starred equilibrium then we can interpret it in the following way. The starred equilibrium is actually not really an equilibrium of this game in its in a sense that it is in fact yeah it is in fact an equilibrium of an of another game in which player 2 has just ignored the information that is available to him and that equilibrium has shown up here as part of you know the overall strategic interaction. So this starred equilibrium is actually the equilibrium of an informationally inferior game. Informationally inferior in the sense that someone has lost information in this game okay. In this case player 2 has lost information and that in so the that kind of so that is not our game that is that is a sort of an informationally inferior hypothetical other game whose equilibrium is has is present here in our game and this actually is a very general fact that you take any dynamic game and you will be able to find potentially several informationally inferior games okay in that there are several games that are informationally inferior to the given game and the equilibrium of all those games will be inherited as the equilibrium of this game okay. So in particular what is the informationally richest game is the game with perfect information every information set is a single term right. Such a game will have equilibrium of all inferior games all games inferior to it inherited as equilibrium in it okay. So this is this yeah I will prove it more I will prove it but this is this is a general fact that whenever you you take any game you take an informationally inferior version of it it is equilibrium the informationally inferior one it is equilibrium inherited as equilibrium in the richer one okay. So that is the fact I wanted to I wanted to tell you about today.


USS John C. Stennis commemorated the 74th anniversary of the Battle of Midway, June 4th, with a wreath-laying ceremony. John C. Stennis sailors gathered in the hangar bay to release the wreath into the South China Sea. The ceremony included a 21-gun salute and a historical narrative given by John C. Stennis' executive officer, Captain Kavan Hakimzadeh. I think the most important thing that junior sailors can learn from the study of the Battle of Midway is perseverance against long odds. These were people at the same age as we were doing the same jobs we were doing, except they were facing some much longer odds than we are. John C. Stennis also commemorated the Battle of Midway throughout the day with a cake-cutting ceremony. One MC announcements were counting the battle and an art exhibit. Reporting from USS John C. Stennis, I'm Seaman Zach Wolfe.


To the head of the Central Bank of Nigeria, CBN Monetary Policy Committee meeting on Monday, Ulusei Ulushogasio, patien partners group says, the outcome of the meeting does not have an impact on citizens and therefore should be looked away from as a means of measuring inflation in the country. Saying that if the ordinary man's standard of living does not change is of no implication on the economy. He spoke in Ligas at the 10th anniversary of the group. He said the country should focus on consuming locally made products to bring down the cost of living. They may decide to raise rates, but I think the impact is going to be marginal on the markets because that's not actually what's really driving inflation. I think that in Nigeria, we should stop trying to use knowledge from the West to operate fully in Nigeria. I think Nigeria is a very peculiar country. The man on the street does not really understand interest rate went up or down. What it cares about because even if he wanted to borrow money in the bank today, he probably cannot get those rates that they are seeing. What actually affects him is cost of living. And I think that as long as cost of living continues to go up, inflation will continue to go up. For me, I think that we should stop holding on to the MPC as though they are gods or they are going to change anything. What is actually going to change our lives is actually figuring out how we consume locally and bring down the cost of living. That's basically how I see it. So I think that they might raise rates, but for me it's irrelevant. And on the shortage of grains due to your ongoing Russia-Ukraine war, Lusheye says food security is a big problem in Nigeria. And then the world and says the PPL will provide fertilizers to farmers to improve farm products. We're actually using the world today to come from Ukraine. And even if the world stops tomorrow, right, it's going to take a while before you have people who are actually able to seal the land to ensure that the land is actually good enough for the crops. And so what that's going to create is scarcity, scarcity of grains. And when you have scarcity of grains, the cost of fertilizer is actually going to skyrocket to the roof. I guess what's going to happen to food, food is going to get a lot more expensive. So for us, we need to take that initiative to say, look, food security for us is actually the biggest problem not just for Nigeria or for the world at large. And Nigeria as a country, we need to play our part in ensuring that we elevate, even though we know that we cannot do it alone, we elevate and try and work with different partners to see how we can reduce that impact on Nigeria. We've seen the different schemes that Central Bank has tried to come up with. And there are different companies that are out there that basically help the farmers source for things like fertilizer. And those fertilizers, so basically we buy the fertilizer to help improve their crops. And so when the crops are then harvested, they're stored in a warehouse. And so we can do trades in warehouse receipts. So basically we're helping them to actually fund the fertilizers. And then when the products are out, when they're then sold, we get our money back. That's also doing the social good for Nigeria and for the world at large. Businesses generally are facing a lot of challenges. It's a tough time at the moment. And it's not just peculiar to Nigeria, it's a global issue. I mean, coming out of the pandemic as well as the lumen recession, I think that it's a tough environment, but there's still opportunities for businesses. It's just seeking them out and taking them quickly. There are so many parties to the whole success story. So when we talk about success, therefore, a celebrity's success, but not just a celebrity herself, a celebrity all those who have contributed in one way or the other to our success. I think the first thing of course is you have a clear vision. Of course, I have a plan. I just follow your plan diligently. So more than anything, I just focus, you do it, I do it well, I give it time. Nothing good comes easy, it doesn't come fast. Hello, hope you enjoyed the news. Please do subscribe to our YouTube channel and don't forget to hit the notification button so you get notified about fresh news updates.