All right. Good morning everyone. This is a huge room feel free to move forward so it doesn't feel quite so big Hope y'all had a good first or maybe second day of cube con this year We're gonna talk today a little bit about GPUs with Kubernetes and virtual cubelets and Well, let's get going My name is Dean Troyer. I'm with salad technology We're a relatively new GPU cloud provider Distributed clouds and all sorts of locations Distributed GPUs. I I should say This talk was actually proposed and primarily written by Gotham Venomah who is unable to be here today So it is just me we're gonna talk a little bit I've got it I've got a story about a mythical app that Needs some AI capabilities and we're gonna kind of walk through how How you might add that capability to an existing platform We'll look a little bit about what they've got the back end and What the what the exact needs are? Then we'll examine one split one specific solution that spoiler alert, it's a virtual cubelet and Look at how that can can solve their problems and if the demo wins are Favorable for us today. We're actually gonna walk through bringing one up So our story is around An app called slackers at work This is a mythical app that has a feature called the slacker tracker Everybody's worked with a guy probably named Joe Doolittle who takes 30 minutes to get his coffee in the morning He spends two hours at lunch. He's got to make the rounds of all the departments before coffee break And this app is for people to keep track of where he's at at any given time We've all worked with somebody like him probably more so before 2020 than now, but Anyway, that's that's the situation that we're in it's just your basic mobile app and They've decided product has decided that they want to add QR code tracking to this app So all you got to do is point your phone at Joe to mark exactly where he is at any given time Like like too many product teams they leave the implementation of getting the QR code on to Joe as a detail that someone else will solve Now more realistically it's a it's a cloud-based app So they don't really have any local hosting abilities, you know, they don't they don't operate any of their own service It's all it's all cloud-based Which means they also don't have any data center resources any of that usual stuff and their existing cloud provider Well, let's just say they don't have an affordable GPU offering without Minimum spend commitments and all sorts of other things that a that a small app like this doesn't really just can't can't afford to deal with Which also means that they're not heavily invested in in too much beyond the base the base orchestration of their stuff and Of course, their app is currently all based around Kubernetes Now if unlike slackers you do have Some local hosting abilities, you know, one of your options is to to get your own GPUs That alone seems to be part of the trick at least to do it affordably but the considerations are pretty much all the same as for Hosting anything else yourself, you know, you need your physical facilities pink power pipe and You've still got the problem of orchestrating workloads on to those GPUs In terms of looking for a cloud provider, you know, obviously you're gonna look first at leveraging whatever existing relationships whatever investments you may have Some folks are eligible for some free credits that are useful free credits expire and You've got like I said the minimum spend commitments as an issue and you may have new APIs to deal with either with an existing provider clearly with a With a new provider, you're gonna have probably a different API So being able to use your existing orchestration tooling, you know your Ansible's your terraform or whatever Is of a great benefit So in summary Slackers are looking for for a solution they've got Existing Kubernetes clusters They're managing it mostly with helm right now. They're pretty basic and they're fully buzzword compatible otherwise and They need these additional external GPUs to build their QR codes They want to use stable diffusion with QR monster and make fun codes or more Specifically, they want to try and disguise them so you don't see them on Joe quite so easily So our solution as I mentioned is a virtual cubelet that will connect to a GPU cloud Today, we're gonna use one that oddly enough. I'm kind of familiar with and That offers this particular salad offers thousands of distributed GPUs running containers on gaming PCs around the world So what is a virtual cubelet? It's essentially a translation layer That takes Kubernetes control plane events and translates them into something else another API most often To allow you to orchestrate external resources via the commands and the tooling that you're already used to You can run more than one so you can tune and schedule things in particular ways You can control what gets scheduled on to those and The virtual cubelet here shown is a Process not a physical node. We've got the three nodes running the regular cubelet process this is a Just a process and you could run it in your cluster You know, we've we've all probably heard the stories about people who brought up their first cloud And they put their DNS in their cloud and then they couldn't cold-start it We're not gonna have that problem because The virtual cubelets not part of the critical path and bringing up your cluster So we're gonna extend Kubernetes to use the existing primitives the existing tooling to orchestrate the workloads out to these GPUs and Most external providers like this are gonna have provider specific metadata that clearly Kubernetes doesn't know anything about there are mechanisms of course to get that into your specs and Pipe that information down to the external API that you're talking to One of the other things that that's a benefit of doing this with external Stuff, especially if now in in slackers cases isn't it? But if you're dealing with something that's a publicly visible endpoint putting these out side of your cluster even outside of your entire network Can be a benefit and I mean it also can be a drawback for some workloads You you want that close network connectivity and that is one of the downsides of virtual cubelets is It's if if anything at all it's weak in being able to orchestrate your network back into your regular cluster But for things that fit that model well That don't need, you know a tightly coupled network. This works pretty well basically we're gonna we're gonna take multiple external things and and in this case GPUs and Present them to your Kubernetes cluster as a single pool Basically cloud 101 type stuff But we can also label, you know, if we're running multiple virtual cubelets. We can label them There's you know all the usual ways of determining what workloads run on which systems So this is your basic Kubernetes diagram. The left side should be very familiar to all of you It's a you know a control plane with some nodes around it and and a user an application out front The green box in the middle is the virtual cubelet And as I said earlier that is just a process This is a logical diagram physically. It's probably gonna run on one of those other physical nodes It is taking the control plane events meant for it and translating them into in our case Salad cloud API calls that takes those GPUs They look like pods to Kubernetes and they look like they're all running on one giant node the the virtual cubelet process itself is Probably a single go binary virtual cubelet is The the project there's a repo Is a library that defines a set of go interfaces That you have to implement to to write your back-end provider But that's what provides the standard Kubernetes side of the of the connector I'm not aware of this being done in any other language at this point Would be interesting to to know but I think pretty much everybody's gonna do this and go So it makes it a relatively lightweight thing to run If your budget is being soaked up by by paying for GPUs then maybe you need to run it on a Raspberry Pi, but again No need for that. We can just run it in the cluster itself In our case we have a little helm chart included in the repo for our virtual cubelet that does a very basic deployment of it that's a Sample helm chart, but basically this is just going to tell you that We're using helm to bring up the virtual cubelet directly, so Let me check one thing real quick That's green awesomeness So let's try it Let's see what we can do. I am running Docker desktop with the Kubernetes on my laptop here So this is all very local Demo And I've scripted a few of these things just for simplicity So when you start that up clean, you're only gonna have one node. That's the control plane and no pods the Let's do a start and because the helm install command is is a little long Can I highlight this for you? That's the helm install command that we use the configuration at least in our case is all done via command line options, so you'll see some, you know some Solid specific things in there. You'll see like the namespace that we're going to use and naming the naming the process itself and what that looks like is Now we have at the bottom is the pod running our virtual cubelet process and Up in the nodes. You'll see the KC demo vk. That is the cubelet agent ready to receive Things Let's see It looks like I put the wrong tab up on this side This is oh come on There we go This is salad cloud portal This is where we're going to look from the salad side at what we're running Container group in our context maps to a cute Kubernetes pod So back over here cube cuddle apply demo qr.yaml and That's pretty straightforward. Let's see what it did so we have two pods That are coming up and again if the if the winds are blowing in the right direction.  I actually have This isn't just to just to show you what it might look like. This is what it should look like Once you get in to look at what what is running We've got a we've got an instance of a QR code generator and fortunately because this is the one we're actually going to look at This image is six gigabytes and takes a few minutes to get set up And I didn't want to wait on that But this is what it looks like. We've got five GPUs running behind this thing right now Still nothing dad gum it I didn't realize this is gonna be so close. So anyway Obviously slackers at work would not be using a a form like this But oh I've already got it in there Joe do little We're gonna make his QR code. So that's what the code would look like by itself but Yeah, plaid flannel shirt Joe likes to wear flannel. So let's Whereas there it is build one there's a little checkbox down here too to validate it to make sure that it's actually readable Generating generating generating I don't know does that count as a plaid flannel shirt for Joe do little Let me see if it works. Oh good grief. Yeah works for me Now and I say that because we have had some people on Android have these things not be quite as reliable. There's There's tuning. There's all kinds of things that go into that yet This demo app was put together by our solutions architect Sean Rieszewski and we were talking about this last night and it's just We're not gonna spend we decided not to spend that time Trying to get it, but it also gave us here. This ran on a 30 60 ti 8 gigabyte of VRAM You know took about three seconds and down here at the bottom We have the data content So anyway, you think you think somebody could print that on a sticker and get that on Joe's back without him knowing it Let's see oh just for grins I want to see if this thing ever came up of course not but at least to show you that Even if it doesn't work we still have standard Commands at our disposal Let's get rid of it And now they're terminating So That is that is what it looks like In a very in a very quick sort of application Now I gotta find That window go back full screen This is another just simplified diagram of what it actually looks like You know, we've got the Kubernetes on the left the virtual kubelet in the middle and then the salad cloud api and Like I said GPUs around the world Waiting to to do fun things and by golly without a demo that didn't take as long as I thought it was going to um We are here Booth E27 if you want to know more about salad itself And if you want to know more about the kubelet stuff and especially the proof of concept that we built get ahold of me and We can go from there do Geez Do we have any questions? We've got a microphone over here. This is a huge room if you wouldn't mind the can we get the Question mic up Well speak up and I'll repeat your question. We don't need to wait All that at the level that we did here today. You won't have that you can always inside your container Build that in you would have to build that into your can container to tunnel back into your internal infrastructure unfortunately virtual kubelet itself doesn't do much for networking the The implementations that I've looked at that the claim to support a little bit of networking They're all pretty much doing it themselves one way or another So yeah, this isn't necessarily going to work for every job, but for the ones that fit it it works Question I forgot to repeat the first question. I apologize. The question is what sort of network isolation do we have? For the for the GPUs in our GPU network The GPUs our network back to our internal Hubs and things via wire guard so we've got that all they're they're completely isolated the We've got level of organization Organization and project so we can isolate that at a project level and we can isolate it individually So the GPUs may or may not be able to even talk to each other if they're in the same thing like the five that I showed Right now. They can't even talk to each other. They're completely isolated. You can of course always build that into your container But by the default it's it's completely isolated to just that GPU Back to our our front-end our load balancing front-end. I think it's working now. All right My question is about the GPUs. Are you able to schedule multiple? Clients, let's say on one GPU. Can we split the GPU with the way that you're arranging things? Right now. I'm gonna say to clients. No, you're gonna get one workload per GPU if If you Have a workload that can handle multiple things at once at that level. Yeah, you can do that Basically, what we're doing is taking a container That needs a GPU to do whatever it's gonna do and running it, you know on that machine locally So I mean like this demo app, of course, you can have multiple people hitting that endpoint at the same time You know, it's not it's not single-threaded or anything like that. It's what you would expect. I Guess what I'm looking for is scheduling fragmenting and running multiple workloads on a single GPU. Gotcha. Thank you Hi, I was a little bit curious about the Relationship between one virtual cubelet that then maps to all these different physical Machines under the hood physical GPUs Just intuitively it seemed to me that I would want to have a virtual cubelet per physical machine to avoid running to situations where You might request Resources that like cross a boundary to multiple physical machines that then would incur high latency overhead Whereas if you would just scale your request down a little bit to what fits on a single device You could pack it all together more efficiently So I'm curious is that something that's very easy to configure to have like multiple these virtual cubelets or is that Like the best practice for this approach I'm not sure I can speak to what is the best practice, but you can run multiple virtual cubelets You know if you wanted to say in our example if you wanted to segregate all of the GPUs with 16 gig or more VRAM You could configure it so that you know, that's in one virtual cubelet and all the smaller Maybe less powerful GPUs are in a different one Our system has the ability to do that through the filtering You know the stuff that we would add as attributes to the workload and then we'll handle that sort of thing We can select what class we want to run on But anything else like that you could run multiple the other thing is you could run one virtual cubelet per provider In fact, I think there might be one out there that does multiple providers built-in one per process But the same code will handle multiple providers Okay, so virtual cubelet itself the library doesn't restrict any of that But is there any particular reason to prefer the way that you showed it where you have just one virtual cubelet mapping to a potentially infinite pool of physical machines That's the I Guess that's the common way Partially because if you're gonna run one virtual cubelet per Physical node now you have to bring those up and down That's that's your control plane. You don't want to be managing that on workloads or anything like that I mean, it's it's like adding a node to your cluster You know, that's not something that well, I guess it is in some cases something that you just scale out automatically But I don't think you have to worry about it the virtual cubelet isn't actually Yeah, whatever your control plane load is is the volume of data that handles I mean, it's not like it's gonna scale there badly In this particular case, it's just simpler and the way I've seen I think the azure one works like this It's just one pool now Like for us we configure the virtual cubelet for Down to the project level. So, you know, we've got a like a an organization and an organization can have multiple projects We have to give the virtual cubelet those two bits of information. So if you want to run multiple projects, you're running multiple virtual cubelets So in terms of breaking up what's behind it that would be in our case That would be the way you would have to do it below that. Yes, it's your choice. Got it. Thank you Morning. Good morning. First off, I feel attacked about the flannel comments. I'm really upset about that Apologies, I hope your name isn't Joe. No, not Joe, unfortunately How does this look for like an on-prem if I have on-prem GPUs in virtual cubelet How do you can you reach out to an on-prem another kubernetes cluster for instance or You know, did you've leveraged GPUs in a different cluster in in what I showed you cannot you would have like I said earlier You'd have to build that into your container via. I don't know set up your own wire guard or something to come back into your infrastructure If you're pointing the virtual cubelet at another internal cloud, you know, let's say you've got a proxmox or something setting over to the side Whatever it's got available to it network wise again The virtual cubelet isn't doing much for your networking if you can set up your network so that it the Cloud that it's talking to can do what you need. That's how you'd have to go about it. That's external from the cubelet Okay, I was thinking more along like the Jeep thinking more like the GPUs I mean can I just have GPUs in one cluster and then have another cluster that just calls the GPUs across Do I have to use something more complex like salad or some other virtual GPU? No, you can you can do it yourself I think I might have buzzed past it pretty quickly. There are other solutions for doing things like this natively within Kubernetes without doing the Virtual cubelet to get there and that might make more sense for that situation Okay, like again because this is this is what we are we tailored it to that. All right. Thank you Hello. Hello. I'm quick follow up question to the previous previous question. It's a technical one This cubelet the virtual cubelet presents me with like 10,000 GPUs, you know, right potentially so let's What if I scheduled a pod that requests a hundred GPUs? How do you solve that that that pod will never get scheduled? But I also know about it you use an admission controller or what prevents it from trying to do stuff like this as Our code sets right now you would get a hundred pods It's one GPU per pod That's one of the things we just haven't gotten to yet Salad itself can run I think I showed you in that in that one workload way had five GPUs sure underneath one endpoint I think my question is if I schedule a single pod requesting 100 GPUs, right? We can't right now. This can't do that. Of course not but my question is How do you prevent it? It just it stays because it will try to schedule it on the virtual cubelet because it has 7000 GPUs If it doesn't have the resources it should fail But it has the resource technically, you know, I'm I'm afraid I'm not gonna be able to answer that well, okay That seems to be more of a of a Kubernetes Internals thing. I am not a Kubernetes expert. Unfortunately. No worries. Thank you. All right. I'm apologies Nice talk is the engine from Apple. So first a comment on previous question about the shared a GPU So as some of you may already and yeah, be aware so with the recent and NVIDIA GPU device plug-in and also Kubernetes support and actually We can share or virtualize physical GPU right and they are time slicing and sharing and multi-process sharing or Probably most interesting is called a big and a multi instance GPU. Okay So let's come to my question and so the virtual node that definitely is a Good solution right for the flexible capacity from provider. You mentioned server this and edge computing But when we compare right with the native and GPU support now, right? They are already in the device plug-in most recently in the community have something called the dynamic resource Education resource claim so I want and so can you comment to write compare this native support of the GPU node Solution with this and using the virtual and the Kubernetes or virtual nodes So in particularly what about the complexity and the administrative overhead that introduced by The virtual Kubernetes if we are I want to run a GPU cluster, right? What would be the Better solution or it's depending on the use cases. I'm unfortunately like I said, I'm not a Kubernetes expert So I'm not sure that I can compare the two The management overhead that we introduced is basically the virtual kubelet process and Then whatever you have to manage on on the back end that you're using I'm not familiar with the other the other things that you mentioned unfortunately, okay It's fair but I am just measuring is you can run definitely supported a GPU node right and natively without yeah I would guess yeah, my personal opinion probably really depending on the use cases. Yeah, I think both will have their applications Okay, thank you very much. Yeah, not everything is gonna fit for this. Yeah Thanks, thanks for the talk and it's great idea and I'm a towel from Google. I have a question about And do we need to change the workloads to specify like I want to use star not a cloud in the pot like other as a So in my pot specs, do I need to make some change? Yes, if Let me show you that You've got a couple minutes yet Also to share some background and I think today the Kubernetes GPU API is it's not that standard and it's like specify how many GPU I need for this part there's no GPU type and no GPU driver version and How can I know the GPU I get will will be installed when the desired driver version and designed GPU type That's a that's a hard problem and that's one what we do have already We've got a relatively standard Management container that we push out in terms of the drivers that are pre-installed on our GPUs You know, we're gonna give you we can tell you what version of CUDA has for example So in this case, you know, that's that's unknown as far as this is the this is the yaml that I used to attempt to launch it And those annotations there in the middle. That's the salad specific information That we needed for the for our workload Basically, we're the GPU classes. Unfortunately, that's a you you ID But that represents in salad a a class called stable diffusion compatible So it's a wide range of of you know cards and memory capabilities And the rest of it is is just the configuration for the app itself The other bit in here that is different is at the bottom the tolerations I Don't have in my head exactly what it was we set on the virtual cubelet itself to match that But that's how you control which virtual cubit. Yeah, that's my question. Thanks. Okay. Yeah Anyone else? Great. Well, thank you everyone for attending. You really appreciate it And like I said, we're in e27 and hopefully that scans for you Anyway, thank you


Mr. Malcolm Johnson, Deputy Secretary General of the ITU, Excellencies, former officials of the ITU, current and former members of the Radio Regulation Board, and former AFRB, current and former chairs of the ITUR study groups and CPM, and former CCIR study groups. Ladies and gentlemen, dear colleagues and friends, it's a pleasure to address you this morning in opening these celebrations of the 110th anniversary of the Radio Regulations. 110 years ago, only a few years after the decisive experiments of Alexander Popov and Juliebo Marconi, the first international radio telegraph convention was signed by 30 maritime states in Bali. This convention contained the first regulations governing wireless telegraphy and have since been expanded and revised by numerous world radio conferences and have evolved to the regular regulations, as we know them today, encompassing all the uses of radio waves. Just a year ago, WRC 15 adopted the latest version of the radio regulations, which has recently been published and its decisions were signed by 150 countries present. This was the 38th WRC to modify this global treaty. Your presence here, ladies and gentlemen, illustrates the importance of this treaty for which all countries in the world commit to use a common resource which is spectrum and orbit resources in a harmonized, coordinated and equitable way with the objective of avoiding harmful interference. We are gathered this morning to celebrate 110 years of success of the ITU community in adopting and improving this global treaty in a way that creates certainty for investments in radio communication systems while constantly incorporating the progress of technologies and evolution of our societies. Celebrating this success is also paying tribute to four generations of engineers who have dedicated their lives to make this happen. Starting with Alexander Popov, who was actually one of the delegates in the 1903 Preparatory Conference, which was kind of a CPM at the time, just three years before the first WRC. You may wonder how it is possible in today's hectic world where everything is changing at the relentless pace of the rate of technology, how it is possible to find 300 and 3,500 men and women from 163 countries. Together in a building like this one for four weeks, days and nights, after four years of exhausting preparatory discussions, and to decide on a legal framework that is intended not for tomorrow or the day after tomorrow, but for the next 20 or 30 years. The reason why this is possible is very simple to me, is that without agreement at the end of a WRC, the future of radio communications would be problematic. Since 1993, the WRC process through which the radio regulations are updated to meet evolving spectrum requirements and technologies has become a permanent process, which is fed by the studies carried out by the ITUR study groups and summarized in the report of the conference preparatory meeting, the CPM, and conducted by the ITUR membership. Let me thank the current and former chairs and vice chairs and all the delegates of these study groups, the CPM and former CCIR study groups for your contribution to this process and your presence here. The second element to feed the WRC process is the radio regulation board, second body, which is composed of 12 elected officials from all regions, which adopts the rules of procedure, the complement of the radio regulations in their application, and acts as a referee in conflicts arising from the application of the radio regulations. Let me thank the current and former members of the RRB and IFRB for their presence here and their work in support of making the radio regulations better. The third element is the work of the Radio Communication Bureau, which administers the applications of the radio regulations and provides support to the whole process. Let me thank the two former directors of the BR, Mr. Robert Jones and Mr. Valerie Timofeyev, for their presence here and their outstanding leadership through the issues of their respective mandates. The fourth pillar of the radio regulations is the ITU Secretary General and the other bureaus, which provide support in organizing the work of the BR. I would like to thank Mr. Malcolm Johnson for his presence here and of course Mr. Yoshio Tsumi, former Secretary General. Ladies and gentlemen, digital transformation has become the engine of work, economic and social development and I believe that radio communications are the vector by which most of this transformation is taking place. Radio communications contribute directly or as a neighbor, as Malcolm said, to the 17 SDGs adopted by the UN last year. Mobile and broadcasting networks, satellites, radio relays, radar strolls, short-range devices such as Wi-Fi or Bluetooth are constantly providing us with the ability to access and exchange a wealth of information as well as application that we are using seamlessly without realizing that they all rely on one scarce resource, which is Petri. The radio regulations are the basic instrument which permits the orderly use of this resource and therefore enables all this to happen, in particular when it comes to mass market wireless applications. Since 1927, the radio regulations enabled the successful development of a number of such applications, starting with shortwave radio followed by television FM radio, Wi-Fi and Bluetooth more recently, satellite positioning, GPS, GLONASS, GALINEO and COMPASS and satellite television reception. Today, more than one billion people watch TV through terrestrial television broadcasting and a similar number through satellite broadcasting in frequency band, which have been harmonized globally by the ITU, radio regulations from the date these technologies made this use possible. Since 1990, the number of mobile subscription increased from 11 million to more than 7 billion today. We are now witnessing the full development of the third and fourth generations 3G and 4G mobile broadband systems based on ITU standards known as international mobile telecommunications IMT. Nearly 4 billion users are currently enjoying the benefits of IMT services and the development of large-scale fifth generation will raise this number to 6 billion in a few years and accelerate the digital transformation by integrating the internet of things and the vertical activities like health, transportation and retail. That's visible but equally important, the radio regulations are the enabler of satellite imagery and Earth monitoring, space science and space missions, meteorology, maritime and aeronautical transport and safety, civil protection, defense and security systems. Ladies and gentlemen, from the beginning the WRC process has been one of constant improvement over the years to ingest the international regulatory framework to new technologies as they develop and enable new usage as these usage modify the spectrum requirements. Throughout this process, consensus is the constant practice in order to ensure that the WRC decisions, whether binding or not, will be implemented worldwide thus reinforcing global harmonization. Consensus also ensures that decisions will not lead to disruptions to already deployed networks and services. The radio regulations are an international treaty and the WRCs which modify them are treaty making conferences. Decision by consensus is the guarantee that this treaty as it evolves will continue to be reflected in national legislations and enforced by national governments as a consequence of their signing the final act of the WRCs. Bending this consensus is a key requirement of the four year preparation cycle of the WRCs. This is achieved through the leadership of six regional groups which regularly convene preparatory meetings and develop common proposal to the conference. I would like to thank the heads of the regional groups who are present here today for their wonderful work and for being here with us today. In addition, this process is supported by informal interregional groups meetings in addition to and in support of the preparatory process carried out by the ITUR study groups and CPM. On this foundation, careful technical and operational as well as regulatory studies ensure that the modifications to the radio regulations introduced by WRCs respond to the rapid technological and social revolution, keep harmful interference within manageable limits under all circumstances and maintain the right balance between the protection of incumbents and the satisfaction of emerging needs. Thanks to this process which has been constantly improved over the years and has now become a permanent one, the radio regulations deliver a stable and predictable global framework which ensures long-term protection for the investment of a multi trillion dollar industry through the universal commitments of governments and all other stakeholders that you represent. The radio regulations are the basis for a sustainable ecosystem which has flourished for 110 years and have made radio communications a fundamental part of today's world. To better assess the role and the importance of the radio regulations, we have gathered today two panels of distinguished spectrum stakeholders to address the historical and future role of the radio communications in supporting the radio communication ecosystem. It is now my pleasure, ladies and gentlemen, to leave you in the expert hands of Mr. Mario Manjevic and Mrs. Julie Zoller for moderating the two panels that we have organized for you this morning. Thank you very much for your attention.


Welcome back everyone. My name is Brian. Let's continue our journey into Python 3. We're going to talk about the while loop. This is basic flow control and it's going to prove a point.  And yes, I said what I said your computer is just very dumb and we're going to prove that. So a loop is just simply completing code over and over and over again until you tell it to stop because the computer isn't smart enough to know when to quit. Let's take a look. Okay, a little bit of theory here before we move on. We have the entrance of our program and we're going to jump down into some sort of loop. Let's call this our loop here. And it's going to evaluate this and run some type of code. Now it doesn't really matter what type of code it runs. Let's get rid of that little guy. Usually what you're doing is some sort of incremental function. For example, count something, increase the number, look for data on a socket or something like that. So it's going to say, okay, start the loop. I don't want to connect there. There we go. And do something. If you don't exit this loop, it just literally goes right back into the loop and your program ends up looking something like this. We call this an infinite loop where you will enter the program, go into a loop and then you just loop this code over and over and over again, until you tell it to, well, stop and do something else. You may be asking yourself, why do you even need a loop? Well, think about it. You enter your program, you come down into your loop and let's say you want to do something 100 times. You need to now increment some sort of counter. Once you've hit that counter, you jump out of this loop and you stop your code.  And what I mean is they look like this. The program starts you enter your loop and then it just loops forever. For example, when you in and do graphic user interface programming, you have what's called the user interface loop or the event loop, which is basically the program will run forever waiting for the user to like click a mouse or move something around. That loop just happens forever and ever until the program closes. All right, now that we understand what a loop is, let's take a look at it in practice. So I'm going to say x equals zero. And we're going to create our while loop. And this is going to look very similar to an if statement because it's going to evaluate it just like an if statement would, meaning this loop will execute as long as the condition we're about to give it is true. So let's say x is less than 10, then do something. And this is going to be a great example of how computers are dumb. They do what you tell them to as you tell them to do it. A little bit of bonus. Anybody see a problem with this statement? Well, what we're saying is x is zero while x is less than 10. But we're never incrementing x, it's always going to be zero. So this will always be true and it will just run forever. That's the infinite loop I was telling you about. See how it just says zero. And it's going to run forever and ever and that console is just going crazy. Somebody kill it. It will just keep going forever and ever until I turn the program off or until I shut the computer down. So we need to actually increment x. Once we do that, we have now incremented our counter. Eventually x will be 10 or greater, and this will exit out. See, one through 10 works as expected now. So loops can be very powerful and very easy to use, but you can very much screw up your application just by creating an infinite loop on accident. Now, in case you're wondering, let's go ahead and print this out here. And we're going to say that one is done. We want to know when this loop is done executing and we use, you guessed it, the indentations. This determines our scope or our block of code. So while this condition is true, execute this scope or this block of code. Then when we're done looping, we're going to jump right back up here. Let's see that action. I'm going to clear that out. Sure enough, one through 10 and then test one is done. So it works exactly the way you think it would. Let's take a quick detour and talk about pass. You're going to see this quite a bit in Python land and a lot of people don't really explain it. So let's just say while, and let's just take this little template here. And it's going to say while expression pass, but this is a valid Python expression. Let's go ahead and say zero and let's just give it the same logic here. Notice how this will run. Now what's going on in the hood is this is still functioning. Or is it? Let's find out here.  We'll say test two is done. So X zero while X is less than notice how we never increment it like we did in this guy, we're going to pass and then eventually print out test two is done. Save run. Notice how it says test one is done from up here, but it never gets down to test two. So what's going on under the hood? This script is still running. It's just doing an infinite loop right here. So whenever you see pass inside of a loop, be very careful because you're creating some sort of infinite loop. Pass is a special keyword in Python that tells Python take no action and just continue with what you would normally do. So be very careful with pass. We just covered that pass is well pretty dangerous in a loop simply because you can loop forever on accident. Well, it's not that simple under the hood, but we're going to try and make it simple and we're going to talk about continuing and breaking. So we're going to say X equals zero. And let's go ahead and do something really, really terrible. We're going to say while true do something. If you're paying attention, you know that while is going to evaluate this much in the way an if statement would and it's going to say if this is true. Do the loop and keep doing it over and over until this is no longer true. However, we've used the Python true keyword. So this will now loop forever. And you will actually see this out in code because sometimes people just want to loop until some arbitrary condition is met. It could be input from the keyboard, it could be some network connection, it could be anything, but you're going to see this a lot. So you'll need to know when to break out of the loop or how to handle certain conditions. So let's talk about continue first. We're going to say X plus equals one. And if X is less than five, we want to well just kind of skip over this. And we don't really want to do anything. So I'm just going to say X is less than five, whatever the number is, and then we're going to continue. And what continue does is say go back to the beginning, just continue along your merry way and do what you were going to normally do. And then we're going to add in some sort of logic. So if X was greater than 10, we would do something with that X out. And we're going to put a print statement at the very, very end of this. And notice this is on the same line as while. So this will not print out until this loop is complete. One thing I love about VS code in most editors, you can actually collapse. So it actually looks like this. So once this loop is done, it'll print complete. Let's go ahead and clear this out. See this in action here. Uh oh, you notice how it's working exactly as we expect it would because the computer while very fast is very dumb. So what's going on here is it's going and saying if X is less than five, print it out and then just go back to the beginning. So we've still in continual loop land, we need to fix that. So our programming logic, we want to basically say if it's less than five, just go back to the beginning of loop and keep incrementing that counter. If it's greater than five, do something, but we also want to stop when we hit 10. So I'm going to say if X is 10, print and then X equals just so we can see that X is actually at that value. Now we're going to use the break keyword. Now don't worry, we're not breaking anything. Break is like kind of think of the while loop. This guy has a little jail cell and we're going to break out of jail and just jump right to the next line. So it's going to pick up code execution right here and then it's going to run this statement. Go ahead and see this in action. Okay, sure enough, we've got X is less than five. We've got one, two, three, four, and then do something six, seven, eight, nine, 10. And then when we hit 10, we're going to exit and we are complete. So that is looping in a nutshell. Some major takeaways from this video is well, loops are very, very powerful, but you need to have some sort of condition to evaluate. Otherwise you're going to create an infinite loop. An easy way to create an infinite loop is just simply pass and it will loop forever. And you can say while true, which will also create an infinite loop, but you can use continue to well continue to use the flow inside of the loop or break to break out of that flow and use the programming logic. I hope you enjoyed this video. You can find the source code out on github.com. If you need additional help myself and thousands of other developers are hanging out in the void realms Facebook group. This is a large group with lots of developers and we talk about everything technology related not just the technology that you just watched. And if you want official training, I do develop courses out on you to me.com. This is official classroom style training. If you go out there and the course you're looking for is just simply not there. Drop me a note. I'm either working on it or I will actually develop it. I will put a link down below for all three of those. And as always, help me help you smash that like and subscribe button. The more popular these videos become, the more I'll create and publish out on YouTube. Thank you for watching.


Fair use is actually really, really important in the visual arts community. So there's two sides to it. There's more sides than that, but there are two big buckets of activity that are for which fair use is really important. And one of them is art history because art history, art historians can't really write an article analyzing art that they can't illustrate with, that they can't reproduce in their article to show you what they're talking about. And if they don't understand their fair use rights, their field of action in art history gets constrained to either kinds of art that they have permission to use or public domain art. So one of the things that's been happening in the art history community is that everything after the early 20s has been off limits to art history graduate students who don't have a stipend to clear all of the pictures to be able to put into their articles, which they're gonna need to get hired as a professor. Once they're a professor, they're gonna get some kind of stipend, they hope from their university, but it probably isn't gonna cover the costs. Of all of those permissions. And we worked with the College Art Association, which represents art historians, artists and art librarians to develop a code of best practices that would accord with the best, what the field itself thought was best practices. And one of the really exciting things was seeing that the major journals in the field and two of the major university presses in the field changed their policies to be able to permit fair uses in the publications. And that was a 180 degree turn from where they were before. What this also means is that you can be a graduate student and ask a question about 20th century art or 21st century art or digital art and be able to make that a topic of your dissertation. Also very exciting. And one of the fiercest defenders of copyright has been the Picasso Foundation because they really are very, very vigilant about the uses of Picasso's work. So Suzanne Blier, who at one point was the head of the Board of the College Art Association and is a leading art historian at Harvard and a historian of African art decided to take a close look at a Picasso painting called Le Demoisal de Davignon. And she realized because of her knowledge of African art that Picasso was actually, that the understanding of this film has been misrepresented. It's not women in a brothel. It's actually his version of evolution of women using African statuary and images. And he's drawing this from the exhibitions of African art that are being shown at the time. So this is something that only an African art historian is going to understand about this intersection of these two traditions. She writes a book and then she has huge trouble finding a publisher to accept it because she's going to have to reproduce some images of Picasso. And she is not because she has been part of creating the Code of Best Practices and Fair Use, she's not going to pay for that. And she regards this, she is the leading art historian at Harvard. If she can do this, she's going to make a statement. She's going to make a political statement about the importance of fair use. And so she works with that finally Duke University Press. And nobody has done this, especially with Picasso. And so Duke University Press decides, okay, that Code of Best Practices means something. There's a 10-year, there's a 15-year history of fair use codes being quite robust. This seems to accord with the law. You think we'll go for it. And they publish the book, which gets rave reviews and has really changed Picasso's studies. And they know she didn't pay for it. And by the way, has not heard a complaint from the Picasso Foundation. So that's the kind of thing that's important for art historians. Artists also need fair use because so much, especially in a digital environment, so much art refers to other art. And you don't wanna stop that practice, which has a very long history, collage in particular is centuries long in our practice. And so you don't wanna deform artistic practice by limiting that. And yet it can be a challenge for artists to understand what are the limits. So one of my heroes in these recent years since the art historians code was created is Rebecca Modrak, who's at the University of Michigan. University of Michigan is an important place for fair use because it's the place where the whole Google Books drama starts. So those are university lawyers that really, really, really understand fair use. And she's an artist in studio art. And she is fascinated by this company, this Brooklyn company that's selling farm and historic artifacts as bespoke tools for a Brooklyn community. And we're talking things like an axe, which you really don't need in your Brooklyn apartment, typically. But they're selling them for hundreds of dollars because it's this hipster thing. So she looks at this and to her, this is reading like an appropriation of art for hipster consumerism. And she decides to make a shot for shot parody of the commercial about the axe, but it's about a plunger, a bathroom plunger. And it's about how this bathroom plunger is like my grandfather's bathroom plunger and it has this finish. And it's exactly word for word, the origin. And then her work of art runs side by side, minute for minute along the original. So she has 100% of the original commercial running alongside her parody. And of course, the people who had that commercial were like, you have infringed our copyright. So she went to her own lawyers at the University of Michigan and they were like, oh, we love you. This is such a clear, very use case. Bring it on. So they very easily defended their case. And then she wrote an article for one of the major journals about her experience. And the journal said, well, we can publish an image of your side of this two-sided work, but not their side because that side's copywriting. And she was like, by the way, there's a code of best practices and fair use for visual arts. And I think you should think about it. And it took a conversation and finally took a conversation with a lawyer, but they did change their policy and they published the article with the full piece of art which includes the copyrighted material.  But they're doing that so that people behind them can say, well, of course I can do this. That's fair use. And to liberate both artists and art historians to do more work.


Hey guys, it's Jen from iCurryCrafts. In today's video tutorial, I'll be showing you step by step how to create these cute DIY Easter round wood signs. I absolutely love how these turned out and the full cost to make one was under $2. Now let's get started. Oh my gosh guys, I'm so excited that spring is finally here. Oh my gosh, I cannot believe it. So, I am in the spring mood of making some new signs. So, I purchased this every bunny welcome off of design bundles. If you're interested in this file, I will leave it in the link description below, but I thought it was so cute. So, I wanted to show you really quick. I bought these wood pieces off of Amazon. It was $18 for 12 of them. Really, really great deal. These are the thinner ones. I've used these in the past. I've talked about these in the past, but I really, really like these and it's a lot cheaper than going to, you know, Menards or Home Depot and buying those really big, heavy duty ones. So, I just wanted to show you where I got mine from, but I love these. Again, I'll leave the link in the description below in case you're interested in this, but I just wanted to show you what they look like. They are 12 by 12, so they are the perfect size for any door hangers. You can even put it in your living room, you know, wherever you want to just jazz it up a little bit and make it look good. So, the design here, I love it. I just don't like the welcome word here. So, I wanted to switch it up a little bit. So, this is up to you if you want to do this or not. You can skip forward if you know how to do it or if you just want to cut it out the way it is, but looking at the welcome, I just don't like how it looks so much. So, I'm just going to up it a little bit. So, I'm going to start over here on the text box here and I'm just going to type in welcome and I was going around with different fonts and I was trying to figure out which one I really liked that would go with this and I chose this one. It's called a child's year. So, I just went up into the font box and I found it in design space, so it was right here. So, I think for this one, if you have the Cricut Access, you will get this one for free and if not, it might charge you for it, but I'm not sure how much because I do have the Cricut Access. It might be something to think about. I know it's about $900 for the year, which really isn't that bad. You get a whole bunch of fonts and everything. I'm not pushing you to get it. I'm just saying I've had it for the past year and I really love it. So, just something to think about in case you're interested in that, I will leave a link below. I will be honest with you. I am affiliated with it, so if you purchase it, I do get a little percentage kickback. I think it's like 2% they give me, which really isn't anything like $2 for every person that signs up, but it definitely helps me out. So, if you're interested in that, please sign up under me if you are and going back to the video, sorry about that. So, again, I'm using a child's year font. I really like how this looks. So, I'm going to first figure out the size on here and I'm just going to take this double arrow and pull it over and then I'm going to unlock it here and then just make it a little bit larger. I'm trying to make it about the same size as it is already. So, I'm just kind of playing around with it and there. So, before I get rid of it. So, unfortunately with this, I tried working with this file already. You can ungroup it, but every bunny welcome is all connected. So, I already have this selected. I'm going to go up here to the ungroup box and I'll show you what I mean. So, every bunny welcome is all one piece. They welded it when they created this file. So, the only way that you're going to be able to do that and get rid of the welcome here is go down to this contour button. I'm really liking this button the more I'm learning about it. So, you click on contour and then it shows you what you selected. So, I want to get rid of welcome. So, you can do it one of two ways. You can go here and click these words or the letters here or you can go to the side and click them here, which might be easier because then you get every single piece. So, I think I got them all and then you don't want to hide anything. You can X out of it or just kind of click on the other side of the screen. So, as you see, I have just every bunny here. The welcome is gone. So, now I'm just going to replace it with mine. So, the last thing I want to do actually is select both of these and then align them. So, it's nice and centered. So, I have it selected. I'm going to go up to the line button. Oh my gosh, and select center. So, that's going to center my words together. So, the last thing I want to do is change the color. So, I'm going to select the first one here. Go up to the color box and I'm just going to choose like a green color and then I'm going to do the same with the welcome. Go to the color box. Choose the same color I just chose. Then I'm going to do one more thing. Select both of these since it's already centered. I'm going to go down here and push attach. And if I don't do that, that would just cut out, you know, every bunny and then welcome separate, which I don't want to do. So, there's one more thing I'm going to do on this because I know my round sign is 12 by 12. I'm going to go here, click shape, click on a circle and then change the circle to be 12 by 12. So, I'm not going to unlock it up here. I'm just going to change the width to 12, which will automatically change the height to 12. So, here it is here. So, if you guys know me, you follow my channel, you know I like to visualize things. So, that's what I'm doing here.  So, I'm going to grab all of this and I'm going to move it. Whoops, I missed a piece. I'm going to get this out of the way. I'm going to grab all of it and then I'm going to move it over. So, it's still here. Just because you don't see it, it's still there. So, I'm going to let go of that. I'm going to shrink my screen just a little bit so we can see it. And with this already selected, I'm just going to go up here to the arrange button and I'm going to center front. So, here it is. So, my image was behind the circle here. So, see, now we can visualize it to see what it looks like. So, I'm just going to take this double arrow and I'm just going to move it. So, you could basically do, you know, change this to be 12 by 12, but it will not be, you know, it'll be too big. It won't fit in your round circle. So, again, we're not going to cut out the black part. It's just to visualize what it's going to look like. So, you can see here, this is telling me that it's too large and Cricut only lets you cut, cut, I think it's 11 and a half by 23 and a half.  I just wanted to visualize it. So, if you did, like I said, 12 by 12 or even 11 and a half by 11 and a half, that would be too large for you to put on to your circle. So, I like to just look at it. So, a couple of things that I'm noticing here, I don't have much room at the top up here. So, if you want to put greenery or anything, you can definitely shrink this up a little bit. Even if you wanted to make the welcome a little bit smaller, so we could put it down at the bottom, which I think I might actually do. I really like the size of the bunnies here. So, I'm going to leave that alone. So, I'm going to click out of here and then click on this welcome part and make it just a little bit smaller so we could fit it downwards. We're not missing so much down here. So, I really like how this looks. It doesn't matter if this is centered with the bunnies because it's all going to cut out separately anyway. So, I'm just going to bring this down and see if I can fit anything else on here. I mean, you always could make the bunnies larger if you wanted, but I like it the way it looks. And when your bunnies are going to cut out, I'm going to show you really quick. They come out in two different pieces.  So, I'm actually not going to cut out these guys. I'm actually going to delete it right away. It looks kind of funny, but I'm not. I'm going to use a cotton ball instead. Otherwise, if you wanted to cut out the white vinyl, you can most certainly do that, but I like the way it looks. And I'm going to actually have a white sign on the back. And then I'm going to be using similar colors to this. I chose green because it kind of reminds me of spring as well. So, these are the colors I'm going to choose. Hopefully I have these colors. I believe that I do. But yeah, so I like how it looks. The only thing I got to do is just get rid of the circle because we're not going to cut that. And this is already selected and welded together or attached together, I should say. Actually, I'm going to weld it because I'm not sure when they made this file if they welded this part together. And if they didn't, you would see little cut lines in each one of these pieces where they put them together. So to save a headache just in case, I'm going to click the weld button and that's going to help me out. So I'm going to show you what it looks like. I'm going to click make it. And then here's my first bunny, the pink one and the yellow one. And then here's my welcome, every bunny welcome. So I love how this looks. I can't wait. Guys, I'm like so in love with making these wood signs. I hope you do too. I have a whole bunch more coming. So if you're not subscribed, hit that subscribe button. Leave me some comments below. I love reading your guys' comments. So keep them coming, please. But I'm having a lot of fun. I hope you're enjoying this video. All right, so now that my base material has popped up, I'm just going to show you what I'm going to use. You could, if you have like the holographic kind, you can use that. I actually was just at Joanne Fabrics and I bought a whole bunch of holographic vinyl. Oh my gosh, I'm so excited to do something with it. So again, stay tuned. I have so many more videos coming up. Hit that subscribe button if you haven't already. I'm really excited, guys. I'm going to keep going. So for this one, I'm just using regular stencil vinyl. If you guys are subscribers of mine, you know I don't use a lot of Cricut brands. So I'm just going to use this one. I'm not using the Cricut stencil vinyl. But this is the one that I like doing. So I'm going to click on this one. I'm going to cut these out. I'll weed it out. This is going to be a very easy project to weed out. And then I'll show you how to work on your wood sign. There is a little bit of work that you have to put into it, but don't worry. I will show you step by step how to do it. So I will be right back, guys. So I finished my painting. Here is the purple one that I did. I did both sides and I made sure to get the edges really well. And then here is my white one. So I just did white on both sides. And then I have my files cut out here, the cute three little bunnies, and then the word everybody, everybody welcome. I thought that was really cute. One thing I did with the signs or the wood pieces before I go ahead and put the stencil or the vinyl on, I actually sprayed this with polycrylic. I highly recommend this. It's going to seal the paint that I put on here. So if you want to hang this outside and it gets wet or something, this paint is not going to run. It's going to stay on here forever. So you want to do that beforehand. I like using the spray instead of the can one because then you won't see brush strokes. So you just spray both sides and let it sit. I let it sit overnight so it's completely dry. So the next step you're going to do is just take some contact paper. I just purchased this huge thing of contact paper off of Amazon. I'll leave the link below. But as you can see, there's tons of tons of it on here. I recommend using the contact paper rather than like the Cricut brand or something because you don't want something that's really, really sticky where it's going to pull off your paint. So I'm just using something that's less sticky. Other thing you want to look at is which side is better. So on here I have a few little pieces where the paint got stuck to my paper I was using.  So I'm just going to use my better side on here. The other thing you want to look for which way the grain is going. I always like to go with the grain side to side rather than up and down. So that's what I'm going to do. And for the little bunny tails, I didn't have any cotton balls, but I had these and I figured out that if you pull them apart, it actually does have cotton on the inside of it. So I just used that with my hot glue gun to put the little tails on. You can do that or you can use the Cricut piece that it cut out for you originally. I remember that I took mine off, so I never cut those out. So the next step you want to do is just put it together. If your wood feels kind of rough, I would go ahead and go with it with, I think it was, what did we use 320 grit paper sandpaper and just make it nice and smooth again. You don't want any hard surfaces on here. So depending on which color you want, oh, I want to show you guys really quick. So I actually did go ahead and do one. I couldn't wait guys. So I wanted to show you. So here's what it looks like. So you can do it any way you want. These are little bunny tails that I used with the cotton that I had. And this is every bunny welcome. So here's the white one. So I love how this looks. I put some ribbon on the back and then I just used some hot glue on the back. So it looks nice and neat. But you can do it any way you want, any colors you want. But I just wanted to show you. I was really excited that I couldn't wait. So that's what that one looks like. So you take your bunnies and you just figure out which color you want to lay first. I actually like doing the letters first because then you can kind of center it on your board before you go ahead and try to figure out where your bunnies go. So I already used this piece of transfer tape. I'm just going to reuse this one and put it over this and then use your scraper and then just scrape it on really well making sure that you get every piece that will pull up on your transfer tape. And once you have it, I always like flipping it upside down so I can see if I grab everything. And if you don't, you can just push it right back down. Very simple. And then this next part is up to you whether you want to do it or not. I always say homemade things aren't always perfect. You can most definitely get a ruler out and kind of figure out where it goes in the center. I like to just eyeball it. I'm putting it more down at the bottom because I want the little piece for up at the top. So it's kind of going more down at the bottom. I'm just kind of looking on both sides to see if it's center. Since we have a circle, it's kind of hard to mess up on it, but I'm going with the green on it. So I'm just trying to find a good spot on here which you can always just pick it up and look at it and kind of tell where it is. So kind of think you need to go over a little bit more. But once you get it figured out where you want to do it, you just want to take your scraper and go over it. So I like where this looks. I'm just going to take my scraper again and scrape really well. I want this to completely stick to it. And like I said, the poly is completely dry on it. The paint is completely dry. So I shouldn't have any problems with the paint coming up or with the vinyl coming up. If your vinyl does come up, then you really need to go back and re-sand it. So that's why you need a really smooth sand or really smooth surface so your vinyl can stick to it. So if your vinyl does not come off, like this one has it, you know that you have a really good surface. So here's the first part. Every bunny welcome. I think that is so stinking cute. So the next part is to set your bunnies up. So I don't want them to be the same. My first one was pink, blue, and yellow. So I think this one I'm going to do first the blue one. So the same thing. I'm just going to take my transfer tape and I'm going to put it over it. I'm going to screw this down, flip it upside down, making sure I get everything. And then again, you can take a ruler or you can eyeball it and kind of see where you want it to go, but I'm just going to put it roughly over the E and then the R and every.  It's as easy as that. Oh my gosh. I love this. I think it's so cute. What do you guys think? You like this? Give me a thumbs up if you guys like this and hit that subscribe button if you haven't already. And then you just want to do the same with your second and your third one. So I was going to line this up with my transfer tape. I'm still using the same piece of transfer tape that I did with my first sign. I try to let these go as far as possible. I don't get any holes or anything in it. Again, just flip it upside down and then just go with the next part. So you want to just take it and line it up. This one actually is going to go a little bit higher. So this one's going to be a little bit higher up just because it's going to be over the B in bunny. So this guy, I'll show you like he's up a little bit higher, but that's okay. However you guys want to do it, it doesn't have to go one way or another. But I'm going to center him. So his ears are nice and center with the top. So take your time with this, figure it out. And then once you have it where it is, you just take your scraper, pull it off. Perfect. So here are the two. And I'm just going to do the same thing with the last one. So I'm just going to fast forward this part. You guys don't have to watch me do this again. It's just the same process. So there that is it just like that. Like I said before, when I was making science, I would always do the poly now, but from experience, I know that if I do it now, the vinyl will stick up and start peeling. This is 651 vinyl. So this is meant to stick on forever. So I'm not going to do that. I did the poly before or after I colored it before I put the vinyl on. So that definitely is going to work out a lot better. If you have any pieces that aren't laying flat or if you have pieces on here that some of the board was not sanded well, you can always go back with this, use a hairdryer on low heat and kind of use your fingers and push it in. It kind of melts into the wood, which I really like. So that could be another option as well. So the only thing I have to do now is take the little cotton that I had. So again, I just pulled this apart. You can use a cotton ball, but I didn't have one right now. So I'm using what I have on hand. So I just pulled this apart and then just took out the middle cotton pieces here and then just roll it into a ball because bunny tails are not perfect, are they? So just like this, I'll take a little dab of hot glue and then I'll glue it down just like that. And then the same with the back. I have this ribbon already and I just cut little slits on the side here and then I'll put it on the back here. So you want to make sure that you're going to put it on proper, meaning you want it to be straight in the front. So I always just start with one end and then I look before I glue the other one down. So you want to just do it right in the middle just like that. So I'm not going to show you guys this. You guys know how to do this, but I'm going to show you the last one when it's all finished. I'm really excited about the purple one. I wanted just to incorporate a little bit of extra color. So I'm going to finish this up with the cotton tails here. I'm going to put this on and I'm going to work on this purple one. And then when I'm finished, I'm going to show you guys all what it looks like. So stay tuned. I hope you enjoyed this how-to video. I had so much fun creating these Easter signs and I cannot wait to put them up for sale in the craft stores that I sell in. I added some ribbon to the back so I could easily hang them up. If you like this tutorial, hit that subscribe button if you haven't already as I will be creating more DIY wood signs and so much more. Happy crafting everyone!


Very tight in the first turn there. Here comes Smarslick on the inside run. And now Saifudra up around the outside. It's getting bunched up. Saifudra up on the inside. He's got the speed on Woffenden. And Woffenden's back on the inside here. Oppos! Stay on your right, boys! Unbelievable first lap from Bartos Smarslick. It was nowhere off the start. He came charging through. He went for last the first by the end of the first lap. Saifudra up now coming off strong. Woffenden who made a great start off the inside. He's under pressure. Saifudra off is really quick into the place. He's quicker. He's quicker. He is indeed. Trying the outside run, Saifudra off.  Oh, almost came off the bike. Blown it. That's it. But that'll do for Ty Woffenden. Indeed. So, Smarslick and Woffenden, two of the top three are in the final. Wow, what a turn-around of events. You've got to give Smarslick a law. He was right up against it going into. He's 18. Came good then. What a ride that was. No problem this time. Smarslick's made a good run. He's got the drop on Lindgren. Woffenden's going high and wide around the outside. One! Ty, goodness me. What a ride that was. But he's got Smarslick all over him. Doyle's come through into third and Lindgren to the back. 20 points to him tonight. Well, that will put him onto 91 for our three points. But Smarslick is quick here. He isn't down. What a first corner for Woffenden. He's got to get down. Woffenden on the inside. Smarslick pushing the harkness. Yeah, he tries to chop up the inside of him. He's going to do Woffenden here. He's going to charge up the inside. And now Woffenden will try one last move. He's going to get close to Lindgren. But Smarslick has won two Grand Prix in two-nights. And grabs under a way in this first semi-final. Lindgren's made the start for the inside. Woffenden goes wide and Smarslick is going to try the inside. Now Smarslick has got to pass Lee on Madsen for the world title. And the inside, Smarslick goes. He's in second place. Madsen's not done. He's coming back for more. Madsen tries the inside switch now. Gets there. Smarslick is going to return the corner. Smarslick is second, Madsen third. Woffenden is at the back and his title race is about to... Smarslick is closing in on a second successive world title. Smarslick going to win the World Championship. But Smarslick is about to become only the first rider. In Speedway history to be a Polish double world champion. To win back-to-back world titles behind history of the sport. But Smarslick is back-to-back champion of the world.


The new Netflix miniseries based on the life and crimes of iconic serial murderer Jeffery Dahmer, who murdered 17 men and boys between 1978 and 1991, has sparked a lot of interest. Viewers have protested about the show's gore, and others have questioned if it is indeed based on a genuine tale. Was Dahmer truly so heinous? Was he a true cannibal? Did he, in fact, wear yellow contact lenses? We look at some of the more interesting and frightening elements of the already unsettling program, and compare them to the true life events that inspired them. Anyone unfamiliar with the true tale of Jeffery Dahmer may be surprised at how closely the show adheres to facts.


So I've been asked what happens when you get stuck in a dream, you know Can you get out? Is it something that you never really get over or is it just something that randomly happens sometimes? So when you get stuck in a dream, you never really You know, you can always escape the dream by just waking up right so you can either open your eyes close your eyes You know spin around tell yourself to wake up. There are loads of different ways you can use different techniques You can use to wake up from a dream But the idea is that sometimes you can feel like you're trapped and that time is sort of standing still Now I've made other videos about time dilation and lucid dreams. This is a bit different.  So there as I've said before there are different layers of lucidity I believe there are one to sort of five or six layers Each one is different and has a definite sort of distinction as to what makes it that layer There's sort of like a turning point or you know a part a point that you go past where you know You're in the certain layer of lucidity And so when you when you feel like you're stuck in lucid dream often You're not completely lucid because if you were you'd be able to tell yourself.  You can decide to make the dream longer shorter Whatever the case is So yeah, if you feel like you're stuck in a lucid dream the chances are you're not completely lucid You're just sort of on the edge of layer one So you're just starting to become aware and in control of your the dream situation, but you're not completely You know the boss, you're not completely in control. You can't decide exactly what happens And it sort of feels like you're you're aware of the dream and you as the dreamer But you can't quite control it and so it's almost like watching yourself from above if you imagine you're sort of up here Watching yourself from a third part a third point of view And that's why you feel like you're not in control and it feels like you're sort of stuck All right, and yeah, it can be scary But at the end of the day all it is is a normal dream that you're slightly more aware of you're slightly more lucid in okay, and The truth is you know, you know, although it feels like you're stuck You're never gonna really be stuck for more than about one to two minutes probably maximum three to five minutes because that's the average dream length and Any longer than that and it would be it almost impossible, you know You can never be stuck in a lucid dream for more than an hour or you know anything like that The problem is and the reason that this sort of gets a lot of attention on especially on forums and things like reddits because one Sort of minute in the dream can feel like a lot longer up to ten times as much so one minute can feel like ten minutes, okay? And this means that it like I said before with time dilation You feel like you're spending longer in there even though you're only actually there for a minute So it can feel like you're stuck there for a long time especially if you are just teetering on the edge of lucidity and you're just you know One minute you're aware and lucid then the next minute you slip back into a normal dream and this sort of mixture Creates like a brain fog where you don't really know how long you've been in there, okay? Because you've never really been Conscious completely it's sort of like when you when you have a nap in the middle of the day And you're just sort of dozing off and because you're sort of flickering between being conscious and being asleep You know you could have a five-minute nap But it might feel like five hours and it's the same sort of thing because you're not completely conscious and you're sort of on the edge and you never really know whether you're lucid or Dreaming or awake or whatever it feels like longer and that's why if you feel like you're stuck during that process It can feel like a long time But really it's nothing to worry about all you need to do is just keep practicing a rare reality checks keep lucid dreaming keep meditating and The problem will go away on its own. It's nothing to really worry about so hopefully this is helpful If you have a question, please leave a comment and I'll see you next time


G'day and welcome to the network. My name's Dan and look I hate to sound like a beefed-up and slightly Fluy Steve Irwin, but have a look at these little beauties Check this out if you're in a few a child of the 80s And you were lucky enough that your parents bought you an Atari 2600 these sort of graphics would Would be fairly retro and rememberable for you this is a vehicle that Hot wheels has produced with the Atari 2600 logo on it. I wanted an Atari 2600 when I was a kid so bad I think I acted like a little turd for years and of course that was enough to To make my mom not get me one I eventually got a Sega Master System, which was very cool, but on the back here It shows you that you can get a whole bunch of other Hot wheels collector cards based on cars I should say not cards based on the Atari logos For different games and it just so happens that the store that I so haphazardly went into had the full range So we got them over here. This one is the breakout car. It's sort of like Let's say, you know one tunnel and I'll sort of one tunnel sort of disposal van On the back again with the other Cards that are available in the series Sorry if I'm nerding out a little bit too much for you guys. I went spastic when I saw these cars They're unbelievable. I'm not getting them out of the package Because I'm that sort of nerd. This is tempest anyone play tempest Sort of like some rad graffiti sort of art on the side of this car I think it would be the same on the other side on the back says tempest It's like a Sandman or an escort one of those escort panel vans. I'm terrible with cars So fix me up in the comments. What is this? I think it's an escort van Once again on the back just listing off the other ones you can get so the tempest How cool is that they probably look better out of the plastic? But as I said, I'm nerding up So you're not getting to have a look at that Centipede another one of my favorites Plus the other thing is to I think the packaging is really cool. Check this out.  These are available now folks I actually was lucky enough to get them from the hot dollar store.   I think they're like three bucks each and this is the famous Pong Pong sort of looks like an ice cream van or like a surf van or something like that Is to come around to my house in the day and deliver fruit or ice cream or whatever Anyway, I'll lay them all out. We'll have a look at them. So that's the Pong one Look at the centipede one over here Tempest one Missile command Go the old missile command everyone played a bit of missile command the breakout truck And also the Atari 2600 van These some cool specimens of pop culture here ladies and gentlemen. Thanks for watching. I'll be back tomorrow with something Just as informative and entertaining. My name is Dan. Thanks for watching the net network


Hi everyone, Joe for jasmiescasebreaks.com with a quick little 2021 mosaic baseball hobby pack break number 7 with 10 of those immaculate baseball spots being given away. But first the pack break itself, big thanks to this group for getting in on it. All the teams are in. Let's roll it, randomize names and teams 5 times. For the giveaway part, it'll be a different dice roll at the end of the video. Three in a two, one, two, three, four, and fifth and final time. And three in a two, five times for the teams, one, two, three, four, and fifth and final time. All right, so no trades in these little filler packs, but here's the first half of the list and here's the next half of the list right here. Just want to quickly get to the important part of this, which is the giveaway spots. And if you're watching live, we just have to do one more of these packs and that unlocks that immaculate baseball break. So get into the next one on jasmiescasebreaks.com. We got a Joey Gallo, nice 24 out of 25. Still Rangers edition here in this set, this is going to be for Mike G. The White Mosaic Parallel and a rookie silver, Andres Jimenez and a rookie Mosaic pattern got Andrew Vaughn. Jimenez will go to Cleveland, that's going to go to Allen and the Andrew Vaughn goes to the Chicago White Sox, that'll be for Brian Crouch. All right, there you go. Not too bad. Now let's flip back here and then let's see who's going to win those spots. Let's grab everyone's names from Allen down to Carlos and everyone in between, New Dice, New List, and it's the top 10 after, top 10 after eight, three and a five, eight times, good luck. One, two, three, four, five, six, seven, and eighth and final time after eight. So it's top 10. So from 11 on down, David, my apologies, but I appreciate you getting into the action. Sad times though for this group, happier times for the top 10 because you're in Zach, Josh, Brian, Terry, Evan, Mike, Allen, Brian, Allen, and Brian. Congrats to the top 10. We'll see you for that immaculate break a little bit later tonight. Bye-bye.


What's going on guys? Today I am here with this package opening video. Now the contents of this package are actually unknown to me. We can see the size comparison there to my Xbox One Destiny Custom Controller, which is beautiful, look at that thing. Never even used it, I'm scared to, to be honest. But actually, I do not know what's in this package. I seriously do not. I haven't brought anything. I hope my girlfriend hasn't brought anything. It says marksman quality tools on the side, but I'm guessing that's not what this is. I'm guessing it's just used to protect whatever's inside it. So let's get into it. Now I'm going to have to prop this camera up because I only have two hands and I'm not good at opening packages with one hand, you know what I mean? So I'm going to prop that there to hopefully, let me just adjust the camera a bit. There we go. So we can see what is in this package. Now, I've come armed with scissors and a knife. So let's get into it. Oh, I should probably should have done that because I don't want to damage anything that's inside. Okay, so we have another box inside this box. So why have we got another box inside this box? Basil seed drink. Okay, so let's get into that. Is this the box inside of the box inside of the box?  I'm going to file something then. I definitely file something then. I've never used a really strong tape on all that.  Okay, let's go again. This is getting a bit ridiculous now. It seriously is. Okay, so now we have a package. What?  It feels like a key shirt inside of here. So I do it. Hey, luckily I've got scissors. Well, that does feel like a t-shirt. I don't want to cut the t-shirt.  But it still feels like a t-shirt. Someone is having a joke with me. Someone is seriously having a joke with me. What is this all about? What is this all about? What have I just cut through? I've just cut through to, oh my life. What is this? What is this? How is that? Has that been wrapped about 10 times? But it still feels like a t-shirt to me. No, no it ain't. It's in an eBay package here. The sender's address on the front, which is weird. Okay, so this has got to be the moment of truth.  There's another package. Someone is seriously taking the mic out on me. Guys, see this? Do you guys see this? I don't think, yes it is, it's my camera camera zoom out. Focus is it going, there we go. All of that for a Destiny 2 fidget spinner. All of that. I can't believe it. Boxes upon boxes. I'm actually, I've broken out in a sweat trying to do this.   Now, I mean like, really? Really? Almost five minutes of a video for a Destiny 2 fidget spinner. No, I don't want to take it out. I don't even want to use it. I seriously don't. These go for good money on eBay. But guys, I've got to end the video. I've got to end the video. That's probably the best package opening video I've ever done. Hope you enjoyed it. Thanks as always for stopping by. If you're new around here and enjoy daily videos of all sorts, mainly Destiny, be sure to subscribe. Hit that like button and I will see you on that next one. I can't believe that. I absolutely can't believe that.


Hi everyone, Joe for jasphyscasebreaks.com coming at you with 2020 Bowman's Best Baseball. It's a quick little one box break. This is pick your team two Which sold out before number one if you're looking for that and at the end of the break if you bought at least two teams That'll count as one entry four teams two entries six teams three entries so on and so forth for a shot at two $450 2020 transcendent baseball spots that it's a guaranteed hit as well for potentially fraction of the price so big thanks to all of these people for getting into the action there you go and Usually the twins that are donated in those full case breaks for these one box breaks What we're gonna do is whoever buys the last team will give you the twins for free and that'll count as your Second entry it seems like most people have been buying them up I mean unless they're all taken for some reason or someone just buys the last spot straight up, but But yeah, so anyway, we'll get that so Jeremy Port think got the Orioles Last and then gets the twins and twins only have base cards. All right, so all of these box are coming from a Fresh case right here And we'll use the same case right here for all of the one box breaks. I think there's been a handful that sold out already This is random as it's gonna get all right, there it is 2020 Bowman's Best So think about Bowman products and it's the best up Anthony what's going on? Remember a few weeks back when the child was having an Aaron Rodgers argument. I wasn't having that argument Think it was just one person who is just hell bent on saying that Aaron Rodgers overrated We haven't seen that person since Think it was just a it's just hot take guy or girl hot take person just trying to trying to fire off some hot takes Maybe a bearish fan. Yeah, but to his credit, I don't think he was being trolley about that I don't think he was being like a troll about it. I think he actually believed I think maybe his friends or whatever Seem to be saying that Aaron Rodgers may be the best of all time now. I don't I'm not sure if He's up at that level, but this year. He's having an incredible year. I Don't know. He's the criteria didn't seem to be quite we didn't quite set on my criteria Here's a quick one box break more one box breaks coming up and we're giving away transcendent baseball spots So check that out. Just in case rates calm Let's roll here and nice Spencer Torkelson. What are we shipping everything in these? I think so, right? Yeah, all cards ship like that Spencer Torkelson like Kyle Lewis so on and so forth fan favorites Mike trout and There's Yvonne Herrera St. Louis Cardinals Jeff Brooks with that autograph That'll be for Steve Burch and the Tigers There's Ed Howard to 99. He's supposed to be really good Like these little die cuts there too Bobby Whit jr. Ed Howard green will go to the Cubs Adam power producers Torkelson insert and a nice four out of 25 atomic Pete Crow Armstrong for Demetrius and the Mets He's a popular one popular one to collect for the Mets this year.  Those are pretty fun show you a tiny and there's Daxton Fulton for Jeremy Port and the Marlins more die cut should be one more auto Fan favorites Torkelson And there it is to wreak school ball For the Tigers Steve Burch You got a Emerson Hancock as well and there you go Now obviously these one box breaks are pretty nice because they have four autographs per break But the whole point of this really is to see who's gonna win those transcendent spots So let's go to the list here Let's sort by your first names right there if you buy one spot You get an entry just like Adam if you buy four spots like Chad, you'll get two entries Chris with two teams one entry Demetrius two teams one entry drew two teams one entry Jeff two teams one entry Jeremy has six teams. That's three entries Kang with two teams. That's an entry Matt Arnold with four teams. That's two entries and Steve Birch with four teams. That's two entries right there. That should be a total of 15 Perfect So let's take those 15 names Let's put them into this list right here this blank list and let's roll it and randomize it Three times top two after three get transcendent spots. Good luck $450 value Three easy times one Two good luck third and final time after three. It's Jeremy Port and Christopher Gerard. There you go Congrats YouTube. You're in transcendent. You're guaranteed a hit So hopefully we'll be able to break that tomorrow Jaspiescasebreaks.com. I'm Joe. I'll see you next time for the next one


Okay, let's move on and think about where light comes from. There are many sources of light in our world, but the greatest source of light that we have overall is obviously the sun. The sun produces masses of photons and it produces them in a whole range of different wavelengths. So how does it produce all these different forms of light? When an object gets hot, it radiates light, radiates photons. The hotter it gets, the bigger the range of wavelengths that it emits, and if you average out those wavelengths, you find that the hotter the object, the shorter the average wavelength. This phenomenon is called black body radiation, or sometimes incandescent. You can see from this graph that moderately hot objects, at say two or three thousand Kelvin, mostly emit infrared light and red and orange visible light. This is why hot iron glows red, and you can see this in the middle of this piece of metal here. However, keep heating that iron to higher and higher temperatures, and it will start to emit green and blue photons, along with the infrared and red and orange photons, until it's so hot that it's emitting photons from the whole visible spectrum. And it appears white hot, like the tip of this piece of metal. This is also how the old incandescent bulbs with the tungsten filaments worked. The electricity passing through the tiny tungsten wire caused it to heat up, and it emitted a whole range of wavelengths of infrared and visible light. Now, the surface of the sun is at a little over six thousand Kelvin, which means that it emits right across the infrared white light and ultraviolet spectrum. So if you take sunlight and you put it through a prism to split it up into all its different wavelengths and see the spectrum, you would expect to see a rainbow, wavelengths from every color, including the invisible UV and infrared rays.