Alright, we are live and hopefully this will be working very well. You might hear some poorly emulated sound in the background, as opposed to last time when I couldn't actually play the sound at the same time as the stream.  So I kind of want to go through these really tiny little simple maps, many of which, if you spend a little bit of time thinking about them, or even playing them trial and error, are 100% one-sided, assuming both players are pretty smart and equal. So we're going to use the most basic, tiny map here, just the two player plug mountain. And I'm going to play it as orange to show you how to win as orange, that I'm going to play it as blue to show you how to play it as blue, and then I'm going to play it against myself to show you how to do the game theory side of this. So it's a tiny little map and the CO power stuff really doesn't factor in too much in these. It's also not that interesting. So I'm actually going to turn the COs off here. So I'm orange. Fogga war off clear. Nice. Normal. I'll even make the AI normal. All right. So obviously this is just a pure economy map. I just have to control both of these cities. Whoever controls two of these cities for long enough wins. Orange has the advantage just because orange goes first. So in this case, I could, we'll see, because of this thing here, the bike's actually not the best idea. I'm just going to spam mechs. Watch this, just mech mech mech. Now look, if I start taking the city, he could attack my guy instead of taking his own city. So what I'm going to do is start taking the city anyway. I have this guy coming up and even though I could build a recon, nope, another mech. Sure enough, he did the smart thing. Now watch this. Capture. Join. So my guy's still strong. I just got to guarantee that I take the city. Now we're cooking. So now I've got a little bit more money and I could just keep spamming mechs, which actually still isn't the worst strategy, but he's going to start capturing this. I'd rather not get that city. So now I'm actually going to build a recon. Let's bring this guy over here. Get ready to kind of rush in. I'm actually not going to take the city, most likely. Depends on what he does. What am I going to build? Oh, another mech. Oh, it's a mech turn. So see how, despite his massive attack here, because I kept joining the units, I was able to get this city. Now he's going to get that city too because I didn't play it super optimally, which is probably fine because now, see where this tank is? Let's just back up a little bit and just wait. See what he does? See that tank is pretty weak against these guys. So now the tank went up there. I can send this guy down here. Send this guy up here. Pull this guy back. No, I don't want to pull him back actually. But I do want to do. Build an artillery. I will lose this guy, but that's fine. So see how he moved his troops in such a way they didn't actually take that city from me.  I won't destroy it, but I'll do enough damage to it. That thing can't actually hit me.  Just hang this guy up here. I could have done that differently, but I choose to do it this way. So now he's defending that. I'm actually just going to back up here. Out of range. And wait. Oh, he attacked my artillery, which is good. This is covering my city, so I can't heal there just yet. I'm going to leave this guy to keep healing. One infantry for some mobility, because now I've got the unit advantage. He lost an expensive unit. I have not lost expensive units. So let's just get this guy right up in to threaten his artillery. Let's get this guy here. That way, when he brings this guy to try to take my city, I can just artillery it.  So instead, I'm going to come all the way over here and just menace. And if he sends this guy down to attack it, that's fine, because that frees this area up. Get in this guy in position to take the city and mech spam. Now look at that. Let's get this guy right there. I like this guy up a little bit. So this thing is pretty much indefensible. I'm actually going to recon. Nice. So he's got another tank raiding in the wings already, which is kind of bad newsbears for me.  So this guy's going to move in there. Let's just keep meching. See, I don't want to just attack right away here, because if I do, I can't build another unit. I have to be able to build a unit every time. But now the tank's gone. Let's force him to attack my little guys. Hang out right there. Hang out right there. Hang out right there. And now his tank is in range of another tank. So you can see how these tiny maps actually can take a while because they're so tiny and they're so symmetrical and there's not a lot to actually fight over on them. So it comes down to unit and puzzle economy. What's going on here? This guy, I don't want to actually attack this guy with the recon because then this guy could actually still get me there. This is trying to heal, which is good. So what I might as well do is weaken his recon and continue to make mechs. Let's let him come to us because we have all mechs and we have multiple, albeit weak, normal units. He doesn't have so much. All right, so that artillery is interesting because he's got two units that can actually attack us over here effectively.  I'll use this to weaken that guy. And otherwise, you know, I still stay out of range of both these guys. Sure, he can hit here, right? So I have to attack this guy here. That way this has to choose between one of my two relatively cheap units. Meanwhile, let's get another recon to slide around the edge. So what's this guy going to do? Let's just wait him out. I have that guy hang out there. So this guy, rather than moving up, is going to move across. And now let's see. So I don't have a lot of money, partly because of repair costs. So I'm going to build just one infantry, a little bit more mobility. All right, so what's he going to do? He's got $5,300. He's going to get four more. So he's probably going to build a tank on his turn. So let's just heal up. Now he's only got two units that can actually attack me here. So this might be an opportunity. I could go for the city. If I try to go for the city right here, what would happen? So I can move one guy in and do it for nine. This guy will attack me. This guy will attack me. And that guy will attack me because there are three open fronts. So the way to prevent that, I could move this guy here, but then this guy could take him out. So I can't actually defend this if I go after it. So I'm better off letting him build the tank, healing my units, and preparing for the next turn on a counter strike. And actually at this point, because he's going to build a tank, I should build an artillery instead of the tank that I had planned on. He did not build a tank. Interesting. So now that artillery is in a pretty good spot for him. And if I move my artillery here or here, then the mech or the infantry will attack it. So I'm not going to move it yet, but I'm going to move in here. Now if I move in there, see again that artillery there. So I only want to move in if I'm going to move in with enough troops committed to where he can't make effective use of that artillery. I have to do something like this. See how I've presented him with so many targets? He has three targets to choose from, and he doesn't have any strong units other than that artillery to capitalize. So for good measure, I'm going to menace him in multiple directions. So one of these guys is going to survive. I built an infantry there so I can save up some money. See, he sacrificed it. I'll sacrifice this guy. I'm not going to start capturing yet, for the same reason we've talked about before. You can see this thing can't really attack much.  So I want this to be hanging out here ready to capitalize on that.  I'm tired of dicking around. There we go. So now I can start capturing this. He cannot stop me. So there's a lot of ways I could go here, but what I want to do actually is damage him sufficiently to where he's not a threat. And you see how suddenly the tide gets turned. It looked like it was such a stalemate, but because I was slowly winning out on the unit economy game, suddenly I have the advantage and I have the city, and it's over. He will never take that city back. There's no way. And I can do a bunch of free damage here to that tank. Might as well hurt that infantry. Might as well just rush this guy over here because what's that tank going to do? Nothing. I'm covering my dudes just in case. Let's move a little bit closer and let's build another mech in case he sends the tank up for my base. It's not that it matters. All right, moving back forward. Finish off that tank and put that there to protect my artillery. So at this point, he is going to have $3,000. He can build a mech, basically. So I might as well build a bike. Start smoothing my guys over just to capture and win. But what's this? An anti-air because all he's going to build is mechs.  And yeah, it's over. So look at the breakdown. I pretty much built mechs and occasionally I built other units just for support along the way. He built mostly regular infantry, which are weak against vehicles. And because I built these vehicles here, see I built four recon, three tanks through artillery. Those mechs ended up being the deciding factor. I only built four more than him, but the fact that I kept building them meant that eventually I'd win the unit economy game. Now let's try this again. I'm going to play as the other side. I'm also going to play it a little more efficiently than I did the previous game. So look, already he's not doing what I did before. He built a regular infantry, which you can see can attack these spaces and can only move there. So we can't start capturing right away. So I can prevent his capture if I really want.  See he diverted, which was strange. Now that he's diverted and he can't capture the city, whatever. I'll just come back and heal. And at this point he'll build a tank next round. So there's no point in me building a recon. I'll just build another mech. Oh no, he didn't build a tank. I wonder if he would have built something different. So see if I could attack him from either spot, and there's actually an argument he had for both. So the city is slightly more defensible, so I'll take less damage when he attacks me. But if I come in here, then this guy is less likely to come around and attack because he can't and that guy will still be there and he's not likely to move him out of the way. What I am going to do instead is this. So now he has got 4,000, so he could build a tank. I think he will build a tank. So I'm going to build another mech. And if he doesn't build a tank because I built a mech, that is also fine. So he's spamming mechs, interesting. I might as well keep fighting for this exact situation. I'm going to keep building mechs because I don't want him to build a tank. So now I'm in a good spot because I can... See I'm not going to start capturing with this weak guy. I'm going to come in here and make sure that he's not going to capture. I'm going to start capturing with this strong guy who will get it in 2 and can't be stopped, bring this guy forward, and this guy is here. By moving him there, he can menace everything. And if this guy is weak, I can move him out of the way and have that guy come in to make sure he doesn't get the capture. So my goal is to win the economy game. Now at this point, he's still going to have plenty of money. So I'm going to keep making mechs. This guy is sacrificial. There's that tank. See where the tank can attack? Let's back up here and heal. So now the tank can attack a little further. It still doesn't matter. And my mech forward. I'd like to build an artillery now. So if I've got 5,500, so I'll have 9,500 next turn. I need at least 6,000. So I wonder if I even need an infantry right now. I'm going to build a single infantry for a little bit of mobility. And I'm otherwise just going to attrition these guys. Let the tank hang out. The tank's got to attack a guy. And he has his pick of any of these guys. And let's make him come out of the city. All right. I can probably take this city real soon because I'm just winning this attrition war. See the tank can't break through. He's going to have to retreat it. Now's the time to build a recon. So of course he retreated it.  That guy's weak. Let's bring this guy up here. I'm not going to try to take it yet. I'm actually going to back away. Because if he comes in there I'll artillery him. Regular infantry. I'm winning the econ game. So if I just turtle and wait and just play this defensive game, I will eventually just win. See now if I attack here, he can't actually get either one of those mechs in to get me. And now this guy's super weak. That mech's going to come in and try to take the city. I could start capturing now. I might as well let the mech come in first. I'll just otherwise get these guys close. So I'm still covering the city but now I'm protecting all my guys. Now he'd like to build another tank but he had to save up for it. See how he can't actually get that artillery? See how this game is over? That tank was his Hail Mary. Now he can't stop me from capturing the city. I've just got to hold out. So one of these guys can kill that guy and then the other one could get through. Or one of them can kill that guy and the other one can get through. So I actually want to hide this guy back here. Like that. It's over now. Pretty much just mopping people up. Now I just want to do damage, slow him down. Let's just save money and build something big and end it. Now wait another round. Now he has to, if he wants to kill that guy, stay in his base and thus not build another unit. He's only got one unit so I might as well just move in. And now I have to force him to not move it. He moved it anyway. All right. And that's it.  Again, they're just slogs and blue. It's hard to say why, you know, the AI loses because the AI can't really predict when and why it's going to do things sometimes. So now let's try something weird. Let's see who's a map that's a little more swingy. So I'm blue. Now how can I win this one? Again, obviously economy. I want to take his two cities as quick as possible. Now you'll notice that blue starts with one more. This is actually a more well balanced map. So I should build because I can only build one unit per turn, a bike and get right in there and take his city. And if he tries to stop me, I'll just attack him right back. And now because I got a pile of money, anti air, even though he might build a tank. He did not. Let's wait and just build a bike. See my slavish devotion to economy. All things are in service of economy. That way I can cover everything. And I got a bike backing everybody up. Ooh, a conundrum. Economy is more important. Might as well do some damage though. Again, make him have to choose. If he doesn't have that tank attack this guy, then that guy takes the city. Now that recon can't actually get me. Nope. I just forget the RMGs. Just build a mech there.  Just fine. And see, now it's over. I've got all the economy. I can just spam to victory. Just tank every round. Might as well use that guy because this guy's got more mobility. Might as well block. Not that it matters because the map's over. So it seems really easy. It seems like blue's just going to win this one. Let's play it again as orange. So I'm in the same boat here as before but I'm going to use my first mover advantage. I've got to go right in and capture his cities. See how I got that city and he didn't stop me. And now he's got no one in position to really stop me from getting that one. And the economy game's basically already over. Sure, he's got that medium tank. And my anti-air is basically useless against it. But it won't get to the front right away. And in that time, I can build an artillery that will easily be positioned to take it out. See that coverage there? Because I can just wait. I can take damage. It doesn't matter. I'm winning the economy game. I just have to hold out. Now it might as well hang out here because the bridges actually leave units vulnerable. So being on a bridge makes you take more damage. I like to build a rocket or something right now but it's a small map so I'm just going to tank it up instead. You can see I've got more economy. There's just nothing the guy can do. Now how does it seem so easy as both sides? Other than the fact that the AI is just really bad. See how I lure that guy in by going to the bridge?  You can't trick something into falling into an artillery range. They know exactly what you're thinking. They know what their options are. And what they decide has no basis myself here. I suspect Orange still wins. So let's see. So Orange right here, I'm going to do the same strategy I did against the AI. Build a bike. Now Blue here, I know he built the bike. And I know the bike can capture either of these two cities. So I have to get something in position to stop that. I'm going to send an early recon in. Now he knows that I built the recon. So if I were Orange, I would take that city. And now I have a little bit of money. I want to win as Orange. I'm going to build another bike. So now as Blue, my plan didn't work. I couldn't actually prevent him from taking that city. So instead, I'm just going to come in here and be ready to mess up his jam and build a bike. So Orange, of course, has to complete the city. So Orange is now winning. Blue is right there. And all I have is a bike. What I might as well do is keep him occupied, start capturing right next to him and build the tank, which will just take that thing out. So I know he built the tank. The tank can get me no matter what. So that's a problem. So I got to make him choose, take the city or stop me from taking that city. Now this guy can still come in and take my city here. So what I should do is build a unit to prevent that. He's got a tank, so I should probably build a tank because tank defeats tank. If I build an artillery here, sure it could stop that, but then the artillery can't move when it takes that action, takes that shot. So now the artillery is stuck here and I can't build a unit. I would build an anti-air, which would be way more effective, but I'd like to have an answer to that tank. So Orange now has the choice. Orange either has to take this guy out or to prevent this guy from getting the city. And notice how with blue I did something very clever. If I move my tank down here and attack this, then this tank will get a first strike on my tank and damage it sufficiently that it'll have to retreat. So what I'm going to do is not take this city, though if I take this city it puts him in a gamut against. I have two options as Orange. I can either start capturing the city, forcing him to divert one of these units, probably the tank, because I'll send my other unit, the tank, to kill this guy. So tank takes this guy out. This guy starts capturing. Then blue on his turn can stop me from capturing. Blue's actually in a pretty good position here, better than I expected when I really thought about it. What I should probably do is a much simpler gambit is take the conservative denial. So deny that city, weaken that guy, continue capturing, force him to come in and stop me. So now I'm blue. This guy's actually useless now. This capture will not complete unless I heavily defend it. And even then this guy, while he can't get there in time, this guy could divert but he won't. That guy is going to want to finish this off, though if I were Orange I would not finish this guy off. And this tank, oh look, the tank can't actually get there. So for blue, now is the time to build another bike to take advantage of this. And this guy should stay right here and just do a little more damage, slow that down. So now this guy's going to take two more turns to take the city. So now I'm Orange again. Orange would be foolish to attack this with the tank. And this guy, it's going to take two turns anyway. He won't be able to sufficiently disrupt the taking of the city. So what I'll do, the RNG, okay that worked, is something like that. Now I can prevent him from taking the city but I've sacrificed my tank. This tank is going to take a ton of damage. So to buffer against that, I'll have this guy on the city ready to go in here. And if this guy comes in, I'll be ready and waiting. And I'm going to build now that he only has one tank. I'm going to build that artillery. So now blue. Blue has to take the free shot. And blue has to prevent that city from being captured. And blue doesn't have any other good options. Again this guy's going to come in and take the city right away. So with blue I should build a mech because that mech can prevent this and then be an asset later. It's back to Orange. This guy's not a threat yet. Orange really would like this tank to survive. Orange is going to go onto the city and take that guy out. Look what I'm doing here. Look at this. So Orange now, I've put blue in a gambit. Blue will have to use this tank. If blue attacks this tank with any unit that can actually damage it, meaning the tank, then the tank's destroyed. It's forfeit. Meanwhile, this guy's going to heal back up. Yeah, I still think Orange has the advantage on this map. Just build another bike to come across the top and push the advantage now that I might have it. So blue's in the conundrum. I can take out that tank and sacrifice my tank in the process. I can move this guy closer, but if he goes down the bridge, he's in artillery range, which is no good. I'm actually going to go up here, build a tank to be able to come in. And otherwise, I'm actually going to retreat a little bit, force him to come after my guy as best I can do. Oh, Orange is winning. This is a field day for Orange. So first off, duh.  Now, you might think you want to move this artillery here and then cover it, but this guy can move here. It might still work. I got enough units to fully find. Nope, because I'm probably not going to want to fire the artillery at this guy. I'm going to fire one of the tanks that comes in. Let's be super conservative. So these guys can attack pretty much anything. Yeah, let's try this. Move the guy up here. Oh, see, I messed up. This guy can still attack him. That's what I get for not actually counting moves. Yep. So now blue, it's a free attack on the artillery, which he has to take. And then the other half, he has to stop the guy from taking that city. This guy has to move into menace that tank. Even with Orange making a mistake, blue is still in a really bad spot here. So as Orange, of course, keep taking that city. Just leave that guy for now. This guy's forfeit anyway, so I might as well weaken this guy. I can either join with this or attack that. I'm going to let that tank down there run amok. I'm actually going to do this. So now this guy is relatively safe. I'll join anyway and I'll build another bite. Ooh, still not looking great. Can't do much with this. The artillery will be a threat if I leave it there. So I probably shouldn't bother attacking the artillery. I should probably get rid of this guy. At least get rid of at least one of these tanks. I got to force him into some kind of gambit. Back to Orange. See that guy is still kind of a threat. It's over. Orange wins. Even making a mistake, Orange wins. I just want to keep my economy game going, let him attack whatever he wants because I make more stuff than him now. And because he can't attack the factory, so what I'm going to build on the factory, I'd love to build an anti-tank. I'm going to save up for an anti-tank. So look, I still am not capturing the city in time. This guy could have attacked the artillery if he built it, but he didn't build it. I can't move here because then the artillery will get me. I have to weaken this guy. And if I go here, the artillery will get me. I got to move up here first and get ready for some kind of counter assault, even though it's over for Blue. Oh, it's so strong for Orange right now. Look at this. I can just rush in. Now he's going to get that city, but I've got good units hanging around. Let's make him actually do it. Check this. So it's Blue. Coming back a little bit. Got a city. Attacking that anti-tank would be foolish. Attacking the mech up there would actually also be foolish because it's in the range of the anti-tank. So I've got to just hold and defend this area here. Press on his cities. Attack from the woodland. Can't build much. Don't have a lot of income right now yet. It's still over for Blue. Stay in the city for defense. He's got nothing really within range that's going to be a threat to me, except maybe a bike or two, and I'll take care of those with this. All right, Blue. That anti-tank is really ruining my day. You hide down here. You come out here. You hide down here. Just do some damage to that anti-tank. Yeah. Start capturing even though it's just a gambit and spam mechs forever. Yep, it continues to be over. Blue can't do anything. All Blue can do is try to delay the game as much as possible. Coming back a little bit. Yeah, Orange has got this. So look. Now I can pretty much just attack things with utter impunity. I can even afford to move this guy over and heal him. So what can Blue do? Not a lot. Blue can strike in and take out that artillery, but now this tank is forfeit. I can try to hold on that bridge. I can try to deny a tiny bit of economy. One more turn there. I saved myself a turn. I'm going to make him use his action if he wants. Orange is going to continue capturing. Oh no, I'm delayed a turn. See how that pitiful defense really couldn't hold up? Blue's got nothing now. Best I can do to hurt that guy. So I just rushed in there. I'm not letting Blue delay the game. So Blue can delay a little bit more, but I'm running out of delay options. I keep delaying the game. Yes. Again, tiny little maps. So now Orange is getting close to where I can force it. What a way to turn there. See? All I can do is take that out. Take that out. Build a map. Orange can now finally come in, take out that last niggling artillery. Oh, I didn't do enough damage to it. Might as well do some damage to the tank. Hide on HQ and devastate that tank from the river. And now I got a protected artillery. So you can see how effective delaying tactics can be. I mean, Blue cannot win this, but yet Blue can delay the game for a very long time if he wants. However, starting to run out here. Problem with building that artillery is that I can't build more units. So at this point, it's over. So yeah, like I said, even though the map looks really tight and you can delay for a long time, and it's not usually immediately obvious that the tide is turned in a tiny map like that. It's all down to real economy. And if the economies are tied, it's just unit economy. But in that map, two smart people, Orange is going to win.


All right, we're doing a multi-random here for 2021 flawless football it was case number six Case number six earlier. I Called out Vikings. I Must have just read the first part in his Vikings and Seahawks plus the Unis looks pretty similar That's my bad guys random here between Vikings Seahawks We'll go seven times whichever team is up top Is getting the card I'm a John Randall one two three four five Six and seven and it's going to the Seahawks Congrats Seahawks Again, we will get it right out to you


We receive a lot of instruction on writing over our lifetime, and most of it comes in a structured package like this, neatly laid out in an orderly process. The ugly truth about the writing process, however, is that it's usually a complete mess that looks more like this.  Welcome to the world of writing and revising. I'll be your guide. In this video we will discuss the fundamentals of effective writing and revising in organizational communication, including notes on writing style and making effective arguments. Effective writing begins with getting organized, which we can think of almost like a funnel. We start with the broadest goal in defining the general purpose. Refine that a bit more in the development of the specific purpose, and finally clearly lay out our intentions and ultimate goal in the central idea statement. Let's take a look at each of these steps. The general purpose statement very simply establishes the overall direction of your writing. It can usually be stated in two words. The first word is always two. The second word will depend on the goal of your writing. Some common general purpose statements include to inform, to persuade, and to entertain. The general purpose statement should align with the intended outcome of your communication. Once you've established your general purpose statement, you can continue to narrow the focus of your writing with the specific purpose statement. The specific purpose statement has three components. It begins by restating the general purpose. It then adds an identification of the intended audience and states the topic of the communication. For example, a specific purpose statement for this particular portion of this video might be to inform my audience about organization in communication. Again, the goal here is to narrow the focus of our writing by identifying our target audience and then clarifying the topic for discussion. The central idea statement will continue this focusing process by stating not only the topic of communication but the main ideas as well. An example of a central idea statement for this section of the video might be this document will share information on organizing your professional communication, including organization basics, writing style, and making an argument. As you can see, it restates the topic of organizing your professional communication, then goes on to identify the main points that will be addressed. Next, we need to select the organizational pattern that best allows us to achieve our goals. As you can see here, there are a variety of different organizational patterns from which you can choose. We won't go over each of them individually in this video, but a few of the more commonly utilized patterns include chronological order in which main points are organized in a time-based or sequential pattern, problem solution where the problems of an issue are identified and then followed by proposed solution to that issue, and topical, which is a sort of catch-all where main points are simply organized in a way that best makes sense. Once we've established the more generalized elements of our communication, we can focus on creating the main points. There are a few things to keep in mind when establishing main points. First, you should have between two and five main points. Any more than this and the audience can have trouble keeping track. You should also be careful about using the word and in any main point. This is typically a trick for trying to fit two different and distinct main points under the umbrella of one and can be confusing for the audience. Finally, keep the principles of primacy and recency in mind when organizing your main points. Audiences tend to remember best what they hear first and what they hear last, so your most important points should either come first or last in your communication. You should also be very intentional in utilizing effective transitions between your main points. I'm one of those weird people who can't stand having all their food touch on their plate, unlike for the flavors to be kept separate and distinct. If it were up to me, everyone would use one of these nifty plate dividers for every meal to ensure proper separation and preservation of each food's unique qualities. Even if you think that's weird for food, it is how we should think of our main ideas for effective communication. We use transitions to create separate and distinctive main ideas. Transitions may include things like signposts or using phrases like first, second, third, next or in conclusion to signal a pivot or change to a different main idea to the audience. Or we may employ a review preview strategy for especially complicated or detailed main ideas where we give the audience a brief preview of what they will be hearing and or review the elements of the main point before moving on to the next. Whatever strategy we choose, transitions are critical in establishing distinctive main points and aiding an audience in their navigation and understanding of the information. Finally, it is important that we devote adequate time and energy to outlining our communication in advance. Not only does this allow us to organize our ideas more effectively, but it's also beneficial in ensuring an appropriate balance between main ideas and making sure that supporting information is aligned effectively within those main ideas. When we actually begin the writing process, it's critical that we consider some of the elements of writing style. To start, we must recognize the difference between personal and professional writing. In the years before texting and social media became prevalent, writing existed almost exclusively in the professional realm. As such, virtually all writing was professional in tone. Now, however, we write extensively using a more personal tone when connecting with social contacts via text, email, social media, and other non-professional channels. We should be careful to distinguish between the two and keep a professional tone for professionally related communication. We also need to recognize the difference between writing and speaking. We generally don't use the same tone or even the same vocabulary in writing that we do when speaking. The two will not necessarily translate well directly from each other. Finally, we need to note the difference between formal and informal tone. While each of these may be appropriate in various contexts, it's incumbent upon the writer to identify which will best serve the purpose of each respective communication effort. Professional writing often involves making an effective argument. For this, we will rely largely on the modes of persuasion set forth by Aristotle, which you have likely come across previously. Aristotle's modes of persuasion includes three different elements, ethos, pathos, and logos. In short, ethos relates to credibility, which we frequently ascribe to the perceived character and competence of the writer or speaker. Pathos involves emotional appeals, or in other words, tugging at the heart strings. Alternatively, logos refers to logical appeals to claim involving the use of facts, statistics, or other hard data to persuade those in the audience. The basic elements of logic start with a claim or asking, what do you know? Added to this are evidence, or how did you know it? And reasoning, how does your evidence prove your claim? Put together these three elements hopefully add up to a logical assertion for the audience. It is important that a communicator avoid common logical fallacies, which essentially constitute illogical claims. Some of the more logic common logical fallacies are identified here, including slippery slope, ad hominem attacks, and bandwagon claims. Once you have an initial draft of your communication, you will want to go back through your writing in the revision process. There are several things that you'll want to look for as you review your document. First, be sure that you have patched holes in your arguments by addressing any potential counter arguments that may come from the audience. If these things have not been sufficiently addressed in the initial draft, then you should add them during the revision process. Next bear in mind that persuasion is incremental. It's very rare for a communicator to swing an audience member from totally opposed to totally in favor, or vice versa. These things happen in stages. And if you can move an audience, even one or two steps towards your desired outcome, then that should be seen as a, as a success. You should also be sure that you've targeted the needs of your audience. Remember that the quality of your argument is really less significant than whether or not it reaches the audience in a meaningful way. As such, be sure to keep their needs in mind when crafting your arguments. Also be sure that you are appealing to shared values with your audience members. People tend to be persuaded more by those that they believe share their values and are speaking to them from a perspective of empathy. Overall, the revising process should include efforts to evaluate the content of your communication, the effective organization of the main points and ideas, the style and tone of the writing and the readability of the document from the perspective of the audience. Effective writing and revising takes time and can be an incredibly tedious process. In the end, though, whether or not your writing leads to the desired result may very well depend on these exact things. And I would suggest that this is time and energy well spent.


Item █ SCP-358 Object Class, Euclid Special Containment Procedures Due to the mental side effects of SCP-358, SCP-358 is to be kept locked at all times except during testing, and all windows are to remain boarded, with regular guard patrols to ensure that no authorized entry occurs. The entirety of the building should be sealed airtight, and any leaks reported immediately along with any signs of forced entry. Anyone found inside the building with reasons other than testing should be evacuated immediately and held for questioning and observation. Description SCP-358 is an abandoned trauma center located on the outskirts of ████████ England. The grounds surrounding the buildings are overgrown with vegetation native to the area and characteristic of extreme neglect. The building's exterior is weathered but otherwise intact, with windows and entrances boarded up to prevent trespassing and vandalism. Air inside is arid, measured on average at 45°C, with hot or dry gusts of air that blows through the hallways from no discernable source. Exploration and monitoring has revealed anomalous activity characteristic of typical Type-3 pseudo-spiritual manifestation, or haunting, raging from glowing spheres to full-bodied apparitions, all of which appear exhausted and on occasion ask for water. Typical apparitions appear to be individuals who have been exposed to SCP-358 beyond the average 47-minute psychological recovery point in the past. The majority of these subjects reside in Foundation Psychological Observational Facilities, and security footage shows them present in their respective units during the appearance of their apparitions within SCP-358. In the majority of cases ████ per cent, individuals within SCP-358 experience a sense of disorientation upon entering the building, which slowly diminishes over time spent within SCP-358. Additionally, they report a growing sense of thirst, which begins to coincide with physical symptoms suggested of extreme dehydration and heat exhaustion. These symptoms are not alleviated by hydration, even using the direct intravenous drip. As exposure time increases, the exposed individual will show a slowly increasing degree of mental degradation, typical of heat stroke, which leads to an exponentially increasing degree of dissociative disorder. On average, no affected individual remaining within SCP-358 is considered psychologically recoverable beyond 47 minutes of exposure. The remaining ██ per cent of subjects exposed to SCP-358 are unaffected, but are to be kept under observation to monitor for possible later development of effects. On rare occasions, affected subjects within SCP-358 expire suddenly of apparent poisoning. Autopsy in these cases always reveals the venom of one or more common North American desert-dwelling predators in the bloodstream, usually that of Crotalox atrox, the western diamond-backed rattlesnake. SCP-358 was discovered by the SCP Foundation on ████, 1983, when two males aged 20 and 22 were apprehended for trespassing after being found wandering at premises unaware of their surroundings by local law enforcement. Medical examination revealed only physical side effects similar to exposure to a desert setting. The psychological evaluations of each person revealed a loss in mental capacity regarding self-identification on location. A follow-up of a CT scan revealed nothing out of the ordinary. The police and medical reports were collected by SCP Foundation personnel, which led to the current testing of SCP-358. Addendum 358-01 Testing Supervisor's Log ██████ Testing time duration, 30 minutes. Test subject is female ██, years of age ██, with an athletic build. Upon entry, test subject observes that the climate is hot and dry. After exiting the building, the test subject appeared dazed and was observed to be suffering from slight dehydration. This subject also brought attention to the sand in her shoes. The sand was then collected for further testing purposes. Addendum 358-02 Testing Supervisor's Log ████, 19 ██, testing time duration, 1 hour. Test subject is male ██, years of age ██, slightly overweight. Test subject entered the building as in the previous test, remarking on the arid climate inside. Another exploration revealed a layout not unlike that of any other hospital from the region and period. Upon exiting SCP-358, test subject began questioning who and where they were. Medical testing revealed the subject was suffering from dehydration, and they were provided water to replenish lost fluids. Sand was recovered from the test subject's shoes. Test subject recovered fully in all areas except their mental state and remains a psychological observation facility A. Addendum 358-03 Testing Supervisor's Log ████, 19 ██, testing time duration, 2 hours. Test subject is male ██, years of age ██, of a wiry stature. As in other testing, test subject began by observing a dry and hot climate on entering the building. Test subject orders were to examine the rooms of SCP-358. One hour in the testing, subject began complaining of dehydration and appeared slightly confused. After a duration of 2 hours within SCP-358, communication from the test subject stopped, and D-Class personnel were sent in to retrieve subject. The D-Class located the subject in a room near the entrance, unconscious and recovered. Test subject regained consciousness soon after administration of an IV drip. Upon waking, subject was observed to be in a persistent vegetative state, unable to function, and was subsequently admitted to psychological observation facility A. The test revealed trace amounts of a highly poisonous rattlesnake venom found in bite victims of the deserts of Southern California. As noted in Addendum 358-01 and 358-02, subject's shoes were filled with sand. Addendum 358-04 On ██, security patrols captured video footage of a humanoid apparition in the North Hall of SCP-358 begging for water. Comparison of video footage confirms that the apparition appears to exhibit mannerisms and apparitions identical to Test Subject C, whose test results are noted in Addendum 358-03. Subject C remains unresponsive in Psychological Observation Facility A, and demonstrated no change of behavior during the event.


It's DDK, and I'm back today. Huge shout out to everybody tuning in. If you wanna subscribe, make sure you smash the subscribe. And if you are subscribed, make sure you give me a thumbs up. Today is November 30th, which means the last day of November. And today, I'm gonna give you guys how much we spent on gas. So you guys wanna make sure you stay tuned to the full video. We're actually about to go get some gas right now and jump off this order. So, let's get to it. Let me know how much I think the gas gonna be. At 87. How long did you work correct? 24, 23. We're gonna take this subway. And we have to go this way anyway so we're gonna go over to take it. I have a door that's for Jonathan D. It's also supposed to have... Yeah, do do do is not true. Yeah, three doors. Do you want the other one? All right, thank you. One more day photo, one more day photo. 1.2 miles for 475. Things have been kind of weird today. I'm gonna let you guys know what happened. I have a door that's bigger for Norman J. Let's know when it's ready, okay? All right. All right, ready to know it all. Doorbell, we gone. 0.7 miles for 825. They're live. Hello, I have a door that's bigger for Rachel. Thank you, you have a great day. I have a door that's for Rachel. For Rachel? Yes. All right, thank you, you have a great day. Panera Bay, 1.8 miles for 575. Let's get to it. Okay, we're here. We're here, dear. Take that photo, y'all already know it all. Look at this. Hello, I have a door that's for Megan. Here you go. Thank you. What do you guys do here? Oh, really? That's nice. You have a good one. 6.8 miles for 10 dollars for Panera Bay. Let's do it. Let's see here. I have Ritza Sea. Anna, there's got another one right now. I hope this thing's up. Oh my God, let's keep it down. Okay. One is Ritza Sea and the other one is this one here. It just came in, so. This one is right there. And then this is the Ritza Sea, but it goes with those strawberry bananas. Okay. All right, thank you. Thank you. Look at that. Yeah, able to get busy. I think we're at the door. This way here. I like this entrance. It's nice to see it too. Now we need that photo. You all already know, though. Here we go. Thank you so much. All right, thank you. You have a great day. 3.9 miles for 5.25. It's not really 3.5, 3.9 miles because we still have to get there, which is down the street from here. So it's a decent one. I'm gonna have a door that's for James H. James H? Yeah. Oh, James, I got some. I appreciate it. What is this? This is heel sticks. That's a good one. Excuse me, I have a door that's for Dominique G. All right, thank you. You have a good one. It's order, it was like 2.5 miles for 5.25. So we're gonna take that. It was at this moment that he knew.  I have a door that's for Marissa C. You have a good day. All right, you too. Door that's for Marissa. Yeah. Here you go. Thank you. You're welcome. You have a good one. They ordered 5.2 miles for $10. I'm kind of skeptical. What I'm gonna take it, we need that money. If they put a door, damn, got that right there. Right there, now they want the photo. Y'all already know though, hit that. Now where are we going? Mike, it's 1.5 miles for 6.75. We really need this because it's been pretty cool. Oh, it's in here already? Oh yeah, right here, it's nice and cold. Oh, okay. All right, thank you.  They did say leave it by the door there. Come on, man, what's that? What are you doing here for? No, no, I didn't want the photo. Y'all already know though. We had disaster. We had Buffalo Wild Wings 5.25 for like one, I think it was two miles, something like that. I can't remember, but no, it was 2.5 miles. So, but we still have to get there. So that's the automatic. Look, see, we had a Buffalo Wild Wings, right? 2.2 miles for 5.75. They trying to add another Buffalo Wild Wings. 9.2 miles for 7.50. Absolutely not. They be trying to sneak and do that. Y'all got to watch them, watch DoorDash, man, they be trying to finesse. Okay. Bed, bathroom, beyond 5 miles for 9.25. Let's do it. Hello, how you doing? How good are you? I have a DoorDash pickup for Patrick. I'm living the dream. I woke up, the rest is up to me. You what now? I said, I'm living the dream. I woke up, the rest is up to me. Patrick McWard. All right, just the one, let's see here. No, I never know, see the problem with these computers? It's not even under my board, it's under Patrick. I don't know why it's under Patrick's name. And then you know how many Patrick's they could be? It is a Dyson stick, so that is the right item. Confirm, and this is your item right there, and you are all set. Thank you very much, man. We have a wonderful day. You're welcome, you have a great afternoon. So it's around two o'clock and we did hit our goal. But those of you who don't know, that means you ain't subscribed, that's what that means. If you aren't subscribed, make sure you stop the video right now and smash that race subscribe button.  Our goal is to hit $100 by two o'clock every day. Today we did do it, we actually got 105, 75. But I must say I was a little skeptical, I was a little nervous because it was going very slow. From 8.30 to about 11.45, which I only got four orders. So that's it. And some of them weren't good. I only took two out of those four. My partner, she was getting some orders, but it was a lot of warmer order than it was terrible. I'm talking about like five, 25, four, 10 miles and stuff like that. It was pretty bad. But we did hit our goal. It's not about how you start, it's about how you finish it. Don't never give up or don't quit. But I'ma turn this camera back on when we hit about 4.30, five o'clock on my co-edited video right now. So make sure you stay tuned, let's go. So unfortunately, guys, I've been having a terrible last four hours. We stopped DoorDash, we got, just, I was going to tell you in the video, it's probably about two something, right? I get in there, I'm trying to edit the video. And the film more, film more is the program I used to edit the videos. It kept continually crashed over and over and over and over and over. I'd be in the middle of editing the video and then it crashed and just go out. Then the sound don't work. Then this happened and it's lagging and it was a whole bunch of BS. So for the last four hours, that's what I've been doing. I didn't even get to edit the video for you guys for tomorrow. We did try to update it to another one to see what happens, but hopefully everything works out. But I need you guys to stop the video right now and give me a thumbs up just because of that. It's been critical. It's been critical. And we're behind now because it's six o'clock and we usually come out about 4.35. So we're an hour behind. Hopefully we can make it up and hopefully we can still hit like 200 at least. Hopefully we'll see what happens. But you guys want to make sure you stay tuned and make sure you smash that subscribe button. If you are subscribed, make sure you give me a thumbs up. Back to the video. 10.4 miles for 1750. Let's get it. Hopefully the GoPro working right now because it's been acting up a little bit. I just got this thing, it's beyond me, y'all. Beyond me. Boom. Got him right. Oh, you need to drop this stuff. Look. Put it right there, wham, wham. Take a picture of him. Take a picture. Take a picture. That's the Jackie picture. Let me take it again. Here we go. One more thing, if they ring, buddy. Here we go. Guess who tried to get us to come there? Walmart and Round Lake. You, my friend, are still on the black list. Declined. We're going to take this two miles of 4.75. We need it. This is actually our first RVs door there. Let's see how it goes. First time. First time for everything. See if it's good or bad. I don't know, I don't know. I'd like to get in this one right now. Hello, I have a door X for Alex L. Alrighty, thank you very much. Another good evening. This is super duper sweet. This is literally across the street. I can see RVs from right here. See, leave on the doorstep. I mean, here, doorstep, boom. Let me put it like right here. So when they open the door, they'll fall off. And boom, get this photo. Y'all already know, though. Let me get this photo. Here we got that photo. Lock on that door. Here we go. Wham speed, we got it to pull late. Now, normally we would not take this. It's going to be five miles for $6,025. The only reason why we're taking this is because it's going to take us back to where we need to be. So sometimes you have to do some stuff you don't want to do to get where you need to go. I'll put this order, baby. Got a nice little setup for this, different. I don't know. Door that for Courtney E. Okay, they're working on it in the back. All right. Let's get it. Put your boat, mate, for home. Right here. Wham. Put that to me. Oh, right there, boy. Got us one. Made down to 1.9 miles for 534. Let's do it. Door that's number 492. Door that? It's all right. You see it? Want a photo? You see it over in the door, but so we gone. So unfortunately, we did not reach our goal. Boom. I tried to push for 200. It was a little hard. I kind of knew, you know, it was a long shot. We did reach 159.84, which was not our goal, but I mean, it's always tomorrow. No matter what, we can't stop grinding. You gotta grind, grind until you shine. But I want to give you guys what you all have been waiting for, how much we spent on gas in the month of November. And the total is, no roll please, $1,227.88. Now you guys want to make sure you stay tuned because at the end of December, we're going to drop how much we spent on gas now that we have snow white. We'll give you a little idea of what, you know, what kind of, what the difference between using a bigger vehicle versus a smaller vehicle and what vehicles you should try to use on DoorDash. I hope you guys enjoyed the video. We'll be back here again tomorrow and this time tomorrow, we're going to reach that goal.  Tomorrow video, it will only be lunch and dinner because I have to edit the video in the morning because everything messed up. I told you guys that earlier in the video, but it don't matter, we're still going to be grinding, we're still going to be shining, we're still going to keep going and we're still going to keep growing. And I'll see you guys on the next one in DDK and I'm on my way.


In the Vertically Integrated Projects Lunabotics course, students design, build and code an autonomous mining robot to participate in NASA's mining lunar competition each year. Students in the course work on research and development related to the competition guidelines. The purpose of the VIP Lunabotics course is to give undergraduate students an opportunity for a design-built test cycle as it's done in industry so that they get the same experience as they would be doing in their full-time jobs. I thought it was a great learning experience, especially in a way that will allow me to kind of use what we learn in our engineering courses, like theoretics and like an application. I wanted to participate in the VIP Lunabotics course because I wanted to get out of the classroom and do something that was hands-on and that would give me experience with real-life engineering design. I specifically chose Lunabotics because I'm personally extremely passionate about space exploration. That's what I want to work on.  I wanted to participate in the Lunabotics course because I knew I wanted to be part of the VIP team again. I've done it in the past and I've really enjoyed it. I've found it's a great way to earn credit, a different way from a traditional class. And the Lunabotics team just really stood out to me when I was looking at the list of teams. From the Lunabotics course, I'm learning a myriad of different things, but most notably I'm able to apply a bunch of different mechanical engineering concepts and incorporate them into my design. I have learned a ton from this course already and like I mentioned a little bit before, especially applying what we learn in our math and our physics classes, like the torque equations we're learning are exactly what we're applying in this course, except we expand and we go further and we dig deeper into it so that we can use it in our calculations. Some of the skills I've learned working on the team is how to manage tasks and to give them effectively to other members of my team and communicate really well with not only my team but other sub teams to make sure we're all working towards the same goal at the same time. My biggest goal for the students is to compete in the NASA Lunabotics competition each year and I also want them to learn skills that are transferable beyond graduation and in their personal lives. The NASA competition happens every year in May and students work throughout the year on their design and building of the robot. The competition happens at Kennedy Space Center and it includes universities from across the US. We're trying to make a completely new design from scratch for the NASA Lunar Excavation Program and we're trying to make an excavation and collection system to mine regolith in a simulated habitat and that concept, whatever we come up with, could potentially be used for future moon missions to actually mine and create settlements on the moon. What I enjoy most about instructing the VIP course is seeing students learn from each other, seeing them give feedback to each other on their teams and work together toward a common goal is what I most enjoy. I get to go to freshmen, explain them concepts not from a mathematical perspective but more from an intuitive sense which makes me better in my field and helps them understand what engineering is all about. The best thing about this course for me is that I get to experience real life engineering design, something that they do in industry and normally I wouldn't get an opportunity to do for probably four or five years down the road. Well, the best thing about this course for me is the fact that you get to experience such a diverse range of engineering aspects from manufacturing to design to brainstorming to working with a wide group of people that you just wouldn't get from a pure academic course. It's just that depth of experience that I really appreciate. If you're thinking about taking this course, I would highly recommend it because while it may not be 100% applicable to what you want to do in the future, there definitely will be something that you learn, whether it's just general concepts or more specific things that you'll use within your major. I think it's an amazing course to take. It's a course that really gets you involved and opens up your opportunities. It's a course that you start from the bottom and build so you don't need to have any pre-rex, you don't need to know anything. You learn as you go and it's an amazing learning experience. It's a lot more fun than your typical just sitting in class learning your equations because you're excited to make your robot work, you're excited to make your systems work, so the extra research doesn't seem like learning even though you learn a ton from it. It's such a fun time to be able to build things with my hands and instead of just sitting in a classroom all day and being bored, I get to make things and experiment and I've just had a blast. For me, the best thing about this course is actually getting to work with my team because it's something you don't get in a lot of classes, especially your freshman year. And us working as a team and everyone having something that they're really good at and having us all come together to make this amazing product is something that I love.


Sir, I think we can start our session, welcome everyone to our audience and we are in the application development with the serverless and the containerization track. So we are here for the next session which is OKD4, the OpenShift Kubernetes on the Fedora Core OS and we have Christine Glomberg who will be presenting out this lightning talk. So we can start it over or like we do, we want to wait for a couple of minutes for the other participants to join. Let us know. Well, hello everybody, welcome to DevConf US and welcome to the OKD4 OpenShift Kubernetes on Fedora Core OS session. Today, I'm happy to have with me, Christine Glomberg and Antonio Radaca to help fill out the details on this topic and we're really glad you came. We're really proud of this latest release of OKD and I'm going to tell you a little bit more about what we're going to talk about today. So the next slide. So on today's agenda, first, what we're going to cover off is what is OKD, then we're going to jump into an overview of operators and the operator framework and we're going to dive a little deeper into one of the operators that's very important to OKD, the machine config operator and then we're going to take you a little further down the stack to Fedora Core OS and we may have a demo or two slid in there and we'll leave some time at the end for questions that we know that's probably going to be through the chat or Slack or whatever facility that they give us for DevConf US. So look for Christian, Antonio and myself in the chat afterwards. So without further ado, next slide. So what is OKD? You're going to talk a little bit about it from a historical point of view. First, you probably remember OKD being called Origin back in the day when it was a Ruby on Rails, MongoDB platform as a service offering and then about four or maybe five years ago now we shifted and rebased on Kubernetes and OpenShift went through a significant evolution going from OpenShift 3 to 4 as well, rebasing, leveraging operators. So you'll hear us talk a lot more about that as well. So we basically take the OpenShift or OCP or OpenShift Container Platform code base and combine it with Fedora Core OS and that's an interesting distinction giving us a pure open source play from all the way down. So from the code base is all open source for OpenShift naturally, but there are some things about OpenShift, the product, some of the images and things that are based on Rails Core OS. So we at Red Hat are committed to having a pure open source offering of each of our products. So we have collaborated with the Fedora community and Fedora Core OS and come out with a distribution, which we'll hear us talk about a lot as OKD4 and it allows us to distribute everything as open source. So we're remaining true to our sort of commitment. Now this shift really went from being a platform as a service built on Kubernetes to something more of a self-contained ecosystem. Go to the next slide. Let me explain what I mean by that. So some of this, it's a really important distinction for us that we want to deliver something that everybody can use freely and as open source, but also has all the functionality that comes with OCP just running on Fedora Core OS. And so a bit of an example here is the difference between OCP and OKD is OKD delivers releases in a much faster cadence. Fedora Core OS comes out in a faster cadence than Rail Core OS. So you get to try out all the new features and sometimes the bugs, a little sooner than everybody else. And if you're really brave, you can even build and update your clusters from our nightly stream. So that could be a lot of fun. And really it's basically a new, highly opinionated as we are sometimes at Red Hat, but highly flexible Kubernetes based ecosystem. And it's built around this new concept of operators and we'll get more to that there. So through the operator framework, OKD manages your entire platform, automating the installation, automated patching, automated updates and maintenance of the entire environment, and very significantly even the operating system itself, the updates for those. So this is kind of key and we'll go into more detail about Fedora Core OS in a bit. But the full lifecycle is managed by OKD through a specific set of operators. And it's deployable on many, many different infrastructures. Hit the button one more time. There you go, pops in. It's deployable on many, many different infrastructures and platforms from bare metal to cloud. There's just a small sampling in the little icons here. You can do small edge clusters. You can build out massive compute workloads with OKD. You can deploy a single node if you're willing to forego high availability. You can deploy high availability three node cluster where your worker nodes and your control planes are sharing roles, or you can deploy a full enterprise grade cluster with a dedicated control plane infrastructure and worker nodes. If you want to know about these specifically, you can go look at the installer project, which you can find in GitHub under GitHub, OpenShift slash installer, where you'll see a list of all the available deployment platforms and configurations. At the end of all of this talk, there'll be a slide with more links and more resources. So don't panic. And that's really at a very high level. What we're doing with OKD. I don't know, Christian, if you want to add any more into that. I think we'll go in depth more in a bit. All right, well, then I think we're handing it over to Antonio now. Yes. So I'll, you know, the next point and the agenda is talking about the operators. And as Diane mentioned, OpenShift had a huge shift from 3.11 to 4, where in 4 we introduced the concept of the operators at the cluster level itself. And so before diving into the actual OpenShift 4 architecture and later in the MCO, we need to talk about what is an operator? What does it do in the operator pattern as well? So next slide, I'll do it myself. So operators are a way for packaging, deploying, and managing cube application, right? So to put that into a real-world example, think about a MySQL database. And we can think about the MySQL operator as something that is responsible for packaging, installing, managing the MySQL database itself on a cluster. You know, that's the key difference. And we can think about the possible management things that this operator can do as, you know, rescheduling if a node fails or automatic data replication always is the, in the case that the node fails. So all this kind of stuff that we usually do manually, the operator can, you know, call for the human and can do all of this automatically. With, you know, it's some tweaks and some configuration is still needed on the administration side, but, you know, operators can do all of this and they're pretty powerful. And we'll see why, well, we dive more into how OpenShift is actually architecture with operators. So this is actually all we can say about the operators. There is, I talked about configuring the operators. That part is handled specifically by, if you're familiar with Kubernetes, by a custom resource definition, those are just, you can think about them as just configuration files. But in this word, those are effectively Kubernetes object stored in a CD. So OpenShift 4 has been built leveraging operators. And we can see that they cannot only manage applications like MySQL, but they can also manage things that are key to the cluster itself. So what we did in OpenShift 4 is, you know, introducing the operator patterns for the components that make a cluster, make a Kubernetes cluster. And so it's like the analogy would be having the cluster on autopilot because many of the things that, you know, an administrator would usually configure, like scaling up a node is like takes, you know, all the manual steps to bring up the node and configure it. That will be done automatically by an operator. And we'll look about that specific operator in the next few slides. In these slides, we're going to have a look at, you know, the key components in form of operators that make OpenShift 4. And, you know, we have one of the very first operator which is the main one that is responsible for the overall health of the cluster is the cluster version operator. And since OpenShift 4 basically has operators for anything that really makes the cluster, like you can see just below the cluster version operator, there is the CUBE API server, the CUBE controller manager, the scheduler, etc. Those are all operators. And what the cluster version operator does is making sure that those components, which are still operators within the cluster, are at the right version.  You would just hit the button and sync to the new version of the, you know, whatever latest OpenShift or OKD release you have. There are, you know, many other operators which are core to the platform, like the network one, as you can see, just make sure that the CNI plugins are there and the SDN is installed. There is the image registry. Anybody coming from 3.11 knows about this. In OpenShift 4, we now have an operator that takes care of all of this. And it takes care of the image registry from, you know, the real beginning. It setups the registry, the route, an initial storage and things like that. So you can see, you know, all the manual steps that we used to do before are now handled by the operator itself. Other examples of the operators that we have in the fourth release are, you know, the monitoring one, which, as the name suggests, is responsible for collecting the metrics, display them on the console, or anything, any aggregator that you can also install. The inverse operator, which ensures the router is set up. The storage one, make sure that the CSI plugins are installed and the storage classes exist. So all these, you know, operators are the core of the platform. And as I said before, what we did in OpenShift 4 was leveraging the operator pattern and used that at the core of the cluster. So it's something like the cluster manages itself. Because all these components in the forms of operators can just end their own life cycle in an ordered way. And, you know, you'll always have the latest version and it's automatically synced. So the concept itself is really powerful. And OpenShift 4 is making a great job at leveraging it. Then we have this other thing, which is still operator-related, which is the operator app. So the components that I've talked before, the operators that I've talked before, are core to the cluster itself. You know, those manage the cluster life cycle. But, you know, at some point there will be somebody using the cluster. So OpenShift has this concept of the operator hub, which is a community-sourced index of optional operators. Like you can see some of them like Grafana or Argo CD. So if you want to install them, the operator app is integrated with the OpenShift console.  Those are usually application-focused. As I said before, these are really application-focused, whether the one I talked about before are core to the platform. And guess what? There is an operator, which is like we call that manager, that takes care of the life cycle of those additional operators. So you can do things like taking care of the operator scope, whether it's cluster-wide or namespace-only. Again, it ensures that it can be updated manually, manages permission, you know, and so on and so forth. You can think about almost anything life cycle related for an application like Argo or Grafana. And so all of this brings us to the MCO, which is one of the core components that OpenShift 4 uses. And it's related to the nodes that you have on a cluster. I mentioned it early that, you know, in the early days or before OpenShift 4, in order to bring up to onboard the new nodes, you would need, you know, many manual steps, you know, in order to bring up the actual instance, then configure it, then, you know, get up and running the kubelet, join the fleet, stuff like that. So all of that isn't necessary anymore, thanks to the operator pattern and specifically, thanks to the machine config operator or MCO for short. The machine config operator is, again, a core operator. That means it's managed by the cluster version operator, which I mentioned it early. So the cluster version ensures that the machine config operator is always at the latest version and it's healthy as well. The MCO, I'm going to just say MCO from now on, hopefully, it's the operator that manages the machine configuration. It does just these two things. It manages the machine configuration and it applies the OS updates on the nodes. In our case, since we're using, since we're on OKD, we're going to apply these OS updates with RPM history. So the MCO really does just these two things. Say you want to configure, I don't know, the time zone setting on all the fleet of the nodes that you have in your cluster. You would use the MCO to actually ship the config to the nodes in your cluster. And again, the other super important thing that the MCO does is making sure that your host is always updated. The way the MCO works is it's really easy if you're coming from the Kubernetes work as we are leveraging custom resources and we are living by the concept of current versus desired or spec versus status. And so what the MCO does, it's basically computing a diff between what it has and what the admin want. And after you compute the diff, it just applies it. And so it continuously reconciles itself to the latest status and spec that the administrator want. It's like it's a peanut state machine at the end of the day. It's just there is a continuous loop like any Kubernetes controller and it just watches for any changes. In our case, again, those would be customizations or OS updates coming from where the actual OS updates is coming from. So this is the machine config in a nutshell. And hopefully that clarifies what it does. The machine config operator leverage mainly one customer resource definition. There are many, but the most important one, it's the one in this slide. You can see it's a super common Kubernetes object. It has the type and the object and just a spec where an administrator can just go and tweak all the fields. The most important thing about this custom resource is probably the config field. And I'm going to explain the others as well. The configuration field, config field, which you can see it's just a runtime raw extension. Nowadays, it just contains the ignition config as we're leveraging ignition to bring up new machines and install the cluster. So the MCO still leverages the ignition config to be able to customize the node in a way which is familiar to most cluster administrators as well. With ignition, you can of course do the usual things that you would do even manually, like creating a system unit, a timer, disabling a service, all these things, change a configuration, change the crowning columns. You can do all of this with ignition. And so the config field is probably the most important one in the machine config CR as that allows administrator full control over the node. And then the other things that you would find on a machine config is the US image URL. That's another important thing, as that's the second point from the previous slide, where the MCO does configuration and OS updates. So OS image URL is nothing more than a pullable container image which contains the actual diff of the US update. But I think Kristin is going to talk more about that later on. In the end, the rest of the fields that you can see all relates to the customization side of the MCO. So to some extent, they're still related to the config. But we actually split those out so that we can control them more. And I guess I'll finish with the component of the MCO. It's a sub-component of the MCO itself, which is the one responsible to change the status from current to desired. So say you want to ship a new file on every host in the fleet, masters, and workers. You would create a machine config, do all the things that you would do with that machine config, create it so the cluster has it. And once the MCO notice, it will go and create its vision of the host. And then there is this component that actually takes care of applying that diff. And this is the machine config demon. So the machine config demon is just a demo set that runs on every node in the cluster. And again, what it does is just watching for changes in the administrator requested and just apply them. And as I said before, the machine config demon understands the config field of the machine config. So almost anything since it's just a subset. So it really understands a subset of the ignition configuration, like I said before, like folders, system D, and perhaps some other. And again, what it does is just apply this new view of the system on the node itself and just continuously reconcile. And again, in the Fedora-CoroS case, this container image, which we call machine OS content, and then use RPMOS3 to actually update the system and trigger reboot. With that, I guess, Kristin can take over. Thanks, Antonio. So yeah, next we'll dive deeper into Fedora-CoroS. What is Fedora-CoroS? Next slide, please. So Fedora-CoroS in one sentence. Fedora-CoroS is an automatically updating, minimal, monolithic, container-focused operating system designed for clusters, but also operable standalone optimized for Kubernetes, but also great without it. So let's dig in a little bit. Next slide, please. Let's try it in two shorter sentences. Fedora-CoroS is an auto-updating container. And you can run it with Kubernetes or without it. Next slide, please. So there is a lot to unpack here. And we've come to Fedora-CoroS, what it is now. So yeah, a few streams have flown together here. So it was two communities, the container Linux community and the project atomic community that you may know for delivering retarded enterprise Linux, atomic host, CoroS, Fedora atomic host, and CentOS atomic host in the past. And these two communities have merged. And we've kind of taken the best of two worlds here. So yeah, most importantly, the container Linux philosophy of how they really pioneered the container-focused operating system and their provisioning stack and the cloud-native expertise here. And from atomic host, we have the very solid Fedora package foundation, which we build on. We have the update stack. And obviously, we run as Elinix enabled. Yeah, next slide, please. Let's have a look at the features. The OS versioning and security is a major part of the goal of Fedora-CoroS, providing a secure platform for containerized workloads. So Fedora-CoroS uses RPMOS tree to create images. They're composed out of RPMs. And OS tree is like a Git repository for your operating system. So you may know RPMOS tree or OS tree generally, in general, from a few other projects. For example, Flatpak uses it. And it really just commits a file system to a repository and writes a hash. So it's very easy to follow back through the stack and see what came from where. And if we compose a new image, we have a very clear delta of all the files within the file system that have changed from one commit to the next, which also allows for functionality like rolling back a commit or rebasing to a totally different post-operating system. In the case of OKD, we use the machine OS content container, which Antonio mentioned, to deliver an OS tree commit, which is encapsulated in a container, unpack that, write it to disk, and reboot. So yeah, you'll get a single identifier for each version of the entire operating system, which makes it very monolithic and very secure. And a very important feature is most of the file system is mounted read-only. So you can only write files in specific places that are enabled for it. But that general protection on most directories in the file system prevents accidental OS corruption and also other kinds of attacks. Additionally, as Elinix, as I mentioned, is enforcing by default to prevent compromise steps from breaking out of the sandbox. Next slide, please. All right, automated provisioning. Automated provisioning is a big feature. So Fedora Core OS uses Ignition to automate provisioning. You've already heard a little bit about Ignition before, because the machine config operator and the machine config resource actually encapsulate and manage Ignition configuration. So within an Ignition configuration, you can encode any logic for machine lifetime, really anything. The machine config operator only supports a subset. I think Antonia mentioned that as well, which files in system D units. But within the Ignition specification, the config specification, there is actually space of it. There are actually much more features in there, which Ignition takes the binary and applies at the very first boot of the machine. So you can reformat your drives, repartition, and really do a lot of things there. That happens at the very first time the machine is provisioned. The machine config operator then takes over that config and enforces changes on a subset of that config. So for us, if you have a pure Fedora Core OS system, you can provision it with Ignition. You can really do anything. We automate that with the OpenShift installer for OKD and then manage it with the machine config operator. And very importantly, it is the same config on any platform. So it's really important and supposed to give you no headache whatsoever when doing the configuration because for Fedora Core OS, the machine, once it runs, notices where it runs and applies defaults for that platform. So we have just one release artifact, or a few release artifacts, but fewer than there are clouds because we don't need a release artifact for each cloud. Fedora Core OS is very smart about this in using Ignition. That makes it very easy. OK, next slide, please. So let's have a look at the Ignition configuration in detail. Ignition is a declarative JSON format. It's Ignition runs only once, as I just mentioned, at the very beginning of your provisioning once the first boot happens. And Ignition actually doesn't run on the root file system you later have. It runs within the init-ram file system. So it sets up the new file system within the RAM and then writes it to disk and reboots again into that file system that you just configured the way that you wanted to with that Ignition configuration. Yeah, it can write files, system D units, create users and groups, partition disks, create rate arrays, format file systems. There's really no limits with configuring your machine with Ignition configuration, which is also why we've chosen Ignition as our on-disk date representation for the nodes on the cluster, which are then managed by the MCO. To make writing Ignition configuration a little bit more human-friendly, we've created this tool called FCCT, the Fedora CoroS config transpiler, which lets you write Ignition or FCCT configuration in a human-friendly YAML format. And it has some short ends for generating Ignition that does a little bit more complex tasks like generating the system D units for those tasks. You can have a look at this back. It's very similar. And you can transpile a Fedora CoroS config to Ignition configuration. Yeah, next slide please. These are the features in use in OpenShift OKD. We have automated provisioning. OpenShift install generates Ignition configs. And when each node is started, that Ignition config is applied. Subsequent processes join the node to the cluster. So it is picked up automatically. No human interaction necessary. A single bootstrap node configuration is about 300 kilobytes. So it's a lot of data conveyed in that Ignition configuration. With OS versioning and security, we include OKD. We include Fedora CoroS in each OKD release. So we have a very clear pointer to the version of Fedora CoroS that is encapsulated within the machine OS container. And we know exactly what we're delivering every time. Yeah, it's cloud-negative and container-focused, obviously. This is a Kubernetes distribution. And Fedora CoroS is aimed towards running containerized workloads. And we automate that with the machine API and Ignition. Automatic updates. We leverage the OpenShift update mechanism for it. And all you really need to do to update your OKD cluster is click a button once it's available. Next slide please. A quick recap, what is Fedora CoroS? It's an automatically updating Linux OS. It's aimed at containerized workloads based on RPMOS tree and Ignition. It's composed of Fedora RPM packages. And it's great for running Kubernetes clusters on top or OKD clusters. Next slide please. If you want to join the Fedora CoroS working group, you can find, as neither of these places, on IRC. It's the Fedora CoroS channel on three note. We have an issue tracker on GitHub. We have a discussion forum on the Fedora project forum. We have a mailing list. And we also have weekly meetings on IRC, which you can find on the CoroS calendar. Next slide please. So this is where we're here today. If you want to join the OKD working group and help and participate in releasing and improving OpenShift and OKD4, then please talk to us on Slack. We're on the OpenShift dev channel, on the Kubernetes Slack. We're on the OpenShift Commons Slack. If you're a member there, you can find us on any of the channels, really, definitely on the general channel. We have our own Google group, which we reuse as a mailing list. So it's the OKD-WG Google group. We have bi-weekly video conference meetings, which you can find on the OKD Fedora calendar. And we have two repositories on GitHub, where most of what we do is happening and documented. And those are the community and the OKD repositories in the OpenShift organization on GitHub. Next slide please. More links. Have a look at OKD.io. This is our main homepage. You can find everything somewhere in there. The documentation is at docs.okd.io. And then the OKD repository, again, which we use as an issue tracker for technical things and the community repository, which we use as a tracker for meetings and group tasks and related things. And with that, I think if we have time for questions after this, I'll be in the chat. We'll all be in the chat with you, and we'll try and answer your questions. And please do come to the OKD working group meetings, especially if you're interested in deploying on any interesting configurations. We're always listening and looking for feedback and happy to help you answer any questions, too. So look for us all, Antonio, Christian, and myself, and others from the working group in the Slack channels here and at other DevConf sessions. So thanks, Christian and Antonio, for taking the time today to record this. And hopefully we gave you enough depth to get you started and interested in participating in this collaboration between the OKD and the Fedora Core OS communities and keeping the open source pursuit of happiness alive. So take care, and we'll see you all again soon. Thank you. Thanks a lot, everyone, for attending this session. And yeah, this was quite interesting session learning about the OpenShift and the Kubernetes platform. I once again, thanks to Christian, Antonio, and Dine for sharing out their time and presenting out this session over to all of the open source community across the world. And yeah, we are open now for any of the questions or the Q&A sessions. You can just post your questions in the chat box right now. Here we go. I just popped in again. And yeah, I think we had a great session, and I don't see any of the questions popping out in the chat box. I think everyone is clear about the session. Like, they have just got a re-answer from this presentation slide. So yeah, thanks, everyone, for attending this session.


Hi there! It's DJB and in this video I'm going to be teaching you how to repair a broken leg on your Briar model horse. So this little guy is super cute. This is the donkey that I actually purchased off of model horse sales pages and he is the Briar Fest Special Run Oliver and I got him at a really discounted rate because he came with a broken leg. The lady told me this when I purchased him and so when he arrived the leg was pretty much detached. They had used just a cheap super glue to stick it back together. So first thing we're going to need is some safety equipment. Respirator and slasses are good. I also like using these nitrile work gloves and we're going to be using my Mastercraft rotary tool or a Dremel and with just a drill bit we're just going to be drilling some holes in the leg so we can reinforce it. So you want to reinforce the leg with wire when we stick it back together so I'm just going to take this drill and make a little hole in the leg. Being extra careful not to damage the original finish at any point so you don't want to slip with the drill bit because we want this model to remain as original finish. So once you have that you can take a very fine sandpaper and just sand down some of the edges. Some of them were quite harsh. There's a bit of remaining glue from the previous repair so you can just touch up the leg make it a little more smooth if you have any fragments that came with the break. I'm using a fine grit sandpaper of 220. Then I'm going to take some craft wire and cut it to a desired length and we're just going to put it in those holes we made so there should be no gap. Then we're going to take our classic super glue and baking soda. Before I do this I want to make sure that the original finish does not ruin this guy's too cute so we're going to actually wrap him in a plastic bag and just leave the area that we're going to be working on exposed. So I just take a normal grocery bag and put him inside and then I'm just going to use one of those edges to wrap around the leg so that it sticks out. Kind of like surgery. Then I'm just going to use some of my blue scotch tape to place all around the leg so that the bag sticks to it and nothing can get inside. And then I'm just going to wrap that up so that the model is completely sealed inside of this plastic bag. I'm also going to want to do that to the foot, just the bottom of the foot. Working with epoxy can get a little bit messy and you don't want any of the paint dripping or anything happening to the model. So now that he is all good we can super glue this leg back together. So I'm using a makeshift super glue situation here but normally we would just be dropping a dip of super glue into the leg. My super glue was acting kind of weird. It was a gummy consistency and I wouldn't recommend using this actually. It didn't cure as well so I ended up throwing this super glue away after this project. So I'm just dabbing that tool into the super glue and using it to stick the leg back together. And then I am adding baking soda in every instance so that the super glue will cure. I have an entire tutorial on this process as well. I'll link that video in the description below. And then you're just going to put that leg together and make sure that it's all good. I let it sit for about 20 minutes so that the glue can cure. And then you can go back in with your sandpaper and sand down any awkward bumps that you get from the super glue to make it as smooth as possible for your epoxy base. And then when you're done with that it's a good idea just to dip some paper towel in some water and clean up the area from the baking soda that you used so that your epoxy has a good base. And when you wiggle the leg nothing should move. It should be a solid piece. So now we're going to take our epoxy sculpt and I'm just going to roll a very small amount of this. You don't need very much. So now if I was repairing a smooth like model it would be a little easier. It would just be adding this clay and smoothing it completely out. But this guy has some texture. He has some herring detail in the leg. So you're going to need to use your color shaping tool to get the same kind of texture following the sculpture that is originally already there and making sure that you cover both sides of the break so that none of it sticks out. And it is completely re-sculpted and like the leg had never broken before. Also using that paintbrush method over top of the epoxy to smooth it out. I have a full tutorial on this. I'll link that video in the description as well. So now let the guys sit to cure overnight. I like to let my things cure at least 24 hours. When we come back he should be completely firm and you can add that sandpaper again to sand down any weird bumps or lumps that you get. And then we're going to paint over top of what we've done. This is an easy repair because the model broke on a black part of his leg. Black is probably the easiest color to repair. It's the easiest to color match. So I decided to use this folk art black and just added a little bit of water to that. And then a few drops of golden high flow raw umber just to add a bit of a brown tinge to it because a lot of these blocks on the sky weren't completely black. They're a little bit brown. Then we're just going to mix that all together and paint it right on to that leg. You're going to want to cover all of the epoxy of course and you can a little bit over the original finish as well so that it blends. When it's finished drying I'm going to use Vallejo matte varnish. This is an acrylic varnish. It works really well. Drys matte and matches the exact texture of original finished briars. And I'm just going to brush that on. It goes on a little bit blue tinge but it dries clear. And so there you have it. You have a complete fixed break that you can hardly recognize was broken at all. Then we can undo all of this tape and reveal the final model with his repaired leg good to go ready to show. If your model breaks on a white bit especially with briar models it may not be possible to repair unless you repaint all of the white markings because it will look obvious. It's just plastic if you epoxy over top of it. You're not going to be able to paint over it to achieve a seamless look. So depending on what color and where your break is on your model some of them may not be repairable depending on your skill level and color matching strategy. Thank you so much for watching and happy repairing. All of the tools used in this video are in the description below. Please subscribe for weekly Wednesday uploads. Follow me on Instagram and Facebook at DJB Studios. Check out my website and sign up to my mailing list to be the first to know about commissions, tutorials, and sales pieces. If you have any questions feel free to message me.


For many countries it is a once in a generation opportunity. Can these extractive industries play a significant role in development? Good policy can make the difference between economic disaster or economic success. 500 million people raised out of poverty in China over the last 20 years. Some experts who look at this say we have the same possibility. 500 million people raised out of poverty in countries dependent on extractives with good policies.