Thanks everybody for taking the time to come to our talk about multi-network, a new level of cluster multi-tenancy. Today what we're going to look at is first of all, what is Kubernetes native multi-networking? And then we're going to dig into some of the use cases about how you would get multi-networking going. Maciej is going to take you through a user journey, we're going to get down to some of the brass tacks and show you exactly what it looks like when from a user perspective you're setting up multi-networking on some pods. We're going to talk a little bit about some of the ancillary pieces that are involved in this as well as some of the history behind it, like what predates the Kubernetes native multi-networking. And then we are going to invite you to get involved. I am Doug Smith. I am a Red Hatter who's an OpenShift engineer and I have been involved in multi-networking with Kubernetes for some time and I'm particularly interested in telco and performance networking use cases. And I'm joined today by Maciej. Hi, my name is Maciej and I am a software engineer at Google working in the GKE Anthos networking team. So what exactly is multi-networking?  So you see that up on the top and then down at the bottom, you see that that pod via eth0 has connectivity to all of the other pods in that network and that's kind of a Kubernetes promise that you get. And then you would take and you would limit that connectivity using network policy. But you have to ask yourself, what if that single interface just isn't enough? So what Kubernetes native multi-networking does is at the most basic level allows you to spin up a pod with multiple network interfaces so that you can get connectivity to exactly the places that you want it to go in an isolated or performant fashion and we'll get into all of the different ways you might utilize that. And you might ask yourself, why is it that we are working on this now? We are all thinking right now that it's about time to talk about and adding multi-networking to Kubernetes as a whole. As a project it is very stable and adopted very well. We cross the chasm of adoption and we think that it is the right time to start talking and picking up more complex topics in Kubernetes as a whole as a project. That's why we are thinking of committing time towards that with the very important aspect that any introduced complexity to the whole Kubernetes project is basically a tax paid by all of us. So we need to be careful of how far we are pushing this so that we can live with Kubernetes in the future. So right now we want to show you a few use cases that we come up with our group on what sort of situation we want to handle with multi-networking. And the first one is the flagship that I got all of you interested in this talk is the multi-tenancy. And basically this is a multi-tenancy on a networking level. And basically the way you implement it you can even achieve a multi-tenancy on a physical layer having all your workloads connected to different networks. And in this case we want to remove any notions of primary or secondary networks. All those networks are equal. So we are envisioning in such a way that all those networks have the same capabilities that the current today's pods have. So there is no differentiation between any of the networks today. Another one of my favorite use cases is for network isolation. In a number of, there's a number of reasons why you might want network isolation. And for me the two that usually come up first is either for performance or for security and maybe for regulatory compliance. So I actually got my start in Kubernetes from an open source telephony standpoint. And when I first started doing it was previous to a Kubernetes 1.0 and I would mostly just use host networking for my pods which totally eliminated the possibility of a multi-tenant kind of situation like Machi was talking about. Network isolation is really important from a telephony standpoint. So one thing that you would typically do is you would have a management network which would be how you kind of interact with your infrastructure. You would have a signaling network which you would use for example to like make your phone ring, right? You get that signal says go and ring this endpoint. And then lastly you would have a media network which you would have the like actual sound of your phone call, right? And there's one particularly important reason in a sort of media type of network is that you use UDP traffic. So you want to isolate that so you don't get a kind of UDP congestion. So network isolation for me is a personal and important use case. So other use case we would like to cover is having ability to connect any of our existing legacy networks that we have in our environments but not only legacy but as well let's say a VPC in a cloud where I have some VMs running on it to be able to connect them directly to my workloads without any indirections with any proxies or any type of a lot of nothing in between those. And just like you might have existing networks that you want to connect to, you might also have existing workloads that you want to run in your cloud native environment as you kind of make this journey to cloud native. So you might have workloads that are still virtual machines and they might be virtual machines for a number of reasons. This might be vendor software that you've already invested in. It's shipped to you as a virtual machine and then you want to go and get this into your cloud native environment. Or it may be that because of resource constraints you have this legacy software that still runs in this way and it's going to take you time to refactor it to get that fully containerized. If you're a virtual machine user, hot plugging an interface is something that you would absolutely take for granted that you could do, that you could go into your management software and say give me another interface on this machine and point it at this network for example. We wanted to make sure that that is a first class consideration in multi-networking to enable you to be able to do that. So one example I would think of is let's say you have a BGP peering situation, you have your workload up and running and instead of shutting that machine down or that pod down you would instead hot plug an interface because BGP peering will take a long time to happen.  So in a more stateful scenario you might want to be able to hot plug an interface. And then another use case where we would like to for example introduce some sort of QoS tiers into our cluster where we would like to connect different pods into the different types of connections and configure those that direct connections on a per pod level. But simultaneously being able to represent the whole network as one item that's very important for us and that might be useful in the future forwarding things where what if we want to then be able to apply a network policy to that specific network. So we'd like to apply it once for the pod network but then differentiate that network in a various ways. In this case here I'm showing an example of differentiating a bandwidth limits on each of those connections for each pod but they're basically that boils down to being able to parameterize any types of single connection to a pod the way you want it and the way your implementation handles it. Another use case that we are looking at is for utilizing your performance hardware. So on your on premise situations or maybe even in your kind of bare metal cloud instances that you might have you may have performance hardware that you want to utilize. This is a particular challenge in this space because something that we need to account for is having workloads being scheduled to the proper node that has the resources available. So something that we of course love about Kubernetes is it's an awesome scheduler and it does a good job of getting your workloads to where they need to run and just in time. But when you have resource constraint as well you need to give that scheduler that awareness of which of these hardware resources are available. Even today during the keynote talking about GPUs there is a mention of device resource allocation which comes from a history of something we call a device plug-in which was also for GPUs but in the networking space we also have hardware considerations so we wanted to look at this. So this diagram demonstrates SROV in particular where you would have a physical function which would be like your physical element of a particular hardware device and then your VF, your virtual function which is the like virtualized slicing of that particular resource. So we wanted to make sure that this is accounted for because in terms of multi-networking you often want to be able to utilize this investment. So now we want to walk you through a user journey that we envision. A bit of disclaimer is something that we still are in works and discussions with the rest of the community. But this is what we came up with for the last few months with our current project for multi-networking in-sync network and what we think to propose to the rest of the community. So the first step is to introduce any object. We will need to have some sort of generic handle to represent a network. Something that we basically take for granted when we create a pod today it just being handled by our CNI on how to connect a network to that pod. Here we want to have some sort of representation for that network and how the CNI handles it. This is what we want to introduce is the pod network object that will be very basic and have implementation agnostic fields that then can pick it up and implement. The first field we want to introduce is just a provider on who is implementing the specific pod network and this gives us ability to create multiple implementers in a single cluster. So that's another capability we want to introduce. And then lastly we want to have a parameters reference. So that's a gateway for every implementation out there to introduce their own parameters to the pod network and then introduce whatever they want to do and however they want to implement this. The next stage is slight changes to the pod. This is a bit controversial but I think this is not something that we can get away without this. So we would like to create a pod level field with least of pod networks that we would like to attach to. Those are the objects that I mentioned before and here we would have a list of explicit list of the pod networks that the specific pod has to attach. Here one important thing is the list is optional. So we want to make sure this is a capability, a feature that is completely backward compatible and doesn't require any clusters that don't care about multi-networking to worry about this at all. So we want to introduce a notion of something called default pod network. And you can think of a default pod network similar to a default namespecies today in today's clusters. Basically it's a pod network that if you don't specify any networks I will attach to the default pod network. This is basically the same concept what we have today. When you bring up a pod it just connects, it just has some network and that's the default pod network. That's basically what we are trying to achieve to ensure it is backward compatible. And the default pod network will be auto-populated today in the pod with this similar to let's say a node name is populated by the scheduler in a pod when you don't specify that. And then we want to get some status out of this whole thing. So what we want to do is leverage the pod IPs field that we today have in the pod. There is one restriction to that field. It allows only two IPs in it to be listed. And each has to be from a different IP family before NB6. And with this we'd like to just introduce a new field to the list called pod network. Basically then we assign the specific IP to a specific pod network. But still we want to preserve the backward compatibility and slightly change the requirement where it's still just two IPs, one IP per family, but per pod network. That will give us basically the same backward compatibility but with the ability to expand it to multiple pod networks in a specific pod. And lastly we want to as well give some status to the pod network itself. So we want to leverage the standard conditions in the object to represent what is the state of the object itself. So we want to have a ready conditions which is very basic state whether the object is cluster-wide ready for us to use. And then additionally we want to introduce something called parms ready. And this is an optional implementation specific condition that will give the implementation ability to control the readiness of the pod network indirectly through that condition. Alright, and I would like to talk a little bit about some implementation specifics in this particular case. As Machi mentioned, this specification is totally implementation agnostic. So you can take this structure that we're talking about and you can wire it up any way that you'd like to with any kind of implementation that you would like to. So in this particular case, CNI itself is an implementation detail, right? And in some ways we might take it for granted in Kubernetes that CNI would be how you're going to plug your network in. And I think in a number of implementations you will still see CNI being involved and CNI is going to be generally kicked off by your runtime. Before I move on to the next slide, I just want to give a very, very, very short history lesson which was the conversation about multi-networking in Kubernetes has been going on for a long time. And back in KubeCon 2017 in Austin, Texas, we got a good group of people together to talk about, hey, what are we going to do about having multi-homed pods in Kubernetes? For me is a really great example of how KubeCon brings people together and gets these conversations going. And we decided we're going to form a working group, we're going to figure out a specification for this and we're going to eventually look for a common ground home for this particular work. So previous to this, there has been work by the network plumbing working group to create a custom resource definition called the network attachment definition. And you might be familiar with some of the implementations. I am a maintainer of multi-CNI, so it's the one that I think of first. But it gives you a way to express how you're going to attach multiple interfaces to your pod. So on the left-hand side here, what you're seeing is how this would be set up with the network attachment definition and potentially with multi-CNI is you're going to have a custom resource. So that means it's an additional extension to the API that you create as a user. And then you're going to say that you want to attach it using an annotation, which anyone can use one of those as opposed to the right-hand side where we're seeing a native object. The pod network would be a native component in Kubernetes like a cron job or a network policy, for example. You would have your pod network, right? You wouldn't create a custom resource for it. Now, something that to me is interesting here is because the work for the network attachment definition was done out of tree, it does have, number one, a reliance on CNI. CNI configurations are made with JSON. So something that you're going to notice here is that you're going to have a YAML file with JSON packed in it. And if you are a developer and you are walking through an object like this and then you have to parse a different format, that is going to just rub you the wrong way for sure. So something that is going to be quite an advantage from a developer perspective under having the Kubernetes native multi-networking is you're just going to use client go. And you're going to walk through that object like you would any other object. And you're not necessarily going to have to pull in a library to parse this or roll you or God forbid have to roll your own way to parse this. So that is going to be a major advantage and it should make your life a lot better when you're writing something like a controller or an operator to have like a richer way to manage networking within your clusters. So the question may be what exactly will happen with multi-CNI? Well, something that's kind of great about this specification is that one, if you don't care about this specification, you don't actually have to use it. It doesn't preclude you from using everything in a totally backwards compatible way. So this doesn't preclude you from an investment that you might have in using the network attachment definition. That being said, as the previous slide illustrates, I think that there's a lot of advantages that we can get out of having this be in-tree. One of the things we haven't quite touched on in a big way right now is services, right? That's a real challenge. So I'm working with the network plumbing working group to try to figure out, you know, what's our North Star? How are we going to move forward as a group? And part of that story of what our North Star is is what happens with our container run times. We've been lucky enough to have some contributions from Mike Zappa and Peter White from Microsoft. And one of the things that's being looked at is what needs to happen with our container run times. So there's a lot going on in this slide. It shows you a lot of the life cycle of what happens in the CRI. However, take a look at the left-hand side with the red boxes is kind of the new fields that we need to pass both to and from the container run time, which might also execute CNI. So for example, in a multi-CNI scenario, we have to deal with some inefficiencies because we don't have this, right? So this is a query that Kubernetes API to figure stuff out where this could happen natively. And we can get the kind of information and back that we need for the stuff like Marche was showing with the status. So this is just a proposal disclaimer, but really looking forward to see what happens next with the container run times. All right. And now I'm going to ask you all to get involved. Before we're going to do that, I just wanted to show you where we are today.  There's something that we defined and we have few more of them. That's what we just show you. And out of those use cases, we managed to create and define requirements. There came up to be quite a few of them. And as a whole, it's becoming a big project to kind of handle. So what we did, we divided the requirements into phases. So we created currently four phases and we managed to define the first phase. So we have defined the API that we want to create out and how it's going to basically interact with POD and some basic interactions with scheduler as well. Right now for the next Kubernetes release, we're trying to get that merged and create an implementation for that in upstream Kubernetes. Our following phases will be to kind of build on top of that. We want to add more. We want to add some RBAC to this whole thing. We want to enhance scheduler to be able to introduce a selective availability of that, identify selective availability of the POD network across nodes. Then a next phase, which will be quite tricky because this is where we want to finally tackle services and network policies and how we handle that with multi-networking. And then lastly, this is where we want to look at some extended capabilities like hot plugin ability. So please help us with defining all those. Currently we have a Slack channel, SIG network, multi-networking. So all welcome and please help us define this whole big project and make it more robust and be able to work for every one of us. We meet weekly on Wednesdays in Pacific time zone. There is a meeting dog. This QR code will get you to it where you're going to have all the other links related to multi-networking. And lastly, this is our PR for the cap. You will see all what we talked about here in this talk and more. We need your all feedback about this to get this much better. Thank you very much and I think that's all I wanted to talk about. I think we have a few more minutes. If there are any questions, there's a mic out there. What is it on? It's not on. Can you? Yes, hello. Thank you for this presentation. I'm particularly interested in the use case of connecting to other applications that are running on-premise from within pods. Our application has a distributed nature with many components running on different platforms, different architectures. They need this ability to cross-connect freely, basically operate on an open network. Does this have any provisions for such connectivity? Basically from outside the cluster to the pods inside the cluster without needing to define services or having some separate agents process to facilitate that. Yeah, definitely. Keep in mind this is an API definition. So it all boils down how your implementation handles the whole connectivity. So the whole API that we presented here does not introduce the implementation itself. That's something that we need to keep in mind, right? So your use case definitely can be handled by the implementation that you would currently use probably and just be adapted to the new APIs. So basically you're talking about like a custom method plugin that appeals to like these new APIs. Yeah, exactly. Okay, I see. Thank you. Sure. Can you pass the mic to the next person? Thank you. So I know you said that the future of what this looks like in container runtimes is kind of TBD. What do you think that looks like as far as I'm looking at a host and I'm looking at the containers and processes running on that host? And today when I look at that, I have a network namespace for a process in the container. What do you think that looks like in the future with multi-network? Sure. I think that that will largely remain the same. So I think that you're going to see in terms of like the container architecture of the pod, you're still going to see that infra sandbox. You're still going to see your network namespace. I think that that should stay the same. But what you will likely see is if you were to look at that sandbox container, that will have multiple networks in it and that will be shared across the containers within that pod. So just like, well actually now I'm questioning myself, but I would think that for storage like a volume mount, you could have volume mounts that are shared across the containers in a pod, but that might also be isolated, but that should share so like you would have a pod, you have two processes running it in two containers. Both of those containers should see the network interfaces at that layer. But what I am hopeful that we wind up seeing is that the container run times themselves get more capability to actually do some of the work that say multi-CNI does today in the ability to make multiple invocations of CNI. So I'm kind of hoping to see something like that. Is that helpful? Yeah. So it sounds like in terms of what I'm actually seeing on the host, I'll still have one process. Well, maybe multiple processes with one namespace, but there will be multiple interfaces in that namespace. You got it. Yeah, absolutely. So you're going to have that one process per container, maybe multiple containers per pod, and then that infrared you got it. Thank you. Great presentation. How does this interact with the Gateway API? So this is something that's one of the integration points that we definitely have. Similar to what we are thinking of services and network policies, Gateway will be the next step. And it's, there are some ideas in my head at least on how that look like. One of the ideas and just throwing that in that a Gateway service can be done per network, which is keeps up then very simple, a single Gateway or service is assigned to a network and that's it. That keeps us simple. Today, it's all everything is assigned to default network, pod network. In the future, we can have those assigned to various different network, pod networks. Is pod network a cluster level resource or a namespace? It's a cluster level namespace. Yeah, that's what we're thinking. Yes. Would it be possible to have per namespace pod networks? Or is that kind of beyond the use cases that we're considered? I think we would have to talk probably in detail on why, because we would consider this as a core object like note, right? Keep keeping fine note. Why would you want to have a pod network on the namespace? And there needs to be some use case and discussion on why would you want to have that, right? I would assume. But right now we are thinking it's cluster-wide object. Thank you. Would there be a limitation on the number of interfaces each pod can have? Could you repeat the question, sorry? Would there be a limitation or how many interfaces maximum can we have? Okay, I see. I don't think we wouldn't impose any limitation. It will be up to the implementation and the node probably what they can handle, right? And again, up to the implementation. Keep in mind, depending on what you have in your path of configuring this, right? Maybe CRI will be in your path and that will have some limitations. From the point of view of our API, there is no limit. From today, we don't impose any limits, no. Thank you. This is actually somewhat related to the network namespace question. It's from a different perspective. I've used the host network C&I plug-in to a host device to move a device into the namespace of pod. This has one interesting limitation, which is a device on Linux can be in exactly one namespace at a time. It moves it out of the host. So this is a minor issue if you actually truly want that device in multiple namespaces, like host network does because multiple pods are truly in the host network namespace. Is there any idea that... And the other issue is pods correspond to the network namespaces. You get exactly one. So is there any idea that you could join an existing network namespace or anything in that space? Or is this truly separate from that? This is like the C&I plug-in. It's a multist today. Great question. A host device C&I is near and dear to me. I know it well and I have used it. That's an interesting challenge. And one of my own challenges with it is also like scheduler-wise, right? So like if you like, I guess the example I would give would be like, okay, telco-ran-lab. And you have like a couple of lab machines that have like a USB device to like emulate your radio network. And you want to move that device into your pod. And so you use host device C&I for it. But how do you get that pod onto the right box? That has been my challenge. But generally the answer that most people would usually give for that is that you would want to use a resource that is divisible, like SRIOV. The problem is I was trying to do proboscis to build up the Dix that it was SRIOV was in theory it might still work. But that's why I was trying to actually use host device I suppose. Do it VF. Yeah. And I totally feel your pain there because SRIOV is a pain. And host device can be like an easy answer for like, give me this device. It might still work. And that's what I'm going to try to do. So unfortunately I don't have like an awesome answer for you, but I love the question for sure. Last question. Great talk guys. Two questions.  Would it start as a V1 alpha? Yeah, definitely. We just showed one. Okay. Yeah. We showed what we would imagine in the future V1, but definitely it will have to start out as a V1 alpha. Definitely. Yeah. So the second question is would this introduce a V2 pod spec or would it be compliant within the... There was some discussion yesterday about it. Someone said that. I don't think that's possible. We don't know yet. I don't think we would want to do it. To be honest, I don't know. This is something that as I mentioned is has to be discussed with the community and see where we go with there. Yeah. I think it's a great path and great discussion. Thank you. All right. Thanks everyone. If you want to talk more, just grab us after this talk or anytime. Yep. Thank you all for coming.


Hey coach welcome back in today's video. We're gonna be talking about three tips They're going to help you run a successful basketball Academy. Now if you're watching this I know you're a basketball trainer, okay, and I've made a bunch of videos already on this channel for basketball coaches and After you watch this video, just comment below ask me any question you want We have a free daily newsletter You can click up here and find it there you can join it But my goal in this video is to cut through any distraction anything that you might have been Misled about and I just want to dig to the core about how to have a really successful business here and The first thing that you have to have is You have to have systems and when I talk about systems I mean you have systems that collect all of your payments You have systems that run all of your marketing you have systems in place for all the players that you train and You also have systems for all of the parents of the kids that you train So I'm talking about your clients now that you have these systems in place You're able to scale what you do if you have zero systems You cannot scale and personally I know this with my soccer training business that I've built over the last 10 years At the beginning I had zero systems There was nothing in place That guaranteed that I got paid month after month There was nothing in place that guaranteed that I was marketing myself There was nothing in place for the kids or the parents that I was working with there was zero and I was doing Everything the same way you see most coaches do it. All right, they get paid by the session They randomly post something on Facebook. They post a fly on Instagram. They post drills of doing in between the legs dunks on Instagram that does not get clients. Okay, I'm talking about creating real systems And when you click on this button up here You'll be taken to a page where I go deep into how I can personally help you create those systems. All right, so systems is Number one the second thing and to me this just comes down to pure Determination and grit, but you have to have the desire to have the best Program not just in your area, but in your state or the country And that just means that you are delivering more value than any other basketball trainer out there And the easiest way to learn what to offer and how to differentiate yourself from all the other coaches It's by simply going to watch other trainers in your area And what I would do this is an action step is go on Google Just type in about like private basketball training your city and you'll see all your competitors And you'll go to coach up comm you'll see other coaches who have their own websites That's a great way just to see what other coaches are doing and if they have like their location on Their website, maybe you can go watch some of their sessions You can see the quality of trainers out there if you just do a little research But what we need to do again is Separate you from them and how do you do that? It's really not by being a better trainer It's by offering more value to your clients. That's what it's about. Okay, so again Let's recap first. We talked about systems got to have those systems in place Second you got to be a better trainer. You got to be a mentor to these kids You got to have more value got to add more value to the clients that you work with all right And then lastly, this is to me my favorite thing to teach coaches when I help them. It's all about reputation So if you have Really high standards you have a lot of value that you offer to the kids you train Lastly your reputation is everything this whole game is based around your reputation If you have a great reputation you can get clients on demand if your reputation sucks No one's gonna want to train with you parents will find that out Like if they've realized that you don't really care about their kids that you're just doing it for money Like you can kiss this business. Goodbye. Okay, so your reputation is something that you constantly work on and the way you do that is by networking with parents networking with schools networking with other basketball coaches to Show them how much you care about the game and how much you want to give back to the sport when you have these Three things I've talked about the systems in place if you have that on lockdown, right? That allows you to scale what you do right? Secondly if you offer more value if you're different if you're better than all the other coaches in your area You have nothing to worry about you have zero competition at that point and then lastly when you build your reputation That is the thing that's going to allow you to again get clients on Demand and that's what I want to show you That's what I want to help you with and when you click on this button up here That will take you to a page where I will show you personally Exactly how to set that up. That's it for today's video if you have any questions comment below hit that subscribe button And I'll see you on the next video


Hello everyone, my name is Mr. Sandesh Pare, I am currently working as an assistant professor in the department of computer science and engineering at Vulture Institute of Technology, Sallapur. In this video, I am going to explain the algorithm to draw the line, which is known as Braceram's line drawing algorithm. So let us start by the learning outcome. At the end of the session, students will be able to apply this Braceram's algorithm to draw the line on the computer screen. So let us discuss about the line drawing algorithm. At the very starting, we will discuss about what should be the desired characteristics of the target line. First point is the start point. So this point is the initiation of any line. We can define it by saying the x and y coordinate. Using the x and y coordinate, we can define that starting point of any line and same is the end line. End of the line can also be denoted by the x and y coordinate of a particular line. So the starting and ending point of the line will automatically generate intermediate points, which will connect that point and make a line. So the next characteristic is the straightness. Whatever the line which is connecting the start to end point, it should be in the straight format. And the pixels which connects from the starting point to the end point, it should hold the same brightness. It should not happen that certain pixel is a little bit dark and certain pixel is little bit brighter. They should have the equal brightness along with the line. It means from the starting to the ending. And next characteristic is the rapidity. It should draw the line in very rapid manner. It should not take very long time to draw the line on the computer screen. And the next one is the directionless. It means your line should be a directionless line. It means you can start from any point to the next end line. It means you can change the start point and end point. Though it should be the same line, it means it should be directionless so that you can draw the line in any direction. So now we will discuss about the Bresenheim's line drawing algorithm. And this algorithm is at very first built or we can say developed to the digital plotters. But even though it is used for the CRT raster devices, CRT raster devices is nothing but the cathode ray tubes. So Bresenheim's line drawing algorithm can be used for this both devices. It means but actually it is developed for the digital plotters. And the job in the Bresenheim's line drawing algorithm is to seek or to find the exact locations or the pixels in between the starting point to the end point which will lead a straight line. And two major terms are here which are not discussed or which are not present in the last line drawing algorithm. We discussed that is the DD algorithm. The first one is the slope of the line. What is the slope of the line? It is used to define out whatever the bending of the line towards the particular location. Slope of the while building when we connect the start point to the end point at that time in the algorithm we should increment the x value or the y value after every step. So to decide to whether increment x or y in every step it is very helpful to understand the slope of the line so that we can lead to a perfect line. And second one is the error line. Error means we are updating the x or y value according to the slope and based on this the other parameter is incremented or decremented is decided on the terms error that is the distance between the actual line to the nearest grid line. So this is the basis of Bresenheim's algorithm. As you can see in this diagram there is a line which is passing through 0 to the next pixel and as we can see there is one diagonal line in between the pixel which is connecting the 0 to 1. And the desired line is compared with that diagonal line and on that basis the slope of the line is decided. So we can say that 0.5 value is the slope of the diagonal one so that if the particular target line is holding the slope greater than 0.5 and obviously less than 1 it means the vertical line will holding the slope line slope value 1 and the horizontal value is the 0 about the particular slope of the line. So the slope between 0.5 to the 1 will give you the error term greater than equal to 0 so that we can we have to plot the 1 1 pixel it should be our next pixel and if the slope the value is in between the 0 to 0.5 then obviously error bit will be the less than 0 it means it will hold the minus values in that case we will have to move towards 1 0 pixel that is we have to move horizontally okay means on particular y value okay we should move vertically or the horizontally or diagonally it is decided on the slope value and on that basis the error term is measured okay according to we have to move to the next pixel and in that the sign I once again repeat that sign of the error bit will help us to find out the direction of the next pixel okay so what is the problem statement in the brazen and flat algorithm that is there should be a two points first one is the starting and another one is the end point and we have to connect them as we can say we are dealing with the graphics algorithm we direct cannot draw the line okay we have to mark the pixels intermediate between the starting to end point and on that pixel we have to mark certain color there for that we can use the put pixel method so examples are 0 0 to 5 what should be the 0 0 to 5 5 intermediate pixels that is 1 1 2 2 3 4 it means it is moving diagonally and in the second example 0 2 to 0 6 it means 0 3 0 4 0 5 are the intermediate points in this we are moving horizontally so on that basis we have to find the intermediate pixel is the job of any line drawing algorithm so there is one question for you guys that what are the terms error and slope and how they will effect in the drawing the line so the answer is the algorithm 6 to select the optimum raster location it means the intermediate pixels which would help the drawing of the straight line and to implement this we have to increment the x or y value okay so which value should be actually incremented it is based on the slope of the line and we are going to increment that particular variable and what about the other variable okay so whether it should be incremented by 0 or 1 it is decided on the terms the error the sign of the error bit will decide it okay and it is nothing but the distance between okay that the actual line and the nearest grid location so we can discuss now the algorithm as you can see the x and y value are holding the starting point values and dx and dy are the distance between the x and y okay the m term is the slope okay now we are calculating the dy by dx it means on the x axis means we are moving x by x means one by one in the x direction and for each step in the x how much y value should be incremented it is calculated in the slope one okay and error bit as the starting always less than 0.5 by the slope it is the initial value of any error sign okay and after that as you can see the one by one step we are going to increment the x value and whatever the x y values are current values according to that we are setting the pixel and until okay as I said until the error bit becomes the sorry until the error bit is greater than 0 it means the as I said the sign of the error bit will decide to move horizontally vertically or diagonally okay according to that we will increment into the y axis okay and each step error bit will be decremented and whenever we get this negative error bit at that time we will drop that low okay and at that time we will move to the next step of the x and error bit will again set okay incremented by the slope value so that it should be positive so these are some calculation as you can see uh 00255 location is there slope is 1 and error bit is 0.4 at initial and according to the our algorithm the value will will be x of y or will be incremented and error bit will always negative positive it is the difference between these slope values so this is the output screen you can see on the screen okay after execution of the program so these are some references I used to make this video thank you


What's up guys, we're Akson34 back with another video and today we have a massive search for the ghost. We're straight up searching hardcore. We have over 70 packs here. We have shadow specters, judgement of the light and crossalls all first edition searching for any ghost rare we can find and before we get started the giveaway for this video I'll be giving away a silver warlord of dark world, blue eyes ultimate dragon ultra rare, slide for the sky dragon secret rare and obelisk the tormentor secret rare all you have to do is like the video be subscribed and let me know in the comments what your favorite pull is from this video hopefully you can say one of the ghost rares when we pull it. Let's start off with cross souls obviously the one we want the ghost rare is the clear wing synchro from cross souls then from judgement of the light it's the star eater and from shadow specters it's the divine night felgrin so here we go oh do we start it off with the ulti no it's an ulti okay oh a secret okay neck ross of sophia doesn't this come as an ultimate i think it does pretty sure we just pulled us an ultimate maybe not i don't know i can't remember neck ross of sophia secret rare that's a good way to start it i'll kind of have the pulls like right here if you can see him let's go with the judgement of the light let's see if we can start off hot with judgement of the light as well hoping that we can pull an epic star eater here we go ultimate rare or ghost rare would be awesome v salamander buzhingi wolf starts to scout and reverse glasses all right let's go i have pulled the divine dragon knight in secret rare i pulled the star eater in secret rare and i've pulled the clear wing synchro in secret rare i've pulled all of them in secret but none of them in ulti or ghost so hopefully we can do that ghost trick which number 65 there's actually a couple of really expensive ghost tricks or a ghost trick super rare and then number 46 i think those super rares are like seven dollars or something which is really good for super rares when that or not you know guaranteed so here we go you a penalty box zephyr core elephant or oh stellar settler knight zephyr thuben i don't know this guy but you guys will see the price pop up so there we go cross souls is treating us pretty well there's the putrid pudding body buddies okay every time i see that guy and just like okay i really didn't need to see that all right here we go judgment of the light get us something good here we go cheap cheap cheap fizzing the calibrator umbral horror shadow specters bring us that divine dragon knight ultimate rare or ghost rare would be awesome such a nice second card i really do like that card here we go fusion pump princess mecha phantom beast okay mecha phantom beast have some nice cards all right cross souls has been treating us well can it continue to treat us well with a ghost rare that's what i'm hoping here we go thoughtful sheep thoughtful crane void purification frightful factory and doom dog octhros all right so far it's just um only cross souls really give us anything here we go sonic boom yellow dustin number 104 xyz agent and vision fidel shadows specters give us something epic here we go these packs feel very um full for some reason boujin mikazachi all right i remember using this in dual links in the boujin deck what did it do again sent to the grave you can special summon this card from your hand oh yeah yeah yeah oh yeah i remember that add a boujin spell and trap that's what it was for okay and then being able to special summon it was nice too all right cross souls here we go ua rival rebounder yosin world bow hopper and spring goose okay i'm hoping we get at least like what two two ulti's in this opening three would be great especially if they're good ones umbral horror okay the calibrator man nothing out of judgment light yet but it's saving it's some good stuff for us i think dragon shield got a tag boujinki bore was also in the boujin deck come on give us a ghost rare here we go the search continues designer all right bow hopper oops judgment light come on give us the big boy let's do this boujin number 39 utopia ray victory okay that's pretty cool pretty sure this comes as an ultimate too so that's a pretty cool super rare first pull out of judgment light shadow specters here we go he's open so nicely vampire grace vivid knight noble arms Excalibur pretty cool that's a nice sword Excalibur all right cross souls where are you clear wing synchro let's go fiend grieving cybernetic fusion support designer fright for judgment light here we go ultimate rare let's do this galaxy serpent okay so oh wait there's the cold wing that's a decent common i think it's like two bucks which is i mean really good for a common it's not decent that's a nice common we'll set that over there shadow specters here we go can we pull some of those nice super rare as you too those would be good as well here we go return of the monarchs ultra rare pretty cool check out that is that grand morgue of the monarch is that or that is let me know in the comments which monarch that is okay back to cross souls fiend grieving that spot galaxy eyes full armor photon dragon there we go super rare oh we're running out of sleeves okay i'm gonna have to get more here we go judgment light we're back after having to get more sleeves we didn't want to not sleeve our cards if we can if we can do it we got time the calibrator intercept meadow cross so our shadow specters i'm thinking double ghosts in this video what do you guys think let me guys think about that swords at dawn vampire hunter super rare pretty cool pretty epic looking dude hunting the vampires wow all right cross souls clear wing synchro oh and don't forget about ghost ogre and snow rabbit that would be that would be pretty great as well i would take that all day every day judgment light what can you give us star eater here we go trap tricks oh that's a decent rare remember set that aside jingy wolf all right let's do that shadow specters bring us something big shadow specters come on for the ghost let's do this nope where's the divine dread or the the divine night fell ground up that's what he's called right divine dragon night divine night i can't remember moon mirror we'll just have to pull him to figure it out spring goose oh he pulled two judgment light by accident oh you know what time it is chicken latte chicken latte chicken yeah that's nice oh we got a tolia too a super rare yeah oh yeah chicken lattes that's what i'm talking about here we go super rare that's a decent super rare as well let's go back to back judgment light just because we pulled out to you oh and a colt wing oh that's not cold wing never mind i thought it was dw and a coach captain bare man and a cold wing there's the cold wing intercept meadow that's a nice pack cold coach captain bare man would i say bare wing i don't know you know what i'm saying at this point okay shadow specters here we go divine dragon night fell grand i think that's what it's called i think it's dragon i think that's in there here we go ghost rig mansion okay come on cross souls you know what we want we want a ghost ogre or the actual oh infernoid primaeus primaeus another ultra so we're pulling a lot of ultra ears right now only one secret though no ultimates so we're kind of hoping for some of those trap tricks trap tricks chicken lattes chicken lattes chicken lattes chicken lattes all right intercept tomato nice chicken lattes we got to pull that out the ultimate reason to open judgment of the light is the chicken lattes that is why you open judgment of the light okay rujingi ibis white dragon and a lot of ghost tricks in there i mean it's shadow specters make sense but still a lot in one pack okay awful sheep void purification there for path okay where are the ultimate rares where the ghost rares can we pull them it's been a long time since we pulled a ghost rare and i'm ready to oh you guys know what time it is start singing it there you go tour bus shadow specters oh crap we destroyed this pack drain shield make a fan and beast all right cross souls it is come on let's get something hot we've done okay but we're not doing anything crazy right now let's do something crazy okay come on monster ebone it's not an opening across all so that around monster ebone a monster i don't know what i'm saying judgment of the light oh the yellow piece of toast with the tail angry piece of toast very scary trap tricks intercept tomato all right come on shadow specters here we go and we're overlaying blue dust it well i gots creepy oh it skipped that but the marinesis princess of sunflowers the pump princess so i remember this the sunflower from dual links it was a very early card they added here we go sunflower all right where was i cross souls here we go awful sheep digital rising formal pinch helper all right we're on cold streak can we pull something good like really good like awesome cheap cheap cheap that's pretty awesome can't argue with that confronting the sea intercept tomato come on shadow specters give us something good chaining mission and fork all right cross souls let's do this you started us off hot so can you continue it please we start off with a secret and haven't pulled one since so let's see if we can change it up unexpected die okay that's really good that's a $10 super i open one well it was a $10 super the other day and i'm pretty sure it still is so that's pretty awesome that's one of our best pulls so far it's a superhero maybe the best actually $10 on a superhero is really good okay sonic boom kujung kai shadow specters shadow specters hadn't done too much for us we pulled some stuff but nothing too crazy that i know of at least i don't know the set too well so i might have missed something number 65 full the pump princess a lot that's for sure all right cross souls pendulum rising redraptor okay charge me the light we need to pull something good yes we do can we do it guys hit the like button for luck i think we can do this here we go there's a super rare all right come on ghost rare it's been a long time it's been a very long time i'm trying to remember what was the last ghost where we pulled wasn't the it might have been the rainbow dragon and that was a while ago by the way guys i did send in the rainbow dragon to ps a lot of you guys asked about it i sent it to ps a it might be a while it's on the 40 day turnaround so the 40 day turnaround is obviously 40 days at least and then they have to they don't start it until they log it in the system which takes forever sometimes because it's been there for like a week and they haven't logged it so hopefully they'll do that soon and oh fried for sheep and we can get started on grading it and hopefully it will get a tan i should be insane there we go fried for sheep super rare let's go shadow specters think i skipped judgment line but that's okay here we go go share we need to get one come on oh there we go secret rare melee melee of the trees melee melee something like that secret rare i'll take it though that is our first secret in a while the rest of our cards another pump princess so we've got two secrets we have no ultimates no ghosts so yeah that's not what we're looking for we need an ultimate rare come on right for factory judgment of the night come on let's do this give us something make a fan of beast all right nothing shadow specters can you bless us with an ultimate rare divine night velagrand divine dragon night whatever his name is then i can actually know what his name is hawk and bore oh man this has been rough this has been rough a little bit not too horrible but it hasn't been great for how many packs we've opened it hasn't been great fright for sheep again we just pulled this guy primitive butterfly what a interesting card check that guy out pretty funny judgment of the light can you please pull us something judgment of the light please please how the earth chikolates we asked and we received the chikolates make sure you guys sing the song shadow specters bless us with a ghost rare come on noble night bores those these are not the good supers i don't think there it is oh we're getting down to maybe like 20 packs left of the i think we opened 76 packs today which is a lot of packs here we go fright for fusion okay okay give us something good come on can we end on something something good underworld fighter colt wing there we go finally got that card again so our second one and that's how i probably missed some but here we go shadow specters bless us with an ultimate rare jingy another pump princess that's like number 20 here we go cross souls raid raptor all right come on here we go i have a good feeling about this this is about to be the one that blesses us with nothing the putrid pudding body but that's even worse than nothing that's like evil it's like curse you don't want that come on judgment make a fan and beast nothing again whoo it's getting close it's getting close can we pull the ghost rare we're searching for a ghost we need a ghost oh yuki onna oh my goodness we need a ghost we haven't pulled a ghost rare in weeks weeks i know it's kind of funny it's not that long we want one we want another one spring goose judgment of light oh my goodness feel like i've opened a million judgment of light oh we're losing packs they're going everywhere all right oh number c 104 all right it is a super rare i will give it that it's a super rare okay last what 12 packs ish oh my goodness where are the ghosts where are they they're not there cross souls come on give us that epic third wing synchro dragon come on half unbreak great primitive butterfly oh my goodness come on vertical landing no Darth Vader Darth Vader would be so he'd be upset about this here we go fox oh my goodness we're pulling nothing now are we not pulling ghosts not pulling ultimates either it's a little scary here we go fiend grieving harpie harpist there's another super to go along with all of our other supers oh let's go crosshills we do have four of those left can the last few crosshills packs save us half unbreak raid raptor judgment of light here we go number one of two cold soldier wolf bark again i pulled this guy recently oh my goodness keep pulling the same cards he's not too great either he's only like two bucks for a dollar shadow specters here we go come on battle boxer rabbit puncher whoa i'm going everywhere kid moto dragons aren't too horrible i think it's a couple bucks my piles are huge here so many so many packs okay five packs left we got three crosshills let's start opening these can these pull something epic here we go you okay nothing out of that one we have to believe come on four packs left can we pull even an ultimate rare in the search for the ghosts we can't we haven't pulled any it's a teller night oh my goodness let's go with shadow specters in this on something good let's go come on number c 65 oh two packs left judgment of the light in dust with something good here we go we got a shape sister i've pulled this guy like three times i guess this girl i should say it's a shape sister final pack crosshills oh my goodness this has been pretty pretty rough see we can pull something good come on guys hit the like button for luck nothing oh my goodness all right let's go over what we did get though we got a lot of stuff it's just uh nothing too crazy so here's some comments we got the chick a latte so of course we got a couple cold wings we got three cold wings and a rare mermelio for other pulls we got shape sister the coach soldier wolf bark secret we got a meleli of the trees i really have no idea if that's good so that could be good i've never really heard of it though and looks and then our first secret we got in the first pack was neck cross of sophia so we did okay we just didn't do incredible we didn't find the ghost we're looking for so we'll have to keep looking let me know in the comments if you guys want to see more search for the ghost and what sets and yeah i'll see you guys later thanks for watching peace


No, I don't think it has because there will be an ongoing problems between the left and the right inside the Labour Department. They don't know whether they want to be totally left or totally right.  It's made it worse because Cunliffe's not a bad face for the Labour Party, yet they've put him out right out to the back. So no, I don't think that's solved the problem. I don't think they put to rest. I'd really like to see some clear leadership in the Labour Party, especially if the election's not that far away. I don't think Cunliffe's going to go away and I don't think the Cunliffe's going to be able to stay either. So I just think that there's got some real problems at the top. They're unsettled. They still haven't settled their differences. So there's a lot more shorting out to go on yet. No, I don't think so. I've been paying a little bit of attention to this. I think they've just still got leadership issues. So the people that supported David Cunliffe are still there and they'll probably still keep on poking away at the leadership. So they've got a little ways to go yet. I hope they find someone in the next couple of years, but they've got a way to go.


This study investigated the indications, surgical and functional outcomes of robotic or endoscopic facelift thyroid surgery, FDS, and compared them to those of other surgical approaches. It found that FDS is a safe and effective approach for thyroid benign and malignant lesions, reporting similar complications to conventional thyroidectomy and excellent cosmetic satisfaction. This article was authored by Jerome Alecian, Piero M. Fisichella, Giovanni D'April, and others.


So they say you can teach a parrot how to be an economist. Just get the parrot to repeat supply and demand. So we'll apply supply and demand to a few puzzles. So for instance, water, you need that to live and it's really cheap. Diamonds, like the one that is around my wife's ring finger, are very expensive and why? Well, it all relates to supply and demand, in particular to supply here. Here in Pennsylvania, there's plenty of water. So water is really cheap, but diamonds are really scarce. So at the margin, the value of using water is really low, almost zero. At the margin, I guess I could take a shower for 10 less seconds this morning. Not a big deal. But diamonds at the margin are very valuable. We can talk about why people like diamonds and why they're valuable, but it's clear they are valuable as tokens of engagement. Similarly, we can talk about people we see on TV versus your elementary school teacher. So who gets paid more?  Your fourth grade teacher, I don't know, might get forty, forty-five thousand dollars a year. This giant behemoth, maybe three million dollars a year. Who's worth more to society? Well, on average, couldn't get along with our fourth grade teachers. But at the margin, which determines how people are compensated, our seven-footer is much more valuable. Because as any basketball coach will tell you, you can't coach height. I'm not talking about Shaquille O'Neal. I'm talking about the third center on any NBA team who only play three minutes a night. And my favorite, and hopefully you'll have a film with him, is Chris Dudley from Yale. Where I went to graduate school and I watched Chris play in graduate school and he was pretty good in the Ivy League and he played in the NBA for about 15 years and made about 35 million dollars. I don't know what Chris did with it all, but he's gonna, he made a lot more money than I ever would. Well, Chris doesn't owe me anything, but Ari, Ari, I'm waiting for you, buddy.