Hey folks. Okay. We got recording. We're good. Do the proverbial. We'll do two minutes this morning. We seem to have. Quick attendance these days. And if folks want to pop in that you're here. Here's our hack page. Actually, Niaz, did you want to cover the. Work from last week yet. No, I don't have the changes. And yet I'll close that next week. Okay. All right. Why don't we kick things off here? So. Thanks for folks for the feedback on the status report. We got that out last week. That's been helpful to be able to just point at a document instead of explain all the various moving parts. And I think we'll get a little more refined for the next one we do whether it's next month or not. I don't know if we'll do a monthly or not. Okay. The progress that, because so some of the feedback that I was getting was, Hey, is there any real progress happening here? So that, that was good feedback. And what can people do to contribute. So that we can make further progress. And those are great data points. And I guess the third one is what is the timeline? As with any open source project, the timeline is always more challenging. And so it's always a personal time and so forth. So the, no, everyone is an interesting one in the sense that it has real business drivers behind it. So that is certainly helping to keep it going. I know. At least the AWS folks and us in Azure are. Have to deliver this for. Commitments to our customers. But the nice part about that for this group is. Again, as Microsoft being a software company, in addition to a cloud, we need to sign our software, which will be used on other clouds and on-prem. So that's one of the things that's really helping keep this thing driving as a true open source project that by definition should be able to be implemented on any registry or the OCI conformant and what we're probably going to go out, explain a little bit of how we'll go down with the artifacts approach. I like to getting this stuff promoted. So that's kind of. A little bit of background on timing and the, the details of the timing is. I'm hoping to get something through spring. That will have something functional. So the three rounds I'd like to try to do. Is get something working with distribution, the CNC of distribution project where somebody can just stand up, run locally and do the testing back and forth. That's to some extent the easiest because. We can do quick iterations and it's certainly easy to make a change to a fork and do docker run locally that it is to deploy to clouds and other on-prem environments that customers expect to be stable. So that'll be the first, the next round that we're looking to do after that. As we have more confidence in that, then we actually will start rolling out to our stamp deployments in Azure for customers to be able to use. We'll do it in a subset so we can, you know, validate that feedback and we hope others will be able to do the same. And then of course we'll move to some kind of production thing. The, or public preview is probably the better way to say it. The thing that's come up though is that there is, obviously there's more of this end-to-end workflow that we've defined. In fact, if I pull up our requirements. Doc. Pull that up. And I'll share this. If we go to the scenarios that we've got here, you know, we've been talking and how we want to be able to deploy this out to a container host. The, and I kept it fairly generic here. The most obvious, you know, generic container host would be Kubernetes and not cloud specific, just, you know, Kubernetes instance. And the thought process is if we think of policy management's OPA gatekeeper, the ones that come up the most likely there. So this is a place that I'd love to get some more folks to help here that actually have SOPA and gatekeeper experience so that they, you know, we can do the, hey, open gatekeeper this way. And we see what we're trying to do with notary signatures. If we just did me this one change to open gatekeeper, it would make things fundamentally better. It's possible an open gatekeeper work just fine the way they are. I won't by any means claim any kind of expertise on that. So that's the most obvious place that we just have done zero work in officially as part of the larger group. I'm looking at Dan said he was going to join the second half. So I'll lay out a couple of areas and then we can talk about how we want to go about it. So that's to me is the biggest void that we know we were making lots of assumptions around what we think could work in this environment. So we definitely love to get that part figured out. We've got rough prototypes on CNCF distribution that we've been doing. There was prototype one, which really just hack stuff in with the third link these two artifacts together. So you push the image, you push an artifact, sorry, push a signature as an artifact. And then there's this third totally hacky API that would link the two together. Now with the new OCI artifact manifest. We could submit that image with the, sorry, submit the signature with the link to the image in it. And that's the work that you're seeing a couple of PRs that came in fresh this morning, which was Monday in Asia time. So I haven't had a chance to look over them yet, but that's the discussion we had last week where we're trying to make more progress on that. We'll actually add the OCI artifact manifest support to distribution. It's sorry, yeah, to distribution. It's in the notary fork. And then we'll add artifacts support as well. And then there's the artifact, sorry, the manifest links API that lets you query the signatures for any artifact and image in this case. So that's the progress we're making there. I don't know how far we'll get with the distribution one. And in fact, now that we have the distribution working, you know, the actual weekly meeting and people on it, I'm hoping that some folks there will want to jump in because they run distribution for their registries. So they might be interested to get that going in deeper than what we're going to implement or what we would prioritize from an Azure perspective. So that's part two. And the last part is we're iterating a little bit of an aura as to support the new OCI artifact manifest proposal as well. So that when the aura's libraries will be there so that you can push that signature up or use it for S bombs or whatever. So that's kind of the three areas. There's OPA validation. There's taking the CNCF distribution to the more complete level. And the aura's work that. Well, I guess there's the NV two or as work. I kind of think of those together. Thoughts. Volunteers. Just a thought around, I don't know if this is how to scope, but the support for our continued maintenance on notary Vee one. Is that a consideration? Not from this working group. We set out early on when we made commitments to the scenarios and requirements for notary Vee two. That we were explicitly saying we're not. Non goals compatibility with notary Vee one. And this working group isn't doing anything with notary Vee one. Basically, we just found the, the limitations of notary Vee one to extensive. To. And we haven't have enough. Deployment of it. In mass that. Justifies trying to bring something forward there. So I guess my other question would be, is there. And this is probably way further down the line by a transition. Point of within the CNCF or within project to recommend Vee two. I mean, the goal is notary Vee two should, well, to be fair, notary Vee two, we've very explicitly focused also on a registry approach that you can store and persist these signatures in a registry. Now the signature is a separate spec. It's a fairly, you know, finite spec. It basically says you can put a hash on a digest. So it's not overly rocket science. It's the, it's what is the exact format and what is the end and experience that makes it complete. So our goal has always been that notary Vee two from content from container images to other content that can be put in a registry will completely supersede notary Vee one. Not necessarily in a compatible way, but in a superset way. And what I mean by that is anything that was signed with notary Vee one would be re-signed with notary Vee two. That's been the bar that we felt that was the right bar at the time. Cool. And if there's something we're missing that we should bring it, you know, include that's obviously good to know. The fact that notary Vee one is limited to content has to stay in the same repo came and move across another repo in the same registry kind of made it fundamentally. Not very broad. I mean, we support content trust in Azure. It's been great to get feedback from customers that say, Hey, this is great, but it's not what I want. So it kind of helped us facilitate the conversations of what do customers want and need. And we believe those are all covered in the, the notary Vee two goals. So I have a question about the key management process because I feel like it'd be really hard to use the prototype until that piece of it is solved. And actually, I have a similar concern with kind of the, some of the other security goals that we've been pushing off and like making a, you know, publishing a complete prototype before those things are finished. So just be my concern. No, that's fair. It'd be good to identify exactly which ones that to me the, the being able to persist keys, certainly the public key and the private keys. You know, we've said that we want to make sure we leverage existing key management systems, whether it be cloud providers or open source ones. We don't want to reinvent that storage and persistence model. And the private key one doesn't seem like as much of a concern because it's part of whatever people or companies do, they have a standard model for how they acquire those keys and they sign them. The public key is an interesting one on how we discover and find those public keys. At this point, it's not considered blocking. The one to me that's the most that I do consider blocking is we need to define a key revocation solution, especially for, you know, as we say, air gap is part of our core goals. So that's what, you know, Niaz has been making good progress on and we need to get further. But that's, those are very fair points. I think for an end to end prototype, yes, we definitely need everything in place, but we should be able to scope prototypes down to individual components, which should have very well defined boundaries. Right. So if you're looking to do a prototype of assuming the keys on device or accessible from the device and we generate a signature and we can validate that the integrity of the artifact hasn't been compromised. Those are things we should be able to do without key distribution or other mechanisms in place. So I think that would be a good scope for how do we create signatures, manage signatures and get them to the end devices. But I agree for overall prototype, we need all the components in place, but I think we can move ahead with different components. Anybody else? No, I think that makes sense to me as well. It's, it's definitely valuable to get the key management solved, but I don't think it's blocking for us. I think there's a lot of work we can do without that. It's, I mean, I think we're making assumptions and I'll use the word assumptions that we can layer that on. Certainly from the discovery ability that, you know, we said we do not want to support tofu for trust on first steps. So that means that there has to be some kind of discoverability model for it. But it's not blocking, right? It could be, here's the doc that says, Hey, this is where you go get the web at network signature or the Docker signature. The idea that we can incorporate that into some kind of discovery model is thought to be additive. The, like I said, the key revocation is the one that kind of gives me the idea that we can, you know, we can do a lot of things because I'd like to have the standard flows that are automated, you know, and what, including opa validation, right? Whatever notary libraries that we have should hopefully have a way that can just without the user having to do anything special, it automatically, you know, beyond maybe some kind of configuration for air gap environments, be able to know where to go and look if a key was revoked. And I'm doing obviously some big hand waving over that. And I think that there are a lot of systems and especially security systems that have really suffered from not designing in key revocation from the beginning. If you look at like TLS SSL, I think that they, they hacked on a solution that I think works, but I think if they had, if that had been one of their original requirements, I think it would have been designed differently. And I think that that's definitely something that we want to avoid here. That's totally fair. Yeah, as you up for that challenge. Yeah, I don't disagree that that we need to, we need to address that. And I think we are kind of looking at it from, from the beginning. I just think that the prototypes can, we can have more clear defined boundaries, right? Signature validation happens in two stages. The first stage of signature validation is essentially validating that the bits that you've got are the bits you were supposed to get. And then the second set of validation is, is the signature expired? Is the signature from a trusted source? Has the signature been revoked? I think that second stage of validations is not something, is something that's blocked by key distribution, but the first stage of validation I think should be doable. And I think that's what I would focus on for now on the, on the other prototypes is making sure that we can do that validation that at least the signature tells us that this artifact has or has not been tampered with. That's fair enough. Those are definitely kind of the two pieces. So Marina, my, my question back on that is as you're thinking through like TLS revocation and other scenarios that made it more difficult. What are you thinking of in terms of the notary implementation that might need to be factored in for handling some kind of key revocation, other key management? Basically, wherever you get the, basically you need a way to say that this, this file is no longer valid and you need to have a way to have that kind of built into the process of finding the file, such that it, yeah, it's, it's trusted through another third party source because the problem with things like revocation lists, which are kind of the add on solution that's most common when it's not built in from the beginning is that, you know, it's, it's, you can get someone an old version of it. There's all these kinds of other problems you then have to solve with the revocation list, which kind of just creates its own host of problems. Whereas if you make key revocation part of distribution, you can kind of eliminate that set of issues. I think we'd want to clarify that in a doc. Part of the way the key revocation works today in TLS SSL is the certificate is telling you what the CRL or the OCSP URL is and that's meant to be that distribution list, right? And I think there's two ways of handling that distribution list. One is saying here's the list of things we don't trust, which is what TLS and TLS and SSL CRLs and OCSPs do. The other one is what TUF has in place, which is saying here's the list of things that we trust. So it's a question of what's the more efficient model. So I think if we want to do a comparison there of either vending the list upfront or having the list being queried, there's trade offs there. But that's one of the mechanisms I think we'll want to close in as in what are the trade offs, what do we want to share? So do you want to maybe start drafting a document there that compares the two models? And I think we can use that to drive the key revocation conversation. Yeah, sure. I'd be happy to put something together. And as the non-security, no, semi non-security person when thinking through some of this stuff, are we looking at basically the difference between a survey you have to go out and poll for revocation, say is this thing revoked versus a certificate that is short lived and therefore you have to constantly update that to be able to keep it valid or is there a third option? I'd be interested. Go ahead. The third option I'd say is the snapshot in TUF. TUF actually does two of those. It does the snapshot and the explorations. But yeah, it's kind of a combination. Yeah. I think it might be kind of like we wrote down the requirements here of what we want to do for notary. V2 is also to kind of scope out some of the problems that we're concerned about with the various solutions. And that is that content is on multiple registries. Content is on from multiple owners within the same registry. So we have all of those permission boundaries. They go into air gap environments. The registries have constant updates and other than tags. And eventually metadata, but certainly other than tags, a registry, everything that goes into registry is immutable. So it's highly scalable, highly efficient. And we take advantage of that in things like geo replication, availability, his own supports and reliability and all the, the ideas that go on there. We just, we want to make sure that the solutions that we're proposing meet those abilities to be able to continue. And I think that's been one of the biggest angst we've had about some of the, the various discussions on how we do this. So I'm not saying I know what the answer is. I'm just trying to say here's the, the rocks that we have to work around to make sure that this thing can fit in that environment.  It's not just the performance because you still have contention. You still have security boundaries. So I don't know how to capture that in the best way. But we have to consider those. Again, multiple, multiple designs are great independent. It's do the designs meet the requirements and that's what will differentiate one design versus another that we can actually implement. I think having like a face prototype approach makes sense where there's multiple prototypes we can build in parallel. I think the key management curation can be one prototype on its own. But some of the ideas that you had about landing design and then you deployed them so accordingly. And I think most of the signatures, distributing signatures can be another prototype. So as we're thinking about these prototypes, I think having what are the different tracks and owners would help there. So Marina and Nia, are you tag teaming on this one? Yeah, we can come back with a proposal on what we anticipate will be creation, storage and distribution. I think that's a separate prototype on its own. I agree. Yeah, and I love this iterative model.   And you kind of get to a point where you feel like you're playing back the same thing in your head because you need more data to come in to help take it to the next level. And that's why you kind of hear me talking about, let's get something working where people can stand it on their own, docker run, then you have a registry running, then you have an NV2 client and hopefully an OPA client or an OPA plug and whatever it's called. And then you can actually start testing this yourselves and we can start having whatever you want to define as users, customers, users, other people outside of this group that can start saying, well, it's not what I thought it would be. I thought it would be this and this is what I was trying to do. Like, you don't hear me saying when we're going to declare a 1.0 yet. You don't hear me saying when we're going to GA a feature in one of our clouds yet. We're, I think the really important thing is we have so many people desperate to sign this content that can move between sources registries that we got to get something in their hands. I feel pretty good about what we have so far. We basically have to deliver on the thoughts that we have and then get the next round of feedback on the overall experience. And of course, the revocation is like I said, is the gap. So I'd love to see more on the revocation stuff. I feel hopeful that tomorrow's meeting with the distribution group. I'll hopefully get somebody to help with taking the distribution to the next level with the stuff we've been doing. I'd love if somebody is interested in doing more of the OPA validations. And Dan's here and I saw Dan pointed me to some stuff that he had done with OPA. Dan. Hello. Hi. The conversation because you said on the Slack channel that you weren't going to be able to make it for the first half, we're basically breaking up the different places that we think we want to do the next level of investments. And one of the areas is some OPA validation. Nice. Yeah, so I've been trying to figure out how to plug in with OPA. One of the challenges and one of the reasons I originally kind of gave up on this approach early on was you can extend OPA super easily, but what you get is a, your own custom compiled OPA interpreter that you can use wherever you want to. If you want to use any of the actual things people use OPA for though, like a gatekeeper or any of the other things that have OPA built in, they have their own compiled custom OPA interpreters. And there's no real recursive extension story. So there's no great way for me to get my plugin, my OPA plugin into OPA gatekeeper, which is where you really want it. So yeah, you can write cool OPA stuff and then figure out how to build and distribute it to your own custom systems, but I couldn't really come up with a way to get any of this stuff integrated into the places where it seemed like people would actually want them. And they've acknowledged that the OPA community knows it's kind of an issue. I just don't know what a good next step there would be. So what is, so again, just to kind of backtrack a bit, this is one of the reasons why early on I really wanted it somebody that's part of the core OPA gatekeeper community. We have some folks in Azure, unfortunately they're just, they don't have the bandwidth to work on this right now. Because my concern is always, my concern with a lot of these things is, hey, if it's closed and I can't get what I need, then I give up or I try to hack on something from the outside. But if we just make this one little change, whatever one and whatever, what number of quantity of one is and whatever the definition of little is, does the scenario just open up and it just works. So for the people that, the experts of OPA, the maintainers of OPA for lack of a better word, they of course know all the things are varied and they know what to open up. Whether it be somebody that takes the lead and works with that community or somebody that's in that community, I don't really care which, we just wanna be able to figure out, how do we make somebody like you be more comfortable implementing it because it was something was fixed or added or whatever. Yeah, and I guess it comes down to the exact scenario. The scenario I had was trying to get this metadata in a place where you could use it to enforce decisions at deploy time, which is what gatekeeper is for. So if I could summarize it in one sentence, it would be a way to extend the version of OPA that is in gatekeeper without making me build it all from source myself to run gatekeeper. Right. And then the notary scenario is simply, somehow there's a config provided, whatever policy that says the key, it must be one of these keys, one or more of these keys. And in our example, it must be the ACPI rockets key. There's my scenarios. But you could also say, not only it must be an ACPI rockets key signature using the ACPI rockets key, but you could, there's a second piece that we've been looking at that it also has to come from the registry specified in the C name. So there's basically two choices because I might wanna consume a Wabbit network software directly and I don't sign it. That's a perfectly valid scenario. I might wanna consume software from Docker Hub and I don't do any additional signatures. And obviously, well, not obviously. We hope customers are not trying to deploy production assets from public registries and they're bringing it in their own registry. So there's a big assumption there that sometimes gets overlooked. So their deployment would be deploying from registry.acpirockets.io but the key would come from Docker Hub or Wabbit network. So is the key valid? And then a secondary option is, is the C name match the registry it's being deployed to. Those are the two that we've come up so far. And of course the keys can't be revoked, right? That's the first part that we just discussed. So I think we can get those pieces into OPA. That seems like the baseline and then I don't know what I don't know if there's something better, awesome. That's the kind of thing we wanna start thinking about. Yeah, so that's the easy part. The hard part is then getting that OPA into a stock gatekeeper that your customers or anybody would actually have and be running. So it's like, you can extend if the analogy is like the Python interpreter you can and it didn't have a way to install third-party libraries.  There's no real way to distribute those extensions. I mean, this is the writing that policy is super easy for a prototype though and a proof of concept. I mean, maybe that thing is iterated what would he ask B of the OPA community? Cause like there's, if you think about what we've done with artifacts like the approach is you can store anything in a registry, right? We don't, nobody ever tells us what type of files can be saved on our local computer, right? There's a file system that says I can store stuff. I don't really care what you call it. We're trying to do the same thing with the registry. Signatures is actually a little more specialized. Like we hope the Docker client container D maybe OPA will special case. It's a valid enough scenario that they will add specific support for it. Like we've talked before that Brandon was pointing out a really good ordering issue with as we push stuff to a registry that we want to remind me here, Brandon. It was push the signature, which doesn't ever have a tag. Push, no, you push the image. I know what it was. It's updating a tag. So if I have framework V1, the tag being V1 and I want to ship an updated version of it for a security update or whatever. And I'm using the same tag because it's a stable tag for a base image. Then I would push the update as a digest first. So it's still sitting there. I'd push the signature, which references the digest. And then I would push a tag update. Did I get that right? Yep. So that way when the tag is out there, you've got the signed tag already. Right. So, but that's a perfect example of the Docker client would actually hope, we would hope the Docker client or whatever the latest build scenarios are would incorporate that special scenario for Notary V2. I'm using that as an example there. I don't know if OPA is gonna say, hey, Notary V2 is important for us to special case or as we've done with artifacts, right? Like we're gonna store signatures in a registry and the registry doesn't know it's a signature, doesn't care it's a signature. If OPA can validate signatures without knowing it's a signature, even better. So that's a set of conversations that I would love if somebody has bandwidth to focus on with the OPA gatekeeper community. That make the volunteer effort too big. Dan, did I lose you? No, sorry, I'm here. Yeah, and I definitely don't have the cycles to actually try to get something upstream and embedded into the OPA community. All right, I'll continue to search. We're trying to get some stuff juggled even in house in Azure. But I mean, to be fair, as much as we're hoping to get out as fast as possible, I don't want this to be an Azure driven thing. That's why having Niaz doing a lot of the key stuff is awesome. And I'm open for anybody and everybody that will help in this case, not just because we want to, for the sake of having multi-clouds, I believe it brings a wider set of diversity of things that come up. So that the broader we can bring of input into this, the better the solution will be. That's mostly what I had for today. I put some links in there just for people to poke at if they want, I have not had a chance to look at it yet. We've already been discussing amongst ourselves that there's some gaps in those, but I wanted to get them out there so people can see them, they're public, you can see the iterations we're making. We do have some opportunities where it's coming up this week. We have Dan invited me to speak at an open spot that opened up an open SSF on Wednesday morning. So I'll put an iteration of what we have here there. And then in the red hat container plumbing day next Monday or Tuesday, there is the artifact model, which of course I'll use notary as the example of the reference artifact type that we'll be storing there. So we're starting to get more visibility, more public, hopefully more eyes, more feedback that on what we need to do to continue shipping this thing. So I am curious about the artifact changes. I started looking at that, seeing the links here at the meeting and I'm curious looking at the change, what was that pull 31 that they've got another spec skype.go directory. They called it V2 and they started putting some stuff in there. I'm curious cause like the descriptor came in from the image spec and that got pulled over some curious. Yeah, there's some details there that make it insured to figure it out. So if there's, and this is the problem of trying to figure out how to get it narrow enough so that we can get iterative approvals going through but the problem is this and the distribution spec and the image spec are fairly tightly coupled yet separable. When we bring up artifacts and we say, well, an image is a type of artifact that kind of throws a wrench in the works. We created a PR, created a issue, I think it was on distribution a while ago to refactor some of these things where basically there would be a set of descriptors and the core pieces that live across all artifact types would be an A repo. I don't remember if we even said whether it's gonna be distribution or artifacts or whatever, we hadn't really gotten that far. I don't remember if we did. And then what happens then is now the image spec is here's how I do container images. The Helm spec is here's how I do Helm objects and they could all point to a central thing. That's part of what you're seeing there and overall specifically was asked like where should these go libraries go and we're trying to get some of that figured out. So like I said, I haven't looked at it yet. We talked about it on Friday before the weekend didn't. So the overall thought process is that there's gonna be a specs.specs.go slash fee whatever in each one of these projects for the Helm, the artifact, the image all those different things have their own specs. I think where we're going, I think and I'm gonna have to go back and look at it but my understanding is there is a specs.go for I might not be saying the right file. There's a go file specific to each manifest schema. So there's image index, there's image manifest and now we're saying there's a third for artifact manifest and the third being now supports reference types. I saw Derek here earlier, but I see he had a drop and the idea is that there's a go file that matches that so somebody can interact with that manifest type. That was my understanding of the conversation. Okay, confused me a little bit when I saw the descriptor but I think you kind of explained it pretty well. Yeah, I think what happened is the descriptor instead of having the reference over the image spec we're trying to say, look, if you're not using the image spec, you shouldn't have to reference the image libraries. So the idea was generalize some of the things like the descriptor to be available there whether they're duplicated in multiple places or we start shifting to their stored in a central place because the OCI artifacts one is not supposed to be a specific artifact. It's supposed to be here's how we generalize artifacts to go into distribution and image is one of those. It just so happens that some of those original things were defined in the image spec. So whether we keep them duplicated, whether there's a shift, I don't know what the latest thoughts are on the OCI image V2 conversations are to know how they want to factor. I don't remember if they've thought about that level of detail, but that's what you're starting to see a shift there. And what we've also said is the link API so that I can ask a specific artifact what things reference it, an SBOM or a notary, sorry, an SBOM or a V2 signature as an example that we weren't getting a lot of confidence that that would go into distribution directly. So we're proposing that as a distribution extension that we would make as part of the artifact OCI artifacts project. So the links extension for now is being proposed through artifacts and my hope would be it gets lifted up into distribution because then it makes it more difficult. Now I have to say, if your registry is OCI conformant and artifacts conformant, then you can store signatures in it. It's just one more step, but it makes it more complicated. I'd love to just be able to say, if your registry is OCI conformant, you can store a notary V2 signatures in it and open everything else. But I'm not sure if everybody's bought into that. So I'm taking an incremental approach for now. Sounds good. Questions, thoughts? Okay. I do know that people watch this that aren't able to attend from time zones. I think I did not post from last week. So I don't know how long Zoom takes to process the videos, but I will at least take this time between now and 10 to post last weeks. And by the time that's done, if this week's is done processing, I'll get them both posted. The point is those that are watching it, once I get it posted, if you like to volunteer and help with some of these things like the OPA work, I'm sure Dan and others will love to collaborate and just share their ideas. We just need more people to kind of spend more time on it and take it to the next level. And Nia, do you think you'll be able to queue up the conversation for next week? Is that a reasonable expectation? Yeah, I'm also blocking some time at 10 a.m. Eastern on Wednesday. I'm gonna work with Marina and if anyone else wants to join in, can join in. I've sent a Slack to Amy to get something on the calendar. What we did last time is we just used this same Zoom. It pops up, says it's recording. But I think when someone sees that show up, they don't automatically post it. I don't know if that's you, Steve or someone else, but... Yeah, so I own the Notary 1s, but yeah, just tell me if you, yeah, if you wanna... By all means, yeah, don't worry. I mean, having Amy put it on the calendar is awesome. But just use this one Zoom link, that's fine. And I don't know if I'll be able to make that call, but just tell me that it was done or whatever it could be a poke and reminder and I'll process it and get it uploaded as well. Yeah, we've used the same Zoom link in the past, so I'll let you know once we, what we do in the meeting and put the notes in the meeting agenda. Awesome. If I'm not being too demanding, could you post announcements of those times in the Open Containers IRC channel, which I think is bridged to the Slack? Oh, because you're not a Slack person. Right, and the other one's not bridged to IRC, so. Yeah, I mean, to be fair, they're separate projects. So it's just, there's a lot of overlap of people and basically, Niaz, it's just, you send to the dev alias, it's dev at, what is it, it's dev at Open Containers? I just typed dev and I don't, yeah, dev at opencontainers.org. Sarge, that's what you're asking. There's the Open Containers IRC channel. I was just saying if I see an announcement there of a meeting then. Yeah, I'm not sure where that's linked. Is that just in the general of? I don't know how it all works. And when I send emails to dev at Open Containers, does that get there as well?  Well, I will see those emails, so that's fine too, yeah. Okay. Thanks, sorry to be a bother. No, no, we're trying to cater to everybody's style without being every style. All right, if there's nothing else, I'm gonna go process some videos and we'll see you folks on Slack. Thanks. Thank you.


Today, we're gonna be taking a look at the LeBron 9 low LeBron old Palmer I'm gonna be breaking down all the details of this sneaker and tell you guys why I think people are sleeping on these And if you didn't know by now, my name is DJ and this is the DNA show on this channel I love breaking down different shoes giving you guys in-depth reviews and helping you turn your hobby into a hustle So if you haven't already consider subscribing and joining the fam We're on the road to a million subscribers and you could be the next one to get us there So like typical fashion we're gonna crack this box open and see what these shoes are talking about Then we'll get into the history of the shoe looking at the overall box We have a LeBron branding right here on the side And then you have your red LeBron logo on the top and the same LeBron branding on the other side going to the size tag It reads Nike LeBron 9 low white lime bright mango size 13 just for me Retail on these was 200 bucks and I feel like that might have been just a little bit steep But at the same time I think there's some cool hidden details on this shoe that not too many people know about So we'll talk about that a little bit later in the video, but for now let's crack this box open So it has a little tab right here, and then you're gonna pull out the shroud and then you have the paper Oh, you got this shoe. Okay first impressions of this sneaker. Honestly, I feel like these are very similar to the OG sample I have seen those in the past But it's been a really long time since I've seen a pair in hand and I don't have a pair to give you guys Side-by-side comparisons, but overall I feel like they did a solid job off of my initial memory of the previous pair from 2012 And with that being said, you know what we got to do before we start breaking down all the details We got to talk about the history first as most people remember LeBron decided to go to the Miami And we saw the Miami South Beach LeBron 8 and that was definitely a very iconic model and colorway still to this day Shortly after that in 2012 We then saw LeBron rocking the LeBron of Palmer LeBron 9's and we had the reverse LeBron of Palmer's that we saw LeBron walking as well So yes back in 2012 There were two different versions of this when it comes to the samples that we saw LeBron rocking on or off the court And although I wish they would drop both of them I'm still not mad that they came out with these because now I finally got a chance to get my hands on the shoes So for those of you that are wondering what is the LeBron of Palmer and why did they even come up with this crazy Colorway yes, this has resemblances of Miami and you see the palm trees and different stuff like that But these were also inspired by Arnold Palmer He was a famous golfer that loved to drink lemonade and iced tea mixed together and eventually over time He ended up coming up with his own drink called the Arnold Palmer named after him. There's also a restaurant in Palm Springs I've been there multiple times. I love their food And if you're ever in the Palm Springs area definitely check out the restaurant because they got some fire stuff and speaking of the taste Of the food honestly our Arnold Palmer is one of the top drinks out there in my opinion as well And as you can see LeBron liked it a lot too We also saw in 2015 the LeBron 12 low had the LeBron of Palmer colorway on it And we also saw the LeBron 18 low have the LeBron of Palmer colorway on it in my opinion I feel like they should have just gave us the retro and not really mixed it with those other models because it just Doesn't really look the same based off of the structure of the shoes But at the end of the day, it's okay because 10 years later. We finally got the shoe So with all that being said let's start breaking down all the styles cuts materials and the hidden details on this sneaker Starting with the bottom of the shoe you have your classic LeBron 9 outsole You have a translucent kind of lime green type of colored vibe right here You got a more of an infrared pinkish color on the center of the ball of the foot And then you got your LeBron logo right here and a turquoise and green now one thing That's really special about the outsole that I'm not sure too many people knew these actually glow in the dark And we saw this on their old sample back in 2012 as well So I think for them to carry that on giving us the same glow in the dark outsole like 2012 honestly That's a nice touch now going up to the midsole. You have a full air unit going from the front to the back end of the foot This is also got that infrared vibe And then you got that turquoise liner just above that and then to the upper all the upper So like I was talking about earlier You have those kind of palm tree vibes giving you that nice like I said either Palm Springs Miami Tropical whatever you want to say it kind of gives you that vibe when it comes to the shoe with the All over print on the sock liners or around the eye stays here with the laces lock in or even on the yellow materials all throughout the foot You have an infrared swoosh with a blue trim just around that and then you have the same thing on the outside of the foot as well Going to the laces in the tongue of the shoe You kind of got that turquoise coloring as well with the LeBron print on the front end of the laces at the bottom end And then I think the lace tips have a little detail actually know these ones don't so I remember on the I think it was the Miami nice. Let me see you real quick. Yes, so the Miami Knights They got the LeBron eight and everything like we'll get into comparisons in a second I'll talk about this in a minute, but the lace tips definitely don't have any special details And there's no additional laces that come with these But I think with the glow in the dark element and all over prints and especially the insoles right here on the insoles This is the same as the OG sample as well with the LeBron or Palmer and the all over print now Going to the top of the tongue you have LeBron James autograph right here and then on the back end of the heel You have a gold kind of bronze a shit with the LeBron James logo and a plastic tab just behind that So overall looking at the details of this shoe I feel like they did a really good job replicating the OG sample But I feel like everybody just doesn't appreciate this shoe as much as the collectors did ten years ago So now it draws to me the question of like do y'all even like these anymore? Is this shoe fire or trash? I had to know so I asked the people on Instagram What do you think about this shoe and this is what they said 60 percent of the people chose fire and 40 percent of The people chose trash and honestly I can understand those results simply because this was ten years removed We have seen so many different Generations in types of sneakerheads come into the game and as we know Colby LeBron KD their models were hitting way harder You know eight ten twelve years ago Then honestly Nike basketball right now is just truly not doing that well if we're being honest I feel like Lamello ball all the other players in different leagues You know we got different players standing out with other brands It's gonna be interesting to see the competition and how things lie when it comes to a sneaker like this or like I was talking about earlier You have the Miami night LeBron eights this shoe right here was ultra rare ultra exclusive ultra Expensive and when you talk about this one these were even more rare more exclusive and more expensive people were willing to spend a Couple thousand dollars on shoes like this back ten years ago So just think about that the magnitude of spending two thousand dollars on a pair of shoes back ten years ago compared to now Obviously, we know people spend a couple racks on a pair of shoes But for some LeBron Lowe's in two thousand dollars for that shoe crazy times And now we're currently in the point where the shoe is retelling at 200 bucks and still sitting on shelves at your local malls Now do I think that's a problem? No, because people like me that love the shoe and want to get the shoe they can actually get it for an affordable price and be Satisfied with the sneaker but at the same time It is definitely interesting to see the shift in the culture and what people like then and what people like now and obviously for older Sneaker heads like me. It's a little bit more nostalgic So we're always happy to add this to our collection whether it may be seven years ago five years ago two years from now Whatever may be I'm sure a lot of OG heads out there that remember those good basketball days They were all happy when they saw this shoe coming out and because I was on the topic kind of talking about these two Shoes and how nostalgic they were I wanted to know which one people like the most because honestly I had a hard time deciding 57% of the people chose the Miami nights and 43% of the people chose the LeBron Lowe Parmers Let me know what you think down below in the comment section. There's no right or wrong answer I'm just interested to see how you guys feel about this same question So now the next thing that comes along these lines is how much is this shoe gonna be worth and what is it hidden for now? Obviously like I said, you can still find these typically in most retailers retail was $200 and I know some people said that was a little expensive But I think with the glow in the dark touch and all the nice details on the shoe I feel like it is kind of worth it saying the technology and everything that comes along those lines But when it comes to resell these things are barely even hitting for their retail value So with that being said, I think you could probably find these for under retail Especially if you find a used pair you might mess around and find a used pair for 120 bucks 130 bucks and get a really good deal be able to rock the shoes appreciate them and love them and enjoy them Or maybe I can't say these are gonna go to outlets, but it could potentially happen I don't know. Let me know what you guys think down below. So overall at the end of the day I ended up grabbing these on sneakers app. I just got them in the mail I spent 200 bucks on the shoe and I am still a happy camper now Obviously, yes, I would love to get something for a little bit cheaper if I know that it's sitting But at the same time to be able to spend $200 on a shoe knowing that this used to be worth multiple thousands of dollars I think I'm fine and also don't forget to let me know how your shopping experience went with this shoe Were you like trying to go after it and then you hit on it and you were like, oh damn It didn't even sell out because that's low key what happened to me But I'm sure everybody had different opinions. Some people even decided to pass on it Let me know down below in the comment section Yo, if you enjoyed this video and want to grow your collection or make extra money on the side I built a VIP mastermind that will teach you everything that I've learned about growing my sneaker collection over the past 15 years This will also give you access to the DNA fam in my VIP community where we talk about investing outside of sneakers And don't worry if you don't plan on joining the VIP community, it's okay I also set up a private DNA fam community that gives you access to all the behind-the-scenes looks from the studio and multiple chances to win free sneakers and gear from weekly and monthly challenges So all you need to do is click on the link down below in the description or the first link pinned in the comment section That will get you set up and into the community. I'm excited to see you guys on the inside If you made it to the end of this video drop a comment down below and let me know What is your favorite place to eat in Miami now? I got a couple favorites, but I'm interested to see what y'all think. Let me know down below


Okay, so we're going to talk today about read-salomon codes, continue to talk a little bit more about read-salomon codes and maybe compare them with BCH codes that we've done back in the day. So let me begin once again by talking about the destination of read-salomon codes. So if you want a theater-correcting Rf score over gf2-prm and lentus-n and read-salomon, so what should n be? So if you want to go over gf2-prm, then you should definitely give us 1. 2-prm, right? So it should be also equal to 2-prm minus 1, okay? And then how do I define the code? I can define the Rf score for those questions. I can say all multiples of what? It's plus beta, x plus beta-score all the way to beta-prp, okay? So I'll c of x c plus 4, so let's take v of c of x is less than or equal to n minus 1, okay? So I can do that, okay? So that would be a very valid definition for the read-salomon code. This code is called the generator polynomial, gfx, okay? And that controls a lot of the properties, okay? So like I said before, instead of starting from beta and going to beta-prp, 2t, you can start at beta-prp, b, then go to beta-prp, beta-prp plus 1, beta-prp plus 2, so on till beta-prp plus 2t, okay? You won't even have to go one step at a time. You can go in an arithmetic progression as long as the common difference is relatively prime to the order of beta, okay? So for instance, it's very common to take beta to be a clinical element of the F2 parameter, okay? So things like that you can do. So this is the most common choice. It defines what's known as a narrow-sense read-salomon code, okay? So if you pick like this, it becomes narrow-sense. And similarly, instead of picking n to be less than 2 power n minus 1, you might want to pick n equals 2 power n minus 1, in which case you get a primitive, okay? So those are, it's just some terminology in jargon. It's not really any major theory, right? Just to fix the ideas. So those are some additional things which I didn't mention, which you can do with read-salomon codes, okay? And the minimum distance, so the dimension k is basically n minus 2t, right? And the minimum distance t is 2t plus 1. And error correcting capability is, of course, it's t error correcting, okay? And now the code is over gf2 power n. It is of length n. Each coordinate of the code word is from gf2 power n, okay? So how many code words are there in this code? The size of the error's code is basically 1. The number of code words in the code and that will be equal to 2 power n raised to the power k. So that's a rather large, okay? So this is like both the code. Then as far as the decoder is concerned, we have a bounded distance decoder. It can be described algebraically. The basic point of that is if you have, so what you end up doing is you compute the sum of the number. So I define number 4 next. We're just going to describe the sum of the number. This would be h power 2t. Then you construct the kth polynomial. We'll take 1 power x1 and x2. So 1 plus xwx, okay? So we have w at us. And then you'll notice that if you write this polynomial as, sorry, 1 plus sigma wx per w. Then you get linear equations. What about sigma 1, sigma 2, sigma w and right, s1, s2, s2. Okay? So using these linear equations, you solve for sigma 1 through sigma w. And then you go and find the roots of the sigma of x. You get the error locations. Once you find the error locations, you can do a simple operation to find the error values. So that's the steps in the decoder. Another way to describe the decoder is very commonly done. Just to look at this product. In fact, this is how we derive these equations. How do these linear equations come from? Sigma of x times s of x is equal to what? So if you view this product modulo x star t, x star 2t, what should happen? You should get, we'll get some polynomial. Maybe I'll call it z of x. Okay? What's the special thing about the polynomial? It's got degree less than or equal to w. Right? Right? So in a way, in your decoder, you're also trying to minimize w. All right? Right? So s of x is given to you. You don't know this guy. You'll find this guy. And you know that z of x modulo x star 2t. Why am I doing modulo x star 2t? Beyond 2t plus 1, there'll be some terms. Okay? So we can't control that. So modulo x star 2t. I know that, I think it's x star 2t plus 1, right? Yeah. At the 2t, it can be there. 2t plus 1, it should not be there. Okay? So I don't know that. So another way of phrasing the same solutions is to find sigma of x, such that sigma of x times s of x modulo x star 2t plus 1 has least degree. Okay? That is the other way of phrasing the same decoding problem. Okay? There's some minor proving there to show that both of them are equal, but you can do that. Okay? So if you find the sigma of x such that sigma of x times s of x modulo x star 2t plus 1. What would mean the modulo x star 2t plus 1? Just throw away all terms, x star 2t plus 1 and higher. Okay? That product should have least possible degree. Once you find that sigma of x, you're done with the decoding. You can simply take that as a symbol. Okay? In what we did in the method that I just wrote, we did a list of the linear equations. And when you start at w equals t, then you keep going to t minus 1, t minus 2, till you get to the lowest possible degree. So it's just the same as this question. Okay? Most of the nicer decoding methods, which can actually be implemented in practice, they will always use that approach. Okay? They will start with an iterative method. They'll start with the sigma of x of square degree 1. Okay? Right? Sigma of x of degrees 0 means clearly, I mean, there's no errors, right? Sigma of x of degree 1. And see if this, also this equation is satisfied. Okay? So in fact, if it doesn't satisfy it, there will be some higher added terms. Okay? So sigma of x. So then you go to second degree, third degree, and so on. Okay?  Okay? So think about that for a while. And most of the bellicamp decoding method, Euclidean method, sequence determinant method, all these methods use this idea. Okay? How to solve this equation. In fact, this equation is called the key equation. Okay? The key equation, the first of its importance. Okay? So remember, you have to find the least degree, sigma of x. This is the least degree sigma of x, which will give you the lowest degree of z of x. Okay? In a way, there are so many least degree things going on here. Okay? Find the sigma of x, which will give you the least possible degree of z of x. That is the correct answer. But that will invariably mean that you find the least degree of z of x also. Okay? Is it okay? Is it clear? Okay? So that's the idea and bellicamp decoding. So this part of it, I didn't emphasize because I think some people are doing projects on it. Hopefully when they make presentations, they will go into some detail here. Okay? So that will be something important. Okay? Any questions on this? Okay, please. Okay. Both of them will end up being similar things. That's what we need some point. Yeah. So there is some proving there. But this will actually give you the Yeah, like I said, there is some part of it which needs to be proved, but it's not correct, but it will not be very difficult. You can prove it there. Okay? But the bell is definitely assigned a sigma of x so that z of x has least degree. That is the correct rule. And that will invariably involve that it will mean that sigma of x will have more degree. Okay? Some crazy thing can happen. I mean, so there are two. More than T and S, for instance, some crazy thing can happen. So you will take out all those things and prove it. Okay? So that's the bandwidth distance decoder. And I am not going to do too many details. But that will follow the quiz. Okay? The next, one last thing I want to mention is correcting a ratio of errors. Okay? And the DCS decoder also saw this. Okay? So before that, I want to mention very quickly. So if I don't pick m equals 2 power n minus 1, I pick n to be smaller than 2 power m minus 1. Okay? What happens? What is nice about picking n equals 2 power m minus 1? You get a cyclic code. Maybe you're happy about that. It doesn't really matter. Anyway, the product of GFX is valid all the time. But maybe you're happy about having a cyclic code, etc. Okay? So that's one reason. But if I pick n to be simply smaller than 2 power m minus 1, the code that I get is actually very closely related to the code that you get by n equals 2 power m minus 1. What is the relationship? Can you see something? It's being the relationship. So what you can show, like we did for the DCS code, you can just view the entire pal-de-sac matrix. So a strict n to be something, what am I doing? I'm simply setting the remaining part to 0. Okay? So I make n to be less than 2 power m minus 1. I have a shortened version of the original code. Okay? So it's a shortened version. So it's not really different from the primitive n equals 2 power m minus 1 code. If you just add 0s to the n, you will get a code word of the n equals 2 power m minus 1 code. Okay? So it's a shortened version. So that's one thing to keep in mind. So let's forget about that for a while. Let's move on to correcting errors and erasures. Okay? So what's the model when I have errors and erasures? Okay? So in general, instead of just... So far we've been looking at W errors. W less than or equal to t. Okay? In general, we can have W errors and say e erasures. Okay? What do I mean by e erasures? There are e positions in my received vector. Okay? So my received vector r now is going to be r0 or r1. rn minus 1. e rn belongs to what? Belongs to when a geocool pattern r z salon which denotes erasure. Okay? Right? Each vector h coordinate that I receive is either an element from gf2.rn or some special symbol which equals erasure. What does that mean? It means that some block before my decoder, some communication block before my decoder is somehow concluded that those m bits are not very reliable. Okay? So somehow based on other information and soft information and so forth. It's concluded that those bits are not very reliable. So I'm alerting my decoder to the very strong possibility that that position might be an error. Okay? So let's call this erasure idea. So now what happens is when you have W errors and e erasures there's some confusion at the decoder. There's a reason is what is the first step that you do in your decoder? You compute the syndrome which assumes that you know r exactly as in at least you have some idea of r. So say epsilon you can't compute anything with epsilon. Right? So what do you do? You have to make some substitution. It turns out what we can do is in bch we have to do some special thing, right? How many of you remember what we did for bch? It will put all 0 all 1, 2, 2 decodings all things can be stopped. Here it's not needed. Okay? It's enough if you simply substitute it to be all 0s for example. Or anything else. You can take any arbitrary values for those erasures and proceed with your decoder. Okay? So the first step when you have erasure is set erasure r2 c. Okay? So whenever you have epsilon in your receipt value simply put 0. In fact instead of 0 nothing else. It doesn't matter. Okay? It won't change anything. Now let's go and look at our error located polynomial. Okay? So you have an error located the polynomial which will be 1 plus x1x 1 plus x2x 1 plus xwx This will be the locations of the errors and you don't know any of these x1 through xw. And then you can also have let's say a gamma of x which I will call as the erasure location polynomial. Okay? So you have an error located the polynomial which will be 1 plus x1x erasure location polynomial. 1 plus x1 prime x 1 plus x2 prime x 0 and 0 1 plus x prime ex. And what are these x primes?  That's clear. Okay? So you have now two polynomials sigma of x which is an unknown degree w error located polynomial. Then I have a gamma of x which is a known degree e error erasure located polynomial. Okay? Now what I can do is I can multiply this sigma of x and gamma of x. Okay? Then what will be the degree of this guilt? W plus e but gamma of x I know. Okay? And then when I multiply this sigma of x I will again have very similar possibilities. Remember what will be my e of x the error actually error that happened? Okay? So e of x will be the error of x prime. It will be e1 x1 No, no, no, no. Let me just run this one here. So it will look like x prime i1 x prime e1 x prime w, right? ew Then you have the erasure operations which are say e1 prime x prime x1 x2 e e prime x prime je e right? So I have my error part and my erasure part and each s s i or let's say s s l the l symbol will be what? e of beta power l, right? So what happens then? I will have e1 remember xj is what? beta power rj and xj prime is beta power j, okay There's too many things here so let me let me make it m here. Okay? Is it okay? Right?  So these are my error locators These are my erasure locators Am I right? Right? So the error locators are unknown erasure locators are known, okay? So now when I took e of beta power l what do I get? e1 beta power l i1 but what is beta power i1? x1 so I took x1 power so until ew xw power Now what about the prime? e1 prime beta power lj1 x1 prime so I took x1 prime power So I have both these things Now if I define an s of x and multiply s of x by sigma of x times gamma of x I can use my same simplification rule as before and conclude conclude what? x c prime or x c prime Okay? Alright? So I can use my same method as before to multiply sigma of x times s of x and then conclude that x power w plus e plus 1 through x power 2t will have to be 0 on that problem Is that okay? Okay? Now I can conclude that sigma of x times gamma of x times s of x has no terms from x power w plus e plus 1 to x power 2t Okay? So now what do we do next? So I'll solve A friendly sigma Okay, so that's the important thing Keep that in mind Well, I know gamma of x already So I'll take gamma of x multiply with s of x happily I'll get some other polynomial Let me call it something else I don't care And then I'll take my sigma of x and multiply by that new polynomial that I know Okay, so this part is known Okay, so that's the crucial part Okay? So how many unknowns do we have in these equations? Well, only w unknowns and how many equations can you hope to get? 2t minus w minus e So as long as 2t minus w minus e is greater than w I can hope to solve it and you can show also that you can solve it Okay, so that's the next step which can be done So I can solve for w variables sigma 1, sigma 2 to sigma w So 2t minus w minus e is greater than or equal to w So if you prove the question around we'll see w plus e by 2 is less than or equal to Okay, it's the same as what we had before Okay, number of errors plus number of equations by 2 should be less than or equal to the error-correcting capability then you can solve it Okay? And the method is even simpler than the dch code you don't have to do any major modification to your decoder You don't have to run two different decoders one with 0, one with 1 and get confused and all that Okay? We'll simply do set it to any arbitrary thing for instance, if you want some simplicity just simply set it to 0 we'll get some evaluation then proceed with your decoder as it is except that you take your erasure letter polynomial multiply with your s of x and then proceed with the same decoder no major changes So okay? Any questions on this? Okay? Okay, so so erasure correction is very popular Okay, so for instance what will happen is you can imagine hard drives not in CD too much but hard drives particularly if some sector is known to be bad Okay? So erasure once in a while we'll go through and mark some sectors of that some parts will be known to be bad Okay? So what will happen is immediately give up some scratch scratch on the disc Okay? There can be circuitry which will find out whether there is a scratch or not Okay? And then what we read out of a scratch is just nonsense Okay? So whenever you encounter a scratch the circuitry that is there to protect the scratch will tell you a decoder that you are very sure about you have to just erase it Okay? So it will be erased and that will go as erasure to your decoder Okay? So it will be itself and decoder will use those erasures and try to correct it Okay? So what's the big deal about doing erasures that will be an erasure Okay? So for instance if W is zero you can correct price as many erasures as erasure Okay? And that helps Okay? And mostly if you imagine a scratch on the disc it's mostly going to be sequential Okay? So scratch on the disc will be introduced what's known as a burst erasure Okay? So it's not like random errors Errors if you start there will be many more errors for a while Okay? And you can imagine naturally that is very well suited for a reach element code Why is that? Because if there is a sequence of errors in bits there are very few simple errors Right? If you go to GF2 power M elements M errors in a sequence will most probably be like one or two simple errors One or two That's it Right? So that gives you an advantage with using reach element codes So that's why naturally for these kind of applications for optical drives hard drives magnetic drives Reach element codes are used quite heavily Okay? So today there was some more to change it also but many of the reach element codes are very popular they've been always popular for this Okay? How about the how about the how about the how about the how about the how about the how about the how about the how about the how about the Yeah, so I'm going to talk about DCH versus reach elements The question is about how do you compare DCH and reach element in terms of encoding So I'll tell you the comparison There are some very stark differences between the two Okay, so we're going to go over that next Okay? So that's the that's the thing So one last thing I want to mention is this notion of best error-correcting capability So what is the best error-correcting capability of a of a DCH of a reach element code Okay? We know the error-correcting capability is T What do I mean by that? It can tolerate T random bit errors Okay? So once again So I have to define this very carefully here So I have let's say an mk T error-correcting address code or tf2 barm Okay? Suppose I do this My actual code is we'll take mk bits and then encode it into how many bits and then bits Okay? So these bits are sent from the channel Let me say instead of random errors So as I say channel is introduced in random errors What is the maximum error-correcting capability? T So you can't go more than T There is a T plus one-way error sequence which cannot be corrected by me down to distance decoder Okay? So that's even very challenging question Okay? So on the other hand if I say the channel is constrained to introduce errors and bursts Okay? It starts at one point and it can introduce errors for bits starting at that point not more than T Okay? The next B bits So if I say that what is the maximum B that can be corrected by this decoder is my question Okay? Did you understand? So channel can introduce bursts bursts errors in errors errors in bursts of B some B So that is the maximum B that is always correctable So for instance when B is one clearly it's correctable B up to T is also correctable If you do errors in T bursts are length of T or random it can be corrected so obviously up to T it's possible is anything more than T possible if you are restricted to burst that's the question Can you introduce for things T minus for times M plus one Yeah, so do you see why you got that So the 10-thing thing is to say M times T Okay? So M times T is the best at a correcting capability So imagine what is happening So the code word when it goes through the channel I thought it's M times M bits but it's growing as C0 which is M bits M bits and then C1 which is another M bits C2 which is another M bits and so on till the last one CN minus one which is how it's going So my burst can start anywhere Okay, that is the important thing to keep in mind My burst can start anywhere and go for a length B Okay? If it starts exactly between two symbols If it was constrained to start only here then even if it is of length Mt I will only have T symbol errors but it can start exactly one before the this thing That's the worst case So it can start somewhere here So that's bad then what can happen Okay? T minus one times M plus this one Okay? So one more if you think you will get two people Okay? So only T minus one times M plus one burst errors can be largely always corrected by this can be guaranteed 100% to be corrected by this Is that clear? Did you see the problem so I got T minus one guys All the next T minus one will be erased because I get one here this one will be also affected If I even add one more one more symbol will be affected and that will go to T Okay? So max B plus T times plus So that many burst errors can be corrected Okay? So that's a huge advantage to reach out in burst if you know that the errors are going to be in burst There are several reasons that will be in bursts So if it is going to be in burst for instance fading is one more kind of scenario you can think of So if you go into a fade it's going to be in a fade for a while and then you come out Okay? So those are just sort of some different ways of thinking a word but of course nobody uses the installment codes wireless but there are ways in which you can justify Okay? So this is burst burst error correcting capability So normally if you know you're doing some burst there is a way to improve your burst error correcting capability Okay? So that is what's known as intelligent Okay? This is a very common strategy that's used in hard drives particularly So what you do is also it's a very simple thing So if you want to do intelligent output but n you take n code words I need some notation here so what are my n code words So let's say cn-1 now and c0 2 c1 2 cn-1 2 all the way down to c0 n c1 n cn-1 n Okay? So I take n code words Normally I would send one row at a time row wise, right? But instead of sending it row wise I can send it column wise If I send it column wise what happens to my best error correcting capability? It roughly gets multiplied by n Okay? So of course it would be slightly careful here You can position yourself somewhere this way So you'll also get n-1 times p-1 times something like that Okay? Roughly what happens is your best error correcting capability gets multiplied by n Do you see that why? Do you see why? If I send it column wise what happens? Even if I even if I erase all these days how many errors am I introducing in each code word? Because there is an error in all of these things Only one error is being introduced in each of the code words So roughly I can do this for p p such things so t times n times m is what we can expect But of course there is an adjustment you have to do There won't be exactly p times n times n It will be p-1 times m plus 1 times n minus 1 Something else will come but roughly p times n times Okay?  What's the penalty you pay when you implement this strategy compared to the previous one? What is the penalty you pay in an implementation of this code? Yeah, you need to add a memory, there will be something called latency. So latency could be a critical thing in your application. If your application cannot call that latency, it won't work. So you have to wait for like n guys before you can send it out. Like we said in the receiving side, you have to wait for n guys before you can So those are problems in real life that you can open. Here's the standard way. Interleaving is a very common thing that's done. Later on in the next class, when we're doing the next course, you'll see that interleaving is used for more fancy things than just this. But for now, we can think of the best electric thing as a good way of doing interleaving. So the next thing I'm going to point out is the comparison between BCH and Reed Solomon codes. So it is a bit difficult to make proper capsule comparisons. You'll see why. Because Reed Solomon codes are O, R, O, G, F2, R, N. They have symbol error correcting capability, D. BCH codes are binary and all that. So it's a bit confusing to make the comparison. So I'll describe it in a certain way. So I will say my block length is 6 plus N bits. Somehow I fixed that. My block length has to be N bits. Not symbols or anything, N bits. It's fixed as N bits. And let's say my error correcting capability needed is being good for us. So one can imagine why this is reasonable. So it's a building a communication system. You might know that you cannot wait for more than N bits. So your latency requirements, there will be a circuitry in your communication system which tracks the timing. So if it keeps on in bits, timing has to be tracked. N usually is fixed by those things. I mean it's not fixed by something else. Your timing can only track for so long. Errors can only accumulate for so long. So you'll have some fix. You'll be fixed on some N bits. You can't say that. So those N bits, based on your error models, you might know that at most you'll get errors. So this is a reasonable place to start. So you say N bits is my block length. And I expect, say, at most T errors, there's no way or the probability that I'll get more than T errors is really, really small that I don't have to design for. I don't have to worry about it. So that's the way you can think about this setup. So now suppose somebody says I can build a VCH code for it. And suppose somebody says I can build a reach element code for the same thing. But remember, you'll say these are random errors. T random errors. Because the most model's randomness works more lightly. If you have, of course, best errors, then there are other things to worry about. But for random errors, our comparison will be for random errors only. Suppose I say this, I want to compare a reach element design versus a VCH design and comment on various things, complexity, performance, which is better, etc. So that's the kind of approach I'm going to take. There are other approaches, like I said. But this is one approach and we'll see how it works. So what will happen if I have to design a VCH code for this? What is your first step? What would you do a VCH code? I'm sorry? I'll define a beta, right? I'll define a beta whose order is greater than m. So one simple way of doing it is to take a beta, which is a primitive element of g of 2 power m and 2 power m is the smallest power of 2 greater than m. So you can do that. So that's the very standard way of doing it. So let's fix some that. So we'll fix m such that 2 power m is greater than or equal to n minus n, right? So it should be n. n minus 1 should be equal to, so let me just say, greater than or equal to. So that's fine. And then I fix my beta as a primitive element of g of 2 power m. So that gives me the beta of n over 1, right? Is that same? So how do you describe the smallest m which is greater than such that 2 power m is greater than or equal to n? There is a way to roughly say what it will be of the order of m. m will be of the order of log n plus 2. So that's the idea. So if you want n, you have to go to an m which is log n plus 2. Is that okay? There might be specific cases we can do something else, but let me just keep it generic like this. So log n is the kind of thing you have to go. Maybe 2 times log n or log n plus 1 or something. Maybe the next one you could go for that display. So we pick a beta that is primitive. And then I want direct correcting capability t. So what will be my k? n minus mt, right? Let's say we are in the domain. So t is not so high that this is going to be violated. So let's say k equals n minus mt. So we can do actually an assumption. But it is true. Then the k is going to be greater than this. So I don't know. I know the problem in assuming nk equals n minus mt, right? And let's say what happens to the RS code one. What do you do in the RS code? Should I pick the same beta from the same two patterns? No. So that's the important thing to keep in mind because my block length is fixed as n bits. Remember that is very, very important. So what I can do is I can come up with the length n RS code over some GS2 power, let's say capital M. What should be the constraint? n times m should be greater than or equal to n. So let's say it's equal. Mostly it's going to be equal. So it's greater than or equal to n. So what can you do? So there is a choice here. So how do I do this? How do I nicely give a flavor for what n will be? Any ideas? We're going to write 2c. Remember, the maximum n can go for a fixed n minus 1. 2 power n minus 1. So we can go to the maximum n. So let's say we take n to be the largest for a fixed n. So n can be roughly replaced with 2 power n. So 2 power n times n should be greater than or equal to n. So that will be n then. n can be much smaller than log n. Am I right? m can definitely be smaller than log n. 2 power n greater than or equal to n gives you log n. 2 power n times n greater than or equal to n will give you something smaller than log n. Maybe not classically smaller, but still definitely significantly smaller it can be. So if you want a specific example, you can take let's say n equals this number, I like a lot, 2030. So if you wanted a bch code, what is the smallest n that we have devoted? 2048 which is 11. What about the reach element code? n equals 8 is good enough. 255 times 8 equals 2048. So this is a good thing.  So we'll go lower when you go to bch code. We'll go to reach element code. Is that an advantage using a smaller field or is this an advantage? So today you may not think too much of 2 power n, but definitely 2 power n you take more circuit complexity than 2 power 8. So if you're spending so much effort and power and circuit area for 2 power 8, GF2 power 8 implementation, you'll be spending more for GF2 power n. For instance the chain search. Chain search is going to be painful. You have to search for 2040 guys over n bch here in the reach element code we'll be doing 250 seconds. A lot of things will be simpler in the reach element code. That is not an advantage. What is k? What is k for this code? n minus 2t. So that is an important thing. It's very, very important. They're okay. So when I multiply by m when I multiply by capital M to a small k which is small n minus 2 times m times t and the capital M is there. Okay, do you see that? So to multiply by capital M what happens? k times m equals m times n minus 2tm. So that m times will come in the 2t. So let's do this n equals to 2040 and fix a definite example. So let's say for instance something like 10 let's say 20 n equals 2040 Okay, so we have to fix we saw before that the bc of chenille m equals 11 and k will be 2040 minus 11 times 20 is what? 220 that will give you something like is that a problem? Okay, it will be 1820, right? That's called vk. What happens in the other square? Okay, so you can pick m equals 8. I'm going to use small m here. It's an abuse of notation. You can see that. And then 250 times what? 265 minus 40. Okay, remember that. This is the penalty you'll pay here. So it's going to be 214 228 and that will translate into 2040 what? What is 215 times 8? 17 20 Okay, in this Okay, so for the same error correcting capability and the same block length you can send 100 more message codes if you use bch codes Okay, you will have to send 100 less message codes if you're using reach element codes. But what's the advantage? Reach element codes will be doing only crossing over gf2 power 8 but then bch codes will be doing crossing over gf2 power 11 Okay, reach element codes will be only searching for 1 among 255 roots Reach element codes will be searching for 1 among 2040 roots So this thing is amplified significantly in the bch code So this is the way you can come back between the two. Okay Okay, so there are so many other things you can do for instance, a very common next thing you can do is writing expressions for capability of block errors in each of these two situations Okay, right If you do a bounded distance decoder, you know TRS can be corrected in 2040 Here it's a more complicated formula Remember TRS can be corrected in 255 symbols So you have to go from first bit errors to block errors and then use the formula Okay, so there are two recent formulas and maybe it's not very easy to see how they behave and actually have a plot here I'll maybe show you that Okay, so I think there's a way to keep forgetting this I think there's a way to include this in journal So let me just insert this plot here Oh, it doesn't like PDF, okay Okay I thought it was possible but anyway Okay, so I think what I can do is cut and paste this into windows that is possible So this is a plot of block error rate versus something which I call EBO or M0 I've not defined that in class yet but it's something like the error probability the P that you have over your BAC that can be converted into an EBO or M0 and I have to tell you that going from left to right goes to lower values of P Okay, on the left hand side you have higher values of P as you go to the right you have lower values of P Okay, is that okay? Alright, so one curve I have is called uncoded, what do I mean by uncoded? That will be P itself Okay, so that kind of gives you I think that's the mapping from P to EBO or M0 Okay, it is sum 1, 2 and map then it is a crazy kind of map You can ask me why I'm doing it, it's several reasons Okay, it's a very commonly accepted thing to plot with EBO or M0 and it goes to the uncoded P and you can see that P decreases from something like 10 power minus 1 all the way to 10 power minus 6 Okay, and I've used a log scale here to capture the plot much better otherwise you can't see anything So I've done log scale to capture this area blow it up a little bit and here EBO or M0 is the mapping So if I have like so a P of 10 power minus 2 I should go there and then map it to the EBO or M0 and then look at the other thing Okay, so that's how we read this map Okay, so I've plotted several things here For instance I've plotted what I've called RS 255, 191 65 Okay, 255, 191 or 65 Is that correct? Sorry? Yeah, so that's the minimum distance that's not error correcting capability So at 65 it should be 32 error correcting code Over G of 256 and that is the solid curve Okay, and then the dotted line is the same similar BCH code BCH code of the same block length 2040 and same minimum distance 65 which means it can correct 32 errors but then the K is different 1688 If you compute it you'll see 191 times 8 is smaller than 1688 Okay, it will definitely be bigger 200 times 8 itself is the only thousandth example 191 will be still further smaller So it will be like 153 something 1528 So that will be the number here So it's definitely smaller than 1688 So in the read Solomon code you're sending You're sending lesser number of message bits BCH code you're sending more message bits So BCH code has higher rate But then what has happened here? BCH code's error curve is to the left of the read Solomon code What does it mean? Performance is better For the same probability of error BCH code will give you a lower output probability of error than read Solomon code Because it's on the left hand side So for instance if I pick this probability of error here BCH code gives me the same probability On the other hand read Solomon code gives me a much higher probability So not only is BCH code better in sending more rate It's also better for sending Getting better performance In terms of what is called coding gain So you get better gain Compatible So it also has a similar plot So for error correcting code minimum distance is 129 I compare RS versus BCH Same block length And the K there will be similarly different And then you see once again that the BCH is doing better For random errors So this is basically the expressions that we derived Remember we derived those expressions For probability of block error For pure error correcting capability I wrote some expressions So I'll write down those expressions So I'll tell you what expressions I've plotted So if you compare With the same block length And same error correcting capability BCH is definitely better than Read Solomon for random errors What is the penalty you take You have to do more complex decoding In BCH So let's move on to the expression I'll tell you what expression I've plotted So if I have length n Error correcting capability t So for the BCH code Probability of block error With a boundary distance decoder So again boundary distance decoder Is what? Out of n bits If there are t or fewer errors I can correct If it is t plus 1 or greater I will say I'll assume this And what's the probability of block error 1 minus summation i equals 0 to t n choose i 1 minus t power n minus So that's a very simple expression for BCH What you have to do for Read Solomon You have to first go from BCH to symbol order That's the first step given in n Then what is the next thing So you have to design capital N to be Small n by m And then You have to say Probability of block error This is for Read Solomon Read Solomon Counted distance decoder 1 minus summation i equals 0 to t Capital N to psi T s power i 1 minus T s power Capital N minus The expressions are What you get here And then what you do for So these are the expressions that are Plotted in the picture For Read Solomon and BCH So I think That roughly Gives you the points about Main summary is BCH Capital N R s For fixed Fixed n and t In terms of components But R s is About lesser complexity And first BCH code You don't have any special First error correction So this is the Simple comparison I wanted to do Just to give you an idea So if you errors are random Most people will use BCH codes today And today complexity is not a big deal So for instance the dvds2 Satellite standard There is an inner code There is an outer BCH code for correcting errors The same error correcting capability We use BCH codes We don't use Read Solomon codes On the other hand In other communication systems Mostly older communication systems People use Read Solomon because They are inner blocks Produced block errors First errors So that's the model That we use today So we will stop here For now and this is pretty much going to be the end of Read Solomon codes From the next week onwards We will do some other topic Outside of Read Solomon codes