Can't sprint down the stairs cuz I got coffee in my hand, but you already know by the staircase around what day it is dunk day I'm getting dripped on it's humid. It's rainy It's beautiful about to put my friggin elbow in the rim as I dunk it I just got rain in my coffee. I hung on the rim once on nine nine Ranger up again in my coffee and on the top of my skull. Yo, what is good? We hit 28k boys. We move and we work it today. I'm headed to a baby rim I'm going on vacation in two days. So I just wanted to have some fun I'm jumping higher than ever. I jumped last night feeling bouncy on 10 feet actually caught a friggin putback But my phone fell my phone was recording on the wall and it fell before the play happened It wasn't a crazy putback, but it was a 10-foot putback 9 11 and a half whatever But it was like I just walked into the lane someone shot a three no one boxed me out and it's almost like a drop step I'm just jumping so easily it came right at the front of the rim and I just dunked it It wasn't anything spectacular, but it was clean a real dunk and I landed like my plan is game dunks a lot more game footage I'm really excited for that my goal is for game dunks 10-foot game dunk. I've never even done that in a legit game I don't care if it's a fast break. I don't care if it's a baby put back Whatever it is I want to catch one and then I want to body someone on nine nine or a low rim or 10 feet I want to bang on someone's entire existence today. I'm headed to the low rim This court's been slippery in the past the past few weeks So if it is I'm just gonna run away and go to the other court and just have fun It's actually a gloomy one today. Look at this rainy, but I like it. It's cozy. It's stormy. Let's go.  They cleaned it. Yo, I'm not the only one Tell me tell me please look at that. I know the new shoes and those are new shoes. Okay Give me something Hey It's wait, I put my shoes on it's way too slippery. I might have gonna try it's a waste I'll get some of Isaiah's footage to put in there, but also just check his YouTube out We're going to 24 going a legit rim. Let's bounce. I Mean I know it probably sound like a friggin maniac, but this court's crazy slippery, too I think it's the humidity. It's hot in here. It's usually cold I think it's a humidity just put a little bit moisture on the floor, but for real I was here last night. No problem. I was flying. I don't complain like this. I'm not trying So this is ridiculous I asked for a friggin mop and they gave me a towel. So it's dunk life. We got to do what you got to do Bro, the drugs in here. Here we are, baby. I'm slipping if I keep building some confidence maybe I can jump hard But it's really hard to jump full speed when I feel like I'm balanced and hard.  I jumped really well yesterday Most days have been up up up, but today not jumping my best But to be able to jump consistently off the dribble like that Oh To be able to jump consistently off that especially off the dribble is really good for me So I got to remember that fine something you can work on on your bad days It's not always going to be constant progress, but it's constant work. Let's get it Been on this whole time. So it's getting colder in here. It's colder. You want to say something to the vlog Yeah, it's okay The floor is a little slippery but I'm getting amped now because the floors are drying because of the air condition came on And now it's drying up. So what do you got to talk about there? I got you Got you love you. See you when I took off and planted both feet super sticky I felt real good pop real good traction I pushed myself a lot today if I keep doing that I'm gonna Start to develop bad habits. So I think I'm gonna be done felt great today. Good work boys And we out here


So I'm going to show you how to add a LinkedIn story complete with a hyperlink to a website. So we need to use a company page story to do this because with LinkedIn profile stories you are unable to add a link. So it's great that you can actually do this with company page stories because if you look at Instagram, for example, you need at least 10,000 followers to be able to do that. So big advantage if you want to promote an event or if you want to sell something or simply link to your blog for people to read. So in this case we're going to promote an e-learning course. So I'm going to go to the top here where the stories are situated. Going to click on the plus symbol here. Now I could take a photograph with the camera or a video but I'm going to go to the gallery and pick up a pre-prepared image. So going to double click on that to put it into my story. And you'll see at the top here that there is a link icon. So I'm just going to click on that and I'm going to paste in the link to the appropriate page that is on my clipboard. Click on done at the top of the page and then we're pretty much ready to go. I just need to click on the share story button at the bottom, which I'm going to do. And that will now be posted here. So let's just double check that. So I'm going to click on this now and we can indeed see the story and see the button to the website at the bottom of the page. So users can either click on this button or they can swipe up to view the website where they can book this e-learning course. So that's how to add a LinkedIn company page story complete with hyperlink. Thank you for watching. And if you'd like to learn more skills by watching short videos, please subscribe to our channel here on YouTube. And if you'd like to continue your learning journey with NILC, please visit us at nilc.co.uk. See you next time.


The most important policy in my view for driving the green economy transition is public investment. It's the way we invest our resources and right now public investment is geared in many ways that are going in the wrong direction. One of the interesting things that is related to climate change is our government set up a national fund with contributions from its own revenue. So what we would like to see is replicated in other parts of the world as well. Maybe what can we also suggest in the EU is to plan also a community not relying too much on the subsidy of the government because we think that time comes that the rapid growth of the population also cannot accommodate the subsidy of the government. I think that one of the most innovative policies that was recently created was the Green Grant Initiative. Poor families located at the conservation units, they receive now a monetary grant in order to conserve the forest. It's a form of payment for environmental services that we are now experimenting in order to disseminate and massify. Well Costa Rica started with a very traditional tax exemption. Then decided to move toward a combination of subsidies and other instruments and finally realized and changed the law to transform it from subsidies into an environmental service payments. This is the way it goes now, mainly local but aiming to go global. I think urbanization holds the solution to most of the world's long-term problems, whether they're economic or social, demographic or environmental. But one thing that could definitely change panorama a little bit is if there were improvements in public transportation, mass transportation, allowing people to live further away. And still reach their jobs. I work on the governance of solar geoengineering. In that context, innovative policy to deal with this technology, to my mind would take the form of early and sustained dialogue between the different stakeholders on this issue. Involving the communities in being able to do many of the things that they want has been very exemplary. We have been working on community-based adaptation to climate change. Communities are not waiting for experts to come and tell what climate change is. They're doing it. We need to live between planetary boundaries. We know that the earth has systems that we must not transgress if we want to keep in a stable and beneficial state. But we also need to make sure that every human being has the resources they need to meet their human rights and lead a dignified life.


Department of Electronics from Valtry Institute, Solapur today in this lecture I am going to discuss with you a very important concept of paging in the operating system.  Now, in this the goals are we will understand what is the memory management then what is the meaning of external fragmentation then the paging mechanism and the paging table concept. As we all know here during process execution we use the memory. Now normally the program is stored in the logical memory or I can say hard disk or also called as a secondary memory that is prefaced by the operating system and is brought into the main memory and the CPU is going to access the data from the main memory for execution. But whenever the CPU start execution it generates the logical address and this logical address always points the data inside the physical memory or in the secondary memory I can say. So, we are going to preface the data from this secondary memory and is brought into the main memory. Now MMU is nothing but the memory management unit it help us to bring the data from the secondary memory to the main memory by converting the logical address into the physical address. This one more thing is to be understood is that the virtual address is always in the secondary memory it always start with the base as zero and the MMU is going to bring the data from the secondary memory back into the main memory. The figure shows you that concept here. The MMU is going to address the memory as well as the IO devices and the address which we used to point out these two devices is normally called physical address. As I said here whenever the CPU is going to select a process for execution it generates a virtual address. Now this address is always pointing towards the secondary memory because CPU always get data for execution from the main memory which mean that we have to bring the data from secondary memory into the main memory in the advance it is normally called as a prefetching. So MMU is going to convert the data that is of virtual address type into the physical address which is pointing the main memory that is normally a case of RAM in our case. Now what is the paging here? The paging is a memory management scheme by which the computer stores and retrieves data from secondary memory into the main memory. So paging naturally in the paging we normally divide the secondary memory into equal slots here that is we are going to deal the secondary memory in parts it is normally called the partition. The two types of partitions the first is called equal sized partition and second is the unequal sized partition but normally we use the fixed partition or fixed sized partition in the paging scheme. So we divide this entire secondary memory into small blocks. Now each block is normally called as a page or I can say here I will divide this entire secondary memory in different pages. Now the program that we stored in the secondary memory that is now covering number of pages in the given secondary memory. Example a program can cover 15 pages in the given secondary memory. Similarly the memory manager divides the physical memory that is the RAM into again equal sized pieces that is called the frame. Normally the size of frame is always equal to the size of the page. But remember that the size of physical memory or I can say the size of main memory is always less than the size of secondary memory which means that we never going to bring all the contents in the secondary memory into the main memory or I can say reversely only interested part from the secondary memory is brought into the main memory. Now this diagram shows you that concept here I said that the secondary memory we are having one program so example program 1 it is covering page number 0 1 2 and so on. Now we are trying to preface data so this MMV is come in the picture he will convert different addresses in different required forms here so that we can bring the data on page number 0, page number 1, page number 2 into the physical memory. Now in this diagram the logical address space the secondary memory is having a program that covering that covers page number 0 1 and 2 whereas in the physical memory in the RAM it has got different frames numbered as frame 0 1 2 3 and so on. Now in the physical memory the frame number 1 is already occupied by some previous data in the computer or in the operating system so the frame 0 is open frame 2 is empty and frame 3 is empty here. Now this MMU is going to take atmosphere frame of where to put this page in the moment. Now as I said here the data is prefaced by the operating system so in diagram as I said here data is brought from the secondary memory and is brought into the physical memory. Now as you see here there are two options here this pages can be stored in the main memory either in the continuation it is normally called as a contagious memory allocation or these pages can be stored in different locations in the main memory this is normally called as a non-contagious memory allocation. So in this paging we can store all these pages that is from the secondary memory into the main memory either sequentially or in non-sequential fashion it is normally called contagious allocation or non-contagious allocation in the given main memory. For example I can take this example here suppose I got program 1 is suppose covering 15 pages in the secondary memory so as we all know these 15 pages are first brought in the main memory they are stored in different locations which are called as suppose the frame suppose currently the CPU is executing the is frame number one and suppose suddenly he wants the instruction which is present on the 14 number page now in this case the CPU is forced to read the page number one then he will go to page number two he will go to the page number four and after all this reading first 13 pages here he will get himself on the 14 number page here and where he is going to find the required instruction for execution now these kind of difficulties are reducing the speed of access here or reducing the speed of processing so to overcome this difficulty here the operating system manage one more table it is normally called as a page table now what is page table here page table is a table in which it has got two columns first he carries the page number and second he carries the frame number page table is a data structure it is not the hardware it is normally maintained in the main memory so the table shows that page number one is stored in the frame number one page number two is stored in now again just revise the problem here suppose example the CPU want to execute some instruction suppose on the page number two so it generates the logical address it normally has got two components here one is called the P2 that is the page number and second is the offset which is D in my case now this page number will load this or indicate the page number two so in this page table we are going to take a control on the page number two and we know in the table it shows that the page number two is stored in the frame number one which mean that the data of required quality or required quantity is found on the page frame number one so that I am going to convert this logical address as now not as P2 but as F1 and we know here I want the instruction which is at the deep location in the given page number two and we know here the size of page and the size of frame they are equal so I can find the required instruction in the frame number one at deep location and this collective information is going to point the main memory that points the page number two that is the frame number one and in which I am going to find out my required instruction now in this way we are going to find the paging here now you see that in this case the in this case the pages are stored in different locations so that there is no not a case of any external fragmentation case here secondly we take the help of the page table now page table is stored in the main memory is indicated by a register is normally called as a page table based register now what are the advantage of this paging here in the paging we can store the pages in non-conditious fashion in the main memory so we never get external fragmentation there then as the data is in the main memory the access time is always less and we are having the faster process execution here and now what are the drawbacks of this paging here as we know here before we start reading the frames data here we first refer the paging table here so that always kept in the main memory here so Cp has to first read the paging table here and then he will read the required frame which contains the required data which means that the Cp also read this main memory twice to execute a processor and hence the time required to execute a process is get increased here or the speed is get lower down here and secondly the internal fragmentation problem is not completely resolved here because some page may not be covering all the frame here so in which some of the space in the frame will remains empty here so this problem is not at all resolved here but is normally ignored here because that is not so much disturbing in the processing here now these are my references here friends i expect that you understand the concept of paging here thank you thank you much


Hello welcome back to my channel if you're new here, and you've never seen me before my name's Sam I am a licensed hairstylist and I am Going back dark and I thought that I would share with you the process and teach you how to go from light hair to dark hair The proper professional way. I know it probably sounds very straightforward like okay. I want to go dark I'm just gonna throw a dark color on and be done with it But if your hair has been bleached, and it's pretty porous just throwing a dark color on top of that It's not always going to give you the nice rich dark brown results that you want It can look really flat and dull and kind of have like a green Hue to it so I'm going to show you how to fill the hair properly So that your hair is nice and strong and healthy and you get a nice really shiny rich results So I'm gonna start by showing you all of the products that I'm going to be using first step is putting on a cape or if you don't have a cape just like a Old t-shirt that you don't care about getting stained You're going to need a color bowl and a color brush to apply the color with you're also going to need something to measure your color With so if you have a food scale you can weigh it out that works or if you have a measuring cup Use that then this is optional You could use your color brush to mix everything up But if you have a little whisk that will be helpful for mixing up the color You're also going to need gloves of course anytime you're going dark The color is going to stain like crazy and then also a color bottle. This is gonna be for the last stop I'm thinking after the color is done I might throw a gloss on top as the final step just to like seal everything in make it nice and shiny and make Sure everything is like really even and then as far as the actual color that I'm going to be using This is going to be a two possibly three step process But it's very important that you do it this way Like I said in order to get the best results and make sure that your color comes out looking Really nice and rich and shiny and all of that. So first we need our filler color My hair right now is I would say overall like about a level eight Maybe a level nine in some places and my goal color is a level four So I'm going to be going down four to five levels So I need something that's going to be kind of right in the middle of that That's going to fill back all of that warmth underlying pigment in my hair when you bleach or lighten your hair You are stripping your hair and taking all of the pigment away From your hair. So when you want to go darker, it's important to put that pigment back first Before you add the dark color if that makes sense So if you look at like a hair level chart the underlying pigment of each color The darker your hair is it starts out as red then orange then gold then yellow as you get to like a really light blonde So because I want to be back at a level four I need to add back those like gold orangey tones into the hair Because if I don't fill it first with that underlying pigment, it's not going to hold as well And it's not going to look as nice So I'm going to be doing a warm coppery level seven On my hair all of the specific products I'm using are professional only but you can get similar non professional options at Sally beauty supplies So I'll put links to all of the products that I'm using in the description And then I will also put the sally's options as well in the description And the filler color that I'm going to be using will be a demi permanent demi permanent has larger color molecules So it holds in bleached hair better than permanent wood So I'm using well a color touch. I'm going to be mixing seven stroke four three with seven stroke seven three This is a level seven red gold with a level seven brown gold Just something that's going to give you like a coppery color this I just had left over But I didn't have enough to do my entire head with and then they were completely sold out of the store of any of this For the professionals out there, ideally I would want to do a stroke four three or a stroke three four Something just like really orange But um, they were completely out of those so seven three I feel like is gonna still be good and give me that warmth and that gold that I want mixed with the four three I think it should work, but just some kind of like coppery orangey gingery color It doesn't have to be like anything specific We just want to make sure that we are filling the hair and getting it nice and warm Now salis does have like protein fillers that you can spray on your hair before applying your dark color I'm going to be honest. I've never used those before so I'm not entirely sure how well they work But this is like The way if you were to go get your hair done in a salon This is the way most stylists are going to do this process. So this is The way I feel comfortable doing it the way I know works the way I know how so that's what I'm doing So that's going to be the first step the first color that we do and then for my actual dark color I'm using wella colestine perfect. This is a permanent color and this is in the shade four stroke seven one Which is a level four brown ash.  So I would just go up a shade to be on the same side I am totally fine with my hair coming out like as dark as possible. Basically my goal is like A Courtney Kardashian like dark dark dark brown almost black basically and then for all of those colors that we're going to be using I got 10 volume developer You want to use 10 volume or lower because this is all going to be deposit only we don't want to lift at all Obviously, we're going darker. There's no need to lift so 10 volume or lower on that And then the last step this isn't always like 100 necessary But I do find that whenever you're going from light to dark It usually does take like A second layer of dark color in order to like really get everything Super even and get it like as dark as you want and like nice and shiny So I am going to be using redkin shade dq. This is a gloss So it's going to seal everything down add shine and this is in the shade for n Sticking with the level 4 and then I just have the processing solution to go along with that So again, I will have the Sally's alternatives to all of these products But that's what we're going to be doing. So we're going to be filling the hair first with a coppery color Then we're going to be putting our permanent dark color on top and then we're going to throw a dark gloss over top of that To seal everything in and get it nice and even So just brushing through to make sure there's no tangles in my hair and then parting it down the middle Just to make the application As easy as possible. Let me put my gloves on So I'm going to start with these seven four three while a color touch. I'm just going to squeeze out whatever is Left in this tube There was about like half a tube left. So there's like an ounce Of color in here. I'm going to put a little bit Of the seven seven three With demi permanent you need to do a one to two ratio with developer So double the amount of developer to color. So I don't actually need Too too much color So I think I'm going to just do like one and a half ounces Of color So again, you don't have to use like exactly the same color that I'm using I wouldn't even do this if I had the option but I did one ounce of Seven four three and then half an ounce of seven seven three Just so you know exactly what I'm doing and then I'm going to take my 10 volume developer And I'm going to do double the amount. So since I have one and a half ounces of color I'm going to add three ounces of developer and I'm going to work from the bottom up And because I have a darker root and we're doing deposit only and this color is a few levels lighter than my natural color It's not going to do anything to it. Plus. I don't want to fill my natural color I really just need to fill what's been bleached. So I'm just going to focus this first color on The ends and mids of my hair wherever it's blonde. I like to just comb it through make sure it's Fully saturated When everything is applied I am going to leave this to process for 30 minutes And then I am going to Shampoo it out of my hair. I might do a little bit of light conditioner Just so that way my hair will be like easier to brush through and then I will be back Just rough dried my hair. I just wanted to get most of the moisture out It's still like a tiny bit damp. It doesn't have to be 100 bone dry, but I just didn't want it to be wet anymore. Now we're going to mix up our dark color So again for that, I'm using wella kp in the shade four stroke seven one And this is a permanent color This color is going to be a little bit darker than my natural like about a level darker So I wanted to get permanent. I'm going to apply this roots to ends I'm just going to use the entire tube and with the permanent.  They're going to be a little bit more resistant So I want the roots to have a chance for the color set on a little bit longer So that way everything will come out nice and even I don't want my ends to be darker than my roots And the easiest way I find to do that is just start From a middle part apply it to the top End along the hairline and if you're worried about staining you can take Vaseline or even some like conditioner or something and apply it along your hairline and like on your ears and stuff, but Personally, I don't really care Then I'm going to split down the side like behind my ear Like that that way I'll have four sections two in the back On each side and then two in the front I'm going to clip the front piece away So I can see what I'm doing and I'm gonna I'm going to start with the back If you have another mirror that you can place behind you so that way you can see what you're doing Or if you have someone with you That can help you with the back Make sure that you're Not missing any spots I'm just going to go section by section using the end of my brush to Part the hair as I work along It's definitely a good thing that I got that gloss because I Way underestimated how much hair I have so yeah, I definitely needed At least two tubes. So what I'm doing is I applied it all over To the roots and I definitely don't have enough color to fully saturate the mids and ends This is literally all that I have left now. So I'm just dragging it down along the perimeter of my hair Just so I can cover the outside of it And of course now it's nighttime So the stores are closed.  So I think that it should take just fine So for the gloss, I'm going to apply that with a bottle to make it easier. This is liquid So if I try to apply this with a bowl and brush, it's just going to be a mess and get everywhere So bottle is the easiest thing to do. So we're going to do the full two ounce bottle And then I'm going to do equal parts processing solution I'm going to squeeze the bottle a little bit Put my finger over the top Give it a shake this way if you squeeze it first all the color after you shake it won't like come flying out of the top of the bottle I'm literally just going to squeeze That out just kind of do small section at a time The permanent color that's on my roots has to process for about 40 minutes. The gloss only needs 20 But after I'm done applying it, I think I'll just set up timer for 30 minutes Because I figure it's going to take me about 10 at least to apply this And it's fine if the gloss sits on you know longer than the 20 minutes. It's not going to do anything bad I should have known this honestly like it's always better to get more color than you think You're going to need but yeah, ideally I would have just applied the permanent color all the way through And uh, then once that was done processing, I would have washed it out and then applied this gloss On my wet hair just for like 15 minutes or so Just as like a topper But this should work and come out good So like I said, I'm going to set a timer for 30 minutes and then I'm going to hop in the shower Shampoo this really well out of my hair. Oh my god. I all over my neck even Um condition it as normal do my usual things style it and then I will show you the final result So it's actually a couple weeks after I originally colored my hair. I forgot to record an outro originally I do have some vlog footage though of what my hair looked like the next morning So I will insert that here so you can see how it looked That was again as you saw after I did the permanent color Up top and then I pulled that redkin gloss through the ends So it still gave really good coverage. It came out really even it looked beautiful But then about a week or so after that I did feel like there were a couple pieces that looked like they were starting to fade a little So I decided to go back to the store and get a second box of that wella four stroke seven one the permanent color that I had used on top of my hair And I just pulled that only through the ends. I didn't reapply it up top That wasn't necessary But just on the ends where I had ran out of color the first time So now my hair is 100 percent Root to end covered in that permanent color So this is how it looks now and you can see it's like Nice and rich. There's no dullness. There's no like green tint to it But there's also no like red or orange So even though I filled it with a coppery color first because I didn't do like a super dark copper You don't see that poking through at all as far as touching up and maintaining this color I would only use the gloss from now on so that redkin Shades eq 4n color I would just apply that I would mix it with the processing solution And you know every four to six weeks or so as I feel like the color looks like it needs to be refreshed I would just pull that through from roots to ends Now my natural color as you saw is only about a level Lighter than this color that I have so I would be fine with just using the gloss for a while Once my roots really start to grow like a good amount The color difference might be a little bit more noticeable at that point I would use the permanent color but only on my roots and on my new growth I would not reapply permanent color on hair that has already been colored because I just don't like the look of that I feel like when you start to overlap permanent color too much It starts to look a little bit flat So To refresh what's already dark I would use the gloss and then if you do have lighter roots And you want to color that new growth you can use that same permanent color on your Roots only I hope that you guys found this video helpful If you did please give it a thumbs up It really helps my channel out a lot if you'd like to subscribe to see more content for me I would also really appreciate that But I hope you have a great day. Good luck coloring your hair and I will see you later. Bye


We're losing grass acres all the time. We're losing ranchers in this country all the time. Just less cows on the landscape. And cows, I think, are probably one of the most important tools we can use to rebuild our soil. From all the destruction we've caused with tillage and all the fun tools we get to use, it's very important to keep them on the landscape. In order to do that, we need grass. And in order to keep the grass, we have to show value. And I think we're doing that here. We're showing the value of the grassland acres we have. We have decided to increase that, planted quite a bit back to grass. It's crucial for my operation to have a good grass base. And I can add a few crop land acres into my rotation to make it a pretty solid business. So it's working out quite well. I've got four kids. Oliver, my oldest, is eight. Hazel is six. Dia is three. And Gus is eight months old. So we've got a pretty decent spread in the four of them. They like to come out and help and do some limited chores. They're a little small to be running hot wire and that sort of stuff. But they enjoy to be out here, taking cat fishing on the river, try to get them out as much as I can. We have a cow-calf operation, too, a small one at a different farm. And they like the calves. And so that's been hard to get rid of those guys. We have a lot of fun cabin every spring. And they try to help where they can. But hopefully they can get involved more as this goes on. The nice part about having the landowners I work with is we, in order to make the changes that we've made and to put the infrastructure in with all the help from our partners is that we have a long-term lease. And that is crucial to this operation. Because without that, we've got nothing. It's there looking for a tenant every three years and the tenant's trying to keep it, basically. And what we've decided to do is have a vision and a long-term set of goals that we are working towards. And through that, we've developed a long-term sustainable lease that allows us to make these positive changes. And we don't worry so much about what could have been made or what we lost. And we just stick with the plan and stick with our lease and keep moving in the right direction. So that's been nice. The point is that with the long-term lease, I know I can get my kids involved and that they can have something to work towards. And hopefully when the lease is up, we can up it and start again and keep this going in the right direction. At that time, my kids will be teenagers and can be a little bit more involved. So it'll be nice. Mike, as a manager, is kind of more like a conductor. He looks at things as they all work together and tries to see what the end goal is and integrate the crops and the grass and the soils and the water and the plant life. He's really looked into biodiversity and so trying to get everything to come into concert with each other. Years ago when he started managing the operation, we looked at the wildlife and the livestock aspects and the plant diversity and kind of the goals that he had. With my job as a watershed coordinator, I and South Dakota DANR, James River Water Development District, we looked at what is he going to do and how does that benefit South Dakota lakes, creeks and streams. Water is a keystone resource for a lot of us in South Dakota. And the nice thing about water is it can inform us how all the other resources are doing. It can tell us, are we getting sedimentation or chemicals or fertilizers? How's the biology working? How's the plant diversity working? And ultimately benefits the livestock together. So it was easy to invest from our company standpoint into Mike to help him meet his goals because he was integrating all these different concepts together. So we've worked with not only the NRCS, Ducks Unlimited, Pheasants Forever, James River Watershed Development District, Audubon Society. They've all really chipped in and helped me see my vision and working with them and explaining to them what I see and what we can do on this landscape and why it's important. They've all come to bat and done a great job helping me out, giving me advice, talking things over and planning. The Grassland Coalition has helped out quite a bit. The South Dakota Soil Health Coalition, they've helped. So I wouldn't be here without all these guys and there's very helpful resources out there for all landowners. I think it's important to just explore the options, get in touch with these people and see what you can do and talk to your neighbors. Just see what everybody else is up to and see what you can do to improve the resources you have. We're all managers. It's just kind of the decisions we make is what really makes the place. So I think using those guys as a resource is very important.


The study found that five commercial essential oils, oregano, eucalyptus, rosemary, clove, and peppermint produced by different companies had varying levels of antimicrobial activity against Staphylococcus aureus and Escherichia coli. The essential oils also demonstrated varying degrees of antibiofilm activity against pseudomonas aeroginosa. The study concluded that the variations in the essential oils chemical compositions and production methods may explain why some samples had higher antimicrobial or antibiofilm activity than others.


The study aims to assess the wear patterns of orthodontic arch wires under both dry and wet conditions through in vitro testing. This article was authored by Baraja Abdenacer, Willems Guy, and Silas Champierre.


Welcome to the 2019 western states 100. This is the rough cut. All right I got to go to bed tonight so I will get you a more cinematic edit tomorrow. Roll the tape. Seventeen minutes. All right we're getting closer everyone. Thanks for tuning in to the western states 100 coverage. Never been here before. Figured it out as we go but so far so good. Check in. Elites are checking in. There's David Laney on your screen. Watch out for him. He could have a good day today. So all right I'm gonna go get my position here in about five minutes. I'm gonna be on the far side of the starting line just to make sure with the 200 most likely it's a little too dark for the 400 meter lens just to give you a little behind the scenes insight as far as how I will be filming this. All the runners are congregating and yes the sun is slowly rising. Look at that. And just like that everyone is gone off to Robinson Flat. The next the first big big aid station that you can go watch at. It's I think it's about a two hour two and a half hour drive around to get there I think. So anyway we got a piece out go see if we can catch the leaders. That was the most epic start. I hopefully I got it for you all. The crowd control was just insane like I've never seen a start like that in my life. A lot of great energy and here's a little aerial footage but it was a little too dark to get I had to bump the ISO too high. So anyway a little aerial footage for you up on the mountain as the leaders were climbing up the hill there. All right come on no time. Time is a waste. You have it the Robinson Flat aid station is in the books. Now we're off to Forest Hill. I think we got it. I think we got some good stuff. I hope you enjoy that all right. Let's rock and roll down the hill. Oh it's finally it's okay it's a cool year just so you know the temps are nice but it is warming up so t-shirt time I'm guessing right now it's in the 50s but it's supposed to get up to definitely the 70s as we drop down in elevation. Let's go real quick forgot to mention Jared was about 14 minutes back from Jim by the way we're now at Forest Hill and Jared looked a little more peppy in his step. If you know what I mean like he just looked a little more nimble a little more fresh. Jim was obviously flying but anyway that's what literally what like running as he was running by he just looked a little faster at that moment at Michigan Bluffs so now we're just waiting waiting away. Wrapping the day it's like 11.30 we started filming at 5 a.m. oh man there's a crew coming two runners racing all right hold on pause pause pause they're racing well that's a good way to end the vlog all right keyword why not epic all right keyword epic question of the day what was your favorite shot that I captured today like was it the start was it something in the middle Robinson flat what we got a lot I probably used 15 to 20% of all the footage so we got plenty more coming for you I hope you enjoyed it let me know your favorite shot down below in the comments I would appreciate it see beauty work hard love each other see you tomorrow


Welcome to the 10th session in the 2nd module in the course on signals and systems. We continue discussing the relation between signals and vectors that we had embarked upon in the previous session. Now we need to know a little more about vectors. We said something about the dot product. We need to say a little more. How do we calculate the dot product between two two-dimensional vectors where you know the components. So let me take a graphical view of this. So I have two vectors. Let me call them v1 and v2. And I express these in terms of their components. So I associate with them their perpendicular components. I am assuming that these are the two perpendicular directions here. I will just show them in blue with the perpendicular unit vectors. Let me call them u1 and u2. It is customary to use a cap over the unit vector. And therefore I have these components here. The red one for v2 and let me use black for v1. So I call this v12 because this is v12 u2 cap. And this is v11 u1 cap here. And this is v22 u2 cap and v21 u1 cap. And there I have a very simple relationship. v1 is v11 u1 cap plus v12 u2 cap. And v2 is v21 u1 cap plus v22 u2 cap. And let me now use the symbol for dot product which is a dot. So v1 dot v2. We all know it to be essentially the product of corresponding components and then sum. So sum of products of corresponding components which I can expand as v11 v21 plus v12 u22. So this is an important concept that we often encounter. If I have perpendicular components for a vector and if I do the same thing for all the vectors in a space, I can take the dot product of 2 vectors in that space by simply multiplying the corresponding perpendicular component lengths and add it these over all the component directions. So of course in 3 dimensions I would have 3 such perpendicular components. And you know although we cannot visualize more than 3 dimensions, we can certainly conceive of them conceptually at least for a finite number. And then after all what is a two-dimensional vector? A two-dimensional vector is just an ordered pair of two well for the moment real numbers. But later we will also allow complex numbers and you know why we so fond of complex numbers. Now you have some idea why we like to use complex numbers too. Well, let us get a better idea of what I am trying to say. Let us now relate vectors and first sequences. So let us do that. Vectors and sequence. What is a sequence? A sequence is a discrete sigma so to speak. You know that. So suppose you have a finite length sequence with only two points. Let us say again without any loss of generality that the two points are at 0 and 1. So you could for example think of V11 V12 as a two-point sequence and so also V21 V22. So what I am trying to point out is that you could think of the two vectors. If we drew a few minutes ago V1 and V2 as two two-point sequences and you could think of three-point sequences, four-point sequences, ten-point sequences. Essentially if a sequence has ten non-zero values, contiguously locate ten possibly non-zero values meaning all other values are guaranteed to be 0. Then you could think of it as a ten-dimensional vector and as long as the sequence has finite number of non-zero points, you are quite alright in calling it a vector of finite dimension. There is an exact correspondence and now you also get an exact correspondence between the dot products of two sequences and the dot product of two vectors. In fact it is almost trivial. If you think of these two sequences which we call V1 and V2, you could take their dot products, go back here. So I have a product of the corresponding components, multiply V11 and V21 and V12 and V22, multiply the corresponding components and add. Now you could of course take this two three dimensions, you could take it to ten dimensions. So defining a dot product between two finite dimension vectors or finite length sequences is not a problem at all now. Now you could take one step further. You could take this to infinite length sequences. The only change is now you have a series instead of just a finite sum. So you can visualize two discrete signals or two sequences where potentially all the points are non-zero. Let us take an example. Let us consider the two sequences x1n which is equal to half the power of n un or it is essentially half to the power of n for n greater than equal to 0 and 0 for n less than 0. And let us assume x2n is one-third to the power of n un which implies that it is one-third to the power of n for n greater than equal to 0 and 0 for n less than 0. Can we conceive of a dot product between x1n and x2n? Remember it is not see when I say x1n one must not misunderstand it to meet the mean that specific point you know x1 x2 are entities their sequences. So the dot product is essentially summed over all n the corresponding products of component. In this case this would become summation n going from 0 to infinity half to the power of n one-third to the power of n which is essentially summation n going from 0 to infinity 1 by 6 to the power of n which is a very simple sum to calculate it is the first term which is for n equal to 0 equal to 1 divided by the common ratio 1 minus 1 by 6. So the denominator is 5 by 6 and therefore you have 6 by 5. This is the dot product between x1 and x2. Now you see here of course you had an infinite number of dimensions associated with each of those so-called vectors. So now you know how to think of discrete sequences as vectors that is not too difficult to generalize starting from the finite dimensional vectors that we are familiar with. Of course here I took what is called a one-sided sequence that means I had a non-zero point all on one side of a specific chosen point. I could choose what I call two-sided sequences that means I could have potentially all the points being non-zero all over the set of integers. A minor variation the summation from n equal to minus infinity to n equal to plus infinity needs to be maintained as it is you cannot contract that summation that is all. Anyway I therefore leave it to you as an exercise to consider one such case. Let me write down that exercise. Calculate the dot product of the sequences x1 n is half raised to the power mod n for all n. Now here this is what I call a two-sided sequence or you know a sequence which is non-zero all over the set of integers and x2 n which is one-third raised to the power of mod n for all n which is again a two-sided sequence. Now that is a simple exercise and I leave it to you to do it alright. So we are quite convinced that we know how to calculate dot products. Now you know the first thing I am going to do is now to give a more formal name to dot product like we did you know we called perpendicular we said is a term we use more in high school geometry dot product again a term we use more in high school. Now in college we would like to use slightly more formal terms which also mean the same notion in a more generic context and therefore we will use the term inner product. We will use the term inner product for dot product henceforth. Formal term or more general term for dot product and we will use this to denote the inner product you know you put a comma and you have two triangular brackets and you put the arguments of the inner product on two sides of the comma. For example in the exercise that I gave you and the exercises I have been working out the arguments are x1 and x2. We will see more about the inner product in the next session. Thank you.


It's going to be a little difficult to breathe, but it's going to be a little difficult to breathe.


One of humanity's great weaknesses has been its inability to remember, its inability to learn from its history, and that applies as much to Julian Assange and the Assange story as anything else. The circumstances shift, but the fundamentals remain the same, and for me the fundamentals are these. In 2010, WikiLeaks with Julian Assange as its editor published a massive number of secret documents about the US war effort in Afghanistan and Iraq. Many of the revelations were deeply embarrassing to the United States and its allies, including Australia. They included the infamous video footage of a US Apache helicopter attack on civilians in a Baghdad street in July 2007, which was widely and sensationally reported around the world. The British Guardian newspaper reported it thus on April 6, 2010. A secret video showing US aircrew falsely claiming to have encountered a firefight in Baghdad and then laughing at the dead after launching an airstrike that killed a dozen people, including two Iraqis working for Reuters news agency, was revealed by WikiLeaks today. The military whistleblower who leaked the documents to WikiLeaks, Bradley, now Chelsea Manning, was prosecuted and sent to jail for 35 years, although her sentence was commuted after seven years on clemency grounds by Barack Obama as his presidency was ending. Tellingly, there was no effort by the Obama administration to go after Julian Assange as the publisher of the devastating document dump, even though they had become obsessed about leaks and about punishing leakers. In this context, the 2011 decision by Australia's Walkley Foundation, which has been highlighting great Australian journalism through its celebrated awards for nearly 70 years, to award WikiLeaks with Assange as its editor, a Walkley award for its outstanding contribution to journalism, was highly significant. Walkley judges very deliberately spelled out that in their considered view, Julian Assange was acting as a journalist applying new technology to, quote, penetrate the inner workings of government to reveal an avalanche of inconvenient truths in a global publishing coup. Walkley judges said, quote, while not without flaws, the Walkley trustees believed that by designing and constructing a means to encourage whistleblowers, WikiLeaks and its editor-in-chief, Julian Assange, took a brave, determined and independent stand for freedom of speech and transparency that has empowered people all over the world. And in the process, they have triggered a robust debate inside and outside the media about official secrecy, the public's right to know and the future of journalism, the future of journalism. As the Washington Post reported on November 25, 2013, in relation to the Obama administration's reluctance to prosecute a case against Assange, quote, justice officials said they looked hard at Assange, but realized that they have what they described as, quote, a New York Times problem. If the Justice Department indicted Assange, it would also have to prosecute the New York Times and other news organizations and writers who published classified material, including the Washington Post and Britain's Guardian newspaper. So what changed? What changed was that Donald Trump arrived in the White House and his new CIA director, Mike Pompeo, who will shortly be lining up to attempt to be the next president of the United States. In April 2017, declared that WikiLeaks was a threat to US national security and that Julian Assange, quote, and his ilk, good word, ilk, seek personal self-aggrandizement through the destruction of Western values. Is it possible that the irony of that description escaped both Pompeo and his president? It does pose an interesting question, doesn't it? Who has done more to undermine American democracy? Julian Assange for revealing inconvenient truths hidden within an unhealthily secret world? Or Donald Trump? Simply by being Donald Trump. The bottom line is that Julian Assange has now spent just short of four years coexisting with Britain's toughest criminals in the high-security Belmarsh prison, still facing the prospect of then spending much of the rest of his life in an American military prison. Since the advent of the Albanese government, two things have happened here that are relevant to the case of Julian Assange. One was the Prime Minister's comments in and out of the parliament that he has personally raised the Assange case with, quote, representatives of the United States government, unquote, saying, quote, enough is enough. It is time for this matter to be brought to a conclusion, quote, and that, quote, you have to reach a point whereby what is the point of continuing this legal action which could be caught up now for many years into the future. But we don't know whether Prime Minister Albanese has spoken directly to President Biden. We don't know whether he's spoken to the US ambassador here or to what other officials he has spoken to. We don't know the strength of his intervention, if we can call it that. And we have no idea of what hope there might be for Julian Assange in the American response. All we know is that Anthony Albanese won't be pursuing megaphone diplomacy. In other words, whatever happens will be negotiated behind closed doors. That is a part of our modern democracy. The other event relevant to the Assange case and to whether this government is genuinely resolved to do the right thing by him, whether they like him or not, was the meeting last week called by Attorney General Mark Dreyfus with Australia's major media organisations to discuss press freedom. Ironically, also held behind closed doors, apart from some prepared opening remarks and the photo opportunities. Dreyfus said in his public remarks, quote, I think that journalists and I still contend that Julian Assange was acting as a journalist when those things happened that have led to him being in jail awaiting extradition to America. I think that journalists should never face the prospect of being charged just for doing their jobs. And there is agreement across the parliament and indeed the community that improved protections are overdue. The Albanese government intends to progress press freedom and protection of press freedom. Mark Dreyfus was referring to domestic threats to press freedom like the federal police raids on the ABC and the homes of a Melbourne Herald Sun journalist four years ago. But the sentiment he expressed should apply equally to Julian Assange. And the longer Julian Assange remains caught in the web of U.S. legal procedure and British procedure without demonstrable and effective intervention by the Australian government to bring him home, the more the Australian government's credibility will suffer. And if Australia's representations are made forcefully, albeit privately, but then rebuffed by the U.S., what will it say about the true nature of Australia's status in an alliance that has been preserved at the core of this country's entire foreign policy for generations? It is long past the time for Julian Assange to be freed and to come home. Thank you.


What's up everybody Jason here for jazby's case race calm. This was our last zenith filler We needed to unlock zenith football with as we're giving away five spots in the first off the line round and teams break with this 20 21 prestige football hangar one box break Right on teams number 32 first we do the break randomized customer names and teams shoot hits out then at the end of the break We'll take all 32 Customer names randomize them and the top five get spots in Xena And here we go Roll it and let's do the break 301 four times one two three four Fred Donna Steve Birch four times One two three four Las Vegas Raiders Houston Texans All right for four again stick to what you got guys No trades Appreciate it Trevor Lawrence Mack Jones Jalen Wong All right. There you go. Not a bad little pack right there. All right. Here we go Randomize it top five get in roll two and a five seven times. Good luck. One two three four six and Seventh and final time.  Congratulations. Boom top five are in So you guys don't have a spot in the break coming up next is Zenith Break itself appreciate it


Mae ddim llawer i chi, a i weld i chi shrimpadau. The 15th meeting of the Public Audit committee in 2022. The first item on our agenda is to agree to take agenda items two and four in private. Are we all agreed? We are agreed. That being the case, I'm now going to immediately move the committee into private session Rwy'n cael ei wneud hynny'n gweithio'r agenda cyfnod 3 ar y cyfnod 10 o'r clwg. Rwy'n cael ei wneud hynny'n gweithio'r gweithio.


Hello, and welcome to this session. How to choose a software update mechanism for embedded Linux devices? My name is Leona Navi, and I'm a senior software engineer at Consulco Group. Consulco Group is a services company specializing in embedded Linux and open source software. My colleagues and I have upstream contributions to various popular open source projects, including the Yocto project, Open Embedded, Automotive Grade Linux, the Linux kernel, Uboot, various open source solutions for software updates, and many more. The company provides hardware and software build design development and training services. Consulco Group is based in San Jose, California, with engineering presence worldwide, and I'm working remotely from Povde, Bulgaria. In the next about 30 minutes, we'll talk about the following topics related to updating embedded Linux devices. First, we will brainstorm the things to consider when we're picking up a solution. After that, we'll have a look at the common embedded Linux update strategies and we'll have a look at the overview of the open source solutions available that implement these strategies. Then we'll have some practical examples using the Yocto project and Open Embedded with several of the solutions for performing updates. And finally, we'll wrap it up with conclusions. So let's get started with the first thing to consider when we're speaking about software updates of embedded devices, the update size. Are there any limitations of the disk space, the storage on the device? Several years ago, we were used as engineers that hardware is in general available and that over time the price of the hardware most probably will go down. Things change completely because right now we are in a middle of a global chip shortage. It's very hard to find microcontrollers. It's very hard to find memory. It's very hard to find pretty much any components. So disk space is becoming a real issue. The second question is are there any limitations of the network bandwidth for the data transfer? This is particularly important if you're working on a solution that relies on mobile data to download the artifact to the device. As part of the preparation for this presentation, I visited cable.couk and according to this website in the US the average cost for mobile data is 3.33 US dollars per 1 gigabyte. Of course, if you have a better contract, you may have significantly better rates. But still, if you rely on mobile data to perform updates, this is not for free and there is some cost. The bigger the size of the update is, the greater the cost is. Another thing to consider is how you're gonna transfer the data to the device. What are the different ways of transferring updates? We can do over the air using Wi-Fi or mobile data. We can do it with an Ethernet cable. We can do it even the old-fashioned way with a USB stick. Yeah, still for some industrial setups where we have machines working together in a local network that's not connected to the internet. Sometimes there is a use case where a technician has to go, plug a USB stick and perform the update. There are other options to do an update which are less common, but it could be possible to perform an update over Bluetooth or even over serial. So there are a lot of options how to transfer the data and before you choose the solution for update of your embellishing device, you have to think over what is the exact use case for you, how you're gonna install this, if it's just over the air or Ethernet cable or USB stick or something else. Another thing to consider is how you're gonna manage the devices. Do you need to update a single device or multiple devices? Are all devices using the same software stack? Well, this is pretty interesting because sometimes you can have pretty much the same image built for different architectures. It can be built for x8664 machine and ARM machine. As a result, you will end up with two different binary images and different binary artifacts for updating these images. Are all devices online all the time? Do you need to monitor the update of the device and get some feedback to see which are devices are updated? Do you need to update different devices at different times? This is particularly interesting for consumer products which are used in different worldwide and used in different time zones. For example, it's common that these type of devices are updated at night. However, in different time zones, night is a different time. Do you need to do something like this and update the devices depending on the time zone in which they are? Also, how to update and manage fleet of devices if you have gazillion of devices? For example, if there is some kind of an internet of things that you need to update and all these questions are not only related to the embedded device, but also to the backend, to the management system that's performing the update. Nowadays, this system could be in the cloud, so we might be even talking about web development in this particular scenario. The next thing to consider is how are you going to build images? Most probably you have already started building images with some kind of a build system. So what distribution and build system do you use? Is there a board support package for the hardware you use? Is the software update technology compatible with the build system and the BSP? These questions are very important because if there is no support for the solution to perform the update in your build system, this means that you have to spend time and money to integrate it. It's pretty much the same with the board support package. However, most of the open source software solutions for performing updates already have integrations with a lot of hardware. So even if you need to do some kind of an integration of the BSP, it's significantly easier compared to integrating the whole software over the year solution in a build system if it's not already integrated there. And speaking about build systems, what are the options out there? Here is a list of the, in my opinion, popular open source build systems for custom embedded Linux distributions. We're starting with Yocto project and open embedded. I don't want to lie to you. This is my preferred choice and I'm using it on a daily basis. Build root is another excellent build system. I have upstream contributions to build root as well. PDX disk is an alternative. OpenWRT is something designed primary for building images for wireless routers, but it can be adjusted for embedded devices as well. And there are other options as build systems on the market too. A common question is, can I just use Debian? It could be Debian, OpenSUSE, Fedora IoT, whatever. We're talking here about desktop distributions. And yes, you can use it. Debian is a stable full distribution with tens of thousands of packages available as binary files for installation without the need to cross-compile from source. And this is actually an advantage because you don't have to spend time to cross-compile a package each time they're already compiled for the ARM and X8664 architectures. There are numerous Debian derivatives for embedded devices. Some examples are the Raspberry Pi OS and Armbian. The problem with Debian or other desktop distributions is that you need to modify them in order to fit on the embedded device. And if you decide to update it using the package manager, this means that most probably you need to update not only the package you are interested in, but also its dependencies. And if you remember from the late 90s and the beginning of this century, you may run into the so-called dependency hell working with the package manager. So although I use Debian derivatives for some hobby projects at home, I highly don't recommend you to go this way if you're working on a professional device. And I recommend you to use a dedicated build system. This is a very wide and wild topic. And Chris Simons had an excellent presentation on this topic a couple of years ago. So here is a link in YouTube. If you have missed that, have a look at it. So now I would like to focus on the Yocto project. This is something that we'll be using in the next slides for the examples. So the Yocto project is an open source collaborative project of the Linux Foundation for creating custom Linux based systems for embedded devices using the open embedded build system. Open embedded build system includes two things. Bitbake and open embedded core. The Yocto project comes with a reference distribution called Pocky. It's provided as metadata without any binary files so that you can bootstrap your own distribution for embedded devices pretty quickly. The Yocto project has B annual release cycle, which means that we have two releases each year. And now there is a long term support release covering at least two year period. So if you are working on a long term project or on which the research and development will take more than six months, I highly recommend you to pick up long term support release of the Yocto project. Now let's talk about the strategies for updating embedded Linux devices. Basically there are three main strategies. A, B updates where we have dual redundant scheme, basically two identical partitions. We have delta updates. In this case, the update artifact is just a small chunk of binary data, which is the difference between the old and the new image. We have container based updates. In this approach, we're bringing containers which are a household name nowadays for cloud applications to embedded devices. And sometimes where there are more sophisticated use cases, you may need to combine several of these strategies together. Now let's have a closer look and discuss the details of each of these strategies starting with the A, B updates. So we have dual A, B identical root file system partitions. There is also data partition for storing any persistent data which is left unchanged during the update process. Typically a client application runs on the embedded device and periodically connects to a server to check if there is an update. So if a new software update is available, the client application should download it and install it on the other partition and after that switch to it by rebooting the system. There is a fallback in case of update failure because we always have another partition that is known to work, a good partition that we can switch to. The next strategy is the so-called delta updates. In this approach, only the binary delta between the difference of the new and the old image is sent to the embedded device. Basically it works in a git-like model for file system trees. This way we save storage space and furthermore we save connection, bandwidth, because the delta updates are significantly smaller compared to the artifacts needed to be downloaded and installed with the previous strategy, the A, B updates. It's also possible to roll back the system to a previous state. Now let's compare the A, B updates with the delta updates in general in terms of strategy. We're not speaking here about a specific implementation of these strategies. We are speaking in general because there are certain rules that are applied no matter how you implement this strategy. So A, B updates obviously require a larger storage space because we have two identical partitions for the root FS. For the delta updates, the storage space is significantly smaller. The same is valid for the update size. For the delta updates, the update artifact is small because it's a binary diff of the changes between the new and the old image. And for the A, B update, the update artifact is actually something that we're going to install on the other partition. Both the A, B updates and the delta updates support rollback to a previous stage. However, the advantage of the A, B updates is that it is possible to do a fallback to a backup image on the separate partition. This is a huge advantage in terms of reliability because all the time we have a separate partition on which we can boot known to be working image. Now another strategy is using containers. The container technology has changed the way application developers interact with the cloud and some of the good practices are nowadays applied to the development workflow for embedded Linux devices and Internet of Things. Containers make applications faster to deploy, easier to update and more secure through isolation. And in terms of the Yocto project and Open Embedded, layer meta virtualization provides support for building SAM, KVM, LibVerti, Docker and associated packages necessary to construct your own open embedded based virtualized operating system. So there are particular solutions for software over the air updates that are entirely focused on containers such as Belenna, but it's also possible to combine containers with some A, B updates or delta updates. And in the ecosystem of Yocto project and Open Embedded, this can be done with layer meta virtualization. And speaking about combined strategy, this is something kind of a hot topic nowadays, because multiple combinations exist for more complicated use cases. For example, we can have A, B updates with delta updates. This way all the time we have a second partition that is known to work and we can switch to it. Another example for a combination is to combine containers with let's say A, B updates for the base custom embedded Linux distribution. The advantage of this approach is that we can have a really small embedded Linux distribution capable of running containers and all the apps can be running in the containers. This is an interesting approach which sometimes is preferred by application developers because this means that application developers can isolate their apps in containers do all the QA there and ensure that the applications are working exactly the way they want them to work. Now let's have a look at the popular open source solution for updates. So far we've covered all the things that we need to consider. We covered the strategies for software over the year updates and here are actually the open source solutions to do updates. We're starting with solutions for A, B updates such as ROG, SW update, Mender, SW UPD actually Mender is capable of doing some advanced features such as delta updates as well but the main open source feature is A, B updates. We have solutions based on containers such as Balena and Snap and on the second column we have solutions based primarily on libOS tree also known as OS tree which implement delta updates. In order to do it, libOS tree is not enough because we need a second application that acts as a client to check with the server to see if there is an update pending to be installed. Therefore we have applications such as actualizer, actualizer, light. Qt OTA is based on libOS tree as well. Toradex Toryzen is also based on libOS tree. We have a full meta update as well and RPM OS tree which is used in project Atomic also based in libOS tree. Now let's start with a deep dive into three of these technologies which I have personal experience with. Mender is available as a free and open source or paid commercial for enterprise plans. Basically, Mender is doing A, B updates scheme for open source and all plans as well as delta updates for professional and enterprise plans. Mender also provides back-end services. This is the so-called hosted Mender. Basically, Mender is end-to-end update where you have a solution for the embedded device as well as a solution for the back-end, for the server where you can see all the devices and you can manage the devices. Furthermore, Mender has some interesting add-ons. Mender is written in Go, Python and JavaScript depending on which component of the system we're talking about. There is a yokto and open embedded integration through the layer meta-Mender and extra BSP layers known as meta-Mender community. The source code of Mender is available in GitHub under Apache 2.0 license. Now let's have a look at the supported devices by Mender. They cover Raspberry Pi, Beaglebone, Intel X86, 64 machines, Rockchip, O-Winner, NXP, which both includes IMX6 and IMX8, and many more which are the full list that's available in meta-Mender community layer. So here is actually a screenshot where you can see a lot of the machines that are supported. Also, there is support for Tegra devices and video Tegra devices. Now, the second thing that we would like to focus on is RAUK. RAUK is a lightweight update client that runs on an embedded Linux device and reliably controls the procedure of updating the device with a new firmware version. It supports multiple update scenarios and also provides tools for the build system to create, inspect and modify the update bundles. It uses cryptography to sign the update bundles and it's updated and it's compatible with the Yocto project, PDX, Dix and build routes. So basically, it's compatible with these three build systems. The source code is again available in GitHub. Here are the licenses. These are the RAUK integration steps. I have done previously talks dedicated in Talion RAUK where I explain in more details these integration steps. But basically we need to select the bootloader to enable SquashFS. The root file system must be X4 and we have to create identical partition for the root FS that matches the RAUK slots to configure the bootloader, some other configurations. So here is an example where we have A and B partition, actually three examples, three different examples. In all of them we have A and B partitions. The difference is how we handle the data partition. The data partition is the information that is persistent during the update. There are three different configurations that we can make with RAUK for the data partition. This is one of the advantages compared to other solutions, pretty flexible in terms of the data partition. In 2020 I started a Yachtel layer called meta RAUK community. Basically this is a layer that provides examples how to integrate RAUK on several machines. At the moment it supports x8664, Quemo, Raspberry Pi through meta Raspberry Pi layer. These are the all-winner devices through Metasunksy and videoJetson TX2 through the Metategra BSP layer. Contributions are always welcome so if you have experience with RAUK running on another hardware device and you would like to contribute to Meta RAUK community, please do it. So here is an example of how you can integrate RAUK with Yachtel and OpenEmbedded with Meta Raspberry Pi for Raspberry Pi. This is based on the long-term support release of the Yachtel project called DUNFO. These are the configurations that have to be set in local.com. After that we need to build the system. Once it's built here is how it works. I'm just starting a simple web server on the build machine and in this scenario I suppose that the build machine and the Raspberry Pi 4 are in the same local network. After that on the Raspberry Pi 4 I have to log in and to download the RAUK artifact and after downloading it I need to install it. In order for the new version to take effect I need to do a reboot and on a reboot the bootloader switches to the second partition on which I have downloaded and installed the RAUK binary. As you can see all these steps here in this example are done manually and it is possible to do them automatically using configuration and management system for example for Eclipse Hoke Bit. This is a domain independent backend framework for rolling out software updates to constrained edge devices as well as more powerful controllers and gateways connected to IP-based network infrastructure. It's written in Java, it's available in GitHub under EPL-10 license and it's compatible with RAUK SW update. So unlike Mender where we have an end-to-end solution that includes both the web interface for managing the updates in the case of RAUK and SW update we don't have this but with a third party tool such as Eclipse Hoke Bit we can have the same result for AB updates. So in terms of speaking about switching back to Mender you can see that the standard installation in the standalone version is pretty much the same approach as the approach we did with RAUK. Again I'm building an image, I have to disable the system disservice that automatically starts the Mender client and then to run an HTTP server on the build machine and on the embedded device in which we have Mender to install it manually. This is the standalone version however it's highly recommended to use the manage the default approach where a client is running all the time as a demon and push from the server updates and once again I repeat that Mender also provides a server so that you can manage the devices on which you're performing updates. Now the Mender data partition, Mender creates a data partition to store persistent data which is preserved during the update, it supports X4, BitterFS and recently I added support for F2FS file systems. The Mender client actually uses the data partition to preserve data that is using information about the updates. There is a variable called Mender data part size mb for Yocto and open embedded builds which configures the size of the data partition by default it's 128 megabytes but if system D is enabled, Mender GrowFS data service will be responsible to with the feature Mender GrowFS data, the system D GrowFS service will be responsible to resize to the whole available space. It's also possible to implement a neutral MFS disc to to modify the data partition size. Also another thing that's possible with Mender is to create an image for the data partition in advance when we are using BitBake. This is particularly convenient if we need to put certain files in the data partition on first boot with the installation. Here are the steps how to install Mender. In terms of AB updates they're pretty much similar in general as with ROG. We have to apply the update, reboot the device on the first boot after a successful update through the Mender client. A commit must be performed to accept the update by accepting this and by committing this update the user accepts that everything works fine and on the next boot the same image will be used otherwise if commit is not performed the system will roll back on the next reboot and use the old partition before applying the update. So the changes won't be available. Furthermore there are some advanced features for Mender which are worth mentioning. Mender single file artifact this means that you can deploy a single file and this is a solution if you are using mobile data because a single file can be really small for example just if you're missing just some kind of a configuration or you need to make a modification of configuration. Here is the Mender single file artifact option. There are add-ons in Mender which makes things really interesting and more convenient for the bugging and development and QA. The features are remote terminal which is an interactive shell session with full terminal emulation file transfer this means that you can upload and download files to and from an embedded device port forwarding and also a module for an add-on module for configuring apply configurations to your device through uniform interface. Mender supports x8664 devices this was added through Grubb four years ago and initial installation of the distribution is most commonly done using a live image on a USB stick so basically the first time when you install the device you use a USB stick and after that you can perform updates over the air. One of the interesting features in Mender is the delta updates so at the beginning of the slides I told you that Mender is known as a solution for AB updates that's totally true and the open source version of Mender does AB updates but also Mender offers a robust delta update root FS as a module for the commercial Mender plan this is a cross-source implementation even with the delta update reboot is required it supports rollback Mender provides a tool called Mender Binary Delta to create the binary diff by comparing two different Mender artifacts. A mandatory requirement to use this delta feature with Mender is to implement a read-only root FS and how you can do this with Yocto and Open Embedded well in theory it's pretty easy because it's just a single line either in the image recipe or in local.conf you have to add the feature read-only root FS. Yocto and Open Embedded will take care for the rest but be aware that you should make sure that all your applications can run in a read-only mode and if there is something that you need to write through these applications that should stay persistent through updates and reboots you should configure the applications to write it to the data partition. We can combine AB updates with containers through Yocto and Open Embedded layer meta virtualization it provides support for building popular container solutions virtualization has to be added to the distro features through beatbag using distro features append by the way this is the new syntax in the previous examples which were based on release done for the Yocto project always using the old syntax for example adding Docker to embedded Linux distribution is pretty easy because all you need to do once you have the distro feature meta virtualization is in place is to add image install and append and there are use cases on powerful embedded devices where containers that combine with AB updates of the base Linux distribution built with Yocto and Open Embedded for example with Krauk or Mender. Now let's talk about something else about open-source solutions for Delta updates starting with libOS tree libOS tree previously known as OS tree is a shared library and tools for this distributing and deploying file system images as atomic upgrades for the whole file system tree it provides a suite of commonline tools that combine a git-like model for committing and downloading bootable file system trees along with a layer for deploying them and managing the bootloader configuration libOS tree also known as previously as OS tree is very effective in terms of disk space and connection bandwidth it supports rollback of the system to a previous state and it is the core of several solutions for embedded embedded Linux distributions such as Toradex horizon actualizer which was implemented in Yocto and Open Embedded a layer meta updater and actualizer line also cute cute over over the air in order to implement libOS tree it's not very trivial i have done that in in the past libOS tree encourages systems to implement the user move it comes with an optional drug cut and system d integration documentation explains how to do this libOS tree only preserves the var directory across upgrades and var is empty by default and the operating system needs to dynamically create the target of these at boot for example with system d temp files if system d is being used for the particular embedded Linux distribution of course now i would like to mention actualizer and actualizer light as part of my job at consulco group our company was under a contract with ATS advanced alimatic systems and for several years we were involved and i personally was involved in the development of actualizer this is a c++ application that implements the client sign functionality for OTA connect according to the obtained security framework there was there is a Yocto and Open Embedded layer called meta updater which provides all the actualizer and all related dependencies for it also there is a lib actualizer which is a library providing ap cost to perform various steps that are necessary for checking updates validating the downloads files and so on all this is available in github actualizer was initially developed by ATS advanced alimatic systems later on they were acquired by here and unfortunately at some moment the active development of actualizer and meta updater stopped however the community and other companies and individuals interested in data updates stepped in and there are a lot of other solutions and modifications such as actualizer light this is something developed by foundress io and it is a c++ implementation of two OTA update client based on actualizer but without the complexity of obtain and the Yocto and Open Embedded integration for these solutions are available with meta updater for actualizer and meta LMP which brings the necessary changes for actualizer light so let's wrap this wrap up this presentation with some conclusions as you have seen there are numerous things to consider when implementing an upgrade mechanism for an embedded linux device you have to carefully think over all the questions that we started with and to see your device and your if your device in your use case fit into them based on on this you can select from the many reliable open source software solutions to upgrade embedded linux devices basically i have shown you that there are three main strategies and a fourth strategy is to combine them so based on your use cases you have to first to select the strategy then to select a reliable open source solution there is no universal answer so if someone expects me to say use this or that it all depends on your on your use case of course there are certain solutions that are more like turnkey solutions for example Mender because it's it provides a full end-to-end update solution however still you may need to combine it with something and an example for this is to combine an update strategy such as a b upgrades of the base distribution with containers for the application for the applications this is increasingly popular nowadays because of the increasing popularity of containers in general the update process implements implementation depends on the build system and the bootloader basically the board support package often real-world solution required a persistent data partition which is left unchanged during the update process because basically you need to save some configurations over updates some configurations that make this particular device unique so thank you very much i hope you've enjoyed this talk here are some useful links and i would like to hear your questions thank you very much again