When the second school term opens on Monday, January 11, there will be rigid guidelines for janitorial staff to follow to ensure the health and safety of all. Chief Environmental Health Officer Parker Ragnanan says a cleaning regiment has been developed by the Ministry of Health which details when and how surface areas are to be cleaned. We recommend that for cleaning and disinfecting that there are one of two or both solutions that can be used. One is sodium hypochloride and that is 5,000 parts per million. Generally you find sodium hypochloride in household bleach or ethyl alcohol, 70% alcohol can be used as well and there may be areas where you cannot use bleach but you may be able to use the alcohol and that has to be determined as well. As far as our classrooms are concerned, we are looking at ways to improve ventilation within the classrooms and it means that if there are windows to try as best as possible to keep these windows open, if there are loavers, keep them open and ensure that there is a constant exchange of air and there's adequate airflow within the classroom setting. If there are some buildings that are air conditioned then we need to ensure that these rooms are adequately aired out. Proper garbage disposal is also being advocated and supervised. We are asking that attention be paid for regular removal and disposal of garbage because we recognize that some of the garbage may be a little infectious depending as to what is in there. We may have persons who dispose of face masks and so forth therefore we are asking for special consideration be given to the management of solid waste on the school environment and on the compound. School janitors and cleaners were asked to report to work from December 28 to 31 2020 to ensure the proper sanitizing and cleaning of schools.


I'm here with another CTN member highlight and this time we are covering the Fort Allen Park and the Eastern Promenade to talk about the restoration of Fort Allen and the Bicentennial celebration coming up I have two guests this time and the first one is Diane Davidson who is the Executive Director of Friends of Eastern Promenade to talk about the restoration. Thank you for joining us Diane Thank you for having us. So why did this restoration of Fort Allen come about and what is it all about? Well Friends of the Eastern Promenade are the primary stewards of the Eastern Promenade landscape and Eastern Promenade is on the National Register of Historic Landscapes. The master plan for the Eastern Promenade was adopted by the City of Portland in 2004 and there are suggestions in there and recommendations that guide our efforts and so in 2011 we raised the foundation funds to hire a landscape architect team to explore the significance of the Fort Allen landscape and put together a design scheme for us. So that period of significance was identified as between 1890 and 1930 and that is really the time when the Fort Allen landscape held the most historical integrity and then in the 30s things started to degrade and changes started to happen that weren't really in keeping with the intentions of Olmstead and Baxter and Goodwin who actually designed Fort Allen. So when the Friends of the Eastern Promenade started this by hiring architect and doing this how did you start working in collaboration with the city? Well, we hired the landscape team, Martha Lyon and Regina Leonard and we brought those designs to the City of Portland. You know the city was pretty receptive. We then had to negotiate for funds, you know, CIP funding and CDBG money so the Eastern Promenade is really the jewel of Portland and I think that was helpful in us advocating for what ended up being about a total of 1.2 million in-city support between those funding sources. We also felt strongly that it was a project that needed to happen in one phase. You know, we really couldn't close down the Fort Allen area twice. Neighbors and visitors have been very patient. It's been a long time coming to them, but we just reopened the roadway a week ago and So I understand that the city, you know, contributed 1.2 but the actual cost was higher than that. How did Friends of the Eastern Promenade raise the extra money for that? Well, we're still in the process of raising that money. Our budget was about 300,000 and that includes sort of the furnishings, if you will, and the finishing touches of the project. The city funds, the 1.2 covered really the nuts and bolts in the foundation, you know, returning the gentle curve to the horseshoe drive as it was historically, removing overhead utilities and burying those so that we have less pollution, light pollution, and you can see the night sky reinstalling the walkways and improving pedestrian circulation so that the memorials that are there are better integrated into the landscape. Friends of the Eastern Prom were about three-quarters of the way there with our campaign to finish the project and the furnishings that we're bringing back are the two Civil War era cannons. Those were just returned yesterday, and they're quite lovely, quite impressive. Next week, the USS Maine cannon will be returned. So it's the cannons, it's the remainder of the wrought iron fence. It'll include interpretive exhibits that will help people explore and enjoy the rich history of the park, as well as looking out at Casco Bay and being able to tell what they're looking at and what islands are in view. So now to open this up, this new project, and everybody bring it, you have a celebration coming up. Yeah, we are grateful for the timing. This has been an incredible collaboration with the city. We've worked very closely with the local and state historic preservation boards. You know, city staff and crews have been really helpful and supportive and, divinely, it's all coming together just in time to celebrate the bicentennial of Fort Allen. So we'll be doing that on September 19th and 20th. And what will that involve those two days? It's a Friday and Saturday. Friday and Saturday will involve lectures at the Jewish Museum, the Maine Jewish Museum, and then Saturday will involve a number of celebrations beginning at the 1812 cemetery and then a moment of silence and then a parade that will take folks over to Fort Allen, where we'll celebrate with naval representation and dignitaries and speakers. Great, great. Well, to talk a little bit more about the historic significance of all of this, I'll be talking to Dan, right? Yes. Dan Haley. Yes. I'm here with Dan Haley, the co-chair of the Bicentennial Committee for Fort Allen, to talk a little bit about the historical significance of Fort Allen. Thanks for joining us, Dan. Oh, pleasure to be here. We like to talk about the Eastern Promenade and its history and kind of a little brag in the neighborhood. Yeah. But we are coming up on the 200th anniversary of Fort Allen as we spoke earlier, and we want to celebrate that. And we're going to start it with the 1814 cemetery that's over by the tennis courts in the playground. And the significance there is the Americans had a very, very bad battle experience in Quebec, Canada. And 26 of the soldiers were being transported by ship from Canada down to Boston for a prisoner's swap. And 26 of them got sick. Five of them survived that. And 21 of them are now interred, are interred on the Eastern Promenade. So we'll start, even though it's not 200 years specifically for that one, it's actually probably another year older. So we're going to start a celebration there. And we'll start that with a wreath laying. And then the playing of taps, of course, and no speeches, just a very solemn ceremony. And then we'll form a parade there probably in front of the tennis courts and back toward Walnut Street. And that should be pretty decent for a neighborhood parade. We've got the Army Color Guard to lead it. We'll have the United States Coast Guard because they were involved in the defense of the batteries. When the batteries were first built in Fort Allen in 1814, a unit called the Sea Fensibles was organized by the federal government. And their officers directed the Army militia on building and manning the fort. So the Coast Guard has a play in that. So their Color Guard will be in the parade as well. And then we've got the 195th Army Band. And we've got the governor and the mayor of the dignitaries of town. And the neighborhood organizations like Greater Paul and Landmarks, Friends of the Eastern Promenade, Munger Hill Neighborhood Organization will all participate in the parade in the fire department, which should make it very nice. So we'll get to Fort Allen and to celebrate what used to have eight guns. We now have the two cannings sitting there. They're actually Civil War guns rather than the 1800s. And the Army Guard will bring down a 1941 howitzer, all restored, which will be a nice attraction for the kids to see and things. And so that fort is is the oldest manmade fort in the city. And it was one of three forts, one being down near the Portland Company and one being just below Fort Allen at Fish Point. So this was called the Upper Battery. And with the angle of fire and everything, the British after they took Castine didn't come to Portland because it was 5,000 militia at Fort Allen. And we had the commanding guns and stuff. So that strength eliminated us having a battle in Portland, Harvard during the war of 1812. That's huge. And so all those events that you just talked about having, that's all happening on the 20th. Yeah, well, we'll start at 10 o'clock at the cemetery, and then we'll march over and hopefully start promptly at 11 o'clock. And we'll start with the raising of the flag and we'll play revelry just like you would in a fort back in 1800. They would have been waking up to the bugle. So and then we'll raise the colors, play the national anthem, and then we'll start the speeches. And the speeches, guest speakers, is a wonderful last. Governor LaPage will be the will be the leadoff speaker followed by Mayor Brennan and then the adjutant general of the state of Maine. And then we have Herb Adams, a historian. So it should be not only a celebration, but a good historical experience and CTN, as you know, will be filming all of this. So we'll have it in the archives. So 200 years from now, when you and I aren't here, they can play this back to what happened on the first 200 years. Now, since that it was first use of the fort and 200 years ago, what has transpired there? The biggest thing, you know, I grew up next to the fort on the same side of the street where the Portland house is, is where I grew up. So for me, it was a playground as a kid, and we used to climb all over the cannons and play a little imaginary thing with the pistols and all that that you did back in those years. So it's a really, I wouldn't say sacred, but it's a very important place to the city of Portland. It's a place that everybody comes to, you know, there's a Navy reunion coming in September as well. And, you know, I brought them up the fort island and with the ship's mast and everything just kind of blew them away and the view of the Liberty Ship Park across the street. So to me, it's the greatest spot in the world to be just happened. They had a fort there because it was the best position to put the fort to protect the harbor because it takes it straight on at the entrance. So it's, you know, with the restoration that Diane was talking about, we've just really brought this place back to where it was in its heyday and hopefully, you know, another 200 years of people really enjoying the space. There's plenty of benches there now and the benches is part of how we're supporting our efforts with it, you know, for $5,000. A family can put their name on a bench and that helps us to pay for the cannons and all the other structures that we've done in there. So hopefully every bench will have a name on it.  So, you know, for just a couple bucks a piece, it was a little bit easier. Large families help, you know, so we're still looking for those. But the main thing is just, you know, it's a piece of our history, but it's also a piece of our recreation and it's a peaceful place and it's kind of special. I live on Walnut Street, you just mentioned about Eastern Parliament. So I appreciate how much, how great it is to have a park like that there and knowing the historical significance helps a lot. But anyway, if people wanted to find out more about this as their website or is there some resource they can go to? Yeah, theeasternpromenade.org has all of it and Diane, who you just spoke with, has that thing full of beautiful pictures from the whole process of what it looked prior and then as it went through the different phases and today, hopefully today's we'll show what the new cannons that were installed yesterday. And next week we'll have the USS Bean back in place. Well, thanks a lot for joining us and look forward to seeing the video and the celebration on the 19th and 20th. Appreciate it. I hope to see you there. Thanks.


Russian military death toll in Ukraine climbs to 183,750. Since the start of the full-scale war, Ukraine's defense forces have killed about 183,750 Russian invaders, including 620 in the past day alone. The general staff of the Armed Forces of Ukraine said this in a Facebook post. Ukrainian defenders destroyed 3,665 enemy tanks, 7,110 armored fighting vehicles, 2,819 artillery systems, 538 multiple launch rocket systems, 285 anti-aircraft defense systems, 308 warplanes, 293 helicopters, 2,376 operational and tactical drones, 911 cruise missiles, 18 warships slash cutters, 5,692 trucks and fuel tankers, and 330 units of specialized equipment. Battlefield losses and Western sanctions have left the Russian military in a state of decline, but Moscow will still have enough firepower to extend the war in Ukraine, according to a new independent analysis. The report from the US-based Center for Strategic and International Studies gives stark numbers of Russian military losses, almost 10,000 units of key equipment such as tanks, trucks, artillery pieces and aerial drones, according to one estimate. But it also says Russia can dip into Cold War era and older stocks on the front lines to make up in numbers what it may have lost in technology. It notes how Russian losses of main battle tanks, especially modern ones, have been severe. They're going backwards in terms of equipment. The officials said of Russian armor, noting that T-55 tanks introduced in 1948, are now turning up on the battlefield.


Hey everybody, I'm Lance Goyke, and today we're gonna go over one exercise that I use with everybody. I think I literally mean everybody that I coach. It's called the left sideline right glute max. So the glutes are generally underactive in people. The way that I want you to look at this exercise is we're trying to activate the right glute specifically. The body is asymmetrical. The left glute tends to be a little shorter and the right glute tends to be a little longer. It likes to, you know, that imbalance shifts us over to the right side. So what we're gonna do, I'm gonna give you four steps in a progression of exercises, and you can kind of work through them. And I want you to pick the highest numbered one that you can do while feeling the right stuff, okay? And not feeling the wrong stuff. We'll get into that more. So you might be more familiar with this exercise as known as a clam shell, but we're really gonna modify it relative to how people normally do it. So I told you that name that I've used for it is the left sideline right glute max. Our first base level progression is actually gonna start on your right side. So this is confusing. Essentially what we're trying to do is you're trying to shift the hips. You're trying to teach the hips to dissociate from the spine. So we're gonna start on your right side because it tends to be a little bit easier this way. You're gonna start with the knees bent up to 90 degrees, hips bent to 90 degrees as well.  So we're gonna exhale and bring the belly button back towards the spine. And that will just round out your low back, give you a slight posterior pelvic tilt. If you crunch really hard or you're holding your breath to do it, then you're doing it too hard and it's not gonna work. So just slight belly button comes back, that's step one. Step two is you're gonna bring your left shoulder and left hip a little closer together. You should just feel a little muscle activity of your obliques on the left side. And then step three, the exercise is this is just a hip shift. So we're gonna pull the left knee back behind the right knee. I want you to try to keep the right leg as relaxed as possible and just pull the left knee back. Now I did another video on this exercise in particular. It's called the right side line left adductor pullback or you could call it a left hip shift. All I'm trying to do here is inhibit the muscles that prevent my right glute from turning on. Specifically the right inner thigh tends to be really active. So this variation might be the best thing you can do to activate your right glute even though you're not trying to activate your right glute. The thing that shuts off the right glute is the right inner thigh.  That is the most important part of this. Even though this is a right glute activation exercise. Okay, so this is the first variation. I am gonna turn just for a second so you can see that my left knee is back maybe like two or three inches behind my right knee.  I'm using the wrong muscles to do it. You should feel a little left inner thigh while you're doing this variation. That's progression number one. The right side line, left hip shift. Progression number two is the same stuff. So I'm gonna go through all the steps again. Get set up. My hips and knees are bent to 90 degrees. I exhale, bring the belly button back and I crunch the left hip up towards the left shoulder and the left shoulder down towards it. Then we do the hip shift again. Notice my left knee is behind my right knee and progression number two is we're gonna now add pushing the right knee down into the ground. Doesn't look any different but the muscle activity is very different. So if you were getting a left inner thigh on the previous one, it might shut down a little bit but I want you to try to hang onto it. And now as I push the right knee down into the ground I should feel some right outer hip kind of buttock area turn on. We're just gonna hold there and for all of these I like to hold for three to five sets of five nasal breaths. So something like this. The cadence is really important here. Nice full exhale and pause. Every time I breathe in I'm trying to take the air down into the hips. I say breathe into the butt. That's three. Just checking to make sure my hips are still shifted. Feels good. Feel the glute. Last breath and relax. I like to end on the inhale. So that's progression number two. I've added the push the right knee down. Progression number three. Now we're actually gonna flip over. We're gonna come over to the left sideline variations. It's gonna start to look more like a clam shell. So if you remember our first variation was just the hip shift. That's all we're gonna do on this side now. It's just a little harder to get it while you're laying on your left side versus laying on your right side because of internally symmetry in your body and we'll leave it at that. Now, similar idea. You're gonna shift your hips in the same direction. So your knees are gonna be offset the same way but now I'm flipped over. So it's gonna be, you're gonna attack it differently. So I start laying on my side. Exhale, belly button comes back. Pull the left side up. You should feel the same kind of left oblique activity on that and you'll notice my left hip and my left shoulder came closer together. My right side is nice and long. We're trying to inhibit that stuff, lengthen it. Now to get the shift, I am then gonna push the right knee ahead of the left knee. Just slightly, same amount of shift. If I push too far, I'm gonna do the same thing with the left hip. I'm gonna throw myself out of position. I'm not gonna get the muscle activity that I'm looking for. So knees are stacked, belly button tucked, left ab rainbow. Make a little tunnel under here for a toy train track and then right knee goes forward and we're just gonna hold there. Now if I just shift like this, you might still feel the left inner thigh but remember that's kind of the point. We're trying to shut off the right inner thigh. So we're just gonna hold here again for five breaths. The breathing cadence is really important. That's why we're going through this together. It's really important that you breathe through your nose gently. It's really important that you pause after your exhales and it's really important that when you inhale, you're trying to breathe into your butt area. Pilbic floor helps out. Okay, so those three variations, the two right side line ones and the left side line, just hip shift, those are very important if you're having trouble getting this. Now, this exercise looks like a clamshell when we do the fourth progression here. I'm gonna turn back just slightly so you can see me a little bit more. Same idea. All those steps we just did, we're gonna redo. So exhale, belly button comes back. We hike the left ab up, right knee pushes forward and now from here, we don't lose any of this and we pick the right knee up and we're just gonna hold there. Five breaths, just like before. Now if you feel some inner thigh, just try to put the tension on the glute. Put the tension on the outer hip. Sometimes on the first set, it still feels pretty stiff. Doesn't feel quite right but as you do two or three or four or five of them, the inner thigh and the left outer hip start to loosen up and they let your right glute turn on. That's why those muscles also promote right glute activation. Two more. Now it's really easy as you relax to start letting the knee fall back. We're not gonna let that happen. Nice, okay. So those are our four progressions. Just to go through them really quickly one more time. We've got progression number one, level one, laying on the right side, left knee just shifts back. Progression number two, laying on the right side, left knee shifts back and the right knee pushes down into the ground. Just adds some complexity to it. Number three, we come over, we lay on the left side and we just shift the hips. Great knee comes ahead of the left one and then progression number four looks more like a clam shell. We still do the hip shift but then we open the top knee up. Now, where people mess this up is they're trying too hard.  So don't try too hard. Look at all this hair, that's nice. Awesome. If I try too hard, I have too much activity. Now, also, especially on the fourth one, what people will do is they'll try to make it seem like they're moving more, like it feels like I'm moving more when I do this and to a bystander, it looks like I'm moving more but the issue is if I don't keep the hip shift as I pick the knee up, I'm moving more in general but less where I need to be. Remember I said the right glute is long, we need to shorten it. If I do this, I keep it long. My knee comes out and it looks like I'm doing this thing but I don't get the activity that I'm looking for and I don't shut off, especially the left glute and the right inner thigh. So that's the biggest thing that people mess this up. I get a lot of questions on where should my knees be? People tend to keep them a little too low. You can still kind of get it, it's just harder to picture how to do the exercise correctly so I like to say about 90, maybe like 95 degrees of knee bend and hip bend up and then I just hang on to that. It helps you tuck your hips as well when you do it that way. So that's usually my recommendation but just make sure that you're keeping the activity on the glute or on that left inner thigh. Make sure everything else stays relaxed and just be really slow and deliberate about your movements because the reason you need to do this is because your body doesn't want to do this. So even though it's not super complex, it is kind of a brain exercise and you'll get better at it as you train those patterns and those muscles like to be active. So that is the left sideline right glute max progression.


Hello everyone. We are very glad to be here today. Let's get started our presentation today. The title is Kettle No Pets, but don't delete it until you investigate it. Let us introduce ourselves first. My name is Masaki Kimura. I have been contributing to OSS community as a developer. My area of concern are Kubernetes, storage and reliability. I'm one of the main developer of GraphRock Volume and CSI Feature and I've designed and implemented prototype of cross-name space volume data source feature, which became alpha in this year. And my name is Keisuke Saito. I have contributed to developing infrastructure. And my hobby is fishing, as shown on the right picture. Listen to me. I have engaged in providing OpenShift Managed Services to enterprise customers. And improving the function or machine scaling. Here are the contents of our presentation today. I will first talk about background and issues. Then Masaki will take over and talk about existing technologies, solutions and summary. Now let's begin. The first topic is background. First of all, have you ever heard of this analogy called pets versus cattle? This analogy is useful to understand how in structure management has changed until today. So you might have heard it somewhere. By the way, the left dog is my boss's dog named Dorup. And the right picture was taken by Masaki. Okay. Pets is described as a service model or preparturization like on premises. On the other hand, cattle is described as a service model or post-parturization. I explained the details of the pets and the cattle. Pets is a service model or preparturization. And this approach individual is important. Some of you may have dogs, cats or something in your home. You give your pets special name, greeting and care. When they get sick, you give thorough treatment until they are cured completely. This shows our idea of pets. Let's see how to manage services in this analogy. Services are carefully maintained as it could not be replaced. Unique name is assigned and when application or service fails. Recover in a significant time and effort. And the causes of failure are investigated to prevent recurrence. That's the idea of pets. And I will explain the cattle. Cattle is a service model or post-parturization. And this approach group is important. Although there may be a few people who are not aware of the benefits, there may be a few people in this room having cattle. You do not give your cattle special name, greeting and care. You give uniform cruelty, greeting and care. When they get sick, they are affected, individuals are removed. This shows our idea of cattle. When they get sick, oh sorry. Let's see how to manage services in this analogy. Services are equally maintained as it can be replaced in time. Random name is assigned. When application or service fails, the affected server is quickly discarded without recurring and replaced new ones for subscontinuity. This is a cattle analogy. We've compared the idea of pets with cattle until now. In recent crowd-native source management, we put emphasis on service availability. So an application or server is replaced or discarded with a new one if it fails. For example, last year in Japan, many chickens were disposed because of a powerful pandemic in the future reform. The cause of that was investigated and revealed that highly pathogenic policies were transmitted from wild birds to chickens. After the investigation, many chickens were disposed to prevent from expanding the infection. Originally, it started with one chicken, but this region was decided through leaving that one factory to investigate in detail. In other words, it is important to investigate the individual when the problem occurred, especially when the problems often reoccurs or spreads. The importance of investigating causes or problems is also applied to Kubernetes, not fatal. However, there are issues of failover, which is an obstacle for investigating the causes. In the next slide, I will explain the failover issues of investigating the causes. So let's see the issues. I will explain the failover issue of part-width volumes. First of all, failover is a function to switch to a backup system when application or server fails. It helps to improve availability and reliability. In Kubernetes, parts are also automatically failed over. However, we needed to be careful the part is stateful, especially when the part has volumes whose data may be corrupted due to concurrent light. I will explain the example with a diagram. Let's assume our environment that has one control plane and two nodes, nodes zero and node one. On node zero, one part with PV is running. If node zero fails and really stops, the ideal failover is that part moves from node zero to node one. On the other hand, in a distributed system, it is not always possible to assume that the state over the nodes is properly recognized. Thus, even if node zero appears to be stopped from the control plane's recognition, for some reason, node zero may actually be running. In this case, both node zero and node one parts will rise to the PV. As a result, data may be corrupted due to concurrent light. To prevent this problem from happening in Kubernetes version 1.23 earlier, there is no other way to failover than deleting a node. These are failover issues for parts with volume on Kubernetes. Next, I will explain the details of failover by node deletion that I mentioned. In Kubernetes version 1.23 and earlier, to guarantee that there is no right to PV, part is failover after node is deleted. Let's see the flows are failover with deleting nodes. Firstly, Admin detects the node zero failures. Secondly, Admin deletes node zero. And then we can guarantee that there are no PV lights because node zero has already been deleted. Finally, when scheduler on Kubernetes recognize node zero is deleted, part with the PV which was running on node zero will be restarted on node one. And because PV is written by single part, the part can be failover with no constants or concurrent light. The process of this method is that availability and reliability can be granted quickly. On the other hand, the coins, it is also related to the machine health check which we will explain later is that node zero, node zero is like metadata on statistics which cannot be retrieved from application is deleted. And it is difficult to determine the cause of failure. Now, let's talk about what kind of failover is better and what is ideal. To solve the issues that we discussed so far, there are two requirements for the idea failover or part with volumes. Firstly, failover is done. And secondly, node is not deleted. These are the goals to keep the data necessary to investigate the causes. Next, let's see the idea for a self-failover. First, when detecting the node zero feeders, second, fixing the node without deleting the without deleting the node. Facing the new word I explained later. Third, part which was running on node zero is failover to node one. As a result, node is not deleted and investigating the cause of failure can be done. This is an idea failover or part with volume. So, I talked about fencing in detail. I explained the definition and purpose of fencing. The definition is to isolate the failed node from the cluster. And the purpose is to prevent unintentional access to shared resources to ensure data integrity. Fencing can be achieved in other ways than deleting nodes. For example, I introduced two approaches of fencing. First one is approach of stopping the node itself. One of the approaches is to power off nodes to prevent a node from issuing IO. This is called power fencing. And rating node is also included in this approach. And second one is approach to prohibit access to shared resources. I introduced three persistent reservations and switch configuration change. The former is to buy persistent reservation instruction or schedule protocol limit which nodes can issue IO to a particular disk. The latter is to private routing from specific nodes to storage. Of course, there are other methods of fencing and you can choose the fencing method suits your purpose and requirements. In the next chapter, Masaki will describe the current failed over technologies implemented in Kubernetes. As existing technologies, I will explain machine health check MHC and non-graceful shutdown. Machine health check MHC keeps checking the health of nodes and there is unhealthy nodes. MHC is handled by machine health check operator. Let's see the detailed behavior step by step. First, machine health check operator keeps checking the health of nodes and there is failure, detect failure of nodes. Second, the operator request to delete node zero via crowd API and the node is deleted. After the node is deleted, the operator delete the node, node resource on the Kubernetes API. Finally, once Kubernetes scheduler detects that node zero is deleted, it can guarantee that there is no volume access from the pot on node zero. So the scheduler decides to fail over the pot. As explained earlier, if nodes are deleted automatically, pot with volume can fail over after nodes are deleted. On the other hand, because nodes are deleted, information that is required to investigate a cause over failure can be obtained from the node. Next existing technology is non-graceful shutdown. Non-graceful shutdown is a feature to allow failover of pot with volumes without node duration. It became stable in Kubernetes 1.28. A summary of its mechanism is that once administrators or tools convert to fencing a node and add a special time to the node, Kubernetes scheduler regards that there's no risk of data corruption and start failover of the pot. Let's see the detailed behavior step by step. First, an admin or tool detects a failure of nodes and fences node zero, for example, by powering off the node zero. Second, once the admin or a tool ensures that the node is fenced, it adds a special time to the node. The time which is very wrong is node.kubernetes.io slash out of service equals node shutdown, call on no execute. The time is used to tell the Kubernetes scheduler that the node is surely fenced or that there is no right access to any volumes from any pot on the node. Finally, once Kubernetes scheduler detects that the time is added to the node, it decides to failover the pot to another node. In this way, we can achieve failover of pot with volumes without node duration. The advantage of this feature is that because failed node isn't deleted, information for investigation isn't deleted. On the other hand, the disadvantage of this feature is that no standard mechanism of automation for fencing and adding the paint is provided, so it requires time for failover and cost for operations. Let's move on to solutions. Before explaining solutions, let's look back at the goal again. The goal is to achieve both failover is done and node is not deleted. In this way, we aim to keep the data necessary to investigate the cause. To achieve the goal, we utilize the external remediation feature of MHC. External remediation is a feature to change remediation process of MHC to any desired projects. By using this feature, we will automate the fencing and adding the paint to shorten the time to failover and improve investigations of a failure. I will explain external remediation feature itself first. In external remediation, we need two additional components, remediation CR and external remediation operator, which works together. Let's see the detailed behavior step by step. First, machine health check operator detects failure of node zero. This behavior is the same as the existing logic. Second, instead of integrating node zero here, machine health check operator creates a remediation CR. This CR has all the information required for the external remediation operator to do its remediation process. Finally, external remediation operator keeps checking the remediation CR. Once it detects that the CR is created, it executes the remediation projects for the node. The remediation projects are up to the developer of external remediation operator so any projects can be executed. We will utilize this feature to automate the fencing and adding the paint to shorten the time to failover and improve investigation of a failure. I will first explain a case that remediation projects are powering off the node and adding the paint. Remediation steps consist of three steps that are described as 3-1 to 3-3. Let's see the detailed behavior step by step. Step one and step two are the same as explained. Machine health check operator detects a failure of node zero and creates remediation CR. As remediation projects, external remediation operator first regrets the power of node zero to a cloud API. Second, after the power of success, the operator adds a special paint of non-gressive shutdown to the node zero. Finally, Kubernetes scheduler detects that the paint is added to the node. It starts to failover the part to another node. As a fencing, powering off the node is done automatically. Safe failover is achieved. Also, node is stopped instead of deleted. So we can avoid deletion of data on the node that is required to investigate the failure. As a result, we can achieve both failover is done and node is not deleted. We at least achieve the original goal now. However, status of memory is lost when node is powered off because system memory is burnt out. So from the viewpoint of improving investigation, we still have a room for improvement. Let's consider a further improvement. To solve an issue of the status of memory is lost, we already have a matured technology called K-dump. K-dump is a feature of Linux kernel to write out the status of memory to a disk for future investigation. We can request to take a K-dump by using non-mercable interrupt NMI, then the status of memory can be written out to a disk. The data retains the status of the failure on the failure, so we utilize it for future investigation. As described in the table, NMI can be injected externally because each platform, like bare metal virtual environment and cloud vendors, provide CLI, WebUI or API for it. From a fencing viewpoint, there is one more important thing to be mentioned. After starting to take K-dump, writing to disk is restricted to only to a dump disk. Fence K-dump is a feature to fence by detecting the start of taking K-dump. It fences by utilizing the fact that after starting to take K-dump, writing to disk is restricted only to a dump disk. On the other hand, there is a lag between successful completion of K-dump and K-dump regret and actual start of K-dump, so we are not sure whether K-dump is started just by successful completion of K-dump regret. Fence K-dump fences nodes by detecting the start of K-dump. Let's see the detailed behavior step by step. First, an admin requests to take K-dump and OS starts to take K-dump. Second, once taking K-dump is started, Fence K-dump send is executed on the OS. A special packet to notify the start of K-dump is sent. The destination of the packet is configured in AdWords by specifying the host name or IP address of the host that Fence K-dump listener is running on. Finally, once Fence K-dump listener receives the notification packet, it detects that the fence is completed. In this way, we can separately handle the request to take K-dump and detection of start of taking K-dump. Fence can be achieved by using K-dump. We can combine these features to make remediation logic to be fencing with Fence K-dump and adding the taint. Let's assume that K-dump and Fence K-dump send are already configured on the node and external remediation operator is implemented to handle the Fence K-dump packet to detect the start of K-dump. Let's see the detailed behavior step by step. First, machine health check operator detects failure of node zero and creates a remediation here in the same way. Remediation step consists of five steps that were described as 3-1 to 3-5. First, external remediation operator requests to take the K-dump by sending an NMI to OS via cloud API. Second, OS to take K-dump. Third, Fence K-dump send notifies that taking K-dump is started. First, once external remediation operator receives the notification, it detects that fencing is completed, so it adds taint to the node. Finally, Kubernetes scheduler detects that the taint is added, so it starts port failure over. In this way, port failure over is safely achieved with keeping the node itself and the status of the memory. As a result, more detailed information for investigation over failure can be obtained. In summary, as a background, we've explained a famous analogy of pet versus cattle. And even cattle or a cloud native word, investigation over failure are important. As a specific issue of Kubernetes for the background, we've introduced the dilemma of failure over and investigation. On Kubernetes node failure, it's hard to achieve both shortening the time to fail over and improving investigation of failure. It is because to avoid data corruption, fencing of failed node is required. On the other hand, existing technology only allows to choose either of automatically fail over but not good for investigation or good for investigation but not automatically fail over it. The existing technologies are MHC that provides automatic fencing by the rating node and non-graceful shutdown that provides manual fencing without the rating nodes. As solutions, we've introduced by utilizing external remediation feature of MHC, the remediation process of non-graceful shutdown can be automated. As fencing methods, power fencing and fence cadence can be used and rather one is better for investigation. That's all for our presentation. Thank you for your attention and any questions? Can you show the slide 4-5? Yeah, no, no, no, 4-5. Yeah, just one. You said that the worker node has a failure. You have some mechanism to fail over and graceful shutdown or something like that. What happened to the control plane's node has a failure? The same behavior going to happen? Actually, control plane should be configured to be redundant and so control plane itself works. Sorry, so your question is has happened on control plane server or control plane node itself. That same fail over something going to happen? Yeah, that's my question. Okay, so yeah, you can choose either of them to configure to be the same behavior or exclude the control plane to not to be fenced. Oh, okay. So that's user's choice. You have to select which option going to take. Yeah, and I think there should be no problem to fence control plane if the control plane has a failure. It failed over to another node to just like that you described in your presentation. So the control plane's pot is already redundant, so it doesn't need to be failed over in this sense, but yeah, you can configure as your idea. Thank you very much for your presentation. My name is Akihio Hasegawa. Could you tell me the example for using K-damp? You mentioned you want to do investigation. I'd like to have some example. What did you know using K-damp? Okay, so you mean which kind of investigation? Yeah, yeah, yeah, because we're also using the system. So sometime we have also a similar station. So K-damp is very useful or not? I would like to know. Yeah, what kind of problem? Yeah, actually, examples are so kernel bugs that should only be investigated from there. Is it sometime or not? So it depends on your environment. It happens, and I'm not sure the frequency. It depends on your environment or your workload. Okay, thank you. Any other questions? I think there's no questions, so thank you very much.


Hello everyone. My name is Alexey Stuknikov. I'm a technical support engineer at Red Hat. I'm helping our customers with their OpenStack and OpenStack site deployments. Two years ago I worked as software maintenance engineer at Mirantis. I backported the patches to stable branches of Mirantis OpenStack product and at some point I faced an issue with Swift that was related to Erasure Codes. Like every infrastructure engineer I was aware of different levels of technology behind how to use those rate levels to solve different tests. But those Erasure Codes problems that I faced were kind of difficult to me. I tried to use the verb to find relevant information. I found a number of documents provided by some storage vendors that were either ambiguous or describe how to configure Erasure Codes for this certain storage but didn't tell much about Erasure Codes themselves. Then I have tried to find the articles that describe some scientific articles that describe how Erasure Codes work in a nutshell. And again I have failed. Some articles were ambiguous, didn't contain the full information, others were so technical that it took for me a few days to understand what's going on under the hood. At that point I have decided to create a presentation or maybe write a paper that will help people in the situation to quickly overcome the limitation, to quickly get up with the technology and proceed with their tests. So today I'm going to say a few words about modern storage systems. I will try to explain why do we need Erasure Codes. I will provide a high level overview of methods behind Erasure Codes and provide the future references for those who want to know more about them. I will also explain how Erasure Codes are implemented in its own storage just to understand how the whole infrastructure solution works. Currently there are numerous specifications for storage systems. One of them is Erasure Codes. It states that there are block storages, file system storages and object storages. Basically for block storage client use ISCASI, Fiber Channel or some other protocol to exchange block rights and read requests with some block devices that are hosted on some remote storage system. From operating systems point of view, block storage is just another block device that is accessed in pretty much the same fashion as any local hard drive. And the block codes that I exchanged with the remote storage system are pretty much the same as the codes that I exchanged with local hardware drives. So file system storage. Generally clients are using some special operating system driver or software to mount remote file system locally. From client's point of view, he don't need to worry about all underlying hardware and he just exchanges file system requests with remote storage, object storage. This is the latest invention. Client will use API or some storage specific protocol to exchange codes with remote storage. From client's point of view, he should only care about object profile name and its location on remote storage. He don't need to worry about some file system obstructions, block codes and other things like that. Ten years ago when I started my IT journey, the only enterprise-grade storage that was available for the companies was a huge proprietary hardware storage shipped by different vendors. They used proprietary close source software that was executed on top of proprietary hardware to achieve different goals. Generally speaking, those that was quite reliable, properly documented hardware but it was very expensive, not very flexible and still have scale out issues. To overcome these limitations, a software defined storage concept was introduced. Basically, a software defined storage systems allow you to manage the data independently of underlying hardware. It means that you could build your storage system using some mid-levels or even low-end servers that will be quite cheap and depending on your storage system it could be very flexible. So pretty much everyone could build a petabyte scale storage in his basement. Software defined storages are generally limited to file system storages and object storages. Since there are generally no hardware limitations, software defined storages can be very flexible. This means that operator can define storage policies in very detailed and deep fashion. For example, it could set the way the data is distributed across your storage. It could select where exactly to put certain types of the data. It could set a comprehensive replication or other data high availability policies. Modern infrastructure engineers could face knowledge issues when they deal with such kind of storages because they require another level of awareness about what's going on under the hood. Besides providing an access to the data, storage systems should also care about data reliability and its high availability. Generally speaking, there are two main ways to store the data reliably. It could be either replication or erasure codes. So let me explain why we generally need free replicas and why this kind of replication is safe for modern software defined storages. Let's imagine a software defined storage that is deployed on storage nodes that are not very reliable. At the same time, those storage nodes are hosted in a good data center. It means that you shouldn't care about network outages, power outages or any other issues. Basically you should care only about the node failures. So let's say that you have calculated and estimates for your nodes uptime. And you know that your node will be up 99.9% of the time. If you will not replicate your data, then the raw estimates will tell you that the data will be lost in one year. So after some node is failed and the data is lost, you will not be able to serve client requests. If you will use two replicas, it means that you will save two instances of the data in your storage. And if your storage system will probably recover that data, then there is high probability that you will not lose your data in some reasonable amount of time. Storing three replicas is generally considered the solid and reliable way to store the data. So if replication can solve this issue, why do we need the ratio codes? Well, the problem is that replication is a simple and reliable way to solve data reliability. But if you want to store some cold data like full database backups or maybe some video files from recent conferences or images or stuff like that, then you probably wouldn't want to pay the money for proper replication. That's a use case for the ratio codes. Basically the concept behind the ratio codes is simple. The original data is separated into segments and encoded. After the data is encoded, you get a number of additional segments that contain special checksums. Those segments are independent from each other. Each segment can be calculated independently from original data. The math behind the ratio codes allows you to lose a number of segments of encoded message and restore original data without any problem. So let me provide a brief overview of the ratio codes terminology. So basically the operator defines a number of rules. The operator or the ratio codes driver developer defines a number of values. First of them is K. The K is a number of data segments in encoded message. In this case K is equal to 3. There are 3 data segments in encoded messages. There could be a number of additional parameters but the simplest case requires only one. It's M. M is a number of parity segments in encoded messages. In this example M is also 3. Generally speaking, the operator or developer could set a number of additional parameters like encoding seams, number of additional parity segments and stuff like that. But generally we'll work with those two. So the process of transforming original message into encoded one is named encoding. The process of translating encoded message with or without some segments to original one is called decoding. The math behind the ratio codes could be used in a way to detect the errors. But generally speaking modern storage systems don't use a ratio codes in that way. That's why the failure model for a ratio codes is a ratio. It means that a ratio driver will not check for data consistency. It will simply calculate the original message using existing segments and will not restore any errors in decoded message. So there is no difference if some bits from G1 segments are lost or the whole segment is lost. Let's check the math behind the process. The simplest example where we have two data segments, two parity segments and L is number of words for each device. The thing is that ratio codes don't deal with whole data segments. They deal with small subset of data segments named word. Generally the word size is some number of bytes. Here is a simple example. Let's say that we have original data that contains two segments, G1 and G2. There is an L word in each of those segments. And we want to calculate two parity segments. The math behind the ratio codes state that there is function F that allows you to encode original message in a way that you will get a message that contains two data segments and two parity segments. At the same time each parity segment could be calculated using functions F1 and F2 in a way that first parity segment will be calculated using function F1 from both data segments and the same for second parity segments but you need to use function F2. Those parity segments are independent and basically that's the translation that we will use on the word level. One step further. Generally different kinds of matrices are used to transform original message. The matrix that the whole matrix that is used to transform original message is named distribution matrix. Here it is. Distribution matrix is generally contained two submetrices. First one is identity matrix. Identity matrix is a general name for this kind of matrix that generally contains once on these cells. Coding matrix is a special matrix that is calculated using special algorithm like Van der Monde or Cauchy algorithm. Every element of coding matrix is calculated in predictable fashion so that coding matrix will have an inverse matrix that will be used for data restoration. And because erasure codes are used to restore and to decode and encode words not real numbers we need to define operations over Galois field. So generally speaking we just multiply distribution matrix to original message that looks like a matrix with one column and we get encoded message that contains. Original message and parity checks. And the final step here is a practical example for first three words of data segments distribution matrix and the result. So let's name the distribution matrix A, the original message D and encoded message E. If we will lose some segments in encoded message we could just remove those rows from the equation and get modified A, D and E matrices and we will still form a valid equation. So it's this equation in simplified form. Then we can compute an inverse matrix and multiply both sides of this equation to this inverse matrix. With this multiplication we can simply remove this thing and we will get this result. Basically it means that we can compute original data using modified inverse matrix of original distribution matrix and modified encoded message. So the concept behind erasure codes is that simple or complex I don't know. So basically every erasure coding driver will first restore data segments and then it will recompute parity checks if it will need to recompute data. I have tried to include more detailed examples of math and code behind it but because all computations should be performed over Galois fields and because it generally takes many additional libraries the code and math wasn't very readable. So I would like to provide these two references for those who want to learn more about practical math and coding examples. James S. Plank is a scientist and a developer who wrote derasure software. This software is in fact a default choice for most storage systems today. The first paper would be used to get practical math examples and explanations how Galois fields and matrices would be used to encode and decode data. The second paper contains practical software examples written in C that will be useful for those who want to build their own prototype of erasure codes. So what does it mean for real life storage systems? As I have said, storing three replicas is considered safe. It means that you basically can lose some number of nodes and if you properly restore the data you will be able to serve customers with it. The production erasure codes are designed in a way that you could lose even more nodes and still will be able to restore original data. For example, there is a public object storage as a server provider named Backblaze. They have their own block where they write about their infrastructure details. They claim that they use erasure codes to reliably store the data in their production cluster. They generally store 17, for every original data message they store 17s data chunks and free encoded chunks. Basically it means that they can lose three nodes and still serve customers requests. At the same time, the size of encoded data is only slightly bigger than the original one. Red Hat also provides erasure coding software. Red Hat Erasure Plugin is designed to support detaining values supported for Red Hat Erasure Plugin. Strictly speaking, in the worst case you will get the same level of data reliability by using slightly bigger size of your storage. At the same time there are a number of issues behind using erasure codes in production. Since data segments are distributed among your storage, you will get additional network loads and delays when you will try to rebuild the data for serving customers requests. Your storage performance will probably degrade after some nodes will fail. If some node fails, then you need to decode original data to serve customer requests if some data chunks are lost. So obviously there is additional CPU load for encoding and decoding operations. It is generally hard to implement partial writes for erasure coded software defined storage. Because you need to recompute coding segments for original data if you will write a small update. For example, I know if a client will add a few strings to some text file, you will need to recompute, in the worst case, some words of coding segments. In the best case, some words of coding segments. In the worst case, you will need to recompute all coding segments. So partial writes is one of the challenges of erasure coded storage. As I have explained, an erasure code EC driver will only encode and decode the data. But there are a number of tasks that should be solved by software defined storage. For example, how will you enforce certain EC parameters in your cluster? What nodes should perform calculations, signature data to serve customer requests? How should you restore lost data segments? How should we detect data corruption and storage failures? How should we implement additional abstractions like failure demands and other things? So all those tasks should be solved by software defined storage. I will use self-storage as an example to show how these tests were solved by self-developers. Self-storage data in pools. Pools are abstraction layers on top of your storage. For every pool, you can define various parameters. For erasure coded pools, you could select proper driver. There are a number of drivers available for self-storage. It's Gerasia, ISA, pretty much the same as Gerasia, but optimized for Intel processors. Locally repable code that is used to optimize some calculations behind erasure codes. And S-H-E-C is basically the same concept as locally repable code developed by our other vendor. So you also can set basic settings for every EC driver. You could set a number of data and parity signals. You could choose a failure demand. For example, you may want to distribute your data among separate nodes, among racks, or even data centers. You could configure coding techniques, basically select the type of coding metrics. So this could be done for every pool. Self will automatically select the nodes to store the data. It will use a cluster map and object names to build an ordered list of storage nodes that should be used to store this data. First node in this list will be used as primary one. Primary node will be used to decode and encode the data. It will be used to distribute the data among other storage nodes. It will be used to rebuild original data from segments to serve customer requests. As I mentioned before, erasure coding doesn't fix errors in encoded data. That's why self periodically checks if stored erasure coding segments are consistent or not. And monitors other storage nodes availability. Here is a practical example. Let's say that we have an object named naen with the following content. We have a self storage pool with free data segments and two parity segments. We want to write this data to this pool. At first point the self client will find proper mapping for this object. It will detect the nodes to write the data. So it will get this kind, this ordered list. And the first node in this list will be used as primary one. So client will send this object to primary node. Then primary node will use jarejo plugin to encode the data. As a result it will get a number of segments. And then it will distribute those segments among other nodes. So first three data chunks will go to first three storage nodes. Two parity chunks will go to the last two storage nodes. I took this example from self documentation and it's pretty accurate. But there is one issue behind it. As I have mentioned before, jarejo code plugins do not operate on whole data segments. They operate on words. And there are a number of optimizations to calculate parity chunks properly. One of such optimizations is data striping. The thing is that a segment of encoded message by default should be four kilobytes in size. As a result the original data will be added by primary OSD and the content will be slightly different. The first segment will contain the whole message and the number of padding bits. And the first two data segments will be purely padding bits. So slight change but could affect those who want to restore some data manually. So let's check how the data is restored. First, self will use its internal algorithm to detect OSD failure. It will wait for some interval and recompute cluster map. Then it will collect encoded chunks that are still available. In this example it will get a data chunk from second storage node and it will get a parity chunk from fourth storage node. Then it will use those chunks to decode original data. Then it will check the modified cluster map to get new nodes for computed data and parity chunks and transmit data chunk to OSD6 and parity chunks to OSD7. So this is a basic example but it's very close to the things that happen in production environments. Previously I have mentioned that there are a number of drivers for erasure codes in self storage. I have mentioned that one of them is locally repairable code. What's the difference between locally repairable code and the erasure plugin? Well, locally repairable code will compute additional parity chunks for a subset of chunks in encoded message. So let's say that original message was computed into four data chunks. These are those chunks and two parity chunks. Those are those chunks. Then to simplify restoration process, locally repairable plugin will also compute additional parity chunks for a subset of segments in encoded message. So additional parity chunks will be computed for every three segments. As a result, when some of those chunks will fail, primary OSD will not request all six chunks from other nodes. Instead, it will use existing chunks in every segment to recompute other chunks in the same segment. So references for those who want to learn more. Generally speaking, the first thing to check is a number of articles by James S. Plank. He is the person who developed the erasure plugin and his papers contain a very deep and good observation of how this plugin works. There are a number of documents for different storage systems that explain how to configure erasure codes. In my opinion, the best I've seen is set documentation. It contains a lot of practical examples, describe how the data is distributed, how it will be restored, and explains the various actions the set will take after certain conditions occur. It's also worth mentioning that pretty much everyone could deploy a self-cluster using virtual machines and check how the data is stored in his environment. So it would be very useful for those who want to learn more about erasure codes using their notebook or official computers. I could also recommend a look of a bad place company. It contains a lot of interesting articles about the infrastructure. For example, they explain how they built the hardware nodes, how they overcome certain limitations or certain failures. It could be very useful for those who want to improve their knowledge about infrastructure behind storage systems. So that's pretty much it. I could answer some short questions. Sorry if it was too fast and too informative. Well, first of all, it depends on the plugin you use because different plugins treat those parameters differently. As a result, you may face certain performance issues if you will not select them properly. The other issue is data failures. So those numbers basically define the way your storage will come after failures. So if you will, the number of priority checks is basically the number of nodes that you can lose. So in this example, the public storage provider decided that they would like to store a huge number of data segments and a relatively small number of priority segments to provide proper data reliability by using only the small subset of their storage to provide those kind of things. So a number of concerns behind those parameters. But generally, it's computation performance and the failure models that you have for your software defined storage. Thank you everyone.


Hello everyone. I'm Ben. I'm from Automatic and I'm a full-time contributor to WordPress. I am also the training team team rep for 2023 but today I'd like to talk to you as someone who is passionate about helping people learn. I'm passionate about helping people learn about WordPress and I'm passionate about helping people learn about WordPress in their own language. So looks can be deceiving but English is not my first language. Japanese is actually my first language. I was born in Australia but my family moved to Japan when I was two years old and all my education was done in Japanese. My friends are Japanese. My wife is Japanese. Life outside of WordPress is Japanese for me. And so as somebody who speaks multiple English and Japanese, I see a difference in the world about how information is accessible or not accessible to different languages. There are a lot of resources on the internet for people who speak English but I want to see the same information presented to people who even don't speak English. And so today I'd like to share with you how you can contribute to the localization of content on the Learn WordPress website. So Learn WordPress. How many people have accessed this website in the past? Learn.wordpress.org. All right. If you haven't accessed it, please get your phone out and type it into your browser and open it in a tab so you can look at it after the session is over. I want you to focus on the presentation for the moment but do open it in your browser so you can take a look later. Learn WordPress. This is the official education website for the WordPress project and the goal is to become the definitive educational website for all users of WordPress. So we want people who use WordPress, like Build site, come to this website. We also want people who develop WordPress to be able to come to this website and find the information they're looking for. We want designers and extenders to use Learn WordPress as their go-to resource and then we also want contributors, community members to be able to use this website as their resource also. So yeah, if you haven't seen this website before, do check it out. The Learn WordPress website, we have new content produced every week. We have some content pretty much every day that comes out here and so somebody has to make that content, make sure it's updated and keep the learning WordPress website just current and fresh and new for people who visit. And that is the training team's responsibility. So the WordPress training team looks after the WordPress Learn website, the actual website itself, but also the content we produce there. So the training team has actually been making educational content since 2013. So we're coming up to 10 years this year. WordPress is 20 years old, so half of that, the training team has been active. But the Learn WordPress website itself, we've been stewarding this site since 2020. So three years now, the Learn WordPress website has been going. On the website, we have four types of content. We have online workshops, we have video tutorials, we have text-based lesson plans, and we have online courses. So let me introduce each of these to you. Online workshops, these are live interactive sessions often hosted on Zoom and other video conferencing tools. To be honest, this is my most favorite type of content on the Learn WordPress website. You get to meet WordPress users from all over the world, interact with them live, get their questions, help them learn new things about WordPress. So I really like these. Online workshops, the topics vary. So we have content for beginners to WordPress, like how to make your WordPress account, how to log into WPA admin, what the block editor is. We also have content for developers, so how to make a block theme, how to use the REST API. We have presentations, but we also have live demos of people actually coding, and you can ask the developer questions while they're making plugins and themes. We also have just general discussions about how the internet works, like what is a domain? And what is SEO? How can you improve your SEO? And finally, we also do online workshops about the WordPress community. So what meet-ups are, what different events are, what the different teams are, and how you can get involved. So in English, pretty much every single day, there is something going on at Learn where you can be part of and learn about WordPress. The second type of content are video tutorials. So these are roughly five-minute videos about single topics. So if you want to just learn a specific feature about WordPress or just get information about one specific point, then these videos are really good. We've started to localize some of these videos as well. So you'll see in the screenshots here, we have a Japanese tutorial video. We also have a Portuguese tutorial video. So we've started to see some of these get localized. Lesson plans. So lesson plans are text-based plans for teachers of WordPress. So online workshops and tutorials are for learners of WordPress who want to learn, but these lesson plans are for the teachers. So we often hear meet-up organizers say they're enthusiastic about meet-ups. They want to organize an event, but they don't know what to talk about or what, like, what discussions to have. And so these lesson plans give meet-up organizers 30 to 60 minutes worth of content they can take to their meet-up and deliver. So they have screenshots, they have learning objectives, they have assessment exercises that everybody can do on their own computers. Basically, it's a meet-up packaged on a single page for you. So we have these lesson plans as well. And because these are text-based, we're seeing an increase in people translating these lesson plans into different languages. And the fourth type are courses. So as the name suggests, these are online courses you can take. We have about 20 courses at the moment, and unfortunately none in languages other than English. Every single course at the moment is in English. So you have to be able to speak English to take these. Again, the course topics vary between basic WordPress usage, development, blockchain development, how to get involved with the community, etc. So these are the four types of content on Learn WordPress. When you look at the statistics, 83% of people on the world do not speak English. 83% don't speak a single word of English. So everybody here would fall in the 17% over this side of the graph. We all speak at least a little bit of English. But in reality, most of the world doesn't. But when you look at the Loan website, only 11% of our content is in languages other than English. And when you think about the hundreds of languages there are, we only have about a dozen languages represented on the Loan website. And most of those languages only have one or two pieces of content. So there is a huge gap here between the need in the world and what Learn is actually producing right now. When you break it down, online workshops about 19% in January were in languages other than English. So we've been doing Japanese workshops since August last year. From autumn last year we did a couple of Greek online workshops. And this year we've seen some Bangalore workshops happening as well. So we have Japanese, Greek, and Bangalore. Combined in January, these were about 20%, 19% of online workshops hosted. Tutorial videos. We have over 130 videos on Learn at the moment. Out of those, 15 have been translated. So good job. But we can do better. We can definitely do better. Lesson plans. We have over 100 lesson plans. And out of those, 15% have been translated. Well, 15% are in languages other than English. So we want to still translate all these lesson plans. And courses is still 0%. So there's a huge potential here for people to localize content. So now that you know about Learn and what Learn is about, how can you contribute to the localization? Now when you talk about localization, I think everybody first thinks of translators. So we need translators. And that is very true. But what I want to share with you today is there are more ways than just translating to localize content. Translators is one important role, but that's not the only role. To summarize, well, I'm about to share in the next few slides. This URL says it all. So look at this URL. It's make.wordpress.org slash training slash handbook slash getting started. The training team launched a brand new onboarding program this month. So last year, we noticed people would come to training. They were enthusiastic. They had excitement. They wanted to get involved. But we didn't have a really good onboarding system for them to understand how they can contribute to learn. And so for the last few months, we've had a project going with different volunteers creating a new onboarding program. It starts from the same URL, but depending on your interest, it branches off into different parts. So if you're interested in translating, we have an onboarding path for translators. But if you're interested in the other areas of content localization, this same onboarding URL will take you there. So look at this URL later as well. If you're interested in localization, this will give you all the details for that. So that's my presentation session. So if you want to walk out, take this URL, and that's it. But let me give you a bit more details. So this is the general flow of how content is translated.  And then you translate the content. And then you review the translation. So we generally have content reviewed by two or three people before it becomes published on Learn. So we have a review step. And then finally, it's published. If you're making new content, there's an extra step at the beginning, which we call topic vetting. So at the moment, the training team has over 100 topics of content we want to create, 100 topics that different users have suggested to us they want content for. And so these topics go through a vetting process to identify the priority. So depending on what WordPress development is going on at the moment, depending on the needs of the users, there is a vetting process so we can prioritize different topic and then people can build out those content. So if you're making new content, there's a topic vetting, then you create the content. And then there's a content review step. And then finally, that content is published. So that's an overview here. And what I want to point out is there are different roles involved in this process. So I have a couple of colored bubbles here. These are the different roles that are involved in this content creation process. So on the far left there, we have content translators. And this is probably what first comes to people's minds when you think about localization. But then in the center here, we also have content creators. We have translation reviewers. At the top right, we have subject matter experts who vet the content topics. And we also have editors. So what I want you to pick up here is that there are different roles that work together in order to localize content. In the training team, we pull it out as a model like this. So on the far left, you have content creators. These are the people who actually write the lesson plans or record the tutorial videos or build out the courses. We also then have content translators. So these are the people who look at the English content and translate that into their different languages. We have subject matter experts. So these subject matter experts are the experts of different topics. So you have a subject matter expert about WordPress development or plugin development. And then you have a different subject matter expert about WordPress SEO. And then you have a subject matter expert about content writing. And the reason why we have subject matter experts is so that content creators don't have to be the experts. Content creators work with subject matter experts to build out the content. So you can be someone who is passionate about video recording or passionate about building online courses. You don't have to be an expert because there is a subject matter expert there who will work alongside you and provide you with the information to build the content from. So we have content creators, content translators, subject matter experts. We have editors. The editor's primary job is to review content before it is published. But editors also look at content that has been published to see if anything needs to be updated. So we all know WordPress is constantly getting updated. So the interface changes. And we have to change the screenshots in our material. So editors keep an eye out on the published content to make sure that is constantly being updated as well. We have translation reviewers who review translations before they are published. And you can probably start to see there are a lot of different people involved in producing a single piece of content. So we have administrators in the center there who connect all the different roles together and make sure they work smoothly to publish content. So if you want to get involved with localization, we have at least six areas here where you can get involved with. But there is one more role I want to point out today and encourage you to apply for. And that is the locale ambassador role. So Learn WordPress has predominantly been producing English content for the last couple of years. And last year we started a new push to get content translated into different languages. So we have different roles within the training team. And if every training team member spoke 200 languages, then we could all just translate the content ourselves. But we don't speak that many languages. And so what we have to do is we need to make connections with the different local WordPress communities to encourage those people to come in and join our efforts to build out these translated contents on Learn. And so we need someone to connect the training team with the local community so that they understand our goals and our passion about translating WordPress. And the local ambassador can also introduce the needs of the community to the training team. So a particular community might have a hard time adopting the block editor. And so they need particular resources about that. Or a particular community might be lacking resources around WordPress development. So they need development related resources. And hopefully the local ambassador can relay that information back to the training team. The training team can make the material. And then they can also encourage the local community to translate the material and send it back. So here we have at least seven roles in order to localize content. And just in case you missed it last time, I want to encourage you to visit this URL. So once again, that's make.wordpress.org slash training slash handbook slash getting started. And if you come here, this will introduce you to these different roles and help you figure out how you can get involved. Our onboarding program is somewhere between 30 and 60 minutes. If you're very new to WordPress contribution, that's totally fine. We will help you set up your Slack account, slap a GitHub account, make your WordPress.org account. But the onboarding program will also walk you through your first contribution. So by the end of the 60 minutes, if you chose the content creator path, you would have got involved with content creation within onboarding. Or if you chose the content translator path, you would have got involved with content translation within that first 60 minutes of onboarding. So I highly recommend you come and try our new onboarding program. Now to wrap up, I do want to introduce one more project the training team is currently working on. And we're calling this the content localization foundations project. So try saying that fast 10 times content localization foundation projects. And what this project is, is by the end of March, so we have about a month and a half left, we have identified 10 most impactful content on learn. And we want to translate these 10 pieces of content into five different languages. So we've chosen 10 pieces. And we want to translate that into five different languages. In order to do that, we need to find local ambassadors so they can connect us with the local communities. We also need to recruit translators and recruit editors. And then we want to translate 10 pieces into five languages. So let me tell you how the project is going. Currently, Gujarati is winning with five out of 10 pieces localized. So give a clap to Gujarati. Hindi has translated four out of 10 pieces. Tamil has translated two out of 10 pieces. And Indonesian has translated one out of 10 pieces. Now the goal was five languages though. And at the moment, we have four languages that have translated content. Now I will say there are some other languages that have started the translation process, but we haven't got anything published yet. So what I want to challenge everyone here today is your language to become this fifth language here. So we still have a spot open. If you're interested in getting involved with this program and getting your language just translating 10 pieces of content in your language, please come to me after this talk and I'll help you get involved. But really, if we can get more than five languages, that would be really wonderful. If we can translate these 10 pieces of content into 10 languages, that would be awesome as well. So if you're interested in getting involved, do let us know. And just in case you haven't written this URL down, I'm showing it one more time. This is your chance to get your phone out and take a picture here. We want you to come join the training team in our localization efforts. And the best way you can do that is to go through our onboarding program and this will show you how to connect with us in Slack, how to give feedback, how to find content to translate. So once again, that URL is make.wordpress.org slash training slash handbook slash getting started. Thank you so much for listening. That is how you can get involved with localizing content on the Law and WordPress website. Thank you very much.


Good everybody on YouTube Facebook and see everybody loud and clear good. All right everybody.  I got a lot of good emails that are coming back And I'm going to send out an email today to all your students I want to know how you did an ALF that was you know a Incredible run and you know what I? Quit in the morning, you know I made my money a quit in the morning and you know what I always tell you this I could have came back In the afternoon did well, you know, but we had Tom sauce nor from from tasty works That was here and thick and we had a great interview if you haven't watched it Let me tell you it was probably one of the best interviews I've ever had with Tom we got and you could see what we sink so well together great great It was a great interview and don't forget to miss that but my point is this as I was getting ready You could have came back in the afternoon. You could have traded ALF look at this thing going into the afternoon This stock literally ran from $13 at three o'clock three o'clock and look at it from that run from 1350 over to $17 I mean, what more do you need? What more do you need when it comes out? I had a nasty shake though here I could see right there, but boom that was what that's we call a slingshot But ALF was great the two biggest winners where these was not only this one It was ALF and also the plug plug also. I did well with that one. I didn't make super Great on that one because it did have some nasty shakes It had this big big little slingshot right here to open and they kind of held up went up and down and then after like 10 10 o'clock once it broke this resistance at 30 to 50 Just kept going up and up and up and up nice little stock plug You're very familiar with the stock we trade the stock back, you know It was over here back in January that thing ran from like 30 all the way to about 75 It's just been dwindling dwindling down one of the big first days up on that stock So it was a great day yesterday. And why was it because it was Tuesday? We know Mondays Tuesdays Monday's not the greatest Tuesdays Wednesdays and Thursdays are hump days So we all did very well Grant says very nice day yesterday with you and Tom old friends. It is listen I know for about 20 years, you know listen great traders always stick together. We work together You know you surround yourself with good mentors and we always learn from each other, you know I learned something yesterday from my my son actually, you know being a doing an internship in Chicago He's at the the loop and he explained to me what the difference between the loop I don't know if you guys know that but in Chicago the way, you know, like what part of the area you are You know like in New York, we have uptown downtown, you know, they had basically they do by the train So I thought I'd do something with the rivers, but but it was pretty fun But anyway, uh, listen if you're watching us for the first time or you're new here to Cybertrain University and so on Listen, whatever happened yesterday. You missed the run. It's okay. Don't worry about it It's always a brand new day in the market So you got a couple of good stocks that I'm moving today We're gonna check them out and we'll show you what we found. I'm gonna start off with this our Ito very inexpensive stock nice level one stock You can if you're an advanced trader here at CT you could trade several thousand shares already trade over five million shares already in Pre-market we got about another 25 minutes for the market opens up That one looks pretty good right there. It's trending. You know, listen It's you could see it basically went within a 10 cent move right there not terrible But it is the third biggest active stock on the Nasdaq and it is the third Biggest percentage gainer on the Nasdaq market also another stock that I found this stock was a $50 stock It got crushed. Obviously you could see it was an IPO I like to see things like this, you know as as a trader and you know trading a lot of IPOs You know, you never buy IPOs everyone's always looking to take a profit But eventually they find their sweet spot and then you could look long term But you could see it and had a nice push here back in in June where it ran from like an eight dollars went to a high About 15 which is a pretty substantial move But it came right back down and you could see the candlesticks is starting to make a little bit of an up here You know the only disadvantage about it is that it's got a big spread small tier sizes It could be a swing trade. I'll check it out, but day trading as of right now. It went from my 50 Just dropped down to 850. I'm not a fan of that.  You can get in and out of it It's gonna hop over here. I got the I got the clove here I'm gonna check out in a little bit I'll bring there's another big stock that I like actually the next one, but it's it's it's it's nice It's slow You're gonna trade too much of it. You can get in and out of it. It's pretty controllable clove. We did very well with this stock yesterday It was another one. I forgot to mention clove. Let me tell you this thing ran at 930 We're from $11 all the way up to about 13. He had a big iceberg order started making Higher lows then came right back down. She's doing great. You know listen you could see she broke yesterday's highs clove was a fun stock I'm gonna bring over here level four so you can see what's going on So we had a big iceberg order right here. It just got filled. It's holding here pretty strong, you know You got some 19,000 shares out there, I mean that's not super huge, but We did see some big ones in this one yesterday There was some I think there was what a quarter of a million shares out there which at that $13 price range was it? Yeah, it was right. They have a 14. Let me tell you Yesterday in the cybergroup room and once again if you're watching on YouTube Facebook You always welcome or maybe watch this recording just like us friend us Do a trial get into the room, but let me tell you there was some great iceberg orders out here and me and Josh When we were trading yesterday and certain on these stocks, what you know You know the like the ALF and and the plug and like the clov you had to focus on those orders And you know what if you didn't get out at those orders Boom you in big trouble big trouble, but There was some pretty cool shots where those things just literally got filled and when you see like a 300 or 400,000 share order getting filled and you're talking about five million ten million dollars worth of stock Getting snatched up like that. Boom. I don't know if it was a short squeeze, which I thought it was There was one stock where there was like a 200,000 share seller and then we saw another I said Oh my god, look a dollar more. There's a 700,000. You know, that was a short squeeze, but Some people got some big deep pockets out there. You know what I mean? Just follow the money another very nice little inexpensive stock right here is that's moving pretty well this morning is this ENTX So I'm gonna bring up ENTX on the level four right here, but nice little push right here gapped up I saw it earlier. She wasn't going anywhere, but she started to make a little bit of a move right now So $6 650 she's moving up really really nicely. You can see that nice long-term chart right there There's a little bit of an iceberg order out here and that really I don't really say anybody out there There's a third. There's a 30,000 share seller. You could see him right there at 716 Could you see that on your MacD? Huh? I guess not Gotta follow the money everybody. So that's basically that guy right there is Not really not really anywhere to be found other than this stock We did trade it back in March when it ran from a buck 30 up to ten dollars up over a Thousand percent. Okay, so you still want to look at that AMC, huh? You know what I mean like listen I we talked about this yesterday with town sauce go off and everything It's a great stock to fun stock. He's talking about the options market on it But you got to remember as a trader on what we do. There's always something moving You know as a day which could be more volatile and less risky, you know So be very careful those mean stocks. Another one. I want to throw up on that list is this VV PR VV PR nice trend looks like it's got some highs over here at 819 Looks like it's gonna test it again. If you can get through this not bad nice good volume You could see it's also maybe yesterday's resistance levels You could see it right here a couple of resistance levels right here a major resistance at 798 looks like we broke that That's pretty nice. I like that 880 looks like the next resistance any orders out here. It's gonna hop over here. Oh, we're getting a ladder Getting a ladder not really any big orders out there And I'm just going up and look and see the same thing all the way out there up in the higher levels Yep, we're getting a ladder here. That's a really good sign. We all know that cyber traders You know that that's something we teach in class very very important know that ladder Oh, 10,000 share buyer just an arc that came in. I like that. Alright, that's what we want to see So stock looks really really nice. That one looks the nice little trend. So we got one two three four five six stocks. That's it You know what what is what it is? One thing I'm very happy look on my watch list on the right a lot of greens You know a lot of greens got one little red with AMC, but everything looks a little green nothing up huge But we're getting some greens. Okay looks like bitcoins doing pretty well today, too Coinbase is also making a little bit of holding up here pretty strong I like Coinbase it keeps it for holding here pretty strong at these price ranges I really hasn't gone anywhere. The longer it stays at a price the better it is.  You see that little volume right there spike. There's a buyer right here You know what that's like bad luck that just happens. You know what I mean you got it I said, I mean at 20 25 cents is a pretty big Hit but there is some support levels right here at 93 So we'll see what happens up the guys out there you could see there's a big order right here at 1386 to 27,000 right around there All right traders Let's get ready for the open you got a little more than 15 minutes before that happens Hopefully we have in the great day like we did yesterday. It's so unpredictable. Listen ALF I just want to bring this up and just show you something ALF in the morning Gapped up, but I really didn't expect it to go as much as it did and then all of a sudden right out of the gate It did this little ricochet held pretty strong and then boom the thing was off the races that could happen So there's a lot of stocks that we were on our watch list Some of them will do absolutely zero some of them actually be losers and some will take off We don't know until the market opens up But as of right now, there's will be new ones that will pop up pop up at 930 if we see something will say something But as pre-market goes, you know, that's what we got and we'll guess we'll see you back at 230 Remember traders cyber group members you see something you say something if you new year to cyber train University And you're a trial member in the room. Remember, we always tell you please don't buy anything We didn't train you we didn't do anything You're here to watch not to watch me my instructors You're here to see if other people make money in the room. Remember, it's not about making money It's about controlling those losses. That's the most important about being a successful trader. Good luck Everyone happy trading. We'll see you back here at 230