at the eBay 20th anniversary event. We got Project Glitz hosting, supplying all the sneakers, and they put on a crazy display, something that we have never seen before. So I'm gonna hand it over to Dre. We're gonna follow along with him. He's gonna explain every single thing about this, all 31 sneakers, and how it made the what the dunk, and how it all happened today. This is kind of a cool moment because there has been a lot of people that put together every component and piece of the what the dunk. You know, all the shoes side by side. But what people didn't even really know was that you can't do it without the eBay dunk. That completes the whole set. It's the liner, that green liner on the left shoe, that completes the entire set. And so without it, no one ever put it on display until today, and this is what we have here. So, you know, the what the dunk was made of 31 different dunk colorways. Every panel, every single different piece was a part of a different colorway of the SB collection. So let's just get into all the sneakers that made up the entire what the dunk. You know, first we have the Daniel Shimizu Dunk High. The second one was T19s. T19 was a Japanese skate shop, I believe. And so that's their colorway that they produced. This is the Takashi Slow, the original black and gold. Obviously, this is the well-known Supreme Dunk High in orange. That was like my favorite color of all of them. If you liked any other ones, you're trippin'. Orange was the best. Moving along, this is the Shanghai Two. There was also the Shanghai One, we'll get that one later, but this one's called the Shanghai Two. That's just kind of like a Chinese motif to it. The Oompa Loompa, nobody liked these a long time ago. They were literally 70 bucks, 60 bucks on sale, sometimes even 50. You couldn't even sell them, nobody wanted that color. Now today they're about, I don't know, 1,000 bucks, more or less, right? Shout out to Travis, because Travis wearing those things blew him up. So the next shoe on the top shelf is the Buck Junk. So people was wondering like, what is Buck? What is Buck? So that's actually the colors of Oregon and Phil Knight, one of the founders, and so his nickname was Buck. So that's why they made that color with it. Starting back on this side, one of the most iconic dunks that ever came out that literally brought so many different demographics and people into the sneaker world. It was already building up, but this one brought people from all different walks of life, people that liked Jordans, people that didn't even like shoes yet. They jumped in because of this. Shout out to Nicky Diamonds, Diamond Supply Co. This is the original Diamond Dunn Glow. That was called the Tiffany, because of the color. And literally one of the dopest shoes, they had HTM Air Force ones came out with Croc. They used that same croc and boss leather and black with the silver representing the silver, like the Tiffany color. Incredible. This is literally one of the sickest dunks that I like to think about. Next, also one of my favorite, literally one of my favorite dunks that ever was made because we all love Heineken beer, the Heineken Dunk. So one of the coolest colors, looking at a six pack of Heineken, it's easy to see that the red star, the green, white and red, literally one of the freshest and coolest colors. My favorite color is green too.  Heineken's are crazy. That's what I was saying earlier, like out of everything here, those might be like one of my top threes out of all these shoes right here. No, this is definitely my top three. I feel like it's gotta be on my top three. This is definitely my top three. Two or three. I don't know which one. We'll get to my number one. We'll talk about that in a bit. The Cali Dunk. Literally, this is a dope concept. So if you look at the California flag, it's white with a little green pasture, a red bar, a brown bear in the middle. So they literally took that flag and created this color way out of it. One of the coolest like concepts to pull off something and put it on a sneaker. The unlucky dunks. I love these. So there's a cool concept. There's a lucky and there's a unlucky. This is the unlucky. Was, I guess, the unlucky number 13. Right, right. Is 13 unlucky to you? No. You know that there's some buildings that don't have a 13 floor? A lot. That's crazy, right? It's like technically they do though. It's weird, right? That's the thing. So a cool color way. Pretty amazing. Next we have, it's arguably either they call the Avenger, now it's actually really called the Banker. So it's because it's like a pinstripe suit. So that's what that whole thing was about. There's a black version, there's a blue version, the black and purple, and this is the navy and blue. Here's a great concept too. This is like the hunter dump, right? So basically like duck hunting and you're out in the marsh. You have the safety orange with that tree camo. And the cool thing about these is, and I had like literally a couple hundred of them in the beginning and I was trying to find the best 10 and a half with the coolest camo. So no single pair is alike. They're all different. That's dope. That's the cool thing about it. I used to have these back in the day and they weren't my size. I ended up selling them and I'm like still looking for a 13. Well, I think we had them before, but you missed out. Yeah, price tag too different. Medi-com. So obviously everybody loves the Medi-com bear bricks and things like that. The 400%, the 100%, the 1,000%, the big ones. This is the first Medi-com dunk that they ever made and it's a cool colorway. Really amazing leather. Looks like a Knicks colorway kind of rent. Pull out of shoes. We're halfway through and the number 15 is a very, very important shoe. This is very important. Let's talk about this one. Yo, this is my favorite shoe of all time. Obviously I grew up loving Jordans and stuff but this became my favorite shoe. It also changed the whole sneaker world, turned it upside down. And it made me actually leave school. You know, I had to drop out of university. I made a choice and I've went into business on this side of things. So sometimes you have to make those kind of decisions in life. But it was this monumental moment with these. If I failed with this, I would leave. If I made it, I know my route. So how many pairs of these did you get when it first came out? I first had 33 pairs of these. 33 pairs of them. And there was people that were at a party in Paris and they were tying up the laces and throwing them. Throwing them on the, on the like. On the wire. Throwing them on the power lines in Paris coming out. Throwing away the boxes. Imagine that. That's crazy. Some people didn't even keep them, they didn't even wear them. They were just, whatever.  Boom, throwing them, tossing them around. The shoe went up in value. For the first time, a new release shoe was going for like 7, 850 bucks. Like right out the gate. There was nothing ever that did that. Up to that point. Okay. Not to Supreme Dung. Not anything. Nothing did that yet. Not in particular. This one. And I went and I got like every, every pair that was, you know, coming out after, like anything that hit eBay.  And I did these like these crazy photography with them. So I lined them up in all these different directions and put those things on Nike Talk. Way back. So I threw all those pics on Nike Talk. And we're the one Nike, my Nike Talk is so collectible. Shout out to Nike Talk. Comments actually. Let's go. 22 years ago. That's crazy. Good times. So at that point, all these, all the pairs dunks are completely different too. No one, no pair has the same placement ever. I definitely picked the best one. And I won't have wore it. I know. I was just looking like the photo on the side right here. Yeah. It's just so. With all the blue things and everything. Yeah. It just looks amazing. So the artist is Bernard Bouffet. So if you look up Art History, he was a Parisian artist. Really incredible. Just, it's very Picasso-ish. But very, I just own right. Beautiful shoe, the most amazing thing I've ever seen. When I first saw it, I was like, oh my God. And I had to go all in. I was ready to, I sold, I would sell all my, everything I had to do this. Yeah. And this changed the work, like changed the whole sneaker world. So literally, they were going to do the Paris, New York, Tokyo and London, white dunk exhibition. And that's where this came from. Paris came out first. And after we did this, the next ones were coming out. And of course the pigeon then came. Right. So after I started making these going, I changed the market with this and they started to go for 1500. Everyone went nuts. So when the pigeon was coming out, it was like a huge riot. Yeah. It was gonna be the first time that people in like New York had a chance to get something exclusive. Pay 150 and get 1500 back. Right away.  The hood, uptown, like Park Ave. You had like everybody.  Like winning a quick lottery. That's what made change the whole sneaker world from that moment on. After that, it was like kind of patrimonium. Everything just started going up and up and up and up. And all these people were coming into the whole scene. It was kind of a crazy time. It's still crazy these days. It's still crazy. Wow. But it all kind of started on that point with that. Man. All right, let's see what we got on the next shoot right here. Sorry for the long. No, no. No one deserved all the time, trust me. Of course, here we are with the ray guns. So the actual story about the ray gun was that it was like a Nike basketball thing. It was part of a campaign. The Roswell ray guns, like a team from Roswell where the UFO landing was. So they made a little alien.  And then taking something from like Nike basketball and putting it onto Nike SV. This is the Metacom 3. All 3M silver, like 3M was so big. Everybody loved 3M back in those early 2000s. I mean, it's still dope now, right? It started with the Jordan 5 tongue and it just moved on everywhere. And so Metacom followed up. The other releases with this one, incredible. Love it. I love silver. Just came out amazing. And then you got the what the dunk branding right here. Sitting perfect with the gray shot. This display case is amazing by the way. And turns into what the dunk. Yeah, yeah. This display case is amazing. All right, here we go. We got some more shoes down here. 31, what number is this right here? Number 18. So this is the Shanghai one. So this is the first one that came out of Shanghai. It was like this Chinese print on a burgundy, gold, gray. One of the sickest, cool colorways. Not many people know that that's not a white toe box. It's actually a very light gray set. It was one of the coolest colorway and having that gold swoosh on it. Yeah, the materials are amazing on it. They did a really good job on that shoe. So we saw the unlucky before. Now this is the lucky one. I miss these. So if you love gold, if you love wheat, and you love green like I do, this is like the ultimate shoe. I love these. All right, so if you skate or if you're just into street, if you don't know what Carhart is, stop watching immediately. Carhart is literally one of the sickest brands that everybody knows about. And it's either black or it's this brown, like duck brown that Carhart is known for. It's like that, just that thick, good, nice, you know, canvas that they use. Incredible. The hemp duck. So they made three colors.  They did a burgundy color, and they did the bonsai green color, which was only limited to 420 pairs. And here we go. Another one of the greatest dunks ever made. This was the big riot in New York. Everybody wanted to punch a lottery ticket. If they were lucky enough to get in the store, they'd be able to, because there's only 150 pairs. If they're lucky to get in, they're gonna get a shoe for 150 bucks that they can sell for 100 bucks, whatever it was, that they can sell for 1500 out the gate. The riots were crazy back then. And then they ended up going to like 2000. I remember seeing that, I remember seeing that back in the day. This one right here, I love this shoe. Simple, clean, got a nice story, I love it. Shout out to Supreme. So this is like in the third series of SBs that came out. You literally had Supreme came out and put cement print that was only found on the Jordan 3s prior to these and put them on the dump. And this is number 23 on the list right here too. Even more fitting, even more fitting. So they had a black one that had red accent and then they did this one which was kind of like a true blue color with it. With the tweed dunk hide. One of the coolest ones, they did a low, they did a high, but they did it with this nice like Harris tweed looking material. So if you ever had a P code or want to look dapper, these are the ones that you bust with them. Dressing up the SBs, I don't like it. You come out like that, right? You know what I'm saying? Pull up on all of y'all.  All right, last roll. What we got down here? Last roll, honestly, this is one of the coolest colors ever and the dopest material. Like these materials, you will not find on a sneaker anymore these days. That suede, you can smell it. Yeah. It smells so good. Even after being, you know, almost 20 years old, that sea crystal, teal, aqua color, two-tone, the black fire. You know, that color was super hot with just like the Tiffany dunk and all that. I'll talk about it real quick. I know we haven't talked about everything. We can't go through everything, but look at the tongue. There's no SB branding on that one. Yeah, no. Talk about that from the age and the time and everything like that. Well, if you notice that, not all of them have that, right? Yeah, most of these don't have the SB on it anymore. I mean, most of them from the beginning do not have the SB logo on the Nike. It was just Nike on it. See like going, moving right along. It's a newer era. Even though it's still old, but it's a little bit newer of an era from this era. And that's when they started adding Nike's SB on it. All right, so talk about this one. So this is obviously the follow up to the De La Sol Low. This is the De La Sol High. De La Sol Low has just had that album cover print. It's a cool little plasticy that kind of changes. But this is like a cool color, the green cement. I thought these were so crazy and fire when they came out. I love these. I love these. Like they literally look like Teenage Mutant Ninja Turtles. Yeah. Right? This is the one I first seen them. That's what I thought of. I like that. I like that. All right, what we got right here? So this is the second Metacom. This is Metacom 2. Before the 3M1, we got this one right here. And this is also a follow up to like the Reese Forbes Denim Dunk Low. But this one is like in a, you know, the black color way. So it's just flip denim on the other side in black. It looks like this black and gray effect. Crazy. Crazy. So all three of the first three Metacom dunks are inside of the Wattidunk. Which is dope. I feel like they're all deserving for sure. Now let's talk about the one. Oh, you got these on your feet today, actually. So I got these on my feet. You were wearing these yesterday. Yeah. But you're wearing these today. Okay, okay. Shout out to Keith Huffnagle, rest in peace. You know, founder of Huff. And obviously one of the coolest dunks or the coolest like material ever made. Did this, you know, Giant's Color Wave for San Francisco in a tie dye, fitting tie dye, right? Yeah. Because of all the hippie scene out there on Heap Street with this cracked leather. Literally one of the coolest shoes that they've ever been. They look so good on them. It's awesome. I love it too, cause like the age of the shoe, you can still wear it to this day. The materials are nice. Like amazing, amazing stuff. All right, we got three more shoes left. This one, we'll talk about a little bit and then go over there to the other side. There's a little bit more details with that final shoe. All right, what we got right here? So this is a cool dunk. Everyone calls it a bison, right? It's bison sport red and it's like this two-tone brown with gum sole, brown midsole. And it has this red going around the front. It's like such an amazing color. I love this when you're like brown, these are hard. This is giving that nostalgia, right? Looking at the tongue, no SB logo on there. Like old school. So the cool thing is that this was a Japanese designer and he had a dog named Homa. And this is actually his dog. So those had a brown like lab or something like that. And this is like, I thought was his tongue, but I got corrected. It's actually the dog's collar was red. Dope, dope. Such an amazing piece. Yeah, great story behind the shoe. All right, what we got right here? Another legendary shoe right here. No, the next one, this one's fire. This is like literally another one of my, this is definitely top five from. For real, for real. Because no one was putting neon on shoes other than like Air Max's yet. You know what I mean? So this dunk right here, the Jedi, has the colors of like Yoda, Luke. It's really Yoda though, right? So with that, you know, that green and the two-tone brown and the gum-soul and then just the neon hits everywhere with the neon laces, crazy. I mean, it's so crazy. I'm not gonna, my tag is beautiful. I love these so much. If you do not have these, this is like complete collection because it's like, all these shoes these days, there's neon everywhere at that time. Never had neon. So the final piece, the one that, if you had all these other shoes, you didn't have this one. And now these are coming out this year. We're at the event. It's all adding up. It's aligning. So the key is the liner of the eBay dunk to make this whole thing complete. Okay. And so everyone's probably wondering like, why is it all these like clear parts? Let's take them over there. Let's take them over there and tell them about that. Let's go show them. Let's go see the real one. Let's go over here, okay. Oh yeah, they got the list of all the shoes right here. We'll get into that in a bit, but let's finish it off with the eBay joint. Oh, it's nice and quiet over here. They can actually hear you even better. I like it. All right guys, so what you wanna look at right now is the original, this is Sandy Bodecker's original eBay dunk. This is it. This is the shoe. This is the OG one. OG, the only one other pair was auctioned off and it went off for $30,000. This is the only other one that was property of Nike. Basically Nike. And that was at the Bodecker Foundation. We need that liner to complete that entire set for the what the dunk. That color was only found on this shoe.  Which they have this right here, which we'll talk about in a second or you wanna get into it, man. So that's what they did. They cut up. This is the current auction pair right now. Yes, and they cut up this pair. Just like that. Just like that. So they cut up this pair and this is like what it would have been the original one, right? Mm-hmm. And so they made the new pair. So it looked like they're putting it back together. And those are gonna be releasing this week. And those are gonna be releasing. Or you can get one of these 10 on auction sets. On auction. This is number one of 10. This is the actual one that's on the auction right now on eBay. The second one's right below us right here. They're incredible. Crazy. We're literally in the presence of crazy auction items right here. These are, what's the current, what's the auction on these right now? It's $16,000, $17,000 right now? I last check, I thought it was like $15,000 but if it's $16,000 right now. It's going up a little bit. That's crazy. There was about 10 yesterday. It's been slowly going up. Well, I hope it doesn't go up any further because then I'm out of the count. But I definitely hope that I can get one of these and keep it in the Project Blitz bowl. That would be crazy. If so, we'll come back and do a whole another thing with that. But now these ones are gonna be coming out to the public. This is gonna be coming out to the public? Now you gotta ask is, what do you like better? This crazy, cool design? You could actually wear like different color socks or crazy things with it? Yeah. Or do you like this old school version? If they like retro this and came out with this? I think it's good that they did this one justice and doing this to separate the two. So that way people couldn't just be walking around with the same shoe. I think people would prefer this, but I like that. And there's differences like, look at the yellow. Like it's a lot darker. It's a little bit more goldish kind of to it. It's a lot more brighter. It's kind of hard to tell in this lighting. I think you guys might be able to see the difference. Oh yeah, you can tell. That shoe is definitely 20 years old. But it looks like it's been in great condition. Like the white patent leather is not yellowing or anything. It looked really, really good. But yeah, I think it's good how they did it this way. Putting the concept and the story behind the shoe. Shout out to eBay for putting this all together. And definitely if you're looking for sneakers, that was the OG place where we all met, made community, bought sneakers from each other. Only on eBay. That's what's up. So this is one of the eBay's goats, legends, whatever you want to call it. This is the guy. He's got his own thing called Blitz. So if you guys haven't already, make sure you guys check them out. Check out projectblitz.com. That's like the elite level of all things sneaker and in demand. So definitely peruse, check it out. Look at pictures and hit that button. Add to cart. All right y'all, I'll see you in another one. Appreciate you. Thanks for having us. All right, bro. We out. Yo, before you go, I just launched my sneaker head Academy where we got everything on the inside. I teach you all the stuff that I learned over the past 15 years. When it comes to sneakers, scaling, real estate, you name it.  I give away shoes literally way too much, honestly. But either way, I'll see you guys on the inside. Hit the link down below in my description or pinned in the comment section for DJ sneaker head Academy. And I'll see you guys over there.


We have said in the topic on data transmission impairments in our communication system mean that what we receive is not the same as what is transmitted. We have noise and attenuation and one of the results of those impairments is that the data received is different from what the data was transmitted. With digital data we measure that as bit errors. I transmit the bits 1100 and I receive 1110, we have a one bit error. So that's a problem. That's ineffective data communications. So here we're going to introduce some ways to deal with errors. And the two things we want to do with deal with errors is to first detect that there is an error and then fix it, correct the error. But just to illustrate the need for error detection, let's consider we have a transmitter. It transmits some bits, let's say it transmits a sequence of seven bits, it doesn't matter the length. And you're the receiver and this is the sequence you received, there's seven bits you received. You're the receiver, you receive those seven bits, is there an error or not? Look at the bits and tell me if there's an error in those bits or not, yes or no? You don't know, good answer. That's the problem. The receiver gets seven bits, how do you know if that's right or wrong? How do you know if that's what the transmitter actually sent? Well, we don't know. And that's the problem that we have to deal with. We know that maybe there is an error, maybe there's not. We would like to know for sure, is there an error in these seven bits or is it perfect? Is it what the transmitter sent? We can't just ask the transmitter, is it the same? Because that's the idea of receiving the bits, it's the data communication. So we need some other way for the receiver to check, is this correct or not? And that's what we call error detection. So there are different ways to deal with errors. So first, some classification of types of errors. If we talk about a frame being sent, we know a frame has header, payload and trailer, each containing a sequence of bits. The errors, we transmit a frame from transmitter to receiver. The receiver receives the payload and it has one or more bit errors. We can say that's a damaged frame. It's that we receive the frame, but inside it has some errors, we say it's damaged. Now the errors maybe in the payload, the header or trailer, we'd still call a damaged frame. So the transmitter sends me a thousand bit frame, I receive a thousand bits and we'll see later I somehow detect that some bits are in error and I would call that a damaged frame. We want to be able to deal with that. I receive a damaged frame. I want to be able to fix the damage to correct the errors. But another type of error we can talk about is that the transmitter sends a frame and I don't receive it. So this is a lost frame. This may happen in some cases where a frame or a sequence of bits is actually sent but nothing's received. Maybe there was significant interference or there was failure of the cable or a failure of one of the components such that during the transmission nothing's received. So we call this a lost frame. How can we deal with a lost frame? How would I know as a receiver that a frame has been sent to me when I didn't receive it? The transmitter knows it sent me a frame. I don't know that because I've received nothing. I'm just sitting here waiting. How can we deal with that? How would I detect that a frame has been sent to me but I didn't get it? A sequence number, that is, if the transmitter has, say, three frames to send to me and including the header of those frames, it includes a number, one, two, and three. And the transmitter sends frames one, two, and three to me. And here I receive frame one, good, then I receive frame three. Maybe that's an indicator to me that, all right, I expected to receive in sequence number, the frame should come in order. If I receive frame one and frame three but I don't receive frame two, maybe that's because frame two was lost. So that's one way to detect lost frames. And we'll see it comes up into something we'll mention as ARQ. The other thing is in types of errors, we transmit frames one, two, and three. I receive frames one, three, and two. I receive them out of order. Let's say that those three frames contain a file that was being transferred. It's in three parts. I put the file back together, but I put it back together in the wrong order then the file could be useless. That is, the file is a song and I put the end of the song in the middle position in the middle part of the song at the end when I play it back it's not the same song. Sometimes we care about getting the frames in order, most of the times. So if I receive them out of order, we can say that's an error. And sequence numbers help here as well. If I receive frame one, three, two, I can realize, let's swap three and two around and put them back into order. So there are two things that we want to do to deal with errors. We want to first detect to know that there are errors. And once we know that there are errors, we want to fix them. Error detection and error correction. And there are different approaches to dealing with error detection and correction. We will not cover all today. For error detection, one general approach is that when the transmitter sends the frame, it attaches some extra information such that when the receiver gets that extra information plus the data, it can apply some algorithm to calculate is the data correct or not. And we'll go through that today. There's a very simple way to do that. But we attach extra information to what we want to send such that that extra information is specially chosen so that the receiver can check if the data is correct or not. Parity check is what we'll go through today. In the following slides, I'll simply refer to that as an error detection scheme. There's other ways to detect errors. Like we said, how do we detect a lost frame? Include sequence numbers in the frame. So if we get one that's missing, we assume that's a lost frame. And those schemes of including sequence numbers, we'll talk about after the midterm in a topic and a techniques called automatic repeat and request, ARQ, that we'll not cover today. We find out there's an error. We want to fix it to general approaches. Error correction, forward error correction involves the transmitter, attaches some extra information or transforms the data that it wants to send such that when the receiver receives this transformed, this modified information, it applies some algorithm so that it can both detect that there was an error and fix the error. So we'll go through that today. We'll call it forward error correction. And we'll show a simple example of how the receiver can fix errors. And the other approach is, I think we've mentioned before, I detect an error, I tell you to send me again, retransmit. So these retransmission techniques and the use of sequence numbers fall into something called ARQ, but we'll cover that in the next topic, not today. So let's look at error detection schemes using just one simple example and another simple example of forward error correction to explain those concepts. Error detection, simple one I think you've heard of, you've used or seen in maybe some computer hardware topics. Parity check, use a parity bit on the data. Two different approaches, odd and even parity check. That's for this example, use odd parity check. I want to send some data to the destination, and I want the destination to be able to check if the data they get is correct. So what I do is I attach a parity bit to that data where the value of that bit, zero or one, follows some rules. And in an odd parity check, the rules are quite simple. The total number of ones in that sequence should be odd. And even parity check, they should be even. And the receiver, when they receive the data plus the parity bit, check, did I receive an odd number of ones? If so, good, nothing's gone wrong. If I receive an even number of ones, I know something's gone wrong because the transmitter only sends an odd number of ones. If you receive an even number, there must be a bit error somewhere. So let's illustrate that and show the capabilities of error detection schemes by I want to send my name to someone, first letter, uppercase S. Let's send that and use a parity, odd parity check on that. What's S in binary? We look up our ASCII table and we find uppercase S is the seven bits, one, zero, one, zero, zero, one, one. That's our data I want to send just for this example. If you want to send your name, you can find the characters here. But we just want those seven bits of data. So we're going to transmit the data from A to B and the data we said S was one, zero, one, zero, zero, one, one. And we're going to use odd parity check. As the transmitter, B is going to receive the data. And what we'll do is we'll consider several cases. What happens if there's some errors on our link? We'll transmit this data. What happens if something goes wrong on the link and see what B does to try and detect the errors? What is transmitted by A in this case? With odd parity check, we attach one more bit. We add some extra information. If we want to send the data, or the payload, one, zero, one, zero, zero, one, one, we attach a parity bit. What's the value of the parity bit? Hands up for left hand up for zero. Left hand up for zero. Right hand up for one. Odd parity check, the total number of ones should be odd. So we currently have four ones, an even number of ones. Adding another one gives us an odd number of ones. Where do we add the parity bit at the start or at the end? I don't care as long as both A and B know. Here in my example, I'll add it at the start. Think of it as the header. So we'll add a parity bit and then the seven bits of payload. Why is this a one here? So here's our parity. I've added it at the start. When I count bits in this course, I count from left to right. So this is the first bit, the second, and this is the eighth bit. In total, there are five ones, an odd number of ones. That's all. We must transmit an odd number of ones always. Any questions so far? This is just how we create what we transmit. Seven bits of payload, one bit of header in this case, or overhead. We send that and now let's consider different cases in terms of what B receives and under different error conditions. So what's the first case we can consider? It's always the same eight bits transmitted. Let's say the errors will consider what's received and then we'll see what happens. So in the first case, say the errors, there are no errors. We transmit these eight bits along the link. Nothing goes wrong. No errors. So what's received? Exactly the same as what's transmitted. So the eight bits received, this is a simple case. We don't need error detection here. There are no errors, but let's see what happens. Now the receiver with an odd parity check will count the number of ones. Check if it's odd. If it is, assume everything's OK. If it's even, assume something's gone wrong. Here we count the number of ones. There are five. OK. Everything's OK because we have our expected odd number of ones. We could remove the first parity bit and now we have our data correctly received. So what I'll say here is that the receiver, all right, the receiver in this case assumes that the data it's received is correct. I'll give it a tick. Meaning that eight bits I received match the rules of having odd number of ones. So I assume that nothing's gone wrong. I assume it's correct. I'll remove the first bit and here's my data. And that's the correct thing to happen in this case. So I'll say the outcome or the result of this error detection scheme was successful. The receiver assumed there were no errors. In fact, there were no errors. So the error detection scheme passed. It worked. We'll see some other cases where it may not work. Let's try a different case with some errors. We want to detect errors. Let's say the eighth bit is in error. Just one bit error, the eighth bit or the last bit in our sequence is in error. So what do we receive? Well, the first seven bits will be the same and this will be bit zero. We transmitted the eighth bit. It's one. If it's an error, it means it arrives at zero. The receiver goes through the rules of its error detection scheme. And the rules are count the number of ones. We have four ones. Is it odd? No, it's even. Something's gone wrong. Assume there's an error. That's all. If we don't get an odd number of ones, there's something must have gone wrong because we know according to the odd parity check, A will always transmit an odd number of ones. So if we get an even number, must guarantee that there was an error. Something went wrong. So when I say the assume here, it's the assumption made by the receiver based upon the error detection scheme. Was that assumption correct? The receiver assumed there were errors. Were there errors? Well, yes. One bit was an error. So we can say that the receiver made the right decision there in terms of detecting errors. So the result of this error detection scheme is it worked. Note that the receiver doesn't know where the error is. It just knows that there is an error. So this is not trying to correct or fix errors. It's just trying to identify, are there any errors in these eight bits? Whether it's the first bit, the second, or the eighth, we don't know at the receiver. We'll deal with that later. Let's consider some other cases. Let's say the first bit. The first bit is in error. So we transmit the same eight bits. The first bit is wrong, so we get this. What does the receiver assume happened? Even number of ones must be an error. I expect an odd number. I get an even. Assume there's an error. Did the receiver make the right assumption? Was there an error? Yes, there was. So we assumed correctly at the receiver. I say the outcome, is it? The error detection worked. Again, where is the error? I don't know. Remember, the receiver can't see this. You can, you know where the error is, and I told you here, but all the receiver gets is this. So realize that this is just error detection. It's not identifying where the error is and trying to fix it. Count the ones at the receiver, if odd, okay, if even, error. Another example, let's say the second bit and the fifth bit are in error. We transmit these eight bits. The first bit is okay. The second one is wrong. Actually, before we do this, I forgot to say the difference between the previous two, the eighth bit and the first bit. Just note that even though it's the parity bit in error, the receiver doesn't care. The receiver still detects an error. So with the eighth bit in error, it was one of the data bits, one of the payload bits wrong. I knew that, but the receiver didn't. In this case, with the first bit in error, it's the parity bit which is wrong. The data is still correct. 101, 0011, the original data is the same, but the parity bit is wrong here. That still is an error. We still treat that as an error. So when we detect the error, yes, there's an error, then that's the correct outcome here. Second and fifth bit. Second bit is wrong. Fifth bit is wrong. What do we assume? What happens at the receiver? How many ones? How many ones? Five ones? How many ones received? Odd or even? Odd, okay? We received this. So you're the receiver. Don't look at any of this. You can't know what was in error. You don't know what was transmitted. You just get these eight bits. You count the ones. Odd number of ones. What do you expect? You expect to get an odd number of ones. So you assume no error in this case. Because the rules say, if there's an odd number of ones, it's okay. If it's an even, there's an error. We got an odd. We assume what we got is correct. Was that the correct assumption? The receiver thinks what it got is, has no errors. But we know that there were errors. So the result of this error detection scheme is it failed. And this is the point to illustrate. Error detection schemes are not perfect. Here, there's a case where when there are errors, the receiver cannot detect those errors. And the scheme fails. So it's not perfect detecting errors. Only in some cases. So the green is what the receiver believes. The red result is what we, with knowledge of the transmitted receiver, know. Any questions before we move on? The result is the outcome of the error detection scheme. So remember what we're doing is sending data and to the receiver. And we're using what we call an error detection scheme. Ours is a parity check. The idea or the aim detect errors. The result is us saying or me saying, if I know what happens at the transmitter and receiver, did my error detection scheme at the receiver work? Well, in this case, the receiver decided there were no errors. There were no errors. Correct, correct assumption. In the second case, the receiver decided there are errors. There were errors. That's the correct result. It made the correct decision. And the third case as well. But in the fourth case, the receiver assumed that there were no errors. But there were errors. So the receiver made a mistake. The result is that error detection scheme failed in that instance. You must remember that the transmitter and receiver are different entities. So they don't know what each other are doing. But we as some entity that can oversee both the transmitter and receiver can determine the outcome or the result. Here, I mean, the cross error detection failed. Our algorithm didn't work as intended. Can anyone see when it will always fail? What are the conditions when this one bit parity check will fail? Why did it fail there? We remember the scheme is that we transmit odd. If we receive odd, okay. If we receive even error, that's the assumption of the receiver. Here we transmitted an odd number of ones. We had two bit errors. So if you change an odd number of ones two times, you'll still get an odd number of ones. And that's why the receiver thinks it's okay, but it's wrong. It's this even number of bit errors that caused it to fail in this case. If there's one bit error, if we start with an odd number of ones, we'll always finish with an even number of ones. If there's just one bit changed. But if there are two bits changed, if we start with an odd number of ones, we'll always finish with an odd number of ones. And that's why it fails in that case. When there's two bits in error, it will always fail. You can try other combinations. And with three bits, what will happen? Bits one, two, and five in error, it will work. Because if you start with an odd number of bits at the transmitter and change three of those bits, you'll end up with an even number of ones. And that would detect the error. If there's four bits in error, it won't work. So in general, if there is an even number of bits in error, parity check, we're using a single bit parity check, doesn't work. It's no good. Which implies that parity check is only really useful when there's few errors, one bit in error occasionally. So it's only used when there's a very low chance of errors. It works, especially with one bit, but if you have more, then there's a high chance that you'll get it wrong. So any error detection scheme, we say has some error detecting capability. That is, how many errors can it detect? And how many times does it fail? So different algorithms will have different capabilities. They'll be able to detect a certain percent of errors and then they'll fail at a certain percent. So we can talk about the capability of different algorithms. Every error detection algorithm will have some failures. We'll always have some failures. So different algorithms have been designed to try and reduce the probability of failures. You may have heard of CRC, the Cyclic Redundancy Check. CRC16 or CRC32 are common ones used, which have a better algorithm than parity check. They'll have less chance of getting this case of a failure, but still there's a chance of failure. That is, we miss the errors. Just some summary points on this scheme. It's maybe not clear here, but if you look at in other algorithms that, oh no, let's look at efficiency first. What's the efficiency of our data transfer in this case? The data or the payload, I have seven bits. That's what I want to get from A to B, but using this parity check, I actually transmit eight bits, one bit overhead. So in fact, I can say my efficiency is seven over eight, which is 87.5%. If I keep transmitting a continuous sequence of bits using this approach, what I can say, assuming that we don't have any failures, that if we always detect errors in terms of the overhead, 87.5% of the time I'm transmitting real data. 12.5% of the time I'm transmitting the parity check, the parity bit. So adding that parity bit introduces some overhead. Reduces our efficiency. But we used it so we can detect errors. Now really, if we wanted to look at efficiency and throughput in more detail, we would look at a number of cases and look at, well, how much data is received in error? And that's a more complex analysis. But we have one bit overhead out of every eight bits. So we say we're 87.5% efficient. In general, there are other algorithms, not just the parity check. And we'll see it on the slides, but if we have a payload of say K bits, not seven, but in general K bits, then we transmit N bits, e.g., our K was seven, and we transmitted eight bits, that is, we had a one bit overhead, then the efficiency is K divided by N. So if we generalize, we can say, for any error detection scheme, we start with our payload, our data, K bits of data. We add some extra information. In our example, we added one extra bit, but in others, you can add more than one bit. We say we add an error detecting code. And the total number of bits we get, if we add in the extra, we get N. In our example, we ended up with eight. Then the efficiency is K divided by N. Seven over eight, for example. How can we increase the efficiency? Well, make the number of bits we add as small as possible. Make N and K as close as possible to each other. If I have a thousand bits, K is a thousand, then I want N to be slightly more than a thousand, not much more, because we need to add some bits for the error detecting code or the parity bits, but we don't want to add too many. Now the problem is, in general, with error detection codes, for a given number of bits of data K, maybe we'll write it here. It's maybe best described on the slide, but the name will give it an error detecting code. If I have K bits of payload, and I transmit a total of N bits, then the difference, and minus K, is those bits that we add, like the parity bit. In general, it's called an error detecting code. The larger the code, the lower the efficiency. If we add more bits, it'll be less efficient. But the trade-off, this is the point I was trying to get to, the larger the code, better error detection capabilities. What that means is that the larger the code for a given piece of data K, the less chance we'll make mistakes at the receiver. The less chance we'll get those failures. So with error detection, we start with K bits of data. We add a code. The larger code we add, the worse our efficiency will be, but the better chance we'll be able to detect errors. So when people compare different error detection schemes, the code length, or the error detecting code, is something they compare them based upon. Maybe that's, to some extent, summarized in this picture, this diagram. So in general, error detection, the concept is we add extra information to the data we wanna send, and we call that extra information an error detecting code. In our example was the parity bit. That was our error detecting code. And the receiver checks. It does some checking based upon the algorithm. So in terms of our data, we have K bits of data. We attach the error detecting code. We end up with N bits to be transmitted. We transmit those N bits, and the receiver does the check. It compares the code and using the algorithm and makes a decision. Error or no error. The ability to detect errors depends upon the algorithm and the code length. So on the example I tried to illustrate, the code length is one thing that will impact upon the detection capability. Larger the code, better detecting errors. But we would need to study some other algorithms to illustrate that through an example, which we don't have time for. One of the other common algorithms is CRC. But there are a few others as well. So that's an example using parity check of error detection. Note that the receiver doesn't know where the error was. They just know binary. Yes or no? Error or not? And the receiver may sometimes make a mistake. It may think no errors, but in fact, there were errors. So it can fail. What do we do when we get errors? We'd like to fix them. It's no good to just detect them and say, okay, the bits are wrong. We'd like to fix them. Now one way to fix, the receiver receives, it detects an error, then it can ask the source, please send again. Send that same data again. And hopefully the next time there will be no errors on the link. Maybe there's no noise at this stage or no problem so that we receive it the next time and it's okay. So that's one way to fix the errors. But there's another way which we'll go through now. It's called forward error correction. Similar idea, but what we do is we take our data and instead of sending the data and some extra information, we encode that data using some algorithm and obtain a code word. And we send the code word. We don't send the data, but the code word represents the data. The code word will be longer than the data. If the data is k bits, the code word will be n bits. We transmit the code word and the code word is designed such that what the receiver can do is first check if that's a valid code word and check if there's any errors. And then if there are errors, try and fix them and get the original data back. So the idea with forward error correction is that we don't transmit the data, we transmit a code word representing the data such that it allows us to detect and correct errors at the receiver. We don't have to ask them to send again. We correct errors before retransmission or in advance. And that's why it's called forward error correction. So again, to explain this concept, we'll use a simple example and just one simple example to illustrate how we can correct errors. And the example will be a simple forward error correction encoder which uses a concept called hamming distance. So first introduce hamming distance. Very simple. We'd like to compare how similar two sequences of bits are. And hamming distance allows us to do this. Given two sequences like v1 and v2 here of the same length, both of these are six bits, the distance is the number of bits that differ if we go in order. So I'll write these two sequences again, one under each other and you'll be able to see that easier. Just the two sequences from the slide. What I want to know is how similar they are or how much different they are. And we can use the hamming distance to measure that. So we will ask, what's the distance or the hamming distance between v1 and v2? So v. Well, the way to find it, look at the bits and count the number of bits in order in the same positions which differ. The first bit of each sequence, zero and one, they are different. So have one that's different. The second bits of each sequence are the same. They're not different. The third bits are different. So there's two that are different. The fourth are the same. The fifth are different. So there's three bits which are different and the last are the same. So the distance is three. Look at the sequences in order and just compare the bits, count how many are different. But different across the two sequences in the same position. And that's what we call the hamming distance. And it's a measure of how similar those sequences are. If you had five zeros and then four zeros and a one, they're very similar. It's just one bit that differs. So the distance is one. If you have two sequences which are the same, the distance is zero. They are identical. This is not forward error correction but we'll use hamming distance in our simple FEC encoder. Any questions on hamming distance? We need to know that for the next step. Two sequences of the same length. Which bits are different? I just counted. One, two, three is me counting. Okay? First bit, zero, first bit of each sequence are different. So the green is just me counting. The first bits are different. One, not different. Different are two now. Not different, different. Now I'm up to three. Not different. I end up with three. Three bits differ. Now let's use this to do error correction. And the scheme is that in this example, we're going to start with two bits of data. I want to send two bits of data from A to B. But both A and B know this table. With two bits of data, there are four possible combinations. Zero, zero, zero, one, one, zero, one, one. So that's all I can send if I focus on two bits at a time. Instead of sending those two bits of data, I actually convert it to a code word. And in this example, I'm going to use a five bit code word. It can be different lengths. And the actual code word I'm going to use is defined in the table. What that means, if I want to send the data zero, one to destination, I don't send zero, one. I send zero, zero, one, one, one. I send the actual code word. And the destination B will receive the code word and do something with it. So first we send code words, not data. These code words were chosen and must be known by both the transmitter and receiver. So I think both the A and B have this table. They know it in advance. In a different example, they may be a different set of code words. There's 32 to choose from if we use five bits. Two to the power of five, we have 32 possible code words. With four possible data, we have to choose four of the 32 code words. But which ones we choose may be different in different algorithms. I've chosen just for this example, the four listed on the table. What's going to happen when the receiver receives the code word is going to check. Does it match one of the four expected or valid code words? The transmitter will only ever send these four out of all 32 possible code words. That's all they'll ever send. But with errors, the receiver may receive different code words. So what the receiver would do is check. Did the receive code word match one of these four? If so, then we get the data. If not, then it will try and find the nearest code word that it matches and assume that's the data that was sent. And the nearest will use the hamming distance. So let's do that with a few examples. We'll send data from A to B and we'll have some different types of errors and see what happens at the receiver. And the data in this example will keep it the same. That is, let me just write down that table. Exactly the same as on the slide in the last one. Okay, so I'm just copying that so I can see it when I do the calculations. This is known by the transmitter and the receiver. A and B, for example. And the data we want to send, let's choose some data to be, for the example, zero one. A wants to send zero one to B. That's the original data. So what the transmitter does is instead of sending those two bits, it sends a code word. Which code word? It looks up in the table, the second one here. Zero, zero, one, one, one. So this is from the transmitter's perspective. He's going to send the five bits instead of the two bits of original data. What we'll do is we'll look what happens when there are different number of errors or different errors occur across the link. So this is going to be transmitted from A to B. Then we're going to receive. And there are going to be some errors across the link and we'll consider what happens with different cases of errors. First case, let's consider the simple ones. What if there are no errors? We transmit this code word. There are no errors on the link. What do we receive? Well, we transmit these five bits. We'll receive that exact five bits. So the received code word, I'd say, zero, zero, one, one, one. So this is the simple case. Nothing goes wrong. The receiver receives these five bits. What the receiver does is checks. Does the receive code word match one of the four valid code words? These four are valid. All of the other code words are invalid. Not expected. Does the receive one match one of the four? Yes, it does. It matches the second one. Therefore, let's assume there were no errors. So we'll assume that no errors in this case. Coming up to help me. You all right? Let's assume no errors from the receiver's perspective. Why? Because the receive code word is one of the valid ones. It means we're going to assume that nothing went wrong and therefore the corresponding data received is zero one. Received data, zero one. Did this work? Did we get the correct data? Yes. The original data was zero one. I eventually received zero one, so it worked. I assume that there were no errors at the receiver, which was the correct assumption because there were no errors. So in this case, everything's worked fine as expected. Successful error correction scheme. There were no errors, so it wasn't hard to work. Let's consider the cases when there are some errors. Transmitting the same data, zero one. Let's see what happens. Let's say bit one bit is in error. The third bit. I transmit the code word. We want to deal with the same data. Zero zero one one one. And when it goes across the link, there's one bit in error and it's the third bit in the sequence. So what's received? Zero zero zero one one. The third bit is wrong. The receiver doesn't know the third bit is wrong. We do, but the receiver just gets those five bits and applies the rules for the error correction scheme. And the rules are first step. Compare the receive code word against the four valid code words. Does it match? Is this a valid code word? No, it's not one of the four. So that tells us error detected. If it's not one of the four, something's gone wrong. So we have actually inbuilt error detection here. So we'll say detected in this case. We've detected an error, but we want to also correct the errors. We want to fix it. How can we fix it? When we detect an error, we now compare the receive code word against the valid code words and find the one with the minimum distance. But that is the valid code words. I'll write them down. It'll be easy for you to see. The four valid code words. I have to remind myself. These are the four valid code words. We have an invalid code word. Let's find the closest match. What is the hamming distance between our receive code word and the first valid code word? So here we use hamming distance. How many bits differ? The first three are the same. The last two are different. So we'll say the distance is two. Now we do it for the next valid code word. The difference between this receive code word and the second valid code word, hamming distance of, calculate the remaining three hamming distances. That is 00111 with 0011. What's the distance? And then do it received with the next valid. What are the three distances there? Remember distance is simply the number of bits that differ if we go in order. Find the hamming distance from receive to valid code words. Next one, next one, one bit differs. This one, how many bits are different? Three, and the last one, how many bits are different? Four in that case. So that's the hamming distance from our received with the valid. Choose the minimum one. Why? Because what we're assuming is that, well we receive this, it's most likely this one, the one that's closest to. Most likely the receiver actually said this, but there were some errors. Under the assumption that we expect a small number of errors, then if the received one is very close to one of the valid ones, let's assume actually that was transmitted. So here's the minimum. We assume that this was the transmitted code word, so we correct the error. We perform a correction. And what's the data? Well, for the second code word, 00111, the data was 01, here, 01. Did this work? Yes, first error detection. The receiver detected an error. Did that, was that the correct result? Yes, because there was an error. And then the receiver tried to correct that error. It performed a correction. And it eventually got the data 01. That worked as well. What was transmitted, 01. So this was successful at error detection and correction. The first one worked, it assumed no errors and got the data immediately. The second case works as well. We detected errors and corrected the errors. We originally, we got the original data. Let's try a couple of other cases so you're clear on how it works. See what other outcomes may arise. Assume the first and fourth bit are in error. Look at what's received. Then look, is it a valid code word? Is an error detected? And if an error is detected, find the minimum hamming distance, the nearest code word, and try to correct. So go through that, it takes a few minutes to calculate the hamming distances, try that, and we'll see what people get. Remember, compare against the four valid code words when you detect an error. Remember, we expect to receive one of the four valid code words always. If we don't, must be an error. Because the transmitter always sends one of these four. If we receive something else, error detected. And then we try to correct. So in this case, what do we receive? With the first and fourth bit in error, we're going to get 10101. It's not a valid code word, it's not one of the four. So we say, error detected. Error detection worked here. Now, when there's error detected, let's try and fix it. See if we can fix it. And the way is find the hamming distance between the received and the four valid ones. Between the received and the first valid code word, what's the distance? How many bits differ? Three bits. Second one, two, third, last. Okay, so we want to get the nearest, the closest, the one with this minimum hamming distance. What do we get? Ah, there's two, all right? Two with a minimum of a hamming distance of two. What should the receiver do? Which one should I choose? Well, different options. Choose the first one just because we think we're lucky. Or choose randomly, okay? There's two to choose from. It's saying that I receive this, but it's close to these two ones. So let's guess it's one of these two. All right, so we think, well, maybe what they really said was one of these two. Now, if we try and choose one, let's say we guess, and maybe it's the first one. So let's use this, then we get the received data, zero one. That would have been a good guess. But if we guess the second one, we would get the received data, one zero. Transmit zero one, receive one zero, that's a bad outcome. So we don't guess, okay? Because if we guess in this case, there's 50% chance of getting it wrong and making a mistake at the receiver. So we don't guess, we just say, we cannot correct. We cannot correct this error. Let's leave it as is. We don't receive any data, and we must correct it in some other way. So this is a case where we say, say we cannot correct this, cannot perform a correction. We know there's an error, we detected an error, but with the current algorithm, we have no way to know or to try and correct what it is. So we'll say what's received, nothing. So this just performs error detection in this case, similar to parity check. Parity check didn't correct, it just detected. In this case, we've detected, but we haven't corrected the data. So we've got an error. How do we fix that? Maybe this is the time to ask the source to resend, okay? I realize there's an error. I don't have a way to know for sure which one it is. So maybe ask for a resend. So that's the right approach there. That's the good approach, because there were errors, we detected them. So that worked. We couldn't correct them, but not correcting is better than trying to correct and getting it wrong. If we tried to correct by guessing, say the third one, we would have got it wrong and got the wrong data. We would have thought we had correct data, but it would have been wrong. So this is an okay outcome. It worked, but just not as good as the previous case. One more, try the third and fourth bits. Third and fourth bits are in error, same original data. So zero, zero, the first two, then we get a zero, zero, and the fifth bit is the same as the transmitted code word. So this is the received code word. Valid or not, compared to the four valid ones? No, it's not valid. It doesn't match the four valid ones. So we say error detected, something's gone wrong. So same approach, compare, we could do it quickly. Compared to the four valid code words. Difference between received and valid number one? Just one bit. Between received and valid number two? Two bits. Received and valid number three? The first two bits differ? Received and valid number four? All of the bits are different, five bits. Now we have a unique minimum, we need a unique minimum. We perform our correction, we choose this one, we say okay, I receive this, it's very close to this one, so let's assume the transmitter sent this code word. And let's now assume the data received is the corresponding data for the first code word, which is zero, zero. What's the outcome? We have a problem here. We transmitted zero, one, using this approach, we detected an error because the code word received was invalid, then we tried to correct it, we found the closest one and chose the closest one. This is the closest to the received, choose that corresponding data, zero, zero. So that's what the receiver thinks it has. The receiver thinks, ah, I've gone well, I detected an error and then I fixed it. Now here's the data, zero, zero. But we know that the receiver made a mistake. The transmitter sent zero, one, the receiver thinks it got zero, zero. This is an example of our error correction scheme failing. Didn't work. And it's possible that we can, in the three cases we've seen here, the three outcomes. If there's no errors, no problem. With errors, we can detect and successfully correct them. We may detect them, but not be able to correct them, which is okay, but not as good as the first case. And we can detect them and make an error in trying to correct it. And that's a bad outcome. And in fact, there's another case that we could not even detect an error when there's errors. If I receive the code word, if I transmitted the same data and received the code word, one, one, one, one, one, one, zero, I would think it's okay and make a mistake. So there's different possible outcomes with our error correction scheme. We'd like it to detect and correct. If it can't correct, at least detect. Not make mistakes, like the last case. And with all error correction schemes, they have this error correction capability. They have different abilities in terms of all the possible data that it can receive, what happens with different types of errors? How good is it at correcting and detecting? And people can compare them that way. You could try some other combinations of errors. And you'd see what happens by seeing if it's valid. If it's not valid, find the minimum hamming distance. And then assume that's the data. So they're not perfect, but they can be designed to give high probability to detect and correct errors. Not 100%, but very high. Last thing, what's the efficiency? For every two bits of payload we want to send and get delivered, we actually have to send five bits in this example. We're 40% efficient with this. We have to send a lot just to get two bits through. So that's the problem with these error correction schemes. Generally compared to error detection, they require more overhead. And if there are no errors, let's say in a link with no errors and we use this scheme, then we spend a lot of time wasting our link because we're only using 40% of the link to send our real data. If there were no errors, then that's very wasteful. If there were lots of errors and we fix them, then maybe this is okay. So we need to compare on efficiency. Similar to error detection, the longer the code word in this case, relative to the data, if we increase five up to six, up to seven, the longer the code word efficiency goes down, but the ability to detect and correct goes up. So that's one example of a simple forward error correction scheme. There are more complex ones. We went through that case. Actually, that's all we have. Flow control is another thing that we'll consider when we look at the protocols for how do we retransmit? If we detect an error and we don't have forward error correction or we can't correct the error, we should ask the source to send again. There are some methods for doing that, which we call ARQ methods. We'll look at them after the midterm and there are similar concepts to use for flow control. So we'll introduce flow control after the midterm.


YouTube shorts will give you the most reach right now tiktok number two, but YouTube shorts is right now YouTube is pushing algorithm to try to beat tiktok at their game And so they're throwing more money at it and they're rewarding newer accounts quicker That's actually what tiktok did to beat instagram talk about evolutionary stable systems Instagram was the king because they had this monopolistic effect They get cocky they start focusing on metaverse weird shit And then the chinese come in take tiktok and start to grow now tiktok will most likely get real cocky Start banning people start doing this and that and other things stop paying creators as much It's just the nature of things to get lazy when you're at the top and then guess what'll happen Next thing you'll have is the rise of youtube


The time limit is 04.45. The head is secure. The head is secure. The head is secure. Pulse. Pulse at night, sir. I'm all set. Please, sir. You close front, Pulse. You go outside. You go home. You close underneath the lights. I'm all set. When this recruit wakes up in the morning, it can be quite challenging because the drill instructors come in all of a sudden and are screaming, and you may have just been dead asleep, but now you have to get up. You have to get your linen on. You have to get your pillow.  And it, at the beginning, can be very, very surprising and challenging. No one advice that I would give to pullies coming in to recruit trainings here is that start moving with intensity and move very, very fast. So First Face is all about taking that civilian that we received and receiving and breaking them down into a recruit. It involves early mornings, waking up at 0405, getting online, making their racks, which is something they've probably never done before, and keeping the house clean at all times. The drill instructors are looking to cause constant stress throughout the entirety of First Face. This is to make sure that they understand where they are at and that they obey every order that we give them. Every Sunday morning, the recruits will wake up, go to Chow and then be delivered to each individual recruits' religious service. There, they'll spend anywhere from an hour and a half to two hours at their religious service and then go back to the house for further training. Change only back! This drill goes back to the days of Musket Fire, where we had to find a certain strategy in placing men with muskets in a formation to optimize that slow rate of fire. Now today we used drill to establish teamwork and discipline. Now these individuals that come here to become United States Marine Corps recruits, they're used to touching their face, doing whatever they want to do here in formation, they don't have that luxury. We take that away from them. Now that's going to establish that discipline to understand that there may be a circumstance where they're put into where they don't have that luxury to do that in combat, where they have to understand instant willingness and obedience to orders and drill is the foundation of that. IT is very intense. Whenever you do something wrong, they take you to the quarter deck and start making you do physical fitness. And as fit as you could be, those drill instructors will break you down. IT, or incentive training, is a tool used by drill instructors to fix discrepancies. As the recruits get here, we as drill instructors demand perfection every day. Once a recruit is imperfect, you'll end up on the quarter deck. For future recruits, it's important to understand one thing. No matter what kind of physical shape you're in, when you get to recruit training, the stress mixed with the exercises is very difficult.


what's going on guys i'm going to take you through a carnivore diet day of eating and if it did not start at the grill where would it start the first thing i do at every single meal whenever i want to eat is i get my grill started so that i can prep the meat while it heats up and this is a Weber spirit propane grill but i actually cook over a wood fire and let me show you how so if you look inside there's no grease plates or heat distribution plates in the grill i took those off and i put the old grates on top of the burners and then i bought some new grates and what i do is i lay any hardwood over those grates on top of the burner so this is birch wood i usually prefer oak or cherry for flavor and this is essentially all i really did it's very simple this is really quick it literally takes me like a minute or two to chop up the wood throw it in the grill and the nice thing about this is how quickly it heats up so all i do is i just i turn the gas on burner lights the flame the nice thing about this is how fast we get a very very hot grill the hardwood is very dry we have a gas assisted start so we will have our own pillar of hell in about three minutes all right guys it's been about i would say five minutes and this fire is nice and hot in regards to what i'm eating today i have a grass-fed beef belly really beautiful orange color on it i'm just going to throw this on the grill and we're going to quick sear on the outside just to caramelize it get the mired reaction and then we'll go back inside and we'll let it sit in the oven for a few minutes in addition to that sometimes i cook some meat for my family so today for them i have a ribeye steak that i'll just throw on the grill and also for myself i have some marrow bones if i don't eat these myself i'll throw some of the bone marrow on the steak for my family all i'm really trying to do is just get that wood fire flavor on the outside of the belly so you want to make sure not to put too much wood in the grill because you want the flames to be licking the surface of the meat you don't want the meat to be engulfed in flames that's the difference between getting a black char and a nice brown crust but keep in mind we don't actually have to do that to the fat because the fat is just going to melt and render what we're trying not to burn is the muscle you guys want like a steak grilling ASMR video just like 10 minutes of me flipping a steak the beef belly is nice and caramelized it's still super raw in the middle so we'll throw it in the oven when we go inside for bone marrow i put it directly in the fire and and since the bone marrow is fat it can't really burn it's just going to keep melting so the main reason i put the bone marrow on the flame is to kill any bacteria on the outside that was maybe from the butcher saw that they used to cut it bone marrow about 10 seconds on the main side and just like the belly i keep the marrow raw on the inside i just hear the outside my family's sake of course i'll just throw it in the oven later and bring it to temperature if you guys want to know more about cooking principles and how to get a really good sear on a steak i have a video you can look up new york city style steak it's a great explanation of how you need to dry out the steak surface you have to have fat to caramelize the steak all right so i'm just going to finish grilling my family steak and then we'll go inside and eat this beautiful steak crust we got only took about three minutes this is why i love doing this wood fire method so much now the steak's completely raw on the inside so we can either continue to cook it on the grill or we could just take it inside and put it in the oven saves a lot of time i just threw the beef belly in the oven so my goals in general are nutrient density low inflammatory foods and part of nutrient density is consuming fermented foods this is because every one of our ancestors consumed large amounts of high quality fermented animal foods to get vitamin k2 vitamin k2 very important for calcium metabolism blood health bone health probably one of the vitamins that we're missing the most of in modern diets and here if you're wondering why this jar is in a plastic bag it's not too uh doesn't smell too good so what i have in this jar is bone marrow what i did was i scooped some bone marrow out of the bones i put it in a jar and i let it sit on my counter for about a week and this is not for the faint of heart uh indigenous preparations might have been examples of it's uh indigenous examples might have been like kiviak or muck tuck they would take maybe like a hundred birds thousands of birds even bury them in a seal skin and let it sit for over a year in the ground in the warmer climates they would let fish ferment in the sun for like six seven eight days so there there's no real temperature requirement to make high meat it just has to be in an aerobic environment like a jar with air in it and it needs to be maybe aired out once every few days this is akin to cheese and the reason i used bone marrow is because well bone marrow is very nutrient dense i think it would be pretty high in all the fat type of vitamins before it ferments so maybe the k2 content is higher when it ferments uh frank why don't you just eat some cheese yes i could eat some cheese but i am allergic to dairy uh parmesan oregano i think is a very affordable and high quality cheese made from raw milk for any of you guys uh if you did this with this is so funny you guys saw the video uh where i was wearing the beard for the testosterone there's a beard hair in this uh but when you do high meat would muscle meat it's not nearly as funky and it's not as nutrient dense i think doing high meat with something like bone marrow or fat is really really good from a nutrient perspective so all i do with this is i just have a few bites of it every day and it doesn't taste nearly as bad as it smells but i also like about this is when i eat the fat first i become more satiated so it's a great way to gauge your appetite and when people tell me they eat you know three four pounds of meat a day like shone baker i'm like it doesn't have to be fermented marrow to not want to eat anymore you you just need to consume a high quality fat source and that will satiate your appetite but there's something to be said about the nutrient density of foods like this and how satiating they are you can't really eat more than a few bites without being full so rotten meat is also referred to as high meat sometimes in a book the fat of the land definitely check that out if you haven't read it let me know if you guys want to know more about like preparing this and making it and uh who knows maybe i'll do some videos in the future on it if you guys are interested i think i actually did a video where i made some if you guys are curious the meat has to be fresh most important thing and ideally high quality meat pretty much put it in a jar air it out every two days okay so i took my beef belly out of the oven but before my beef belly here i have some kelp this is kombu this is from main coast sea vegetables uh this is on my amazon shop you can also get it at Whole Foods it's a low temperature dehydrated seaweed it has a good amount of potassium some magnesium but mainly for iodine the main reason i consume this is iodine secondary sometimes potassium so this is a third of a cup eight servings per bag i probably have about two servings and what i did was you take the dried seaweed you put it in a cup with some water and it it rehydrates itself you can eat it when it's dry but it's a bit chewy and this is something that i would do maybe once a week once every two weeks just to get some iodine in uh you know those indigenous groups those hunter gatherers that lived in mountainous areas had to go down to the ocean to gather things for iodine so iodine very very important i use seaweed when i don't have access to fish row or fish eggs and since salmon row is out of season since i haven't placed a bulk order at the fish market recently i haven't been consuming any iodine from seafood directly although i do recommend shellfish crab lobs or whatever it may be are excellent sources of iodine and i recommend them over seaweed but this is better than nothing so the seaweed sat in water i think it takes like half an hour an hour to soak so i take the seaweed out i'm going to save this water and i'll drink it later but what i do is i just chop up the seaweed and then i'll just chew it all right so let's take a look at the cooking temperature on this beef belly and it doesn't have a cooking temperature because it's raw on the inside normally i do salt my food but i got some blood work recently and my chloride levels are a little bit high and i haven't really been craving salt and i've also been getting muscle cramps in my leg so i'm going to experiment without salt for a couple days i'm going to use seaweed for some potassium and see if my hydration pattern changes or if um anything changes at all cuts like belly are a bit tougher to chew but if you keep them raw and you slice against the grain it's not too bad so the meat is essentially entirely raw i'm technically a raw carnivore it's just seared on the outside for a little bit of flavor and i mean that also kills the bacteria but i'm not too concerned about bacteria if i'm eating raw bone marrow so this beef has that like farmy grassy hay flavor it's not really like butterscotch i think what i'm gonna do is i feel like having it a little more cooked today so i'm gonna throw it back in the oven and maybe cook it too rare instead of raw completely and there's no benefit to raw versus cooked food i say this time and time again every indigent school consumed raw food cooked food fermented food there's no right or wrong what's right is consuming a variety of high quality animal foods so i just put the steak in the oven for a few minutes on broil cooked food serves the purpose of calories primarily in indigenous diets raw food for nutrients and fermented food also alters the nutrient profile as well as the fatty acid profile of the food so there's benefits to every single preparation of food and they're all necessary in the human diet as this beef this beef is so tasty it's crazy no salt no seasoning just a fire and some meat a meal without salt is like 80 of the enjoyment of a normal meal with salt maybe like 70% so i definitely miss salt even if i just do it for one day without it but i'm gonna try it for a couple more days and i'll maybe i'll give you guys an update on that maybe we ate total i don't know maybe like 50 grams of the raw bone marrow and then we just had the beef belly so i'm guessing we ate about a pound and a half to two pounds of fatty beef belly in regards to vitamin profile of this meal we just have a balanced amount of all the fat soluble vitamins we have some vitamin a some vitamin e some vitamin k2 actually plenty of vitamin k2 from the fermented bone marrow and all of these foods since they are grass-fed and high quality have decent amounts of the precursor linoleic and linoleic acid so it's safe to say we're getting a decent amount of dha from these foods and that if you're consuming a diet like this with high quality grass-fed fat it's not too necessary to consume fish or really consume any fish at all if you'd like to you can have brain tissue maybe once a month once a week depending on how you want to increase your dha intake but i don't think i'm going to eat anything else today i prefer to eat earlier in the day i digest and then i end up sleeping better so thank you guys for watching if you guys would like to support the channel please like subscribe and share the video if you guys want to check out my amazon shop the seaweed's in there patreon i do have some exclusive videos on my patreon and i do answer questions in-depth on there i'm on twitter i'm on instagram you guys can check that stuff out if you guys want to buy my hygiene products from my tooth powder to my hair pomade deodorant all that stuff is on my website frank-tofana.com and let's but not least if you guys would like to reach out to me for one-on-one consultations in regards to increasing the nutrient density of your diet whatever it may be you can send me an email or reach out to me through the contact form on my website all of that stuff is in the comments down below


Hey it's Missy! Thank you for watching! For today's video I wanted to share some more Haiman hairstyles. These range anywhere from easy, medium to a little bit more challenging, so let me know in the comment section which one is your favorite. Like and subscribe, click that notification bell, all the usual things, and let's get started! For this hairstyle I need to divide my hair into two equal sections. So I'm going to first divide out a couple small pieces to frame my face, and then I'm going to create a zigzag part line. Starting on my forehead I'm going to zigzag my comb along the center of the top of my head, and then continue the part down the back of my head to split my hair into two sections. I want to be able to hide my part line so that's why I'm doing it this way. Once the hair is divided up I'm going to work with each section individually. So I'm going to start with the section on the right side, and I'm going to brush this hair up towards the crown of my head where I want my bun to sit. I want to position the hair where I'll be placing my bun, so once the sides are all smoothed I'm going to take an elastic band and tie this over the section of hair, keeping the hair as close to the center as I can. And on the last wrap of the elastic I'm going to pull the hair partially through to create a loop in the hair. So now I'm going to repeat the same steps with the hair on the left side. So I'm going to brush all of my hair from the left side up towards the crown of my head, and I want to position the hair as close to the other section of hair as I can. So once the sides are all smooth again I'm going to take an elastic band and tie this over the hair. And again on the last wrap of the elastic I'm going to pull the hair partially through to create a loop, and then I'm going to take the loop on the left side and slide my thumb and point your finger through the loop, and then grab onto the looped section on the right side. So I'm going to pull this loop through the middle of the left loop, and once the right loop is pulled over to the left side I'm going to lay them against my head and then pin them in place with bobby pins. And the trick here is to pin the hair wherever your fingers are holding it in place. I also made sure to slide the pins along the top of my head so they slid underneath the hair and didn't show anywhere. Pin the hair wherever your fingers are holding it in place. And then once that's all pinned down I used my comb to gently comb up the back of my head to help hide that part line that I created at the beginning. So now with the two little ends that are sticking out under the bun I'm just going to tie this into a knot. So crossing one side over the other and wrapping it around the section so it's pointed up on the opposite side. And then I'm just going to pin these pieces of hair underneath the bun using some more bobby pins.  For this hairstyle I'm going to begin by dividing my hair into sections. So I'm going to divide off the top section of hair starting at my ears and going up to the crown of my head. Next I'm going to divide off two small one inch sections right behind both of my ears and I'm going to add this into the top section of hair. And then I'm just going to clip away this top section so I can use it later on. And now with the remaining hair at the back of my head I'm going to brush all of this hair towards the right side. I'm creating a French twist style so I need all of the hair on one side so I can create a base for the roll to pin into. So I'm going to take some bobby pins and slide these vertically along the back of my head pinning the hair down so it stays brushed over towards the right side. And this will create a base for the rest of the hair to be pinned into. So I'm going to take some bobby pins and slide these vertically along the back of my head pinning the hair down so it stays brushed over towards the right side. So now with the ends I'm going to wrap these back over the back of my head towards the left side and smooth down the hair using a comb. I'm going to gently twist this section of hair so it's tucked underneath twisting towards the right side so the hair is tucking back under itself. And I'm going to twist the hair starting at the nape of my neck and then working up towards the top of my head so the ends are left out of the twist. And then I'm going to pin the hair in place with bobby pins. So I'm going to grab a small section of hair with each bobby pin and then slide the pins into the twist towards the right side of my head. This will hide them underneath the hair. And I'm going to continue sliding in bobby pins until the section feels secured in place. And now I'm going to let down the top section of hair that I previously pinned up and I'm going to combine it with the ends from this twisted section. I'm going to use this hair to create a bun at the crown of my head sitting at the top of the twist.  And on the last wrap of the elastic I'm going to pull the hair only partially through to create a small loop of the hair. I want the ends of the hair to be going forwards towards my face so that I can create a certain type of bun. And then I'm going to take these ends and I'm going to gently backcomb the hair just to create a little bit of volume.  And then I'm going to spread the hair out so it hides the small looped section. And I'm going to pin the hair in place underneath the elastic band right at the top of the twisted section. I wanted this style to have a french twist vibe but as a high bun hairstyle so let me know what you think of this look down below in the comment section. For this hairstyle I'm going to begin by brushing all of my hair up into a high ponytail. I want my bun to sit at the crown of my head so this is where I'm going to brush my hair up to. Then I'm going to take an elastic band and wrap it over the hair to combine it into a ponytail. Now using a clip from my store Missy Sue shop I'm going to lift my ponytail up and place the open clip over the hair band. And then I'm going to carefully wrap the ponytail over the top of the clip and then tuck the ends up the left side of the clip. And I want to make sure to slip the ends inside the teeth of the clip so I'm just double wrapping mine underneath. And then I'm going to let go of the claw clip so it clamps down over the hair band over the ends of the ponytail against my head. And then I'm just going to carefully spread out the hair so it spreads out over the clip forming the bun. Let me know what you think of this look down below in the comment section. Thank you so much for watching I hope you enjoyed today's video. Let me know in the comments section which of the three hairstyles was your favorite. Make sure to click the thumbs up if you like this video or the thumbs down if you didn't. Either way it helps me out. Like and subscribe, click that notification bell, all these real things then you'll never miss any future videos and I will see you next time.