In 2021, the monitor of the reference staff will look at the slides. First of all, welcome to the day one of Yukon, and welcome to my talk, Journey to Titan. I understand that it's the revisions and resource origins in the world. I'll start with an introduction to me. I'm Ms. Preyanta Satham, and I'm familiar. I work back today as a journalist in the equation at GM, and I'm also a real estate entrepreneur in this 1.9-year cycle, and I'm also a technical lead for special interest for the connected experience. So, what are we going to explore today? This talk is going to discuss the school thing about how these resource versions in for that it is objects, maps and tools, something called revisions and exit. That is going to be our discussion for this particular talk, in what are revisions and exits, and how they take the direction of revisions all the way through these most versions. So, starting with this, this is how all of it is discussed. This is from the previous talk, and I'll go to our video. So, that's the point here. Here for this particular talk, what I want to mention is that every time we interact with a new discusser, on the only component we can interact with is the commandist API server. Either we are doing it through QCGL client, or web impoverished, managed discusser, or maybe using program language as the case, what we are doing is we are sending REST APIs, and REST API is coming to the API server, and every time there is a change in the command discusser that changes the system in persistent storage there, or in this particular case, XT, it could be blocked with another department in persistent storage there. So, for this talk, we are going to talk about XT, and what is XT? XT is a distributed library key policy for the most critical data of a distributed system. In this case, we are talking about Kubernetes as the distributed system. So, for this talk, we will talk about moving away from a Kubernetes object. Here, I have a screen shot from my range, and I don't know if you can see here, the environment, which makes the environment, and I'm trying to get out into the admin format. We'll move over the way of understanding where is this resource version coming from, going back to exactly where it's coming from, which is XT, so this is going to be the discussion. Let's start with what are the XT permissions. So, revisions acts as a snapshot for objects to be in the key value store. For example, in Kubernetes, every time we are creating any resource objects, or we are modifying them, we are delivering any kind of change that is happening. So, all those snapshots for us in a Kubernetes are stored in a key value store, and in case of XT, we are stored as revisions. Revisions are 64-bit clock that is maintained by XT, and it actually shows all the values that is changing the state of XT. So, the key, when we are done with XT as a key value store, the key is the revision, the global counter, that is always in Kubernetes. So, one thing to understand is that revisions are always implemented. So, with that in mind, key values for XT, revisions are in the key, and anything that is changing the state of XT, key values store becomes the value of that key. I want to show how that data is stored inside XT in an example. So, this is my setup. I have a multiple container here running from the bitnami XT image, and I am just exerting inside that over the container. I am adding a few tools here, called soup, also downloads another new called chicken, chicken curry, and that is what I am doing here. This is the Guarana dish, what I am doing is finding the latest version of chicken. We are pulling it down, we can exit together and we can develop it in that way. We have a command line, T-C-D-C-D-R, X-C-D-C-D-R, that is what we did. We should wrap up our key values store. Here I am setting up a command line for every point. T-C-D-C-D-R, A-B-I, that my client, I, I run the version 3A. Since we just cleared new container, our key values store is empty, and we can check that status here, what I do, I don't want you to look at it as a header section, that is the most important part for us. And even in that header status, that information that is highlighted here, currently we can see our vision is one, that means we don't have anything, all we have is we have created, and we have initiated others. Let's try to add something inside this key value store. Here what I am doing is I am adding five values, something like foo one, bar one, all the way to foo five, bar five, and I am trying to retrieve some information from here. If I just run E-T-C-D-C, C-T-L get dot, I don't get anything, but if I try to get it in a JSON format, what I will see is this output. Here we can see our revision has incremented, and it has incremented by five. That means every time we added a new key value pair, foo one, bar one, that incremented by one, and since we added five key value pairs, our counter was incremented by five. So now at this point, after adding five key value pairs, our E-T-C-D revision counter is at six. Here, if you recall, we added values of the form foo one, bar one, all the way to foo five, bar five. Here I am asking E-T-C-D to give me all the values that are prefixed with foo. So here we can see, we'll just here, in this example, we'll try to understand how whenever we added one key value pair, for example, when we added foo one, bar one, how that changed our E-T-C-D key value store. So it is going to show all the key values which are coming on that side. That's the key KBS array, sorry, for the space here. I'll try to show all the key value pairs that are coming here. So we can see, we have revisions set to six here, that's what we already discussed. And that is our first key value pair that was added. Here we can see, when we started, our revision was set to one. When foo one, bar one, key pair was added, our revision was two at that point because we added a new change, we changed the state of our key value and we got those key fills attached to our key value pair as well. Create revision, more revision version. So what create revision is, it's the revision of E-T-C-D at which this key value pair was created in the key value in E-T-C-D. So when we added foo one, bar one, it was incremented by one and it got the create revision as two. It did not get any modification so far, so more revision is also two right now, but if it had changed any modifications after that would be set to the revision at which this key value pair was last modified. And version is also set to one. This means this is the first version. If there were modifications the version counter would have incremented. If there is a deletion it would be reset to zero. And above and below we are seeing the key value pairs. So this was the first key pair we added. Same as for foo two, bar two, we can see that got create revision as three because that was the state of, that was the revision of E-T-C-D at that point when foo two, bar two, key pair was created and so on for all the way to the last pair foo five, bar five. And then also see it is also giving us the count of our key values or whatever data is stored inside our E-T-C-D key value store at this point. So that is five. Let's try to delete one key now. Let's try to delete the first key pair we added which is foo one, bar one and when I ran this command E-T-C-D, C-T-L, delete foo one, we see we got this revision bumped up by one. So even though we removed something our revision is not decrementing, it is bumping up. So again our revisions, the revision counter in XCD is always ever incrementing. We also see another new field here, deleted one. What it is doing is it is adding a tombstone value to our key value pair here. What that tombstone value will do now is it will tell us, tell our E-T-C-D, C-T-L client. Now please ignore. Whenever somebody is asking you to carry all the values in the key value store just please ignore it is deleted. So there will be some snapshot of that key value pair still be there in our key value store since we have marked it with a tombstone. We will not get that value now. So if I try to get all the data now prefixed with key foo, I will not get foo one because that now has a tombstone marker attached to it. So now we have deleted this key but we know that the key was present in our key value store at some point and that is the interesting part of E-T-C-D. E-T-C-D is maintaining all the changes that are happening in different revisions. So and we can use that to time travel back and check out what are the past state. And this is helpful in scenarios like for example we had a crash, we had a failure and now we don't know what was the state of our particular object at maybe what was the last known state and what we can do with that series it will just pull off whatever was the last known state present. It will assign that revision and we can just get the state of that object from there. So let's try to do that here. We know at revision 7 is that is a revision when we actually deleted our foo one key pair and we do not see anything here at this point. There is no key value array here but if I go back one revision, if I ask it to give me a revision the value of foo one bar one key pair at revision 6 I will be able to get my data here. So I can see there is it is giving me a key value pair which is set to which has a create revision of 2, more revision of 2 and that is exactly the value that is the time when we had created the foo one bar one pair for the very first time. So we know that this key should not be present. It has a tombstone marker. But now if we recreate that key, what will happen now? So let me just go ahead and run this command and let's say I gave another value, a new value to our old key foo one and I just set a value bar one new again we know revision counter is ever incrementing so revision is now 8 and I will use some tool that comes from HCD repo itself to just check the raw state of our database that the key value registry. So what I'm doing here is I'm cloning the HCD repo just going inside the tools folder. There is a tool, honey tool called HCD dump DB building that and I'm also grabbing out the database from the container I created. Now with this new tool that I have going to decode or just get a more cleaner version of a readable version of whatever database we retrieve from our container. So this is what I'm getting out of our container at this point. We can see all the way from bottom to up we have on the left side we have something called revisions ref equals and then there is on the right side we have value. So we can see revisions is our key here in case of HCD and that whole thing after value is the value assigned to every revision here and we can see our revisions are incrementing from bottoms. We started at two and we went all the way to eight with all the operations we have done so far and it is incrementing. We can also see here. Let's start with second that was the first time we created the pair foo one bar one and we can see it was created at second that is the value we get in create revision we are also getting the more revision version values. Now if we jump to the revision main seven this is the time when we deleted our foo one bar one key pair and we do not see a value here that is and our version is also zero that is how tombstone is supplied now you know every time somebody will ask for foo one key pair if they are asking for the data at revision seven they will not get it but we created the pair again at revisions eight and we can see now the interesting part is we can see the created revision is eight so it did not consider that foo one was already there already present at some point in the key value store now it just registered it as a whole new key pair and since it was created at revision eight it got the create revision and more revision both set to eight and the version is one since it is being treated as a whole new pair. There is another concept of compaction here so we just so our data is being stored inside at CD in our sequential manner and if we talk about any distributed system for example kubernetes we are talking about thousands of operations thousands of state changing operation happening in let's say in a minute maybe millions in an hour and we do not want to fill our key value store just with all those regular like day to day tasks that are happening we want to keep our data safe or whatever is required so there is a concept called compaction in at city and what we can do is we can ask at city to remove everything that has a tombstone value for example if I just go back here we attach the tombstone at revision seven and I can ask at city look before revision eight look for all the key value pairs that has a tombstone attached to it and all the occurrence is related to that key value pair and remove them that is what is compaction here so here I am doing the same thing I am asking at city to compact before everything before revision eight and what I get as a result of that is I took a new refresh copy of my database in the first month and down what I am getting here is revision second and revision seven is removed from our output because that is no longer relevant that has a had a tombstone attached to it and it can be safe to be ignored at this point and city CDL also has a watch so watch here means we can start a watch on all the changes that are happening on a key value pair and let's try to understand this here I have two terminals here let's say on the terminal side I am starting a watch and here I am putting up a new key value pair foo one bar one update so this is what I am doing is at revision eight we created our foo one key value pair again and now I am updating that and what I see on the right hand side is our revision is bumped by once now our revision is nine create revision is still eight because that was the time our key was last created again more revision is now set to nine because it now got updated and version is two because now we this is the second version this is a new update if I do it again if I set another value to foo one I will see the same changes here also revision is ten, revision is ten and version is bumped to three but if I go ahead and delete it what I will get is there is no create version anymore only thing we are getting is a more revision that this is the revision at which this key was deleted and value is some garbage there is no value at this point so this is the time where this key pair has a foo one attached to it it is tying it all together we just learnt about etcd how data is being stored inside etcd but our title of this talk is understanding Kubernetes resource version and etcd revisions so let's tie it all together to Kubernetes now here I am creating a Kubernetes cluster with kind just doing the same thing I have a clone of etcd just building etcd CTL and I am coping this binary that I just built on my host machine into our control plane of our kind cluster that we just created above and one more thing I am doing here is I am using our nginx deployment that is available from Kubernetes project I am just doing a apply action on that what we are getting is we are just creating a deployment with three replicas in our newly created cluster let's try to now inspect our newly created Kubernetes deployment object using kubectl first what I can see is this is a redacted version of the entire output but what we need is the value on the right hand side we see a field called resource version that is currently set to one six to six and we want to understand how this is coming back so here I am executing inside into my Kubernetes cluster control plane again I am adding my jq and that is a handy tool to decode our key value pair values and since this is a Kubernetes cluster and our etcd is installed with certificates attached to it I am just putting this entire certificate values into an alias so let's try to get the same deployment value that we just deployed a new enginex deployment into our new cluster let's try to grab that value from etcd now and how etcd store Kubernetes objects is somewhat like on that path slash registry slash deployments it's like the registry the kind of object namespace and yeah so we are asking it find out anything that's there in the find out any deployment that's there in the default namespace and give me the keys from there and what I am getting out of there is that again going back to the kvs arrays we are getting a key which has a string attached to it registry deployments default enginex deployment that is the deployment we just created it has a create revision set to some value 1533 but we know when we are deploying let's say we when we are applying a Kubernetes deployment YAML it has maybe multiple replicas attached to it so a lot of changes must have happened on it maybe a new replica was created and there were a lot of series of operation happened so that was the last revision at which the last change happened and it was stored in etcd and that is what we are getting out from here mode revision and if you recall the object we just saw back here in our last slide we also saw the resource version also has a similar value to what we saw here mode revision so we can conclude here is etcd mode revisions are what we are getting back as Kubernetes resource versions we can also try to check here with another watch we can run a watch on one side using kubectl another from etcd ctl client one thing to understand is whenever etcd runs a watch or implements a watch it is we need to tell it what is the next revision start watching from there so what I am doing on the right hand side is I am trying to grab the current revision adding current revision of whatever is the deployment present with the key registry deployments default and I am adding an increment to that and asking etcd please start watching from that next increment all the changes that are happening so this is what I am getting from kubectl watch when we applied our yaml this was the first event that happened our first replica whatever some object some resource object was added and that was the resource version said to it 2966 same is the case with etcd when the first addition operation happened this was the first event that was added in our key value pair that was added in our etcd key value store we can see both the create revisions and more revisions are 2966 which is exactly equal to a resource version which we got from kubectl and that is because this is the first event and there is a series of event that had happened after that so we are saying something was modified maybe another replica was created and it got that signal back so we can see that is also being reflected in our etcd watch as well create revision is still 2966 but our revision is now being bumped to whatever is the latest revision at which etcd state was changed and there is a version bumped here so let's try to grab this entire Kubernetes database that we are just talking about whatever values we are getting from here in etcd let's try to see what does it look like so this is what I'm doing here I'm trying to again copy the database from our etcd key values registry from our kind cluster control in container and I'm using the same tool again etcd dumpdb to check how does it look like this is how it looks like there are million of things happening and most of these things are regular things Kubernetes is deleting most of these things every maybe 10 minutes you can as admin configure etcd to even do more compactions most of these are I will not go into the concept of leases but there are leases happening leases being released most of these are those modifications so there is a lot of care caretting stuff happening here but there are objects here as well and I have just tried to grab one of them and that also looks somewhat like this and let me just try to trim it to a more readable version here this is how our nginx deployment works at least the first one when we just added our object to the key value store this was the first entry that was added to our key value store so we got a revision key here which is set to 2968 we got a value that value is also redacted it's a huge value mostly in a proto buffer format and just redacted it for the sake of readability here and we are seeing created more our 2968 equal to the very first resource version we got yeah and version 2 is it's the version so it was the very first change that happened on our nginx deployment resource object so that was the first version we got from there so continuing from this thing that I learned this is what blew my mind this was the first time I learned that the fact that my entire Kubernetes cluster is just coming down to this etcd dump and all my Kubernetes resource objects anything namespaces, deployments boards, CRDs everything is stored inside this persistent data storage layer in this case etcd that is what I am seeing in this dump so all I am seeing is that key value pairs that is exactly what my Kubernetes cluster is made up of so it's okay to conclude my Kubernetes cluster is nothing but a collection of YAML files which with all this data stored in as multiple regions etcd I want to thank Michael Gash I got the inspiration of this talk I learned about this concept from this particular talk there is a great article a blog article also attached to this that has more details so thank you to Michael Gash and with that thank you so much for the talk and before I forget this is the QR code please scan it for feedback thank you and I am open to questions the mic is somewhere in the middle if somebody wants to take it check one so I noticed using a number of operators that appear to use washes they'll often come back failing stating that the resource version is too old or is otherwise out of date I'm not sure as an administrator in Google has not been helpful if I should be worried about this or what I should be doing about this or if it's just noise as things are off sorry I did not hear the question properly can you repeat again so while using a number of operators picking on Rook specifically they appear to use watches internally and they come up and are constantly complaining that the resource version is too old on their watches I assume that's because it's getting cleaned up yeah so XD had a different implementation of not let's say skipping all the revisions that are happening but this was intended at least from what I have known so far this is an intended behavior we are intentionally skipping everything and going back to all the way to the revision where we know this was the best stable state of that particular object I think that's a design decision here and that is an intended decision thank you I need to check that I'm not sure about that first thing are we confining the HDD database to a specific site like what I see is 8GB is the max why is there a limitation of 8GB for HDD well I am not the HDD expert here so I honestly don't know why if there is a limit at all but if there is a specific use case you are talking about can you clarify more maybe there are people here who can add is there an auto defragmentation that happens always auto defragmentation as in what there is a defragmentation and then we generally have a defragmentation right anytime the HDD feels we generally do a defragmentation so you can configure HDD for at least I know auto like regular compaction I am not aware of there is a concept called defragmentation or fragmentation but I am assuming if there is a configuration available for yeah you can as an admin of HDD configure how often you want to do the compaction big question so if you can't answer that's okay when we look in Kubernetes we see a resource version which is the etcd revision which is really interesting thank you for explaining that it looks like an etcd though each key also has a resource version which is specific to that key 2345 so I guess my question is can you give some context for why when we look at it in Kubernetes we want to see the global the global etcd revision number instead of the revision number for the individual key you mean why we are getting the resource version as the more revision value and why not the one that is on the left hand side if we look at like foo 5 here when we look at that in Kubernetes we get a resource version of 6 because that's the etcd revision number the mod revision number for when it was created I could see another world where we would get a resource version of 1 because that is the version associated with foo 5 here in the etcd database so I'm just trying to understand why from a conceptual level we want to receive 6 there the etcd revision number and not the version number of the particular key in etcd if that makes sense so I'll try to repeat what I understood you are talking about why are we getting the more revision we did not understand like I don't know which line you took as an example like for example if I have an object I'm talking about the one which is rev main 6 for example there on the right hand side the mod is also set to 6 so that whatever we are getting as a resource version in Kubernetes that's basically telling us that's the last revision of etcd where that object was changed so whatever change that object state in etcd whatever was the revision of etcd at that point that is what we are getting out of resource version with that I think I'm done with my time thank you so much for coming today


warning about the content that I'm going to cover today. Because we're talking about code of conduct enforcement, we're talking about the kinds of things that cause you to need to enforce your code of conduct, which includes things like harassment. I've tried to stay away from gory details and just focus on generalities and your response. But this can be a really emotional and uncomfortable topic, so I just want to let you know that that's what's coming. And I don't mind one bit if you need to take a break, walk out, leave the room, do what you need to. It's totally fine. So I want to start by saying that the reason that I work on this and the reason that I work on community event organizing is because it's really amazingly important and meaningful to me that I'm able to help create welcoming spaces to people, inclusive spaces, spaces where people participate. And a code of conduct is one of the very effective tools that I've found for doing that. A lot of what I'm going to talk about today applies to online communities, open source projects, as well as in-person events like this one. I'm going to focus my examples and a lot of the details on what happens in in-person circumstances, but everything that I'm going to talk about is actually applicable in a variety of kinds of community contexts. So as an event organizer, let's imagine, put on all our event organizer hats, we're going to imagine that we have a code of conduct for our event because somebody came to us and they asked, will you add a code of conduct? I think that that would really help encourage more people to come to our event and participate. And you said, okay, yeah, that's great.  What's going to happen when somebody actually makes a report? So we're going to address that. Your code of conduct might look something like this and you don't need to read this. There's a lot of text. Just know this is a thing that is a code of conduct. And we're going to break down in detail what makes this effective, what makes it more than just a document that you put on your website. So an effective code of conduct starts with your values. And when you think about your event, you might say that you value things like education, friendliness, participation, a diversity of perspectives, people being able to share their experiences. A code of conduct, when you see one written, will often start with a statement like this. Open source and feelings is dedicated to providing a safe, inclusive, welcoming, harassment-free conference experience for everyone. And that's a statement about your values, right? That's a statement that you value people being able to participate without harassment. It's also a commitment to the people who participate in your community. The next thing your code of conduct may cover is what behaviors are inappropriate. And these are often itemized in a lot of details. Again, examples are provided. You can go look this up later. But the important thing to note is that it's detailed. And it's detailed because you want to assure people that you understand the range of experiences that they have and the range of things that they may be scared of or concerned about experiencing. Next, we talk about what actions we choose to take. And this is very deliberately open-ended. Community organizers, event organizers, always have discretion to decide what the most appropriate actions are. But by stating some specifics here, you're also saying this is serious. It is actually very serious that you understand the code of conduct that you participate according to the code of conduct. And we're going to do something if you don't actually follow that. We might also say behaviors that are appropriate, like participate in an authentic and active way. And be mindful of your surroundings and fellow participants. This provides the other side of the picture, right? There are things that you don't do. And then there are things that you do that support the community. We talk about the scope of the policy. That may include official community venues. That may include other business outside the formal space of the community. It includes in-person and online communication. We talk about who to contact. Both often by name and also providing email addresses and phone numbers. This is important because you don't want somebody to be stuck looking for the person with the right badge all the time. You always want another route so that somebody who is brand new to your space, to your event, your community has a way to know that they can make a report and have that be heard. You might also state some reporting guidelines. These things include collecting the contact info for the reporter so you can follow up with them. The name or names of everybody who was involved in the incident. You can talk about when and where it happened and what happened, gathering as much detail as possible. Any additional context? This is things like this person has done this before or we've had similar experiences or they also posted on Reddit about this. Additional context that helps fill it in. And then whether it's ongoing or whether it was an isolated or time limited incident. So the good news is that you don't have to write a brand new code of conduct in order to do this. You can use an existing code of conduct. I've listed a couple here that I've worked with personally that I know are thorough and ready to go. And it's actually important that you don't write a brand new code of conduct if you haven't had experience with this because there's a lot of details to get right. And there's a lot of implications in what can seem like fairly small statements that have community implications and both legal implications as well. So now that you've got it on the website, you need to tell people why you have it. If you just throw this as a link that nobody can find, it is going to have no effects. It may have negative effects. People can't really work with you on this unless they know what's there, why it's there, what you expect from them. So if you organize a user group, you might take some time and talk with people, spend five minutes, right? We have a code of conduct. Why do we have a code of conduct? Well, we really appreciate the welcoming atmosphere of our user group and we want that to continue. Or at the start of the conference, just spend a couple of minutes talking about it so that people understand that this is important to you, they understand what's expected of them and they also have then identified somebody that they can talk to you about it. The next thing that you need is a response team for a small event or a small community that might just be two people, but it needs to be at least two people. Again, this is emotional work. This is sometimes very sticky, complicated, multifaceted work. You need backup, you need support. You need somebody who can help provide coverage when you're not available for whatever reason. And you need somebody to help keep you accountable, right? To make sure that you're making the best decisions for your community. It's also good to think about how your response team represents the people that you're trying to include in your space and how you have or can build credibility through who your response team is. I'm not saying go find people to automatically add diversity and just check that box. Don't go say, oh, you're female and you know things about this, right? That doesn't end well. But think about, you represent your group and you represent the best of your group, right? Think about how what you do and how you do and who you are is part of building that credibility so that you can respond effectively to incidents when they come up. At a big event, coverage can be a little bit more complicated. You might need a duty roster. You should think about both on-site and off-site events like if they're sponsored parties. You need regular check-ins to trade notes to make sure that your reports are getting passed to the appropriate people and that something doesn't happen in one part of your event and then another part of your event and then another part of your event and you don't know that that's happened because you haven't checked it. So make sure that you do. Make sure that you have a way to store your records. One of the groups I work with uses Dropbox for this but make sure that you have something planned in advance. It can be a file folder, that you're putting written reports in. Something so that you aren't in the heat of the moment trying to decide like what do I do with this piece of paper or this email log that I have and have that get lost in the shuffle. And then you should also think about assigning somebody to cover social media because there are lots of ways that harassment can start or be amplified on social media. The other thing is also to think about the on-site security. A lot of spaces have their own building security and those are people that you should get to know and coordinate with. So these are some of the kinds of incidents that you might experience. This is not comprehensive. It would be really hard. We don't need to. But I wanna give you a sense of the scope of what might happen. So the next thing that I'm going to do is outline a response structure. There's a lot of items here. We're going to step through them one by one. I'll put the slides online later. You don't have to take notes, it's okay. You can take notes. But we're going to break this down step by step. Okay? So let's start with an example report from something that could happen at a user group meeting. You know, so without thinking about like, wow, you know, like, how do I impose this big complicated process on it? Let's just talk about what happens here, right? Somebody comes up to you after the meeting and they say, hey, I overheard this really offensive joke and I'm not comfortable with that. I don't think you should be comfortable with that. I think that the person should be told, you know, that that's not appropriate in our community and you go, yeah, I think that's not appropriate in our community. So you collect this information, right? This is your report structure. When you respond to the report, you're going to go through a series of steps and this could happen over email in this kind of circumstance. You could follow up with the person and say, hey, we received a report about a code of conduct violation. This is the nature of that violation. This is when and where it happened. This is not appropriate. This is why that's not appropriate. There are consequences. Those consequences in this case might be, we expect you to not do that again and we will ask you to leave the group if you do. When you tell somebody that they violated the code of conduct, they can have a variety of responses and you can't control how they respond. They may choose to apologize. They may be really mortified that they did something. We hope that people understand why these sorts of behaviors are inappropriate but you can't control that and you can't effectively force them to apologize. That doesn't have any real benefit to your community. So they may say, wow, I'm sorry. Or they might say, I didn't see anything. What are you talking about? The important thing to remember is that you control who participates in your space. So you can't control their reaction. You control participation and the way that your response is designed should be about that. It should be about controlling the space for participation in a way that's supportive for your community. When somebody reports an incident to you, it's important to focus on the details and the statements that they're making, not on your judgments about what occurred or what may have occurred or what you think of the people who are named in this. You should write it down, not trust that you'll remember this accurately. And you should assume that all reports that you receive are credible when you hear them. This is not the time to try to assess like, well, when Joe says something, do I trust Joe? That's not what this is about. The privacy of the person making the report and all people named in the report is very important. Make sure that if you're in person, you step into a more private space, someplace you won't be overheard. If you're online, go off of the public mailing list into private email, Twitter, move it to DMs, move it to email. But in general, make sure that you're not letting people overhear this or leaking information about what's going on while you're still collecting information and responding to it. When somebody makes a report, there may be some immediate needs that you should address. This can be a really stressful kind of thing to do, to have to say that something happened that somebody was harassed or that they experienced something that made them feel unwelcome. You should think about safety first. Like, are there immediate things that you can offer? Can you ask, do they need a quiet room? Do they need a place to rest, water, a friend, a safe walk out of the building? Make sure that you address those kinds of things before you move forward with the report. And let the person that you're talking to dictate their own needs. Ask, offer, don't force, don't impose. And the reason that we need to do this is because the things that constitute code of conduct violations can sometimes be very traumatic. The person that you're talking to dictate their own needs. Ask normal, healthy responses to trauma that can make it very difficult to go back into the conference, go back to the meeting and participate comfortably. People can also be reminded of past trauma in a way that brings up those same kinds of reactions. And when we see somebody is triggered, that's what we mean. That they are re-experiencing trauma. So these things can include being completely exhausted, being disoriented, forgetting what's going on, needing to lie down, needing a glass of water, needing someplace that's quiet and dark and safe and whatever re-establishes that you're okay right now, things are safe right now, there's nothing you need to do.  Just look for how do we create the most safety, the most feeling of safety right now. So once you have this information, you've addressed the immediate needs that need to be handled with the people that have reported this to you, you assess the impact of the incident. And that's basically the scope, right? How many people are affected? Did this happen publicly, privately? Are there spillover effects?  Or was this something that happened off in the corner? And then we look at risk. We look at how dangerous it is for this thing to have happened and how dangerous it is that it could happen again. So that can include medical and legal requirements. That can include repeat offenses. That can include, you know, we cannot have this happen again. Like that would be the end of our event and the end of our community. And we put those together. We put this together to look at what kind of an incident we're addressing. And that can range from something like an inappropriate joke made in private to something that involves persistent coordinated harassment. And once we have that, we determine an effective response. And that uses both the scope and the dangerousness of the incident to decide what kind of response that you need. Next, we gather our resources. We may need other people from our organizing team. We may need past incident logs to compare notes on something that may be a repeat incident. We may need organizers from other events that have dealt with similar circumstances to give us feedback on our situation and how we might handle it. We might need people with specialized expertise such as in mental health or domestic violence. Crisis lines, there are local crisis lines that can help in an emergency for a lot of these things. We may need 911, you know, when in doubt, call 911. And we may need online safety resources like Crash Over Eye to help us with things that happen on Twitter or Facebook or Tumblr or other social media sites. And then we do our best to resolve the situation. We try to find a fair and proportionate response. We refer back to our values, you know, refer back to the community that we're trying to build and support. And we think about how we can be responsible to the people who are directly impacted as well as the entire community. And under pressure, it can feel like you need to make big, scary decisions. But I want to assure you that you never have to make a permanent decision right then and there. You can always say, this is for the time being. This person is removed from our event and future events for the time being and we will review it and if we change our mind or if we decide otherwise, we will notify people. You don't have to come with a permanent solution right now. And in a lot of cases, you probably shouldn't because there's going to be more reflection, there's going to be more information gathering. You're going to look at what the impact was at that point and decide what your community needs. Then you follow up with the people who are affected. You tell them if you found a code of conduct violation, you tell them how you responded. If there are other things that you need to discuss or follow up on, you cover that then. Again, you do this probably over private email or an in-person conversation and close that loop. You may need a public response if it's something that happens in public at your event that a lot of people observed. I really like this response from Allied Media. It's, again, it's a lot of text to read, but I just want to point out that they acknowledged that it happened, that these instance happened in public. They talked about the impact on the community and they talked about their response and the tone is really directed at demonstrating support for the people in the community. So when we do this, we need to be cautious about making public statements that can contribute to retaliation. Naming people can be a factor in this, also giving very specific details about instance can be a factor. It can be tempting to be in shame especially, but the actual impacts can be very negative for the person who was harassed or the people that were affected. And this will tend to target the people in your community that are most vulnerable. The people who are seen as having the least support. So back to our user group incident. We're going to follow up with the person who made the report. We're just going to email them before the next user group meeting and say that we found a code of conduct violation and we told the person that what they did was not appropriate. We told them that they will be asked to leave if they do this again. And we assure them that we're here if you need to report anything else. If you need more support, more resources, just let us know because we appreciate your participation in our community. And then you regroup. You look at a little retrospective about how this went. What did we learn? Do we need anything? Did we get in over our heads? Did we feel like we didn't have enough support or enough ability to respond? You know, what do we want to take care of next? And is there anything that we forgot to follow up on? This is also when you can thank each other, you know. Being committed to this report together, that's to this work together, that's really important, right? And you're investing this time and this emotional labor in your community. You know, thank the people that you work with on this and make sure that they know how much that's appreciated. And then you can congratulate yourself because you did. You responded to a code of conduct violation. You didn't die, I hope.  You know, so be kind to yourselves because that's hard work. So now that you have this information, you can use this as a template to build your own incident response program. You can also do training. I like to talk with people about specific scenarios that they're most concerned about and make a checklist, you know. We are worried that somebody may bring a weapon to our event and we're not comfortable with that. Okay, so we're going to do this, and this and this if that occurs. We're worried that this person that we have kicked out at a previous event may come back. Okay, so here's what we're going to do. You know, and you can write those things down. You can document them for your response team and you can refer back to them so that you're not putting yourself under pressure to be doing decision-making at the same time that you're in the midst of a very stressful and possibly argumentative situation. So that's what I have to say, thank you. I am working on an online resource center and a training program around this. I would love to have any or all of your help. I'd love to talk to you more one-on-one about this topic too and how you can use this in your communities. So thank you.


Are you ready to search anything, anywhere, like never before? Check this out. Welcome to Universal Search. So what makes this different? You can create anything from here. Task, docs, either reminders, right there. First, download the ClickUp desktop app. From there, if you're on a Mac, hit Command-J. If you're on a PC, Control-J. And just like that, you can search anything. Task, docs, goals, anything. Once the Universal Search Click app is enabled, you can access it from just about anywhere. You can click on the Search field in the global action bar at the top of your screen. You can also use commands in this search. Just hit slash, type, and press Enter. So let's say you're in product. Now rather than to switch all the way over to Figma, you can just search it right in Universal Search. Say with me in social media, always have to use Google Drive. Now don't have to switch, it's right there. This is just one of many steps we're taking to keep all your work in one place. So check it out and let me know what you think.


Välkomna till den här säsongen på hälso- och texansproduktionen i och beyond Viking Age. Min namn är Eva Andersson-Strand, och jag har med mina kollegor, Carlotte Heden-Sjöna Jundsson och Marianne Bädler, organiserat den här säsongen. Vi har varit alla och tittar på att träna dig, se dig och hitta vad du tycker om våra idéer. Jag har lagt alla presentationer till en powerpoint. Vi ser hur det fungerar. Det var inte säkert tidigare, så jag hade att göra det väldigt snabbt. Så jag hoppas att den korrekt presentationen är lagt till den här säsongen. Men vi får se. Okej. De halv miljoner från 650 till 1150 så fundamental change in Scandinavia societies. Från central sheftens on the therapy of Europe to well-established Christian kingdoms with new types of economical systems and trading structures. State formations, urban systems and the influences of Christianity, warfare, exploring and colonising regions outside Scandinavia. New trade trade routes and the modes and organization of the production were important parts of this development. And although it's well known that club culture had an important impact on the societal development, this perspective is yes to be fully integrated in the general discussion of the social economic and culture changes that took place during this period. So most textiles produced in Viking aids, they are generally considered to have been produced in a household context by women on their spare time. So we now want to start the discussion on what type of textiles that should be included in what we can call a household production. So the first is what is the definition of a household production. Well, we would say that the household production should suddenly cover the household's own needs. One should have a general knowledge and skills. The raw materials should be commonly accessible and not working full time with this production. We do have several sources in archaeology. We have the textile finds, one from the item book that you see here from the harbor. But we also do have the textile tools that can tell us a lot. And the tools together with experimental archaeology can take us one step further and we can start to discuss at least suggest what type of textiles they might have been produced. We also have the iconography. We have the picture stones and we have the tapestries and so on. And of course using them with the knowledge that they are recorded later and translated several times by Icelandic sagas and other text. But what I think is also very important to include in this discussion is so to say the landscape of textile production. We also need to include the resources. What technology did I use? How did the textiles look like in order to discuss production and how the production was organized and in that way also come to the society. The textiles that we talk about most in Viking Age is the textiles for clothing. And we have an idea what the clothing looked like. But it's clear that most of the textiles that we find from Viking Age they are actually only fragments. And we have only very few parts or more complete parts of costumes preserved from this period. We do have quite a lot of mention of the textiles in the sources. And we should know that the people in the Viking Age they use textile and leather and fur to cover 90% of their body. And they use textiles from the cradle to the grave. And in the sagas we can read about textiles high status costumes. Military costume. Simple clothing. Warn out garments that have been mended and used and reused. Magical garments. Textile given as gifts. Textiles for trade and exchange. And together with the work that Ulla Mönring, among others and Maria Nivelo have done on iconography we can get an idea about what was a male costume and a female costume. A male costume with an over and under tunic trousers, breeches, kaftan, cloak, jacket, shoes, boots. Etcetera. And a female cloth costume with linen dress, wool dress, skirts, tunics, cloaks, jacket, shoes, boots, hair net and wails. So together with analysis of fragments, text, iconographic and context we can actually discuss a little bit about the costume trends. But the fragments they are very very important because the fragments they can tell us of the text of production in different stages. They tell us about the fiber procurement, the fiber preparation, spinning, dying, weaving and finishing. And we know from the textile analysis that the material that they used was flax, hem, maybe also nettle. We have sheep wool, maybe wool from horse and also from goat. We find tools from fiber preparation, from flax preparation. Here you have some lindklubbel in perfectly well written swedish but they should be the claps we are used to break the stems and break the pad also perfectly swedish. That is a shuttering notch to take off the wooden parts from the flax fiber. It's a very long process and I will not go into detail. When it comes to the wool, the wool they have to be the wool has to be sorted. That is also something that we see in the analysis that the wool has been very very carefully sorted and prepared, sometimes combed with the aid of wool comes and then spun with spindles. And spindles and spindle worlds are one of the most common finds from Viking Age settlements and here you have some nice examples from Viking Age and they are from here to be where we also have good preservation of wood. So here you also have some excellent spindle rods that we generally don't find. We have done experiments, we have tested the spindles, testing the size of the spindles and what they actually mean for the production and in order to better understand the outcome. And what we can see from those tests is that with a light spindle you can spin a long fine fine thread and with a heavier spindle you spin a coarser thread and then you have all the variation. So it's the size of the spindle, it is the fiber material and of course in the end also the spinner that dictates the outcome of what you want to produce. And this is also something that we see in the archaeological material. Here is for example all spindle walls I have recorded from Haithaboy and you see they go from five gram up to quite heavy. So here we got an idea about that they have produced a wide range of textiles. The dye analysis also tell us that they have dye textiles with different types of plants for example blue with vod and red with matter. Furthermore the small fragments can tell us something about the weaving techniques they knew, plain weave such as tabby but also different types of twill and other types of weaves like rockade tapestry and pine. We know that they have been working and working and been weaving on the work weighted loom and in Viking Age we see an increasing use of this type of loom because we find so many loom weights. Just for this setup we needed 60 loom weights. The cloth is 60 cm wide. It's a twill. And again we can see that the small loom weights they are more convenient to use to one type of fabrics while the heavier loom weights is convenient to use for another type of fabric. We have a tendency to underestimate how much raw material and time consumption that was needed to produce textiles just for clothing. Here we have done some calculation. It's based on one male costume weighing around 4 kg. For this in a very coarse quality and this is coarser than Viking Age textiles in general but we said 10 freds per centimeter you need 30 000 meters of yarn and this is equal to 14 square meters of coarse cloth. It would take them 32 days to prepare the fibers. 60 days to spin all the yarn needed. 2 days to set up the loom. Approximately 28 days to weave. So around 122 days if you're working 10 hours a day it will take to produce this very coarse textile. But what about other types of textiles? So far I've just talked about clothing for costumes. We also know that there was a need of textile for furnishing. Tapestries, pillows and mattresses, curtains, bed linens and tablecloth. Are these textiles also produced in a household context? What about luxury textiles? Tablet, woven bands, silk applications, embroideries, etc. And then I will say no sales, no Viking Age. If they couldn't produce the sales it would have been quite impossible to sail around on the North Sea and further on. And the need of sale was quite substantial. Erik Andersson has calculated that in 1030 1 million square meters of sales were needed in the old Danish kingdom. And I have calculated for the laddership. My question was how many textiles were necessary and used on a ship similar to the Danish laddership with 32 horsemen. So just to produce the clothing, the sale and some tents needed 410 kg raw material which would take more than 24 years for one person to make working 10 hours a day. And then another 60 kg were needed for a sale another 2.6 years. And if you then also needed tents you even one small tent which had another 30 kg raw materials and 1.3 years to make. So this has taken up a lot of time to produce the sales and produce the clothing for the trade, the war and warfare. And could this be included in the household production. So the aim in this session is to explore the variety and function of household textiles and the production in the Viking Age. So what can we consider to be a household production and what goes beyond it. This was my short introduction.


Welcome back. This is why two-four business Tuesday. Yes, and my name is Beira Marsava and today we are discussing Masters of Hospitality and Tourism in Kenya. Are you planning to take a holiday trip this first season? What is the show for you? This is meant specifically for you and you're going to dive into the discussion and to help me discuss this is two amazing gentlemen who have Brian we're there on my left. Brian we're there is an economic analyst and we also have Alfred Maruki right from African Safari's Endestination. Karibuni sana gentlemen. Yes, yes. Okay, okay, but firstly take this opportunity just to introduce tell us what you do, how you do it, where we do it and the company and the name of your company. Let's start with Alfred. We usually do marketing and marketing campaigns for Hospitality Service Providers that is lodges, villas, resorts, hotels, travel agents and also airlines. We do that through listing on our website so we reach out to these Hospitality Service Providers to list on our website and from there we are able to to market them. We don't do a lot of, we actually don't do the booking. Many people think that we operate as other two agents but we don't do that for us it's just a marketing agency. A marketing agency. Yes, thank you so much. And Brian, what are you? So my name is Brian Jorugi. I'm an economist but a profession. And I'm also an entrepreneur generally doing business in software and data analytics and therefore I'm able to interact with both local and international data. That's why I get most of my insights. Alfred, what are your expectations considering you're from the industry? What are your expectations during this festive season? We expected a lot of bookings through our website actually as I'm checking through the backend and finding some of the hotels that are listed with us from the coast are almost now fully booked. So we expected more people to actually go to the coast because the coast at this festive season, Christmas season people don't really are not concentrating on cost, sorry. They're just looking at where they can just go and spend just away from their normalizing. Okay and Brian, do you think domestic tourism has really picked or is it still like those days where even local tourism is just a struggle? Service providers have to struggle even to negotiate the locals to even give them some incentives. Do you think it has really picked up or it's still the same? I believe it has picked up extensively because unlike traditionally when we used to have just site viewing, maybe you'd go to game parks and you watch the animals, the big five. Nowadays we have seen the rise of experiences. Like maybe you find some people going to ziplining and those are the kind of things that are now boosting the tourism sector. And so I believe that domestic tourism has risen and is going to expand into the future. Okay, okay, let me go back to Alfred. Do domestic, okay, let me put it this way. The only destination locals like is Mombasa. Are there other destinations that are actually attracting people? Because you find cases like in December, Kilamutu, everyone is just going to Mombasa. You go to the beach, it's fully packed. Are there other destinations where people prefer? The destination like Naivasha or Laiden, we have also the hippocamp. There are very, very nice places for people to go and just have a good time. So I think it's slowly breaking from people just wanting to go to Malindi and the South Coast and all that. And it's now going to Naivasha. Naivasha is of late has been really raising and boosting those destinations.  So Mombasa slowly, apart from December where many people flock there, we have Naivasha coming up and also Nakuru and also sides of Nanyuki Onyui to Nanyuki like Anka Resort. There's so many nice places over there. So Naivasha, Mombasa, Nakuru, we have also Mount Kenya. Yes, Mount Kenya. Okay, is it advisable Alfred? Is it advisable in the economical aspect? Is it advisable for guys to go on holiday for December or they can go during other seasons? When it's low season, I know there's peak, right? There's peak and there's low. The reason why people have been going to Mombasa and actually when you think of vacation in Kenya, Mombasa is the first, maybe the first destination in your mind is because for a long time tourism in Kenya has been based on the natural resources. It's just tourist attraction.  But now you realize that as the experiences are rising, people now want to go and release. And therefore if at all you don't have to go and visit a site, you can go and have new experiences. For example, ziplining. Something like ziplining, someone can go anytime right from January through December. And therefore I believe right now you cannot just recommend someone to go during the festive season. They can go anytime as long as you are ready and you are able. But traditionally we locals prefer enjoy during this December and during this season actually it's expensive Alfred, right? Yeah, very expensive because the service providers in hotels would want also to control the traffic that is coming to their facility. So even for them hiking may not be necessary to increase the profit but also to control the traffic. We have heard counties like Nyeri county which has published books, made a documentary, uploaded them on YouTube, updated their website. Is what they are doing is just marketing their destination. Do you think other counties or other destinations have done the same thing as well marketing their destination to attract actually even local tourism? Not necessarily the people coming from outside but from locals. I think not all counties have done the marketing because now the drive to have counties gear their tourism sector is just at infant level maybe in the second or third year. And therefore most counties are maybe especially in Central Kenya but we do not have many natural attractions compared to maybe Rift Valley and western Kenya. So now you cannot just start marketing until you have identified what are you going to market. So I believe those that have already marketed those who had clear attractions and others are continuing to look for areas. Okay last year that is 2018 the tourism, Kenya tourism earning rose to at least 157 billion shillings. Do you expect this year to rise depending compared to last year or to be just the same or lower? Especially during this season? I might not say yes or no taking into consideration the harsh economic times that we have experienced in 2018 especially in businesses so many people might not have a lot to spend. So yes or no but that has been a very harsh economically. Okay and what should be done to locals to attract to attack them to go to this destination? Should they be given incentives like buy to buy get one free something like that? I think also the government we also need government incentives you know because when you look at Magiko Kenya it also needs to boost the small media enterprises in the business in the tourism sector because on the ground you will find that these small travel agents are really doing a lot to take people to these destinations so if the government can only boost them and not just concentrate on you know big ideas but come to the ground and be able to to boost sources as a means. Yes you want to add something. I believe the decline if at all there will be a decline for which I am very doubtful in the general performance of the tourism industry would not depend on the state of the current economy because domestic tourism isn't the only source of revenue for the tourism sector. In the recent years we have seen the government trying to promote other aspects of tourism for example you have the conventions whereby now you are going to attract business tourism and that one has really grown and therefore whereas the consumer expenditure might be low which means a decline in domestic tourism maybe the international tourism might not decline. You brought up something very interesting and I will jump into conference tourism we've had so many meetings especially this year we've had so many international meetings although Rwanda has overtaken us in that but we've had a lot of conference tourism where we have meetings there using our hotels using our destination conferences and everything else is that a boost to our economy? First of all I want to talk about Rwanda. I don't believe Rwanda has overtaken us because in the recent report from the all the way from the world economic forum Kenya ranks at position 82 in terms of tourism and travel competitiveness and it is number six in Africa whereas Rwanda is above 100 position 100 so Kenya is still a competitive destination for above Rwanda and so therefore I don't believe that we are somewhere below Rwanda. The conference of tourism has a diversity now going to counties I've seen that in Kisomo in 2021 they will be hosting their free cities summit which will host around 10,000 delegates which is a good idea and they can also go to other counties so that they can cover up all the areas that might have potential to boost tourism.  What should be done? What should be given? What are those incentives that should be given to domestic especially to locals to increase the demand during low season especially during January, February? I think it's just to to do more campaigns to remove this narrative that tourism is just for foreigners and to take advantage of what the environment has to offer and what the domestic tourism has to offer because many people have this mentality that tourism is just for the wazungus Yeah sure so if they are only told that and also made it to identify affordable places to go and enjoy themselves Okay during this low season Brian during during this low season you could find some hotels a closing shop was their planning wrong? What is the issue? Why do they close down during this season? Low season you realize that the competition also in the industry is very stiff so sometimes now during the low season as you're calling it it means now the demand for the tourism services is low especially now for the for experiences and natural viewings but now for the few businesses that target the business class tourism they are not very many so we have a bigger chunk of our tourism industry targets the sightseeing experiences and therefore when people are not in the mood in the mood for all the atmosphere does it is not encouraging for those experiences you expect that they don't have any other way to attract tourism There have been cases of fake agents you know they lower the wazungus that you call them they lower the wazungus they tell them as we are reliable agents you know just coming but you have to pay 50% and once they arrive in Kenya he will be too you guys disappear and how is it affecting others as well because I know these affect others they will end up to be a trust issue guys will not trust you how is it affecting the other stakeholders? Of course it makes the consumers those consumers lose confidence even on the authentic travel agents and it's very unfortunate and the government needs to put a strict measures against such people and that's why we have the Kenya tourism board and coming up with policies so that we can also for the authentic ones like us African survivors nations but is it doing enough? It's not really doing enough because some of these businesses are even briefcase businesses which is very unfortunate because once they have done that even being traced becomes even impossible so also the government needs to put strict measures especially the Kenya tourism board to actually make sure that these agents have got the licenses the respective licenses to operate their businesses and also the businesses should be registered Okay final comments Brian as we end the show final comments to guys where can they go should they how much they should spend We believe as I know the deal to our activity is experiences because now we have been having I don't know why I am like agenist the natural I'm not agenist generally but I believe now it's time we uplift the experiences they assume a camping sites they are places you can go in for example in the Muru there is this mud something people are racing in the mud and I've seen it has a very high traffic so those are the kind of things people should try over the holiday but the destination should come up with these creative things as well Okay I might also add to what he has said that we need to diversify our marketing for tourism and look at music tourism sports tourism culinary tourism you know cultural tourism like this Naturopana cultural festival these festivals are very good they can also be very good boost for tourism especially music tourism now that it's been given to much concentration here Okay and how can people reach you how can people contact you can mention in social media handles as well and your websites visit our website that is africansafaris.com on Twitter and Instagram is african underscore safaris and Facebook is african safaris and destinations Okay Brian how can people contact you yeah I go by the name bn brand and they can also reach us through the company website that is convenience.co.ke okay yeah okay thank you so much go from my team time to join me well yes yes that was Brian with her that is economic analyst and Alfred Muriyuki a CEO of african safaris yes my name is Muriyama Masawa and that marks the end of the show till next time God bless you good night and see you the buzz is up next


My fellow Sanlusians, some of you would recall a time in the 1970s when the world was alerted to the dangers of certain chemicals used in everyday products such as refrigerators, air conditioners, fire extinguishers, and insulating foams. These chemicals, called ozone-depleting substances, were causing damage to the Earth's protective ozone layer, allowing dangerous amounts of ultraviolet radiation to flood through. We were told that this increased exposure to UV radiation can lead to skin cancers and eye cataracts in humans and can cause damage to plant and marine life, thus affecting our food security. As a result of this, the world was driven to action to find a solution to this problem, and in 1987, the Montreal Protocol on substances that deplete the ozone layer was established. For this agreement, all 197 countries of the world committed to eliminating their use of ozone-depleting substances. I am proud to say that St. Lucia has come a long way in achieving this target. Having eliminated the first group of chemicals called chlorofluorocarbons, or CFCs, in 2008, and we are well on our way to phasing out a second group called hydrochlorofluorocarbons, or HCFCs, by the year 2030. In our endeavours to meet the obligations of the Montreal Protocol, St. Lucia has developed regulations to phase out and manage ozone-depleting substances. Measures were put in place to monitor and control the import and export of these substances, including the institution of import quotas and a licensing system. To prevent illegal trade, we have trained customs and other enforcement officers in the identification and classification of refrigerants and related equipment, and the enforcement of the licensing quota system. I urge all importers and retailers of refrigerants and related equipment to comply with these regulations. In partnership with the United Nations Industrial Development Organization and the United Nations Environment Program, we have provided training for refrigeration and air-conditioning technicians in good refrigeration and air-conditioning management practices, as well as in the safe use of alternative refrigerants. We have also equipped the two main refrigeration training centres, one at the Sarfa-Lewis Community College and the other at the Center for Adolescent Renewal and Education Care, with the proper tools to provide the much-needed training on flammable refrigerant alternatives to ozone-depleting substances. Today, September 16, 2021, we joined the rest of the world to celebrate the International Day for the Protection of the Ozone Layer, or World Ozone Day, as it is more commonly known. The theme for this year's observance is Montreal Protocol, keeping us our food and vaccines cool. The Montreal Protocol is considered one of the most successful environmental agreements to date. It started as a global agreement to protect the ozone layer and has done so much more protecting human health, economies and ecosystems. It has contributed to slowing down climate change and helped to boost energy efficiency in the cooling sub-sector, keeping us our food and vaccines cool. While the current increase in global temperatures are a reminder of the importance of cooling in our tropical climate, ensuring that our homes, offices and cars are comfortable, this year's observance reminds us of the importance of the refrigerated cold chain in sustaining life. The cold chain takes our food from the farm to the table. It links producers and growers across the world to the domestic refrigerator in our kitchens. And it is essential for much more than food. In the health sector, the cold chain is critical to the transportation and storage of temperature-sensitive products that include but are not limited to vaccines, blood products and a range of medicines that support common health services. The world today is going through a challenging and unprecedented time due to the COVID-19 pandemic. Lives and economies have been affected in one way or the other. Despite the odds, we can overcome this, not as individuals, but rather as a collective. The strength of unity demonstrated by countries around the globe when they took action to phase out and ultimately ban the harmful ozone-depleting substances is a reminder of how global issues can be solved through international cooperation. And that we all have a part to play in the preservation of human health and the environment.