Hello, everyone. My name is Daniela Robizer, and I'm a technical product manager at Dynatrace. And I'm very happy to be here with you today and share what we at Dynatrace think is key for successfully monitoring complex cloud applications. So you probably know that monitoring used to be a lot about looking at dashboards.  You deployed it either on-premises in your own data center or somewhere in the cloud, maybe on AWS, for example. And then you watched if anything happened or if any threshold would throw an error message. So you probably stared maybe on dashboards, showing graphs like you see on the screen here. Or you probably skimmed through some application log messages looking for some keywords. But the thing is, modern monitoring, we at Dynatrace think that modern monitoring should go beyond that. So you shouldn't have different agents to cover different technologies. So there should only be one agent. You shouldn't have lots of data, but no answers. So when you think of that graph that I showed you, what would that mean? So this wouldn't provide you any insight, any answer to problems that might have been available in your environment. And also, you shouldn't go for a solution that contains lots of duct tape that covers everything, but is kind of like sticking together only via duct tape. And also, when thinking of deploying your monitoring solution, this should work smoothly for you. And since we are here at the Red Hat Summit, of course, containers shouldn't be something that your monitoring solution doesn't understand. And of course, it should just work for the Enterprise Cloud. So we at Dynatrace think that modern monitoring should provide you with a holistic view of your environment. It should be AI-powered. It should be fully automated when it comes to deployment. And it should, of course, be purpose-built for the cloud. Because we all know that a healthy environment is something important. It is important if you do have a small environment, but it becomes highly relevant if you think of a big environment. So if you do have containers in place, if you do deploy your applications using containers, then the typical life of a container is maybe minutes, maybe hours, and not necessarily days or any longer. So given this kind of environment, given this kind of highly dynamic and distributed environment, so it may become difficult for your monitoring solution to monitor the applications as the number of nodes of containers are ever changing. And also, the numbers can get very big since enterprises are currently migrating applications from monolithic applications to microservices. And of course, containers are a big topic to support breaking up monolithic applications. And when thinking of that, you can, of course, have like 1,000 containers per nodes available. And then your monitoring solution needs to scale with your environment as well. And when thinking about that, it may also come to your mind that container health, services health, and application health may be something different. So traditional monitoring tools use, for instance, container APIs to provide an overview of container health. Though it is important to keep track, keep an eye of container health in terms of Docker stats, the Docker API, it is of course not sufficient to only focus on the container health only. The most important thing is to measure the health of the services that are running inside a container. And it could very well happen that the container health, that the Docker stats, for instance, may show healthy results. But the services running inside the containers could be starving for resources, for instance. For example, if you run a Java process in the container, then it could be starved for CPU. And you may not be able to spawn multiple threads to deliver the service faster. And more importantly, looking onto application performance at a component level, at a container level, does not indicate the performance of your application when it comes to user experience or the delivered service that the user is looking for. So everyone who has ever participated in an IT war room during a serious incident knows that everything can look OK at a component or container level. Even when taking a holistic view, the results may be very poor. So if you think of the typical life of a container, then on an infrastructure level, you may do some chaos monkey testing, for instance, to ensure that your infrastructure health is doing fine. On a container level, you could look for Docker stats. You could query the Docker API. On a microservices level, you could look for response times of your services. You could look for failure rates. You could look at CPU usage. You could look at the throughput. And of course, on an application level, you could look at how are my users experiencing the applications when visiting websites. So with a monitoring solution, you should get all that different viewpoints provided in one solution. Like I mentioned in the beginning, you would probably look for a holistic view. And another angle to look at monitoring cloud environments is that deployment dependencies may be different from microservices dependencies. So for instance, with Dynatrace, we do cover both. So you will get on the one hand side the deployment dependencies that you see on the left side of the screen. And you will also get microservices dependencies with what we call in Dynatrace the service flow. And when having a closer look at a service flow, you will also get insights into the architecture of your microservices. You will notice that two microservices that are split up currently are tightly coupled. And you may probably think about combining these two services into one because they are so tightly coupled. So why split or distribute them onto two services? So we at Dynatrace think that in order to successfully monitor your cloud environment, monitoring needs to become, needs to be seen as a platform feature. So you should deploy. And with Dynatrace, you can deploy only one agent per host. This one agent will then take care of auto instrumentation of your containerized microservices. So there is no need to adapt your application containers. The one agent will also take care of automated distributed transaction tracing. And Dynatrace is also an AI-based solution. And it will help you with analyzing the root cause of problems. So in order to deploy the one agent on your OpenShift platform, for instance, Dynatrace provides great support. So we announced yesterday that we are one of the very first partners of Red Hat to have an operator in place. So the one agent operator allows you to manage Dynatrace one agent deployments. So it allows you to roll out the one agent onto specific nodes only. So this allows you to control one agent deployment in a fine grained way. And what is a great value add of the one agent operator is that it will take care of updating the one agent automatically as soon as a new version of the one agent gets available. So the one agent operator ensures that all your monitoring, so that monitoring of your OpenShift cluster works with the latest one agent version. So if you want to check out the one agent operator, so we do have a great blog post around that online. And we also have a GitHub repository available where you can also have a closer look at the source code, at the implementation of the one agent operator. And you can also use the GitHub repository to get in touch with us and if you have further questions to start a discussion around that. And speaking of further questions, so we are happy to give you a demo of the Dynatrace monitoring support. At our booth 4.17, we also do have the one agent operator running there. And you can also check out Dynatrace for your own cloud environment as well and get a 15-day free trial of Dynatrace because you know, life without monitoring is like a box of chocolates. You never know what you get. So that's all from my side so far. Thank you for your attention and have a nice afternoon.


Hey guys, it's Adana. I have a really quick announcement for you. If you're trying to get into PA school, I want to help you. That's why I'm offering a 60-minute consultation session with me personally via the phone or video chat, why I will help you personally develop a plan to help get you into PA school. For the video with the full details and how we're going to get that done, go ahead and head to the description box below because there'll be a link there or it will be pinned to the first comment on this video. Or you can always just go on to my website at adanathepa.com and schedule your appointment today. Hope you enjoy the rest of this video.  It's Adana. I am back with another video for you guys. I don't know why I love doing that so much. I just love it. So I'm going to keep doing it. So I have been getting this question. You guys are like, how do I choose the right PA school? How do I know which PA school is the right one for me? And I mean, I know I told you guys my story on how I chose what PA school was right for me. But I found like there's this really good website, you guys. It is. That is like, I wish I had seen this website when I was looking because I think I would have like saved myself a lot of trouble because I literally had to type into Google like PA schools. I went to CASPA. I saw all of the list of PA schools. Then I would click on the PA school and then have to be transferred to their website to see everything that they required, all of their prerequisites, all of their healthcare hours, all of their shadowing, everything that they required. I needed to see that on their particular website. But there is another website doing that. But that website, you guys, golden. It is like your one stop shop to getting information for PA school. So I'm going to show you guys it here. So you guys can just get a better understanding of what exactly I'm talking about, right? So here we go PAEA.org. And so you, what you can do is now on this website, you, as you can see, there's like all of this information here. You can choose what state you want to look for PA schools in. What degrees do they offer? I don't know if schools still offer bachelor's degrees for the PA profession. But if you put like bachelors, it means like it's a bridge program. So you'll be able to just go straight from high school into PA school, get your bachelors and your masters all at the same time. So that's what that whole degree offered is because I think it says like associate bachelors. I don't think they offer an associate's degree anymore and masters, right? CASPA member, like are you a CASPA member? Do you need to be a CASPA member? I believe all schools like for the most part require you to go through CASPA. So, but you can put in that information, GRE, health care experience, like how many hours, right? So, and do you require health care experience? Of course, the schools that are straight into PA school or straight into your undergraduate program from high school won't require any true health care experience. And so those are the schools that will come up. But let me stop talking about it. Let me just show you guys exactly what I'm talking about, okay? So here we have it. I'm going to choose a school. Let's say, let's see what state, what state should I go to you guys? Let's go to, let's go to Kansas. I've never been to Kansas. Let's go to Kansas. Are there any schools in Kansas? Let's see.  Search programs. There's one school in Kansas. So if you live in Kansas, you can go to Wichita State University. That is the one school in Kansas. It has continuing accreditation. So it is well established, which is a good thing. But what states are near to Kansas? I think like St. Louis, right? Missouri. So let's go to Missouri because you want to like have a broad scope, right? Of all the schools that you could possibly go to. All right. Look, you guys, there are four more PA programs in Missouri. There are two that are provisional, meaning that they just started. There's now starting up you guys.  This, these are the schools for you. Stevens College and the University of Missouri, Kansas City. So those are like perfect options. Now let's go to a state that I know has like a bajillion PA schools, right? We're going to go to California because it's huge and it has, I know it has a lot of PA schools. So let's see. PA schools in California, it has 16 programs.  And then there are like a whole bunch more that are developing you guys. So 16 programs in one state, that's a lot. So let's now show you overall GPA, right? Like minimum, it says minimum of 2.5 or higher. What? Like no minute. Let's go with no minimum GPA. I doubt any. Oh, two schools show up. Oh my gosh, two schools show up, you guys. So that's good. There are two schools that don't require a minimum GPA. One is provisional, one is continuing. Maybe that one that's continuing is a bridge program where you can go straight from high school to PA school, because rarely, like super, super rarely do any schools not require a minimum GPA. They usually like, even if it's the 2.0, they're required minimum GPA. So that I don't know about that one. Let's see about GRE because not everybody requires the GRE. So GRE not required. Let's see. Oh, they're 13 programs you guys. So yeah, some schools you can do your MCAT. So if you were trying to do medicine prior, like I was, and you took your MCAT, you can use your MCAT scores, or they don't require GRE at all. So now like let's go in, like let's go into Loma Linda and see what they're talking about, right? So Loma Linda, here we have their stuff about veterans, international applicants. Not every school allows international students to apply. That is something. So if you are an international student, you have to only look at schools that require, allow international students to apply. So Loma Linda allows international students to apply because it says international students accepted. So definitely that might be a school that you should go ahead and apply to. Look at your application deadline. When is it due? When do you need to have it submitted by your verified CASPA application? This is all useful information. And where is it? All consolidated right here on PAEA.org for you guys, okay? Healthcare experience, 2,000 hours. That is a lot of hours. So if you don't have those hours or you're not even close to having those hours, now you have the opportunity to work towards it. You can now figure out, okay, well, what exactly do I need to do to get these 2,000 hours in? Minimum GPA. So they don't, they don't have one for your prerequisites, which some schools do, but their, your overall GPA should be a 3.0 and your science GPA should also be a 3.0. Let's see what else they require. All right. So these are some courses, obviously these courses they look highly upon. All of these courses are required with the checks. You need an upper and lower level anatomy, biology, chemistry, physiology. You need English, you need math, they say algebra, but I'm pretty sure like even if you were to do like, well, I guess you should call like I'm sitting up here. I'm pretty sure if you could do, if you did like calculus, that would work because it's an upper division, but hey, they're saying algebra and then sociology. But do you see that you guys? All of that information right there for you guys, ready, right there at your fingertips. Like let's go to another one, just one more, and then we will wrap this video up, but let's go to, what state should I go to? Let's go to, let's go to Hawaii. Is there anything in Hawaii? I don't know. Let's put no on that. No, there's no programs in Hawaii, but there are jobs in Hawaii. So if you want to work in Hawaii, you're fine if you've already gotten your C at the end of your PA. Let's go to Jersey. We went on the West Coast, we're going to go on the East Coast, right? So what schools are in Jersey? There are five programs in Jersey. One is developing, it's not accredited, that's Keen University, and then it tells you who's on probation. So, you know, you see Monmouth, I hope I'm saying that right, University is on provisionary status, and then the others are continuing their edgy, their provisional, their accreditation. So we have Rutgers here. I'm going to go to Rutgers and see what they require. Their duration is 34 months. They have a class capacity of 50 students. That's really good. That's not like too big, it's not too small, it's pretty average size PA class, so that's pretty good. They said that going part-time is an option. Wow. Hey, you guys, the seat deposit is only 700, some schools require 1500, some schools require 1000, some schools say 500. So looking at all of this information is important to making the best decision for what school you want to apply to or go to as well. So look at how much it costs.  So all of that plays a role.  Overall, GPA, so this one is higher than Loma Linda's. This one is 3.2. So if you don't meet that minimum GPA, don't apply because you're going to get denied, right? And then now let's look at their requirements. So they have biology, chemistry, just general and organic, then they have English and statistics. Now, I would definitely go and look at their website. Like even after you've gone here, I would definitely go and look at their website just to make sure that all of the information that I'm seeing here is actually accurate and has not been updated on Rutgers' website, but it just hasn't been updated here. Okay? So definitely go and cross-reference that, but you can have a list of the schools that you want to go to just from going to PAEA.org and everything is there at your fingertips. So I hope that this was helpful, you guys. Like to me, I absolutely wish that I had this in my mind or I knew about this when I was trying to apply to PAEA school because it would have made my life so much easier. It would have just been a whole lot less running around, a whole lot less going from website to website to website to try to figure out what are their prerequisites, requirements, what do I have that they require or what do I don't have that they require? What do I need to do? Like all of these questions swimming in my head and I would have had them answered had I just gone to that website. So if you have not gotten that information yet, again, it is hope this was helpful. I hope you guys are a little bit more at ease on how to choose the correct PAEA school for you. And if you have any questions, go ahead and leave them in the comment section below. Don't forget to follow me on Instagram at adonnathepa and subscribe if you haven't already done so. Thank you guys so much for watching. I will talk to you guys later.


So thank you for the introduction. I'm going to be talking switching gears a little bit. In last talk, we were discussing hash function security in the sense of collision resistance. And now we're going to look at it in terms of a stronger or at least different security property, which is that of indifferentiability, which have getting nicely set up a segue for me. So we'll look at two functions, H squared and H MAC. And I'll talk mostly about H MAC. And we'll see how H squared comes up as a natural target of analysis as we look at H MAC. So H MAC is a hash function construction introduced in 1996 that specifies how to use the black box, the cryptographic hash function, to build a keyed cryptographic hash function. That means a object that takes both a variable length key and a variable length message and maps it down to a n-bit digest. H MAC does this by deriving two subkeys, k in and k out, from the key k, and then hashing the message and the first subkey, and then hashing the result of that prefixed with the second subkey. And then the result is the H MAC of k in. And we'll see some details about the way k and k out are derived, which is very critical to our results in a few moments. So this was originally designed and analyzed for the setting of message authentication with secret keys. But now H MAC is used in a wide variety of settings. So if you're already bored and surfing the web right now, you're using assuredly H MAC in a whole host of ways. And unlike in the original Envision usage where H MAC was designed to use with uniform secret bit strings, now many of these settings use H MAC with keys that are, for example, Divvy Helm and group values, or passwords, or even public values such as nonces that are sent in the clear and adversaries may have access to. So in terms of security for these applications of H MAC, well, when we have a key that is a secret uniform bit string, then we can appeal to some of the well-known results about H MAC being a good pseudo random function. There's also some work showing that in some settings, if you have a high entropy secret input, then H MAC is a good randomist extractor. But these standard model results don't work for all of the applications of H MAC. And in particular, we see that in the literature and implicitly in practice, H MAC is being assumed or modeled as a key random oracle in the sense of Bellari-Rogway 1993. And what this means is that we really think of H MAC as mapping each KM pair to a random and uniformly chosen output. So I won't go into the details about all the results that use this modeling of H MAC, but suffices to say the standard model techniques do not work. And in particular, it's because the key input is being used for nonstandard in a nonstandard way. And really, we have this expectation that this should be OK, that H MAC does really give us somewhat random behavior for any KM input. So this brings us to our main motivating question for this work, which is, does H MAC really live up to these expectations of behaving like a random oracle? And we would at least like to hope that this holds true in a setting where we generously assume that the underlying hash function H is itself perfectly secure, so mapping inputs to random looking outputs. So we can formalize this question using the Indifferentiability framework. I'll give details in a second. And then we have, and this gives us this question, is H MAC indifferentiable from a random oracle? Now, this surface is a simpler and very elegant question, in my opinion, which is the indifferentiability of a related construction, which is H squared, or the hash of hash construction. Now, this was actually suggested in a textbook practical cryptography by Ferguson and Schneier in 2003. And it's basically like H MAC without the keys. Just get rid of all the keys, and you have a hash function applied twice to a message. And this was suggested particularly to avoid extension attacks that plague some prior hash function constructions. So these are our two questions. And we would certainly expect that the answers to these questions are yes. And in particular, we thought, setting out to do this work, that the answers would certainly be yes. First, there's very strong positive intuition that the answers are yes. These constructions were designed to prevent length extension attacks. And so length extension attacks are one of the main ways in which hash functions kind of fail to behave like a random oracle. It almost seems, particularly for the case of H squared, that what we're asking is almost tautological, that we're saying if you take a random oracle and compose it with itself, you get something that behaves like a random oracle. So it seems like it should be true. And indeed, there's been some tangential evidence in the literature suggesting that it was the case. In Cronidol in 2005 proved a related construction. The H squared of M but with some 0 is prepended. It is indifferential from a random oracle. And they somewhat confusingly called this the H-MAC construction, but it's not really H-MAC as we define it in standards. And indeed, in crypto 2010, there was a suggestion that this proof should extend to the real H-MAC and to H squared. Certainly, we shared this intuition that it should be a straightforward application of the techniques to the actual functions. So with all that set up in mind, we actually find that the truth is quite a bit more complicated. And in fact, that the indifferentiality of H-MAC and H squared are surfaced in very interesting technical questions and challenges. The first thing we realize is that in these settings where H-MAC is being used with not just fixed length bit strings that are uniformly chosen in secret, but perhaps arbitrary variable length keys, there's actually weak key pairs in the key space of H-MAC that cause issues. The first type of weak key pair is a colliding key pair. And this obviates indifferentiality and may even have issues elsewhere. The second is ambiguous key pairs, which basically prevent H-MAC from having strict domain separation between the inner and outer application of the hash function. And the H-MAC with ambiguous key pairs basically ends up behaving much like H squared, which by design has no domain separation between the inner and outer applications. And what we find here is some very interesting technical setting where the indifferentiality can be shown, but only with weak concrete security. And I'll explain more about that in a moment. And then finally, we end with a positive message that if you indeed avoid weak key pairs in H-MAC, then everything seems to be OK. And we can prove strong traditional indifferentiality for the construction. So to get towards these results, let me step back a bit and formalize or give a bit more formal treatment of what we mean by indifferentiality. And so this is a framework that was introduced by Maurer Renner Hollenstein in 2004. And then Crone et al. in 2005 popularized it for as a criteria for hash function design that we should have hash functions that behave like random or indifferential from random or equal. So briefly, Indifferentiality from Random Oracle asked that no distinguisher should be able to tell which of two worlds he's interacting with. In the first world, he's given a left oracle, which is the hash construction. And a right oracle, which is the underlying ideal object. And in the ideal world, he's given access to instead a random oracle and a simulator whose job is to use its oracle access to the random oracle to trick the distinguisher into thinking he's in the real world. And we have the usual type of measurement or definition security that if we can give a simulator that's efficient and succeeds at tricking all efficient distinguishers, then we call it indifferential from random oracle. For HMAC, which has keys and messages, this is exactly the same definition except that we allow additionally that the distinguisher, as well as the simulator, queries the random oracle or HMAC on both keys and messages. So particularly this captures what we want, which is keys that are arbitrary choosing, which matches up with the applications. So the benefits of Indifferentiality really stem from a very nice composition theorem that was proven by Maurer, Rennert Holstein, which at a very high level says that if you did have an indifferentiality of a construction like HMAC and you had some applications where one's proven security of protocols that in a setting where you've modeled HMAC as a random oracle, then the composition theorem implies that these applications are actually secure using HMAC as opposed to the random oracle. And what this gives us is a very nice guarantee that the structure of HMAC, or whatever hash function structure you're looking at, doesn't introduce weaknesses into your application. So there are some limitations to Indifferentiality. Last year at Eurocrypt, we had a paper talking about how only single-stage games are applicable. The composition theorem is only applicable to single-stage games, but that's not critical. The games we're looking at here, in fact, are single-stage. And second, concrete security here ends up being very important. So in particular, what will be relevant in our setting is how many queries the simulator must make in order to trick the distinguisher. And normally, we look for indifferential guarantees where the simulator makes the same number of queries as it is queried. But we'll call it weakened differentiability if it has to make many more queries. So let's take a closer look at HMAC now to understand whether we can prove, in general, for arbitrary keys and messages that this behaves like a random miracle. And HMAC is a bit more complicated than one usually thinks about it if you look at textbooks for the Wikipedia article, such as I was doing last night. And what it actually does is it takes the input key and message. And it first checks to see if the key k is of length larger than a parameter d. And this d is the block length of the underlying hash function h. If it is longer, then it first hashes the key down to drive a new key k prime. Otherwise, it just leaves k as it was. It then appends to this value enough zeros to get a d-bit string. And then this d-bit string is exclusive or with a constant string iPad that's also d-bits in length to get k in, and as well as x-word with a constant string opad to get k out, and then hash as we saw before. So we see that in the setting where you have variable length keys, in fact, HMAC doesn't provide an unambiguous encoding of keys in the key scheduling. So in particular, by appending out with just zeros, we get this phenomenon that you can have keys that collide with one another. And so for example, any k1 and k2 that are not equal, but such that HMAC of k1, m is equal to HMAC of k2, m. And so a very simple example of this is just a key k1 and a key k2, which is equal to k1 can aid zero. These are treated the same by HMAC. So this gives a trivial indifference ability distinguisher that just makes two queries to its left oracle. And it may be an issue in some settings in practice where there's variable length keys being used, but we're not aware of any places where vulnerabilities arise. I'll talk more about that in a moment. And perhaps the reason this has never really come up is that most applications do use keys of a fixed length, in which case, as long as H is collision resistant, these cliting key pairs do not arise. So the second type of key pairs that are weak are called ambiguous key pairs. And these arise in the way that domain separation is attempted to be insured in HMAC. And in particular, we can have keys k1 not equal to k2, such that after processing k1 sub n is equal to k2 is about and vice versa. And so for example, k2 equal to k1x or dypadx or dypad is such a pair. And this really means that we get no inner or outer domain separation in applications of H. So before I get into more talking about how ambiguous key pairs arise in differentiability, let me just summarize what we know about HMACs and differentiability. If we allow variable length keys, and in particular cliting key pairs, then you get the design differentiable at all. And ambiguous key pairs will give us that it is at most weakly indifferentiable from a random oracle. Finally, if we avoid such weak key pairs, then we do get nice guarantees. And in the paper, we prove using techniques very much like those in the CDMP05 result to show that, in fact, you get a nice strong traditional guarantee of indifferentiability. So the most technically interesting point in this table is in this middle ground between having no security and having complete security. And this is due to ambiguous key pairs. So as I mentioned, this has to do with the lack of domain separation between the inner and outer applications of the hash function. And it's actually easier to look at this in the context of H squared, which, as I mentioned before, by design has no domain separation between the inner and outer application. And what we see is that this construction has the property that any output of the construction, in fact, is an intermediate value used in the computation of another message in the domain. So in particular, if we let m prime equal to H of m, then we note that H squared of m is, in fact, the intermediate values to compute H squared of m prime. Okay, this sounds like just a very, this is a very basic observation, but it's a disconcerting to someone who's done a lot of work on indifferentiability. Prior constructions particularly seek to avoid such a phenomenon. And in particular, because similar, not exactly this, but similar types of intermediate value leakage have resulted in extension attacks, which are, in fact, exactly what these types of constructions were trying to prevent. So it's not clear exactly what an attacker can do with this property of the hash construction. So we did quite a bit of work to figure that out. And in particular, we're able to give a distinguisher D that can force the simulator to make a large number of queries. So in particular, this distinguisher D is going to make Q sub L queries to its left oracle, Q sub R queries to its right oracle. And it's going to be guaranteed to get an advantage of one minus the number of queries the simulator makes over Q L times Q R. And so what this does is it means that the only way the simulator can be effective is to make a large number of queries. And so we get this sense that it can only be weakly indifferentiable. Now in the paper, we show a matching upper bound for H squared that if you give the simulator or a Q squared queries, you can prove indifferentiability. This is a very technical result and I warn you before you print out the paper, it's like 60 pages of games. So I won't talk about it here more. So HMAC, we have a similar phenomenon, basically the same type of approach. If you have ambiguous key pairs and you can use them, then you can inflate the number of queries the simulator must make. We note that right now we don't have an upper bound that is analogous to the H squared upper bound for HMAC, but we suspect that it is possible to prove. Just gonna be very messy. So you might ask why it doesn't really seem like it should matter much, whether Q squared or Q.  But in fact, in many settings, this gap can be quite critical. In the paper, we give an example of a setting in which this threshold is sharp. So it's vulnerable using H squared or HMAC even with the underlying component totally secure, but secure instead if you had just used a random oracle by itself. And so this shows a sharp gap between the security of using these constructions and a random oracle. So we're concerned, of course, that there is vulnerabilities in practice about, particularly with HMAC, but it seems fortuitously that most applications avoid weak key pairs naturally. So from my kind of informal analysis of many of these applications, these all seem fine. With settings where you're using variable length keys, colliding key pairs might be an issue, but as far as we're aware, nothing, no actual tools are in danger. But certainly HMAC is used all over the place and it would be good to be aware of weak key pairs moving forward. So just very briefly, we can extend the, all these results extend in the paper to when H is not a random oracle, but an iterative hash function. And of course we know how to fix these two constructions from the point of view of indifferentiability, but of course that would have another host of issues. So I think I'm out of time. So I'll just leave the summary slide up here and be happy to take any quick questions. Thank you very much.


In Les Fanger, you have a limited time to clear each arena. You can't beat all the enemies on your own. Combine with the remnants of your past runs to achieve victory.


Hey everybody welcome back to magic orthodoxy my name is David and this is a magic review Hey today, we're gonna look at Taiwan dough from Timothy Presley. What is it? It's basically a children's magic trick Okay, something you do at a kid's party and it's kind of just like a funny prop gag where you turn a magic wand Into a set of num chucks. You want to see the trailer? This is it What is a magician in a ninja having common? Taiwan dough the nun Chuck magic wand the Taiwan dough You'll have every child in your audience rolling on the floor and stitches at your confoolery Oh With every Taiwan dough, I'm also giving away my personal routine called banana split This is a three-minute comedy magic routine where you will demonstrate your ninja's skills by slicing a banana Without ever touching it. This routine has everything you would ever want and the children's Magic routine it has a simple plot line audience participation One-liners and physical comedy in an impossible feat of magic. It requires no skill allowing you to focus on the presentation So what are you waiting for? All right, so that was Taiwan dough from Timothy Presley Okay, a couple questions. We always ask about all of our magic reviews and the first of which is What is in the box? What's in the box? First thing you're gonna get you're gonna get the num chucks, right?  Is it well made the prop is pretty well made For what it is. I was surprised at how lightweight it was It doesn't feel that Costly or that hard to make holding it in your hands Like I said, it kind of feels like the same material that you would get a pool noodle tube from those flotation devices White duck electrical tape around the ends and then a piece of black rope That's pretty much it. I mean I flipped with it a couple times. I did it a small routine for One of my magic classes and I didn't have any problem using it. It didn't break so it seemed to be well made All right, so is it well taught? Okay, so here's my thing, you know in the day and age where making a video Instruction is extremely easy. I mean I make a video every single day So I know that making a video is not that difficult and Timothy Presley actually made a commercial You know that we just saw so clearly There is that capability plus on top of that in the video you do see The routine shown a little bit that he teaches you with the banana So there is a banana trick of like a three-minute trick included that is taught in the instructions But none of that is given to you in video form. It's all given to you in the guys of you know typed out instructions And I just think you know what? It's just so easy to make a video nowadays It's so easy just to upload it to a server and have people download it It's a very simple procedure and I think in this day and age that's kind of what we all expect and to get Something that is just printed paper just feels a little phoned in That and that's just me But I mean obviously the footage is there to show you what the routine looks like so that would have been easy And then maybe just a couple of segments with Timothy talking to you about handling and care And maybe some advice that he's given when picking volunteers to hold the banana or you know how to open the banana or anything I think would have been helpful and to kind of just boost up the quality of the product And to increase the value for those who purchase it Positives all right. So what are the positives to Taiwan dough? Timothy Presley has come up with a very silly and very fun prop that is sure to be a hit at parties Negatives all right. So what are the negatives to this? You know like we say around here There's negatives to everything.   All right, so who would like this? I think people that do children's parties, of course Or somebody who's looking to do a children's party This is an easy gag to get and to do you don't have to be a magician To do this effect at all you don't have to have any experience at magic to do this at all It's purely a gag And so I think that if you're even a schoolteacher and you want to do something like this for a science class or maybe a science Experiment involving a banana. I think this would be a great routine. Is it worth your money? You know like I said 20 bucks it probably covers the cost of the material and to get it out there I just felt like you know to give the consumer a little bit more value for their money a Video download probably would have been helpful. I said it's my review for Taiwan dough from Timothy Presley As always I want to thank Murphy's magic for supplying this trick for me so that I could do the review for you And if you'd like to purchase it for yourself, you can find it from your favorite Murphy's magic dealer. Thanks. Bye


Hi everyone, in this tutorial, I'm gonna show you how to multiply two matrices in Python language. In order to do that, I'm gonna use numpy library. If you do not have numpy installed on your machine, you can type in terminal pip install numpy and press enter.  Then I want to create two matrices, matrix A, for example, is gonna be numpy array with format two times two. For example, it's gonna have one two and three four. Similarly, let's create matrix B. Matrix B gonna have similar values two zero and zero two. I'm gonna make this example to be very easy. Then if we want to multiply two matrices, we're going to use this at operator at operator for multiplying matrices works in Python 3.5 and later versions. So if I want to multiply these two matrices, I'm gonna type matrix A times matrix B. Let's save this in a variable. Let's call it result. And finally, let's print the result. I'm gonna run this program. And as you can see, this is the result of multiplying these two matrices. That's all in this tutorial. Don't forget to check our other tutorials. Bye bye.


Here goes nothing friends welcome back to my channel and a very special welcome if you're new here My name is Jen. I'm a certified weight loss and nutrition coach I have lost and maintained a hundred and forty pound weight loss a little back history about me If you're new to my channel, or maybe you just didn't know but I have been on social media on the YouTube platform Instagram I have a Facebook group for about four years now. This is my full-time job I am a full-time content creator and I'm a full-time weight loss and Nutrition coach with the social media territory comes a lot of opinions Comments negativity, but there also comes a lot of greatness from social media A lot of you are shining stars in my life a lot of my followers my subscribers I've become friends with you bring so much joy to my life and sometimes that can be overshadowed by some of the Negativity that just comes is part of being on social media So today I felt compelled to sit down and maybe address some of the comments that I've received lately I get comments on YouTube. I get comments on Instagram sporadically, I'll get them in my Facebook group and not as much because that's just a really supportive amazing community But I do get a lot of negativity on my Instagram and on YouTube and what I mean by negativity is Sometimes just point-blank mean comments sometimes rude comments sometimes assumptions and a lot of time just disagreeing with what I'm saying Which is completely fine. We all have a right to our opinion. You have a right to your opinion I have a right to my opinion. I mean, we know what they say about opinions, right? But there have been a few things Recently that I really really feel like I need to address now if you follow me You know that I'm all about the positivity my Facebook group is Anti-drama, we don't have drama. We don't feed on drama Myself and my moderators will delete any negative comments any drama or any comments that would stir up or cause drama But there also gets to a point where I feel like I have a right to maybe in a sense defend myself or at least Explain myself and kind of answer some of these comments that I've recently received So that's what we're doing today and before I jump into them I do want to say thank you to everybody who is so incredibly amazing and supportive on these social media platforms You guys truly are such a special part of my life and you mean the world to me and thank you Thank you for bringing such positivity to what can be somewhat a negative space. It really means a lot to me So today I'm going to address Explain answer some of the negative comments or things that I've seen recently on my social media platform So first of all, I want to talk about paid sponsorships paid videos paid promotions I have seen comments like I don't watch any paid videos If it pops up with the little notification in the corner that this is a paid promotion. I don't watch it I also recently got a comment on my YouTube video that said that there were Two to three minute commercials in my video and they don't know why I put two to three minute commercials They shouldn't have to sit through that so that I can make money I've also seen several comments about paid promotions in general not necessarily that they don't watch the video But why do you have so many paid promotions? So I really want to talk about this and I feel like I want to explain that a little bit more So first let's talk about paid video as a content creator when a brand reaches out to us and offers to pay us a set amount Of money to promote their product We are required by the FTC to disclose that it is a paid Video there's a little box as content creators that we can check that says paid promotion And then up in the left hand corner, you guys will see a little black bar that says includes paid promotion This essentially means that a brand paid us to share their product I don't know about anybody else, but I only share products that I truly enjoy I am reached out to at least 12 to 15 times per day via email by brands Wanting me to promote their product I pick and choose the brands that I want to work with and then I test the product out before I ever Share it with you there has been so many times that a brand has sent me a product And I've never shared it with you because I didn't like the product I didn't feel like it was valuable to me or I may have enjoyed it, but didn't think it would bring value to you So there are there are several times that I have foregone a paid video because I didn't like the product So whenever you do see that paid promotion in the corner that basically means that we're getting paid for our work Would you go to work every single day and not be paid if your boss called you up tonight and said you're gonna show Up to work tomorrow, but we're no longer gonna pay you would you actually show up to work tomorrow? You have to remember that this is how we get paid putting out a video takes hours You may see an eight-minute video, but it took us several hours to put together. I have to do the research I have to film the video. I have to edit the video make the thumbnail fill out the description box Upload the video send it to the brand for approval It is an hour upon hour process and in my opinion There's no reason that we shouldn't be paid for the work that we put in if you get paid to go to the office We should get paid to film videos. There is nothing wrong with paid Sponsorships paid videos. That is how content creators get paid This is our job and that's our paycheck if you choose not to watch paid videos That's of course entirely up to you But I just want you to look at it from a different perspective Thinking about if you would still go to work every day if you didn't get paid and then as far as promoting product I think there's a little bit of disconnection between Sharing products that we're using and promoting products.  You see one what I eat in a day video every week one day of food one day of what I'm using There are several products that I use every single day and when I share those with you in my videos It's not promoting the product. It's sharing with you what I'm using what I've been using to be successful on my weight loss journey What I've been utilizing to get in my protein. What are my favorite products? That's more what it's about It's not about promoting products and every time we share something that we enjoy We're not getting paid for that that's something we're sharing at least for me because it's a favorite It's a product I use all the time. So I really wanted to clarify this I want you to just step back and look at it from a little bit different perspective think it about it like this is our Paycheck this is how we get paid for the work that we put in and then as far as commercials on YouTube The only way for a content creator to get paid on YouTube is by ad placement.  So the comments that the comment that I received about the two-minute commercial I didn't choose that YouTube actually chooses the ads or the commercials that are put into our videos All we do is monetize the video which allows us to make money on the video and another thing Nobody's getting rich off of YouTube at least I'm not getting rich off of YouTube the money We make the ad sense we make at least for me is pretty minimal. We don't get paid for subscribers We don't get paid for views we get paid for the ads that YouTube chooses to put into our videos So when you see ads and commercials throughout the video, that's YouTube putting those in we as content creators have no control over those Now if you watch the whole ad through that helps us actually what helps really the most is to watch the entire video from start To finish not only are you watching the ads which is how we get paid? But you're also helping YouTube push our video out because you're watching it from start to finish When you cut out early, it's actually a negative effect on content creators It shows that you just weren't interested in watching our entire video So the best way that you can help out your favorite content creator myself included is to watch the video in its entirety And I want to talk one more little piece about money at least from my personal perspective This is my full-time job. I want to reiterate that this is my full-time job This is how I support my family. My husband does not work. He has some medical issues We have been trying to get him on Social Security disability now for almost two years. So he has no income So this is how I support my family me spending day after day hour upon hour upon hour Creating content for you is how I make a living and that's partially why I'm so consistent with content It helps you to push my channel push my videos out It helps you guys reach your goals and it helps support my family So let's talk about affiliate links and affiliate codes for a moment. Not everything I share is an affiliate link There are several brands that I've reached out to directly to get a discount specifically for you I don't make any money on that I'm just trying to save you a little bit of money on my favorite products and The affiliate links that I do make an income on it's enough to buy a cup of coffee again Nobody is getting rich on affiliate links But what we can do as content creators is put it all together the adsense from YouTube the paid promotions the affiliate links All of that can add up to an income for us, which I feel is absolutely Deserved there is again a lot of time and energy and money that goes into filming videos Creating Instagram reels and just heads up on Instagram reels. We don't get paid on Instagram reels anymore They took that feature away. So by putting all of those pieces together That's how an income is created and like I said in the beginning There's no reason that we don't deserve to make an income just like you deserve to make an income These are the types of comments that I see the most that kind of get under my skin a little bit because I feel like there's a lack of understanding from The people watching the videos versus those that are creating the videos and that's partially why I wanted to talk today To just explain a little bit more and maybe help you understand why there's paid promotions and paid sponsorships and affiliate links and that way maybe you can now look at it a little bit different as A way to support your favorite content creator rather than it being a negative thing about Content creation another thing I see a lot across social media more on Instagram Then on YouTube is people basically just disagreeing with my approach to weight loss and weight maintenance And like I said, that's completely fine. Everybody's entitled to their own opinion, but it's just that an opinion It doesn't mean that I'm wrong and you're right or you're wrong and I'm right that it's simply just your opinion I share what worked for me how I lost 140 pounds how I've maintained that weight loss how I built lean muscle how I've Started a fitness journey. I'm just sharing my life And I'm openly putting that out on social media for you And if you disagree with that if you want to follow keto or take o's and pick or do a low-carb lifestyle That's entirely up to you But to comment and say that I'm doing it wrong or that low carb is better keto is better Again, it's simply just your opinion and sometimes we don't always necessarily need to share our opinion Just take bits and pieces from what I share that work for you and leave behind the bits and pieces that don't I also get a lot of comments about my makeup and this is something that I've addressed in the past before I've actually talked about this in several videos and I feel like it needs to be talked about again Today because I still get comments about my makeup. Oh, you'd be prettier if you didn't wear so much makeup I'm pretty with or without makeup. I don't wear makeup to be pretty. I'm beautiful a 10 out of 10 without makeup I wear makeup because I enjoy it and what I want you to remember about that kind of goes back to what I mentioned at The beginning if you would come up to me on the street and say you'd be prettier if you didn't wear so much makeup Or you shouldn't wear makeup or your eye shadow is too colorful if you would come up to me in real life and say that I Question you a little bit But if you would knock yourself out and say it on the internet But if you wouldn't walk up to me in real life and say that then keep that opinion to yourself because it's just an opinion This is my face I have every right to do whatever I want with my face and it doesn't mean that you need to do your makeup like this You don't need to wear the same makeup as I do you don't need to style your hair the same way You don't need to wear the same clothes as I do it is all personal preference. It's a way that we express ourself I love makeup. I've always loved makeup and I will continue to wear whatever makeup I want to wear because like I said this is my face and it's a choice that I can Individually make just like it's a choice that you can individually make and kind of on a side note about makeup Well, I would never come up to in real life and I would never post this on the internet But I would never tell you that you'd be prettier if you wore makeup or you'd be prettier if you wore more makeup It's disrespectful. It's rude and it's uncalled for so I I urge you to keep your opinions about other people's appearance To yourself. We should never be sharing our opinion on someone else's appearance. We shouldn't be telling someone. They're pretty They're ugly. They're fat. They're skinny. Those are just things that we don't say whether it's in real life Or on the internet. So just a reminder just for those in the back This is my face and I will continue to wear whatever makeup I want to wear So another thing about YouTube is the thumbs up and the thumbs down So back in the day up until about a year ago When someone would thumbs up or thumbs down your video you watching the video could see how many thumbs up and how many thumbs down Well, YouTube took that away So you guys can't see that anymore But we as content creators on the back end can see how many thumbs up and how many thumbs down that we receive It's all engagement if you thumbs up my video or you thumbs down my video because you disliked it You dislike me I got a lot of hate watchers because I typically get the same amount of thumbs down on every videos which like I said It's engagement so it actually helps out my channel and I find it to be pretty funny But for those that hate watching thumbs down my videos, thank you because that's engagement It pushes my video out and really truly it doesn't affect me whatsoever Because I know that I put out good content and my content might not be for everybody and that's okay But just remember the thumbs up the thumbs down the comments the responding to the comments All of that is engagement on our channel which helps us out The last thing I want to talk with you guys about is commenting in general, especially leaving negative comments Whether it's on YouTube on Instagram or in my Facebook group Those are my social media platforms. That is my channel my Instagram my Facebook group my little baby Part of the big wide web that I have a little bit of control over and when you leave mean negative rude comments I have every right to number one delete the comment and number two Block you from those social media platforms, and I don't allow negativity. I try to keep my life positive my life happy I feel really blessed to have just a stress-free free amazing life But I'm not going to allow those types of things to invade what little part of the world wide web that I have I'm going to keep my space my channel my Facebook group my Instagram a positive place and as content creators We have every right to delete comments and to block people from leaving those mean comments on our social media Platforms, I just want to be transparent in that and letting you know that yes, I delete mean comments I will continue to delete mean comments I will continue to block you if I feel like I'm not serving you in a positive way And you're not serving me in a positive way Then I feel like it's best that we just go our separate ways And if that means that I have to block you or remove you from my Facebook group or hide you from my YouTube channel From being able to leave comments and really truly that's what I have a right to do on my social media platforms So I wanted to be clear about that because I have received comments about deleting comments or blocking people And yes, I will continue to do that. I will continue to keep my space a positive peaceful place So I think that's everything that I wanted to talk with you guys about today, and I know this isn't my typical video I'm usually happy and cheerful and positive and I still feel like I brought positivity to this video But like I said, this is something that has been weighing on my heart that I really felt like I wanted to talk about these things And clarify these things so that it maybe puts things into a different perspective for those of you that Have left these comments or have these questions wonder why comments are deleted or why you see the paid promotion in the left hand corner of a video I just wanted to bring some clarity and clarification Please remember that when you watch youtube or you watch instagram reels or instagram stories or you Are in a facebook group It's all free to you doesn't cost you a single penny to gain all of the knowledge from a youtube video Or on instagram or on facebook So you really don't have a reason to complain on receiving free content that the content creator is being paid to put out that content And also remember you watch commercials when you watch tv. It's basically the exact same situation It just happens to be a youtube video versus a tv show if you have additional questions Please feel free to leave them down below and just make sure they're positive and supportive and helpful versus Negative and hurtful and just remember take with you one piece of advice from today's video Whatever you say on the internet make sure that you would say that in real life And if you wouldn't then don't say it on the internet. Thank you guys for watching I hope that this again helps answer your questions. I didn't want this to be a negative video I wanted it to be a helpful video So I hope that that's what it was and i'll see you guys all in tomorrow's meal prep. Bye


Hey folks before I get into this video I want to remind you to enter our origami king giveaway That's right the new paper Mario game that just came out on July 17th I'm giving away a copy of that game at the end of this month to enter all you need to do is comment down below Drop a like on this video Subscribe to the channel and hit the bell icon and set it to all notifications If you do this for every single video in the month of July You will gain an additional entry and I wish all of you luck So today I have some potentially really exciting news to you But I have to warn it is a rumor a leak whatever you call it coming from a Twitter user that actually kind of sort of Nailed the last Nintendo Direct Mini in some very specific aspects Now this person has not always gotten everything right and they've actually caught a lot of flak from this because well They didn't provide any actual like games that would be announced people are trying to credit these four-chan posts to this person That weren't really from this person They've been very forthright on Twitter and now this person is actually done doing leaks because of the backlash However before they were done doing leaks They actually revealed a little bit of information that I'm going to talk about well right now So we're talking about Kelly os FR is a person in France and as you can tell almost all their tweets are in French But when they were responding to some people in English they decided to get really specific so When the direct was going on you know our first Nintendo Direct Mini remember that Kelly os if you don't recall because we didn't actually cover it Actually spoke with how there would be multiple directs the rest of this year So that kind of like confirmed something they said also one thing that gives Kelly os a little bit of credence as they predicted The exact time that Nintendo would actually announce the direct They predicted this days several days ahead of time and they also predicted or I guess knew The exact time the director actually take place at However, they he's claiming they did something last minute And this is that they split the direct up So there's gonna be multiple of them which Kelly os did say there would be but this actual direct That's the people thought would be a big one that they split up You see here that it says they split the expected presentation and grouped useless games and started with the you know What part let's wait so basically they took according to him they took One longer direct it was still a Nintendo Direct Mini and they split it into multiple parts and The second part is going to actually be the part you should be really excited about they started with the first They're basically saying that what Kelly os did is exactly What they ended up doing with the Pokemon announcements where we seem to get the good announcements first and then unite second They kind of went reversed This time around it says you know and be angry with Nintendo and not me I wanted to clarify that now people are putting reddit slash 4 chat game prediction list on my credit when I really When I legit refuse to comment any games prediction list since I tweet for the first time on this direct You didn't expect this content I understand but you have to wait a little bit more and I mean a little bit more it makes it sound like it's coming Really soon Later on this person was accusing them of lying and said Nintendo changed and it's my fault I'm the head of marketing at Nintendo obviously. I give you the precise date our of announcement and it's not enough enough is enough I'm going private again, and I won't share anymore Nintendo for the information. I'm seriously pissed off leaking just brings trouble. I'm done Yeah, and then they talk about how to understand what other leakers told me to avoid sharing leaks because of the inherent backlash now all of this matters because Kelly us was basically right about everything they put out there, but because some four-chan things were linked to him He just isn't happy. He or she is just not happy and is going to be done It's tired of the backlash reality is that Kelly us nailed this direct when it would be that there'll be multiple Directs they thought this direct might be a little bit bigger, but they didn't give any games Nintendo decided last minute to split the direct up and so here you go This is the bad part the crappy part and the next part is going to be the good stuff And maybe that means the next box when we hear about the Nintendo games If you're to believe this person on Twitter It sounds like we're gonna get the next one sooner rather than later as in very beginning of August potentially next week potentially And that it is going to be bigger games in it more games in it stuff to be really excited about now This would make sense in some context where maybe Nintendo decided at the last moment This is pure speculation if this is true to split up the plan direct Because of the Xbox games event and Nintendo wanted to see what Microsoft was gonna do how big the announcements would be and they wouldn't want to be overshadowed by Halo Infinite and other games and Nintendo wanted to play their cards close to the vest let Microsoft blow their load and then give us the Nintendo Goodness later again, I don't know that we're even going to get a Nintendo direct They said that we were gonna get more showcase directs They didn't specify at the showcase directs would be third party or first party So it sounds like we're gonna get a lot of smaller directs and some of them could be first-party related But whatever the case maybe Callios is basically saying hey the very next direct which is happening soon Like really soon is going to end up having the goods that was originally planned in this direct But Callios literally just takes credit for I gave you the day it was gonna happen I told you when it was gonna be announced all this jazz I don't know why you guys are hating on me Nintendo release the bad direct But apparently they the last minute put it in multiple parts and so the good stuff's coming later So again Callios hasn't done anything with this specific direct to not be trusted But there's been some stuff accredited to that person that shouldn't have been accredited I don't know why like people would accredit 4-champ posts that are anonymous to Callios and Callios is Putting stuff out there if Callios was gonna leak a game like Emily Rogers has done in the past They would just put it on Twitter at the time now We obviously know there's been other leakers that have been supposedly hit by Nintendo's ninjas or Ceasing the cyst and all that jazz But we're not gonna get into those people because they kind of vanished when it came to talking about Nintendo stuff at this point All I know is I Hope that Callios is right and maybe that's the point of this video the crux of this video is hope I am looking for any Incredible possible hint of hope that Nintendo has another direct coming that's going to end up showing us the goods from Nintendo That's what I'm getting from Callios That's what I'm hoping is going to happen if that direct comes here in the next couple weeks and it ends up bringing the goods from Nintendo I think a lot of people are gonna owe Callios a Big apology and maybe that'll bring Callios out of the framework to do more Nintendo rumors in the future more leaks But I'm not going to know that to be the case again We get a lot of these kind of people that seem to come out of nowhere that no things But then Callios got it right so when Callios got this part right got the day the time all this stuff right I'm when this direct would be way before anyone else said anything and you know what I'm just gonna kind of give Callios And applaud but thank you We'll see if you're right this next time. I really hope you are because I want a direct with Nintendo goodness I want the good direct that Nintendo supposedly split off from this one Likely I'm assuming because of the Xbox game event I don't know you guys let me know what are your hopes and dreams for the next Nintendo direct You want to see more third-party games or more third-party confirmations? Do you want to see what's coming from Nintendo? What's happened to the Breath of the Wild 2? I know I mean the obvious answer is we want to know what's happening with Breath of the Wild 2 Metroid Prime 4 Bayonetta 3 and pretty much anything else Nintendo might have in the works so we know nothing right now I think the next Nintendo Published game and I don't know why I'm air-coding because they are publishing it is bravely default to which is supposedly coming out this year But that's also made by Square Enix I get that Nintendo owns rights and there's all this stuff involved with it But it doesn't really feel like a Nintendo game does it feels like a Square Enix game that Nintendo pays for? Kind of like Bayonetta 3. I want to see like what Nintendo studios are working on And we just don't know we're getting an Odyssey 2 is that gonna be like a surprise drop? Oh, here's my Odyssey 2 so we let's get it. Let's talk about it. Let's get hyped But anyways, I am within a rubber dance from Nintendo Prime I want to remind you to enter our paper Mario the origami king giveaway remember to comment on this video like this video I don't know do what you do subscribe to the channel. You know what? Let's do something extra special if this video is this video and I this is coming at the end We're hardly anyone's gonna see it, but you know what? I'm gonna throw it out there anyways if we can get five Hundred likes on this video. Let's say in the first 24 hours. It is up I will do two game giveaways next month, so we'll double trouble the giveaways. All right, folks That's what I got for you.  We'll be back stream into moral Maybe with another video try to get a video on a Saturday. Let's get this thing going the Nintendo Prime change We're rolling into the station. Let's get hyped for I guess maybe another direct sometime soon Nintendo already told us we're getting more so I Guess get hyped. All right, folks. I'll catch all of you guys in the next video


Welcome to this lecture on digital communication using GNU radio. My name is Kumar Appaya and I belong to the department of electrical engineering IIT Bombay. This lecture will be a continuation of our introduction to error control codes in particular block codes. In the previous lecture, we have discussed parity check codes. If you recall in the case of a parity check code, we essentially added one bit of overhead for a single parity check code that is where the whole code becomes an even parity code meaning that after adding the redundancy, the number of ones in the coded bit vector was essentially even or if you want to look at it from the XOR perspective, if you XOR all the bits of the coded code word, you will essentially get 0. We saw that you could make, you can essentially, you know, detect the presence of no errors if there were no errors and if there was a single error, you can detect that single error and therefore discard that particular code block. But if there is, there are two errors or more errors, then the code essentially fails and you will end up making mistakes. We will now continue our discussion with a different class of code words. So in today's discussion, we are going to now look at the repetition code. The repetition code, we will restrict our consideration to an odd repetition code. Essentially you repeat bits odd number of times. Of course, you can do it even number of times, but we are going to restrict it to odd number of times. The reason is because if you repeat a bit an odd number of times, you can then at the receiver just use majority logic to decode as we will see. Let us take the simplest example of a 3-1 repetition code. When we say 3-1, that means the number of coded bits is 3 for every information bit which is 1, 1 information bit. That means that you are essentially taking one bit and sending 3 bits coded. So this is actually a code that is very inefficient in the sense that you are essentially reducing the bit rate by one-third, bit rate to one-third rather because you are reducing the bit rate from one to one-third. You can detect and correct one bit error. Unlike the parity check code, you can detect a single bit error and correct it also. How? So let us actually have a small discussion. Let us say we say always the repetition code is of the form, in this case 3-1, you can say n-1 repetition code. We just repeat every information bit n times rate 1 upon n. The rate is 1 upon n, written in C or overhead whatever you wish to call it is n minus 1 upon n, 1 minus 1 upon n. How does this work? Let us take the 3-1 repetition code and let us take the way we do it. Let us take information bits 0, 1, 0, 0, 1, 0, 1, 1, enough I think because the coded bits will be very long in nature. So I am going to write 0, 1, 0, 0, 1, 0, 1 and 1. 3-1 repetition code, what will it do? Take the 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1 and we will say 0, 0, 0, 1, 1, 1, 1. Now let us say we add a BSC noise realization. That is we toss a biased coin with probability P and we just write down the noise sequence. Let us say this 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0. These are the noise sequences. Remember it is a block code. So we take blocks of 3 and make a decision. What is the method? Essentially find out the correct code word, what are our code words? 0, 0, 0, 1, 1, 1, these are the code words. So let us take the first one, 0, 0, 0, but we get 0, 0, 1 because 0 plus 1 is 1. Now one thing which is very clear is that the code words are 0, 0, 0 and 1, 1, 1. And if you do not get either of these then something wrong has occurred. In this case we get 0, 0, 1. What happens? It is neither 0, 0, 0 nor is it 1, 1, 1. So what is the conclusion that we have to draw? Typically the number of errors that occurs is minimum. This is something we will talk about formally. But the most likely error sequence is 0, 0, 0, no error, no error, no error. That is the most likely error sequence because 1 minus p the whole cube is the most likely error event. Why is that the case? Let us just think about it. See, we said 0 less than or equal to p and we say less than half. That is the most likely sequence of errors. So let us say if there are three sequences, let us say no error, no error, no error has probability 1 minus p the whole cube. 1 minus p the whole cube is essentially where p is less than half. This is a number more than half. Any other bit sequence such as 0, 0, 1, 0, 0, 1 will have probability 3 p times, sorry p times 1 minus p the whole square.  So maybe I will just write this again. Probability of error is equal to p. Probability of error in block of 3, probability of let us say I will write this more carefully of one error in a block of 3 is when you have a block of 3 binary symmetric channel realizations, you can have error in the first, error in the second, error in the third.  And of course, you have to add them if you want to find one error, but the probability of having, but each of these let us say p into 1 minus p the whole square. This is less than or equal to 1 minus p the whole cube. Why? Because if you take away 1 minus p the whole square, 1 minus p the whole square is essentially common. There is p and 1 minus p if p is less than half then this is true for each of these. This means that if you want to find the maximum likelihood event that occurs, the maximum likelihood event is the one where there is no error. Therefore, you want to find out the case where you want to essentially guess that there is no error, but in this case when 001 has occurred then the most likely occurrence is that there was one error. Of course, you could say that you know there is some other event something it could be could not be, but in this case the most likely occurrence is there is one error. Now the next thing we have to do is you got 001. There are multiple ways you can get 001. For example, you could have sent 111 and the first one and second one got shifted flip to 0 and 0, but that corresponds to two errors. If you send 000 and only the last one got flipped that corresponds to one error. Now again one error if you look at the two errors that is going to be p square and 1 minus p into 1 minus p into p 1 minus p into p square. These are the errors of the first error in the first two first and last and last two. This is even smaller than the above one. If the probability of having no errors is the highest, but if you do have an error the probability that one error has occurred is much higher than the probability that two errors have occurred. In other words over here the most likely occurrence that had happened was that you sent 000, but you ended up getting 001 and the less likely occurrence was that you sent 110 and the first two got flipped and you got 001. If you send 000 and you got 001 what is the probability that this is actually what happened if you write your base and all those sending 000 getting 001 probability is p times 1 minus 1 minus p the whole square that is this one. Sending 111 getting 001 probabilities p square times 1 minus p and since our p is less than half it is safe to conclude that the more likely was that one 000 was sent and since 000 was sent we will say the information bit is 0 ok. It is not because the first bit is 0 there are more 0s therefore, 0 over here again we are going to get 101 again 101 is not a code word 00 is a code word 111 is a code word 101 is not a code word. What are the two possible occurrences that what are the possible occurrences that could have happened you could have sent 000 the first and the last bits got flipped probability of that happening is p square times 1 minus p or only the middle bit got flipped probability of that happening is p times 1 minus p the whole square that is more likely because p is less than half. So, in this case use again it boils down to majority logic 1 was sent can you guess what happens in this case you get 010 it is the same as the previous 0 in this case no errors so directly conclude this as 0 in this case however, something interesting happens when you send 111 and the noise pattern is 110 that is the first two bits get flipped you get 001. So, now over here there is a problem because your maximum likelihood type of detection says I will assume minimum bits got flipped so what is that code word for which I have to flip the minimum number of bits to get 001 obviously 000 so here you will make a mistake here you will make an error in spite of using the repetition code right because your repetition code what it says is if you now flip more than 1 bit 0 bits and 1 bit is ok out of 3 if you flip more than 1 bit if you flip 2 or 3 I am making an error over here again 0 0 0 1 0 0 majority logic 0 111 0 0 0 I will just write 1 1 here also I will write 1 so this is where an error has occurred so what has happened if you now compare the original bit stream this 0 is correct this 1 is correct then there are 2 0s both are correct then there is 1 unfortunately there is a mistake then 0 11 these are correct an error occurs when 2 or 3 bits are flipped in a block of 3 bits ok. So let us now compare ok BSc if you just use uncoded the error probability for every bit is P but if you use 3 1 repetition code each bit is repeated 3 times so in a block of 3 you need 2 or more errors so let us say ok I should not equal to errors greater than equal to errors in a block of 3 that is if you have 3 binary symmetric channel realizations you must have at least 2 errors so for that if you want exactly 2 errors that is 3 P square times 1 minus P plus 3 errors 1 minus P the whole cube so let us actually calculate this let us say P is 0.1 let us say I will do I will do an example so example P is actually 1 by 10 BSc of P error probability is 1 by 10 because every information bit has a 1 tenth probability of getting flipped now 3 1 repetition code when will you make an error when 2 errors 2 or more bits are flipped ok you that is error probability is equal to 3 P square 3 by 10 square times 9 by 10 this is I actually I am sorry I made a mistake here let me correct it I am so sorry this should be P square 3 P square into 1 minus P plus P cube actually 3 errors is P cube ok so plus 1 by 10 cube if you evaluate this carefully you will get 27 plus 1 by 1000 is approximately 0.03 if I am not mistaken so from 0.1 you have reduced it to 0.03 in fact precisely it will be 0.028 so you have actually reduced the error probability significantly if you now expand to let us say let us say you have a 5 1 repetition code in the case of a 5 1 repetition code you are now going to have a different scenario you are going to now take major logic over 5 you are going to have errors with 3 or more bit flips among 5 bits 5 coded bits so you can evaluate the probability it will be you know it will be 5 choose 3 P cube times 1 minus P the whole square plus 5 choose 4 times P power 4 and you can evaluate all this this will be even lesser because the leading term is essentially over here it is P cube ok if you look over here right P square was the leading term 3 P square ok so you can actually approximate this as approximately 3 P square ok similarly over there you will have something like 5 choose I believe 5 choose 3 times P cube or so on ok so whenever P is a small number like 0.1 or something using a repetition code significantly reduces the error probability so the probability of making a bit error is 3 P square times 1 minus P plus P cube in this case approximately 3 P square we just showed that is much lower than P ok now the key issue is that the rate for an n 1 repetition code is 1 upon n and thus it is very inefficient because you got the benefit of correcting you know you know like in the case of 3 1 you can correct 1 error in the case of 5 1 you can correct 2 errors because of 7 1 you can correct 3 errors but the price you pay is that for every increase by you know you the rate becomes one third from one third become one fifth or one seventh so the repetition code is very useful in scenarios where you have to just you know send with great reliability and you have a very simple decoding logic that is at the receiver all you need to do is check the majority let's say you take a block of n bits which is n is an odd number just check if the number of zeros is more or ones is more and just conclude that that is what you have so given that that is the case the use of a repetition code is very useful it's very simple to implement but the price you pay is that the data rate becomes very very low and in extreme scenarios where you have a very poor signal to noise ratio very high you know p is very close to 5 then use of repetition code may be very useful but in practical scenarios there are better codes that are available so one thing that we will see from in the coming lectures is what more efficient codes what more efficient codes there are which you can use so in the next lecture we are going to introduce the concept of linear block codes and then go towards hamming codes thank you