Hello and welcome to this presentation of the STM32 Interconnect Matrix. It covers the main features of this matrix which is widely used to connect various internal peripherals between each other. The interconnect matrix integrated inside STM32 microcontrollers provides direct connections between peripherals. Applications benefit from these interconnections to ensure time predictable operations and decrease power consumption. This matrix avoids complex management of peripheral communications through reading and writing registers using CPU instructions. In some cases, it reduces the need to loop a signal from a source to a destination through a dedicated GPIO. The interconnect matrix offers two main features. First, it ensures direct and autonomous connections between peripherals, allowing the removal of latency in comparison to software handling. Second, the interconnection between certain peripherals can operate during low power modes, avoiding having to use the CPU. The main peripherals having direct autonomous interconnections are connection sources, timers, analog IPs, clocks, extended interrupt event controllers, digital filters for Sigma Delta modulators, USB interfaces and system errors, and connection targets, timers, analog IPs, digital filters for Sigma Delta modulators, and direct memory access controllers. Peripherals can be interconnected using the interconnect matrix even when the circuit is in a low power mode. The fully supported power modes are run and sleep. The connections from the real-time clock or GPIO to low-power timers can also be used in stop mode, as well as Ethernet MAC, USB, low-power timers, management data input output or MDIO slaves, real-time clocks, and the programmable voltage detector or PVD connection to the external interrupt event controller. The interconnect matrix can be used for synchronizing or chaining timers, allowing, for example, a master timer to reset or trigger a second slave timer. This slide shows a simple example of timer synchronization. Timer 3 is used as the master timer and can reset, start, stop, or clock Timer 2 configured in slave mode. Timer 3 is clocking Timer 2 so that it acts as a pre-scaler for Timer 2. Timers can also be triggered by a short circuit detection on a digital filter for sigma-delta modulators when a USB start-of-frame is detected or by a real-time clock interrupt at a given time or at a regular interval. All these use cases are enabled thanks to the propagation of these triggering signals through the interconnect matrix. This example generates three phase PWM signals in Timer 1. The commutation and duty cycle update are generated via the DMA, respectively Timer 3. The overcurrent is guarded by a comparator, external in the STM32F7 family, whose reference is driven by the Digital to Analog Converter or DAC and changed via the DMA controller. Phase voltage and currents are measured by an analog to digital converter, ADC, which samples synchronously with events generated by Timer 1, Channel 4. Other voltage sources are measured on external events detected by the GPIO and routed via the EXTI unit to the ADC regular trigger. The whole mechanism runs autonomously just after proper setup. So the CPU can safely execute speed or voltage regulation algorithms without the need for low-level control. The interconnect matrix is mostly used for triggering an ADC-DAC digital filter for sigma-delta modulator through a timer event or an external interrupt. Triggering a timer through an ADC or DFS-DM watchdog signal when a predefined threshold value is crossed by the analog input. Triggering a DMA data transfer from memory to the DAC by a timer to allow a frequency-controlled conversion. Calibrating HSI-LSI clocks, for example measuring the external oscillator LSE frequency by a timer clocked by the calibrated internal oscillator. Dual ADC or triple ADC mode using ADC-1 as the master to trigger a start of conversion for the ADC-2 and ADC-3 slave. Monitoring the temperature of a connected internal temperature sensor or the VBAT to ADC voltage. Analog IP interconnect, for example DAC to an ADC and protecting timer-driven power switches through the direct connection of system error signals to the timer break input. These recommendations should be followed to ensure a proper interconnection in between the peripherals and avoid unexpected behaviors. Both peripherals need to be active and their inputs and outputs configured. When peripheral inputs share connections with other peripherals, associated GPIO alternate functions must be deactivated to avoid interference. And peripherals with active analog outputs override the associated GPIO functionality. For more details about the interconnect matrix, refer to the STM32F7 series peripheral interconnections application note AN4676. Specific details can be found in the specific sections for each peripheral in the reference manual as well as in the datasheet.


Asalaamu alaikum, Annyeonghaseyo, I'm J.K. Today, I'm going to talk about a question I've been wondering for a long time. Is music haram? Actually, I asked this in my Instagram story yesterday, and more than 400 answers came, and there were so many different opinions. So, to find the answer, I find Quran and Hadith, and also asked Imam. And finally, I organized my thoughts, so I will talk about this today. Actually, I thought about this topic for a long time, because it's a really important topic for me. Then I will tell you my story. I've liked music a lot since I was young. Especially, I fell into British rock music, so I dreamed becoming a musician. My parents didn't like it, but I decided to study music. So, finally, I got into the music college and started in there. Exactly, I started music composing.  And it's still on my YouTube channel, I think. So, you can see. Oh, no, no, no. Don't see. This is embarrassing. Oh yeah, that's so embarrassing. Anyway, at that time, I was active in a live streaming app named Beagle Life. And there were some friends from Indonesia. So, I had a chance to do promotion in Jakarta, Indonesia. And actually, that changed my life a lot. I finally met many Muslim people in there. And I'm impressed a lot in their kindness and respect. So, music actually played a big role in my interest in Islam. So, yeah, amazing thing. But after that, someone told me music is haram. So, I shocked a lot. Music is haram? Oh my god. I really love music. And I even have studied music for a long time. But is this not allowed? Oh, no. Ah, battery died. So, I searched a lot to get the answer. So, I will talk about that today. First, I'm not Imam and I'm a scholar. So, my opinion is not the answer. It's my opinion. So, let's go. First of all, I asked this question to Imam in Korea. I'll tell you his opinion first. He said, exactly, music or instruments are not allowed. I will read you the Bukhari Hadith, number 5590. Narrated Abu Amil or Abu Malik, Ar Ash Ali. That he heard the prophet saying, From among my followers, there will be some people who will consider illegal sexual intercourse, the wearing of silk, the drinking of alcoholic drinks, and the use of musical instruments. Use of musical instruments. Yeah, Muhammad said, Peace be upon him. Musical instruments are not allowed. The instruments have pitch and rhythm. Because this pitch and rhythm attracts people's mind. And this makes you far from Allah. But drums or percussion is allowed in joyful days, like eats or weddings. And music with only voices, like acapella without instruments, is okay. And worship of God, respect for Muhammad, or love to your brothers. If they have a good content, that's okay. That's fine. That's what Imam said. Then I will tell you my opinion. Actually, I don't want to say this is haram or not. Even imams and scholars have different opinions. So, I don't deserve to say this. What I want to say today is not yes or no. I want to talk about the direction. Yeah, the direction. Which way are you going now? Draw the music. The music itself is haram? I don't know. But whether the music is haram or not, the important thing is, how does the music affect your direction? And how it affects your mind? I think the most important value in Islam is faith in Allah. If the music is out of this value and direction, this is haram. If the music has bad, harmful, sexual, and immoral words and contents, of course this is not a lot in Allah's words. If the lyrics and melody make you away from Allah, this cannot lead you to the right path. And to be honest, nowadays the music industry produce a lot of harmful contents. Make you away from Allah. Bad words, unfair, cheating, article, smoke, drugs, and marijuana. Even in certain genres of music, I have a lot of guts like this way. I have a lot of money. Yes, swag. Sorry. But you know, it doesn't look like swag.  So these kinds are haram. But all of the music is haram. Even if there is no comfort things, some people find comfort in music and they find peace and happiness. They get the motivation of life through the music. Because the music has the power to move and inspire people. Even music like Nasid can help you to close Allah and make your faith stronger like Maharajain and Sami Yusuf. So what I want to say is you have to think about what the purpose and intention of this music is and how this affects you. Is music haram or not? It can be or not. I hope we don't focus on yes or no. Look at the forest, not the trees. We must see the further things. The inside. What we really need to focus on is our relationship with Allah. Not only music, but anything. If it hurts your relationship with Allah, you would better to avoid it. If this disturbs your prayer, reading the Quran, fasting, then you should avoid it. Whether the music is haram or not, we should focus on how it works in our mind. How it works in our relationship with Allah. Yeah, so that was my thinking. Thanks for this thing in my opinion. Have a good day and take care and be safe.


Hello, thank you for joining me. I'm just coming out for a drive in my larder today. We're in Norfolk in London, in London Borough of Ealing Today is an episode of Miniature Railway Britain We're going to look at the Norfolk Model Railway Clubs Miniature Railway. Come here in my larder This unfortunately may well be one last time my larder is able to drive Into London because of the Euless expansion which I don't want to get political in my videos But it's something I'm not overly happy about so I've enjoyed taking my larder to here Which doesn't actually feel like London at all.  It's just up there The Western Avenue isn't too far over that way. So although it feels nice and quiet And like when you're in a countryside village, we are actually getting quite a busy part of London So the Miniature Railway we're going to, I understand the club has existed since 1950 And they've got their Model Railway or Miniature Railway Should I say at the community centre and across the road here by this pub and the Miniature Railway If you look ahead now You should see, yeah, look there's a train that's just stopped I'm not sure why that train stopped. There's a class 67 and It's almost as if on cue because I'm filming keys. Stop there. Let's get across the road We're going to be just in time to see the train get faster So there goes the class 67. Can you see it's a raised track railway In a minute, I think we'll see the loco run along there So it's going round in like a continuous loop. Is that another train coming? I thought it was trains here but I think we'll go and have a look That was good. And Britannia went past and there goes that class 67 So I think there's a bit of a cue of trains at the moment because it's a raised track It's on a continuous circuit. If one train's Waiting, the others have to wait. You can hear the Britannia opening up Let's just walk to the Britannia climb the hill. We'll go and have a ride So let's go and find our way in now. Although the railway itself runs parallel with Church Road I don't think we can get into the site that way. We've got to walk down here a bit more of the old part of the village to find our way in I don't really know why I've been to this railway before. It's not too far from me It's just one I've just never got round to visiting I think it runs on the third Sunday of each month. Some railways do that So I probably just haven't been available on a day when I'm known. It was running before but anyway We're going to visit that railway. So we're just along here You can maybe also hear I'd have to come speak now in distance the sounds of the western avenue And the sound of whistles, of course I think this is the entrance here. There's an awful village community centre So we're going to walk up the drive of this community centre Again, I can see the railway line I can hear There's a Britannia again. So whilst we've gone one way It's gone another Now the obvious thing I'm thinking is it's a race track. There's got to be a bridge somehow because You can't exactly have a level crossing on a race track. This is funny though. I like this So to come into the site to the site of the community centre, it's a bit like an old house There's effectively a level crossing But it's like the gates for the level crossing are the track So these open and as you can see the train actually passes over on top of them So that's going to be quite interesting. So They probably don't open these ones for trains to run. Oh, I see look you can see over there They actually step over the track To get into the site. So we'll walk up here Step over the track and then I think the station is just over there So I think it's safe to cross crossing the track Thank you And then as you can see the train will come along So I think from what I've seen to start with That the sector of line From there it's downhill Then we we saw that Britannia. She had to work hard to come up the grading up to here So we'll see the 67 go fast Then we'll see the Britannia and then we'll go on the line There's the Britannia There's a red light So it seems there and their signal section It's gone green now. So she's passing. It really feels like we've just come to someone's house It looks like the community centre is an old house an old Edwardian house with a nice garden and a mitrelle. It's always nice going to mitrelle In a garden. That's exactly what this feels. Here's the station over here The station there, that's funny It's called Norfolk Holt So it's like a little hole. It's called Norfolk and we're in Norfolk And I think there's going to be a train coming in a suit. So yeah, here comes that Britannia It didn't stop, but when the next train comes we'll go for a ride This video has taken a slightly unexpected turn. I'm on my way up the stairs to the loft of the house They invited me to have a look in the loft. Oh look at this Oh Norfolk tube station sign. They said I can come see some of the model railways So this is the Norfolk Moderally Club of O gauge section Going here. Well, look at that There's a O gauge model railway. I got under here and we're going to have a look inside. So what they were saying was They're not actually running the trains today um They have Club members running days. So what they said I can come back one day and film it when it's running So if you're watching this video in the future, they might be link on screen now Um, so I'll come back at some point and we'll have a look at this But today they just said I could have a quick look. It's great to see what a really nice layout They've got a terminal there and a terminal there. So it looks like you could bring a train out And run it all the way around Around there it goes under the second terminal round again over that nice bridge Right around onto this upper section of track and then into the terminal and there's like a branch line Station here. So perhaps we'll come back and see all this running one day and also I've managed to say you could actually In theory was that that spur of track So have two trains continuously running around. So it's a really really nice model layout Let's go and have a look at the o-gate section and then I'll go back downstairs and we'll ride some trains.  What does this say? This is the o-gate section And what a fantastic layout this is look at this It's brilliant Let's um, just go underneath and have a little look at this one. So again The trains aren't aren't running, but we'll perhaps come another time And we'll we'll see the trains running. I think this one works on a similar way in that they've got terminal station here Look at that. Look they've got all the old um, you know like the bells of a signal box and They've effectively got many signal box here of all these little levers out there. It's really quite exciting signal which running So train will come out of here. It's called vermouth this station coming out of here running along Class 33 there. I think it goes underneath itself right around and along Along yeah up there right around over itself So by then it's done a full circuit a bit like the other one. You've got a branch line Down below and then the train would be Left here would be running along the upper section once it's gone right round Pass that in the high signal gantry and then there's another There's a terminal station here There's no push head completely return table. There's another is like a goods depot down there So again a really really nice layout. There's something just nice about being up in the loft And having all these trains running so fear for the future will come back and see he's running I'm gonna go back downstairs now and see more of the miniature railway So I really enjoy my afternoon here riding and watching the trains of the Norfolk model railway clubs miniature railway It's like I said at the beginning as we walk it up Up the drive. It really does have the feel of visiting someone's house who has a railway Running around the garden. I said the old houses the community center and we discovered inside there's some smaller railways, so we'll come back at some point in the future I just really like this garden. We've only got the garden with the railway running around it I just always find that a garden it makes it so much nicer whether it's got you know a model railway or in this case a metro and I quite like how it's high up It feels like when you're walking along you sort of see the train past your eye level, which is quite nice I think we're down to just two trains now Britannia has come off and gone on shed. It's nice to it's the other nice thing about miniature railways is you never quite know What you're going to get we've had a class 67. We've had the other diesel called pool and then of course we've had the Britannia So it's um, because usually if you go to heritage railway you tend to go there Knowing you're going to ride behind a particular local but when you come to a miniature railway for me part of the Excitement is not actually knowing what you're going to ride behind So I hope you've enjoyed this video. Thank you very much for watching Please do feel free to like subscribe and comment if you'd like to come and visit this railway It's open on the third sunday of every month and it's fairly easy to get to You've got of course Norfolk tube station on the central line and Norfolk park station On the tilt main line. There's also not too far over there. There's numerous bus routes passing here So it's a very easy railway to get to so thank you very much for watching Please do feel free to like subscribe and comment from an awful lot of railway clubs miniature railway


Welcome folks, we have the down industry trading up 180 Nasdaqs up 273, S&Ps up 44, Gold contract up $12, 40 cents trading at $19.97 an ounce, we have Silver up 6 cents, $24, 43 cents an ounce, LightSuite Crude up 34 cents, $80, 43 cents a barrel, notes and bonds, 10 year to note, up 11 ticks trading 111, 30 year up 13 at $124.09 a King dollar, King dollar is down 146, trading at 101, 637, Euro at 110, Yen at 141, British pound at 128 to 1 US dollar. Check it out. So first we're going to go to the futures because what we do have here, you get a high volume low intraday out here, we'll see whether it's going to go after it before the close out here, we're going to wait until Monday or Tuesday. So you take a look at this and you know, bottom line, we made a big retracement of yesterday, but that's sitting out there, that high volume low, and we came down, you know, about an hour ago, you can see that sticking out like a sore thumb, you get 35,000, 39,000 contracts there, and we went back up and it only had 22, we hit a high earlier today with 27. So the selling, the pressure is still down, that's the bottom line, that's in the spies, that's in the NQs also, if we go to the NQs, you're going to see the same type of setup inside the NQs, pull this back a bit, they're going to see inside the NQs, you know, the spy basically, the S&Ps went up further than this, not about the same thing, but you can see that's sticking out, that's the highest volume bar, also in the NQs at the 15,000. We go to the gold contract, we take a look at the gold contract, gold contract, you have higher prices out here, you get an inside day, you know, bottom line, you're at 153 million shares, now that being said, that low of yesterday, my take is that we are going to get tested again, because that had monster volume in, you know, we didn't hit it today, that low of yesterday, 1981 wants to get tested again, and then we go to the dollar, we take a look at the dollar, you're going to see this dollar, we were looking for that 102, the amazing pot is that, you know, it came right up to it, man, you take a look at this, bingo, it came right up to it, you know, but that bar of yesterday, they don't come in ones, as our man, Mr. Larry Pesantos says, they just don't come in ones, so I expect that you're probably going to go up to the top of that range of the lot, you know, the range closest to us, which is about that 103, 20, 30. Stay right there, folks, to come right back.


So, hello, everyone. Welcome to my talk, where I'll be covering some recent developments in Kubernetes and within GKE for overload protection and prevention of various Denali service scenarios that we've been working on. So, firstly, just a little bit about myself. Obviously, I work on GKE, and I joined Google about two years ago. Prior to working at Google, I've been working on Kubernetes for about five to six years at this point. So, over the years, I've worked on many areas of the code base, but more recently, I've been working on some areas in Kube API servers, specifically around API priority and fairness, and kind of trying to operationalize this subsystem within GKE. And so, that'll be the focus for most of the talk. But before we go there, it's worth just kind of mentioning kind of the different types of Denali service that a Kubernetes cluster can experience, and I'm sure there's been like tons of talks about how you can break your cluster and whatnot. And so, many times when we think about like Denali service attacks, we think about bots flooding your network with millions of packets per second, or we think about security vulnerabilities being exploited at scale. And don't get me wrong, these types of attacks do happen, but luckily for myself and the other engineers that work on GKE, we leverage many of Google's common infrastructure and services. And so, out of the box, we get pretty good protection for those types of attacks at a really large scale. And yeah, it turns out Google infrastructure is fairly good at this kind of thing. So, many of these Denali service attacks don't end up really being my problem, right? They're kind of like handled at a more like common infrastructure layer, and there's really smart teams of engineers that kind of work on these kind of things for our networks and our servers at Google. And yeah, there's like tons of recent blog posts around these kind of topics, the most recent one around the HTTP2 rapid reset. That was pretty cool blog post, which I recommend. You check it out if you haven't. So, from GKE's perspective, the types of Denali service that we need to mainly be concerned with is Denali service at the application layer, or in this case, the application being like Kubernetes, or specifically the Kube API server. So, we think about like the possible types of Denali service that like Kube API server can experience. We can very broadly break it down into kind of two categories. The first is, you know, a bad actor kind of gets access to Kube API server and it starts kind of exploiting some like known bugs or performance characteristics about the system and then tries to take down the API server. But you can argue this is like very similar to basically like security exploit, right? Like if such a bug was known, we would probably treat it like a CVE and like go through the standard, you know, process to like quickly roll out CVE fixes. So, I'm not going to really touch on that topic all too much. And the second is a user that is like unknowingly causing a Denali service scenario in their cluster. And for this talk, I'll be kind of mostly talking about those kind of scenarios. And if you think about it, it's actually not that surprising. Like especially if you have like really, really large GKE clusters that are shared across many engineering teams, it's not uncommon to see these types of scenarios kind of happening. So, yeah, let's go through some one example. That's not that's not uncommon for GKE. So, let's say you have like, you have a 5000 node cluster in your organization. So, it's shared across like many, many engineering teams in your big organization. And you know, one team, maybe it's the monitoring team or some other team, they need to, they want to like deploy this new Damon set. And so for starters, like already this Damon set is going to run on every single node in your 5000 node cluster. So, you're basically running 5000 replicas of this thing. And yeah, let's say the purpose of this Damon set is for monitoring. So, the first thing it does is it needs to find, for every single replica, it needs to find every pod that is running locally on the same node. And then it uses the pod's IP and the status to scrape the metrics and point. And then it pushes it into like a centralized place so you can, you know, use for your dashboards and whatever. And then let's say this Damon set doesn't follow like all the best practices about Kubernetes scalability. So, it doesn't use a list watch pattern to fetch objects. It doesn't use informers. And instead what it does, it like, it has this like for loop where it will just like periodically list the objects that it cares about. And then even worse, let's say, you know, it doesn't specify resource version. So, basically API server, every time it sees this request, it needs to get all the objects from at CD to get the latest version. And then as the kind of the final nail in the coffin, it'll use like a field selector to filter pods based on pods that are on the same node, which actually requires API server to fetch all pods from at CD because it actually doesn't support filtering like at CD objects based on specific fields. So yeah, you can imagine like this type of scenario can like really quickly snowball until like a full outage, right? Especially if you have like 5,000 of these clients like kind of just being deployed at once. And like, I make this kind of sound like a hypothetical scenario, but it actually happens quite frequently. So like even for kind of like well-known third party packages or third party add-ons provided by vendors, like it's not uncommon to kind of see these types of these types of clients. And so the goal for Kubernetes is to make it like we want to make Kubernetes resilient enough so that in these types of scenarios, it can kind of automatically protect itself and preserve like specific capacity to handle or to be able to run like the core system components. So if we kind of take a step back and look at the history of Kubernetes, the very first mechanism that we introduced was basically two flags in the API server, the max requests in flight and the max mutating requests in flight. And these two flags basically provided limits for the maximum amount of read and write requests that you can process at any given time. And in GKE, the first thing we had to do was we had to basically like operationalize these flags in our fleet. And the tricky thing is like you can't just like pick one value and just have it work for the whole fleet. We have to basically tune this value so that it's appropriate based on the capacity that a cluster has.  And if you set the value too high, you risk basically like overload like diluting the protection and then completely overloading your control plan. So what we started with initially was very supplementation. So these are kind of just like made up numbers and the exact numbers aren't really that important, but we basically use like a linear function where for every CPU core we give for the control plane, we would add 10 maximum flight requests for each core. And this approach actually got us pretty far. Like it actually worked fairly well, but then it kind of started to have some limitations. And so the obvious big limitation is that there's no concept of prioritization. So you can still have like complete overload situations just by like a handful of clients or in extreme cases like even one client can basically use up all your max and flight requests and basically make your brick your cluster and take it down. And so this was obviously a problem. We want like the overall availability of system to be a little bit more robust. And so this is where APF comes into play. But yeah, really quickly before I go into details, I do want to call out some of the folks who've been driving this effort for multiple releases. I think in 129, which is the upcoming release, we're actually planning to promote the API priority and fairness feature to GA. So that'll be a huge milestone for the team. These folks have been working on it for I think almost like 12 releases now. So a huge milestone. And my main contribution in this area is mostly figuring out how to operationalize this in GKE and kind of just like throwing some bugs over the wall to them. So they did the hard work really. So yeah, like in the very initial implementations of APF, we basically had this system to define priority levels. And then within each priority level, API servers like managing queues to basically determine like how much available capacity is left and whether it should either accept or drop new requests. So now we have some guarantee in high load scenarios. Basically like when API server gets overloaded, we can be confident that some requests are reserved for the queue, but some requests are reserved for the scheduler and whatnot. And basically how we achieve this was we introduced a new API group, flowcontrol.cubinaries.io, which basically introduced two APIs, the priority level configuration and the flow schema. So really quick recap for those who aren't familiar. Priority level configuration defines limits on the number of outstanding requests and limitations on the number of queued requests. And the flow schema is basically how you classify requests into those priority levels. So with the introduction of APF, the kind of the first immediate problem that we needed to address was that each request was basically treated as one seat inside the APF queue. And this was the case when the feature graduated to beta in 1.20. But the problem is that in reality, the amount of actual work that API server needs to do to process these requests actually varies significantly. So it was important for us to have some kind of way to associate like a more accurate cost to these requests and then apply it to the amount of seats that we're taking up in these queues. So over many releases, we introduced some heuristics to try to estimate the amount of work involved in a request. So this was actually pretty like it was not that hard to implement because we actually had very, we had the basic parameters all available in the request metadata. The problem is really figuring out like what are the actual right numbers that can achieve this. So for single object get, those still cost one seat, which makes sense because in the worst case scenario, we fetch the single object from LCD and then we have to serialize the object and then return it to client and all that. If we look at a list request, this could potentially list all objects of a resource in the cluster. So the amount of the cost has to be some function of the amount of objects that we're going to potentially list. In addition, we actually have to double the cost if we list from storage instead of cash. And we can actually determine this based on the resource version of the request. So the formula for estimating list request is n divided by 100 times two if resource version or times two if it's basically resource version is not zero. So it was listed from storage and where n is the number of objects that's in storage. So watch is similar but slightly different. If watch request specifies send initial events, then we treat it like a list from cash because that's effectively what it's doing. Otherwise, we treat it as just costing one seat. Utating requests, which includes create, delete, update, sorry, create, update and delete, is actually the most unintuitive one because the cost to process a single mutating request is actually one. But we have to factor in the potential watch events that will be propagated based on that one mutating request. So the more like watches you have for that object, then there is a kind of when you mutate the object, you're going to send the watch events to all the all the clients that are watching for the object. And so you have to figure out like how to actually put a cost to that propagated watch events. So the formula we use for mutating events was w divided by 25, where w is the number of watchers for that object. So how does the API server actually know the values of N and W? It's nothing really fancy. We basically run like a small controller inside the API server that is periodically checking for a number of objects for resource in that CD and also keeping track of number of watchers, watching for specific types of resources and namespaces. Okay, so in practice, these heuristics, they're not perfect. But they're kind of as they're pretty significant improvement from just giving like every single request the cost. And they do have some some some known limitations. So starting with list requests. One limitation is that we don't actually factor in namespaces. So the object tracker basically tracks total object count on a per resource basis. And basically, like, you know, if you have like 1000 config maps, and they're all in, you know, like 900 are in one namespace and other 100 are divided across other namespaces, if you list config maps in the namespace with like five objects, we're always going to treat the amount of config maps as basically 1000. So like, obviously, this is can be problematic. But in practice is actually not a big deal because listing five config maps, even if we associate a high cost with it, because we process the request so quickly, it usually ends up kind of being negligible. But there are some cases where it has some problematic. Another limitation is that we don't factor in the size of the request, because obviously the size determines like how much work is involved in serialization. So that's something we currently don't factor in at all. For mutating requests, the watch tracker, I guess the biggest limitation is that it's only tracking watchers that are local to the same API server. And it's not actually like communicating with the other API servers on the actual total amount of watches. So it's actually not a complete accurate measurement of the actual like watch events that you propagate for for mutating requests. And then the other limitation is that not all watch events are actually equal in work. So we don't we don't actually account for that. Like some watch events might trigger like more logical changes in your system. Whereas, you know, some other watch events might just be like, you know, making a like just like setting a log event or something like that. So we don't actually care about the actual work by watch events, we just treat all watch events kind of kind of the same. So yeah, let's go through some examples. Let's say we have this request for config maps in the default same space. So let's say cluster has 600 config maps, but the request specifies resource version zero, which means this from cash. So the cost is going to be so earlier I mentioned, we basically limit the amount of seats to 10. So the cost is going to be the lower of either 10 or n over 100. So the cost in this case is going to be six. If we take the same example, and then we remove the resource version zero. Now this becomes a list from storage. And so n over 100 times two is 12. But because we have the upper limit of 10, the cost is going to be 10. So one problem we actually ran into in GKE so at some point we like upgraded to a version where list requests don't cost one anymore, but now they cost up to 10. We can have scenarios where the cost of a request is actually more than the actual available capacity. So earlier we talked about how priority levels, they're given like some share of the total max requests in flight based on the nominal concurrency shares. But if you configure like a really low max in flight requests, you can end up with priority levels that have less intense seats, but but you can have a request come in that costs 10 seats. And so you can have basically one request that effectively starves out the whole priority level and basically locks out the other clients from from at least until like the request completes. And so more recently, we kind of tune this formula a little bit further such that we take the smaller of either the estimated cost or 15% of the total available seats. But we still apply this upper limit of 10 because we don't want like the the seats to kind of like you can have clusters that have like tens of thousands of objects and we don't want any single request to basically cost more than 10. And yeah, this just makes it more likely for a handful of clients or a handful of requests to basically like completely starve out a priority level. So yeah, this this tuning helped quite a bit. But if we go back to the way we configure like the max request in flight flag. And again, these are just made up numbers to illustrate a point. We started to notice this pattern where like control planes with really small max requests in flight, we're still pretty prone to premature rate limiting. So like they would start rate limiting clients thinking the cluster is overloaded. But the cluster actually has like a lot of capacity left. And then for like really large control planes like the control planes that are managing like your 5000 to 15,000 node clusters. They had too much max requests in flight.  And we had we could have scenarios where cluster gets overloaded by some clients that aren't actually that important. And so we started to think about different ways we can calculate the most appropriate values for max requests in flight. And we landed on applying this like weighted functions such that the first few cores by the control plane, give more max requests in flight. And then as you like add more CPU capacity, we kind of like taper it off. And so when you get to like really large sizes, you don't actually add more max requests in flight if you give it more more capacity. So the fact that this is that we basically provide more upfront capacity when we start to control planes smaller. And this way they're less likely to like lockout clients and rate limit clients prematurely. And we also like restrict the max requests in flight for really large control planes, because you know, these are typically your like really large GK clusters. And we need to always make sure that there's available capacity to scale the nodes. And we don't want like non system clients competing with the scheduler and the controller manager and like other system clients that are trying to basically keep this like 5000 node cluster running. So yeah, this is based, this is basically to illustrate kind of what the max request in flight will look like as a cluster kind of scales to more nodes. Okay, so so far, we accomplished. We basically added like a mechanism to limit in flight requests using the max requests in flight flag. And then we introduced this API to define priorities and a way to classify traffic into these priorities. And then we introduced work estimation and tuned out a bunch so that we make the system more robust and it kind of more accurately measures the amount of work that's produced by incoming requests. So we're at a pretty good place at this point. But there's this, there's a really big underlying assumption that we've been making so far that isn't always true, which is that clients in the request are always going to the correct priority level. Right. And so this is where flow classification is relevant. So earlier we briefly covered the flow schema API, which is basically a set of rules and that maps some parameters of a request into a priority level. And if you don't have the correct flow schemas or an optimal configuration of flow schemas, your system availability and performance is, is going to suffer. And this is because we've designed these party levels around specific clients and the types of requests that we actually expect from those clients. But if these requests are not mapping correctly to those priority levels, then, you know, we're going to run into a lot of problems because we, we kind of designed the priority levels, like we basically sharded capacity to these priority levels based on what, like, you know, specific types of clients. And now, if we're not expecting that, the, the shares of the priority levels are incorrect. So Kubernetes does come with some same default flow schemas, which are designed to cover most cases. So looking at one example, the first one, all clients authenticated with a Kubernetes service account is going to use the workload low priority level. And like earlier in that like donut chart, the workload load actually has the most capacity. And this is because generally, if you're running a pod with the amount of service account, that's going to be a controller. And in large clusters, you're going to have lots of controllers running in this configuration, which is why it has the most capacity. But if you're actually running a service account in the kubeson namespace, we actually treat it more of a system controller. And so we put that into the workload high. A workload high is basically, you can think of like workload though is all controllers and workload high is all system controllers, basically.  Actually, the last one is probably worth calling out. So this is the global default priority level, which is given a pretty small slice of the cake. And we reserve that for interactive clients like tube control and whatnot. And this will be important later for, for example. Yeah, so in GKE, we have, we have some goals around flow classification. So firstly, we want to improve the overall accuracy of flow classification, which means we want to configure our flow schemas in such a way that misclassifying flows is very unlikely. And then secondly, we want our default configuration of flow schemas and priority levels to work for every GKE user. And so we want, so we do allow customizing flow schemas and priority levels with some guardrails, but we want that to be a last resort. And we want it to be like a fairly, fairly rare occurrence for any GKE user to have to kind of tinker with flow schemas and priority levels. But in practice, it's actually become really hard to accomplish because of all the different way our customers set up the clusters and deploy their applications and all the different ways you can like authenticate and interact with your cluster. And so misclassification actually becomes kind of inevitable to some extent. So yeah, let's walk through some examples of misclassification that can happen on GKE. So very common example is you run some local tool on your laptop that generates a lot of traffic. These clients will almost always use the global default priority level that we kind of talked about earlier. And this is because usually when you run some controller or some tool on your laptop, it's going to authenticate, most likely it's going to authenticate in the same way that you would like with your control, right? It's going to point the keep config environment variable to your keep config. And it's going to, but the difference is that like it's going to generate a lot more traffic than you would with keep control, right?  But if you run like a dashboard, for example, using the same keep config, it's going to basically try to like list the whole world just to show you like a nice like UI for your cluster, right? So very different traffic pattern compared to those two things. Another example is, yeah, like you run a controller on a GCVM that's like not part of the GCVM, that's also going to use global default because it's probably going to be authenticated using a Google service account and not a Kubernetes service account. So generally we want any non-system controllers to use the workload low priority level like we discussed earlier. Some third-party add-ons will run controllers in the kubes system namespace, which puts traffic in the workload high priority level. And like that's obviously bad because, you know, well, it's not always bad but it can be bad because workload high is shared with the scheduler, the controller manager and whatnot and you don't want to accidentally put a high load controller in the same priority as those system components because that can really mess up your cluster. And so like, yeah, like these are just some examples, but like you can think of more scenarios and like it quickly becomes impossible to cover all the different cases of mishossification. So instead of trying to chase all these corner cases, we need to kind of make this the system a little bit more resilient to this mishossification. And so this is where priority borrowing becomes really important. So this was introduced in 126 and as the name suggests, priority borrowing is a way for the API server to lend unused capacity from one priority level to another. So this allows for the available capacity in any priority level to be more flexible and it prevents a few clients from starving out entire priority levels. And so the the neatest thing about borrowing is that it actually allows us to better use better utilized unused capacity in the control plane. But in the event of overload, everything's kind of kind of self-correct to what whatever fixed capacity that we gave it. So optimistically it will always try to use like all the unavailable capacity in the other priority levels. And then if you kind of reach a tipping point, everything will kind of just be using the fixed priority that you've kind of assigned it, ignoring kind of borrowing configurations. And so yeah, for reference within each priority level there's two fields that you can tune. The borrowing limit percent, which is the amount you can borrow from the other priority levels. And then lendable percent is the amount other priority levels can borrow from you. Right? So we can kind of like tune these values so that, for example, like we might not, we actually, there are some priority levels where we absolutely don't want to let other priority levels borrow from it no matter what. And so these are values that we can kind of tune. And yeah, luckily in GKE, we haven't actually had to tune this at all, like the defaults have been working great. But it's probably too soon to stay at this point. We might need to revisit this. Okay, so I think we're running out of time. So really quickly, do you want to talk about webhooks? So webhooks can denial service your control plane, as many of you probably already know. So especially webhooks that use wild card matches. Right? And this is, webhooks are, I'm very conflicted about webhooks because oftentimes webhooks serve very valuable purpose, right? Whether it's policy control or, you know, side car injection, whatever. And we can, a lot of times we can't just like turn them off, right?  And also, there's kind of this like shared responsibility between GKE and our customers. Like if you deploy webhook, you're basically extending the control plane. But like we're not, we can't manage the actual like services that are back in the webhook. So what we've done is we built some systems at Google to provide some more proactive insights and recommendations to customers to let them know about webhooks that we think pose some potential risk to the control plane. So if you use GKE for a while, you might actually be familiar with this.  And we're going to block your upgrades until you kind of resolve this. And we kind of use that same system to kind of look at webhooks and say like, hey, this webhook is intercepting like leases in the cube node lease namespace. And your webhook is in the critical path of like node heartbeat, for example. And so we actually have this detection mechanism now to proactively let customers know about the webhooks. So yeah, this is this example. So yeah, if we detect unavailability, of a service back new webhook, we have this UI that pops up. So the earlier slide shows, this is the I read, I sorry, I redacted a bunch of stuff. But this is like the Kubernetes cluster list, right?  So like, the API deprecations would be one example, or like the recent Docker shim deprecation would be another one. But we have a specific like warning for webhooks now. And if you click that, it'll either show one of these two kind of warnings. One is, if you reference a service for a webhook and that service was down for some amount of time, we'll actually tell you like, hey, you're, you know, you have a webhook in your cluster and the service is not available. And so we have some like docs to help you troubleshoot those kind of situations. And then, yeah, if we detect webhooks that intercept what we deem as like system critical resources, then we'll provide some recommendations to update your webhook to exclude those databases. So yeah, takeaway is that webhooks can take down your cluster and there are some best practices that you can follow. So mainly ensure the webhook has sufficient capacity and run multiple replicas if you can. Don't intercept system critical requests. So some examples are like lease traffic in cube node lease or lease traffic in cube system, right? Because those are used for leader election for system components, things like that. And you can actually use a namespace selector field in the webhook configuration to actually exclude entire namespaces. And then more recently in 1.28 we introduced match conditions. So you can use like cell expression rules to basically exclude or like you can basically use cell to basically like filter out or decide when you should invoke the webhook or not. And this is actually a feature that we've built with some folks working on EKS because we're both looking into ways to reduce the blast radius of webhooks. And yeah, that concludes my talk. Yeah, happy to take questions if there are any. Oh, thanks by the way. Sorry, I like kind of rushed the talking to them because I didn't want to run out of time for questions. Thanks for attending. Appreciate it. I'll also be like by the hallway if anyone wants to like chat about any of this stuff.


Welcome back to my channel guys. It's your girl Coco styles and on this channel. We talk about beauty fashion lifestyle and styling Thank you guys for tuning into my last what I wore in a week as a tall woman. I Am going to do another one. I actually like it because most of you guys do not follow me on Instagram So it'd be a good idea for you to see how I dress and how I actually Pretty much take regular brands and make them work for me So I don't want to forget anything so I'm looking down at my phone guys So you guys can get the full full picture of what I am wearing I am gonna pop in a photo and I'm trying to see which way will be better Maybe over here for you guys to see it. So I'm just gonna jump right into it. So on Monday I Decided to wear so most of the stuff that I wore Last well not all of it. Some of the stuff I did wear that I purchased from Zara All right, let me let me just backtrack for my new subscribers. I am 60 tall and Growing up. I never really shopped tall girl brands. It was just not something that I knew about So I've always been the tall girl who made regular brands work for her even if I have to get them tailored even if I had to buy two of something and get my tailor to Put, you know, put things together As an example, I have three pair of pants that I purchased from favorite daughter and I took them over to her to get them tailored Just a little tweaking in the front because as you guys know, I am more slim than Shapely over here. So I'm slim around the waist area. So the pants were fine But I just wanted her to tweak them just a little bit to give me a better fit for my body type So those are the things that I have to do, especially shopping regular brands I also purchased something else and you guys can see that in another video From Express the blazer was nice. The sleeves are just too short for me So I am going to get them cropped like I get all of my other jackets cropped if I don't like it I do not mind crop the blazers, especially if it's something Maybe like spring-summer-ish Because I have really good leather blazers from Lamar that fit really well So I know when and where to do the tailoring and when not to do the tailoring So I'm gonna jump right into it outfit number one I have on a pair of old Zara their old Palazzo pants in a size large and I have on an Eritia top under that with My Levi denim shirt jacket For those of you guys Who knew who knows that I actually show this item in a video. It's very thick. It's more than a Shirt it's more like a jacket in my opinion But I really really like it because it's super oversized and I believe I got an extra large in that and that's from Levi I got it from Here in Georgia at the sugarloaf mills. Actually, it was a really really nice shirt And then I have my monster Garville bag my key high-key glasses Listen, those shades are very cheap Let me not say that Because to some it's not Affordable I'm just gonna say they're affordable for those women who spend like $500 on glasses, right? But I got a lot of course per wear out of them.  I have every color probably in here I keep them for the days where I don't want to wear a heel or I don't want to wear a slide I just want all my toes out. So I keep those they're kind of cheap as far as price But they're good quality. I like them a lot. So that was Monday Tuesday. I Have on another pair of key glasses I think I've showed don't shown those before those are the sweetie collab and that top is actually from Zara And so are the pants guys. So the entire outfit is from Zara and Again, six feet tall. I made it work for me. I have on my Jimmy Chu slides. I really like those slides guys They're just so comfortable. I'm so glad that I got them and my monster Garville bag and like the taupe color and I have on mine I Called them like Indian earrings because I got them from like an Indian shop, which I absolutely love if you are looking for in a hopefully it's not like I doubt it's like Cultural appropriation because they sell it, but they're very pretty They're like like chandelier style earrings very very pretty I called them Indian earrings because I always see like Indian women wear these type of earrings. Love them. Love them And I kept it kind of chill that shirt is the material of that shirt is kind of like windbreaker So sweating is a thing if you sweat a lot if you don't sweat a lot, you won't have the issue So that is Tuesday Wednesday, I wore my favorite daughter pants I did not tailor them in this photo, but I did take them to her today just to tweak it So we're gonna figure out today. I went to her. I said, okay We're gonna change the pleating on it, right? But I think what I'm going to do is I was gonna take the pleats out and like bring it in a little bit But I still want the police in there So I'm gonna go back to her and to totally just wait Until Monday and then I'll kind of go because they got really really crowded this guy came in there with his suit And he wanted to just get his stuff done in one day and I was just like I'm I'll come back Monday So I'll show you guys that but I wore those here. They're 34 inch inseam It's about two inches of inseam extra that I can pull down So I told her I can do both of them if I needed to she's like you don't really need to right now But if you want to you can And I have on a Zara denim top that Zara denim top is so cute guys You guys have seen it in my Zara video So I actually got to wear it with a pair of trousers. I got an extra large I probably could have gotten No, cuz that other one was kind of tight this one is cool Like if I wanted to get it taken in I could just a smidge it but I think it's okay and My slides are my Zara white slides that I just purchased there those Classic slides that they always have I got them in white and in black now for whatever reason the black just seems a little bit More snow they don't feel the same the white ones feel like my feet slide in and you guys know I got some white feet they slide right on it So now I have the black ones over there with the shoe structure in them just to stretch them just a tad bit They were fine on my feet, but they definitely do not feel like the white ones So yeah, so I wore that On Wednesday with my white monster Gabriel bag and I have on my black high-keek Actually, do I have on my high-key glasses or do I have on I might have on I Don't know either high-key or these fendi ones So that's Wednesday Thursday Thursday's it Thursday. I have one up there of um Those are Zara pants. Let me just double check guys. Are those Zara? Yes, those are I took those to the tailor as well. So I wore them. They were fitting fine But those are a lot softer than my original Zara jeans that I wore them a Few videos ago The other jeans are very denim like no stretch. No nothing. These are a little bit softer So I felt like after wearing them throughout the day that they kind of loosened up around the waist and I did get a size 12 now the reason why I got a 12 is because if I go smaller It's gonna be too tight around my stomach and guys, you know, I do not always wear shapewear Sometimes I just want to let it hang So I did get them tailored now the end of that wore the darker ones first and I never wore the lighter ones When I went today, she showed me the light ones. They were done But I'm just like I'm hoping that I took them in enough because I didn't wear them yet And I'm sure they're gonna loosen up on me. So we'll see we'll see once I get those back But I should be getting I Want to say everything Friday? Maybe if I go to her Monday She may be able to do the trousers not too sure yet, but I'll keep you guys posted on the express stuff and the Zara jeans So I also have on a Zara dang now how often is Zara too? That's his Zara Who see I like that one is ruching around the stomach area if you do not care about your stomach like The shirt being flat if it is ruching around the waist area that I have on my Gucci trunk bag I purchased that at the outlet in Florida. I have a video on that matter of fact. I'll probably link that video That's when I went to the outlets those outlets out there. Well that outlet is nice and Let me see what else I Have on or here is what I have on my What do I have one here? Oh, I have on my Fendi glasses here I actually have my fendies and then the earrings the earrings are from an African vendor in New York I have not found one here in Georgia Because if I can oh it is on they have the best brass jewelry. They their stuff is just great great quality I don't know if it's because I was in New York, but they definitely have great quality So if you're finding that you're looking for really good quality accessories, do not sleep on vendors guys Don't sleep on vendors And for those of you guys who are from New York, you know how back in the day The Muslims used to sell like the bangles and stuff that never turned But yeah, so that was was that Thursday? Friday I have on some Zara. Oh, actually sorry me backtrack on my feet I have on my Sam. I don't know Sam Edelman Stewart Weitzman. I think they call nearly nude sandals They just have a nice strap across the top. They are Pat leather so it's not a nude like my color, but they are nude and then Friday I have on my cost skirt love that skirt to death great quality The top is actually from Kohl's and I have on my high-key glasses again My Versace bag and the black sandals from a Zara now again, those are just a little bit more Snug, I don't I think I know why like the last time I brought the other two They were made in different places and the leather was completely different on them So I know that the cream ones that I purchased are a lot softer than the brown ones So I guess they just send them out and get them made in different places not too short But that's all that I wore for that day. And then today I have on the white Zara Sandals slides. I went to do some running around a mango denim skirt and I have on oversized white shirt from Banana Republic. It's kind of like a It's like linen like But I like it a lot It's very very oversized and I just have on some simple gold earrings from Valerie and I had on Beautiful bag and this is an old bag guys One thing about me. I ain't given that in the way. Okay If it's outdated to some it ain't outdated to me This is why I say you got you have to go your own way when it comes to fashion and style especially if You can't just automatically go ahead and buy trendy stuff. You may not even like the trendy stuff So sometimes it doesn't even it's not even worth throwing your stuff away or even selling it So this bag was staying here forever and I had this bag for some years guys some years, but it's still a really really great condition and That's it guys. So those are everything that I wore this week as a tall girl Realistically, this is what I am wearing during the week if I am going out That is something different and I'll probably do a video on that as well Showing you guys what I wear as a tall girl going out or maybe outfits for an event Let me know what you guys want to see because I need to get this channel Moving with the fashion for the tall girls We are left behind because the designers do not cater to us guys So let me know what you guys want to see. Thank you guys for joining and if you stay to the end of this video Please comment Coco we see you and don't forget to like comment and subscribe to the channel and Follow me on Instagram at Coco styles NYC and Coco styles NY and my style blog Coco styles NYC and my personal style service Coco styles NY calm and I'm on tickety tickety talk Coco styles NYC and I will catch you guys in the next one. Bye guys


Mr. Speak, what kind of people are we dealing with here? What kind of human beings are we dealing with here? The very decent thing is to own up and say, Ta kangi wa, we are felt because that is the truth. And there's no shame in admitting failure. When you start blaming God in English is called blasphemy. And this is where I started my debate from, that I found this presidential speech extremely blasphemous. Sacreligious, having no respect for sacred human being. Sacreligious, whoever did this for the president is diminishing his chances of entering the kingdom of heaven. Because blasphemy is blasphemy, is one of the greatest sins. You cannot blame God for your own inefficiencies. Explain to me, the president talked about water. He talked about water sources. Mr. Speaker, I would like all the ministers who are here, all the MPs who are here, all the judicial officers who are here, all the eminent people who have benefited from forest number 27 to own up and give it back because that's what the president said. In Kenya, some people were adventurous. They went and built on a water aquifer. President Uhuru Kenyata showed leadership who those are when they dropped them. Let me tell you now. Everything that you're doing is an exercise in futility. On the first day of Mr. Hichilema being sworn in, we are coming to demolish those houses down there in 21. That's what's going to happen. You can sit. Order. Order. Order. I mentioned yesterday. For outsiders, let's not bring them in. Continue. When we come into power in 2021, we are coming with bulldozers to drop all the houses that you are building there at the aquifer. It is not enough. This place here, where there is East Park, was one of the water aquifers which is destroyed. You can go and see there. You brought shop rights in order to create jobs for South Africans. The South Africans are the same ones who are now doing genophobic attacks on your own citizens. Greetings, ladies and gentlemen, fellow environmentalists. One of the hottest environmental stories we've had this year, 2019, is the story surrounding Forest 27. Forest 27 is a forest found in Yosaka, East. Portions of Forest 27 have been partially degazeted. When we talk about partially degazeting a forest, that implies portions of it are subdivided and the use of those portions is changed from the original use, which in this case is used as a forest, to use as either a residential area or a commercial plot. I need to clarify one point. If you check a lot of stories online, you will notice that a lot of stories mention that the entire forest has been degazeted. The truth of the matter is the majority of the forest is still a protected area. The only difference is that portions of it have been partially degazeted, subdivided for other uses. There is one other point we need to talk about that I think is important for all of us as Zambians and residents of Lusaka. You will notice that the very first subdivision or partial degazation took place in the year 2017. The second one took place in the year 2018. The third one, which is the latest one, took place in the year 2019. These three are covered by statutory instruments 62, 59 and 13 respectively. You will notice that when the partial degazation was done in the year 2017 and 2018, only a few people spoke about it, a few NGOs and a few individuals. But suddenly when the third allocation of residential plots took place in the year 2019, everyone talked about it. And why did everyone talk about it? Because of the people that were rumored to be connected to those plots. Now I cannot confirm whether those individuals actually received those plots or not. But the question I have to ask everyone is, are we concerned about the people receiving the plots or we are concerned about damage being done to the forest? Is the implication therefore that we won't say anything if we ourselves are beneficiaries of those plots? There is a problem if we only criticize something that's happening of personalities or politics. Our main concern is supposed to be the environmental aspect. When these portions of the forest are changed in terms of land use, what will the impact be to the environment and to all of us as residents of Lusaka and to all of us as Zambians? So in continuing with this particular topic, I would like now to go ahead and look at Forest 27. What we have here is a sketch of Lusaka. So you have the surface of Lusaka and you have this aquifa zone down here and you have a bedrock. Forest 27 is located there, protecting what's referred to as a recharge zone. Forest 26, which is a forest that was completely degazated. Part of it was turned into the Lusaka South multi-facility economic zone and another portion was turned into the Lusaka National Park. So you will notice that when Lusaka was originally being planned, when these forests were being established before independence, the reason why the forests were established was so that they protect what are referred to as recharge zones. What are recharge zones? Recharge zones are portions of the aquifa layer which is made up of permeable rock, limestone. When we talk about permeable rock, we talk about a rock that water can actually pekolet through, water can actually pass through. So this permeable rock, this limestone, it surfaces in certain areas in Lusaka and these areas where it surfaces are the ones that are referred to as recharge zones. So forests were established where these recharge zones are so that those recharge zones are protected. Why are they protected? Because the recharge zones are sensitive to degradation and sensitive to pollution. So when we give the example of forest 26 which is completely degazeted, you will notice that the quantity of water that recharges through the aquifa layer has been reducing because of the damage done to a portion of the forest. The area where we have the Mephres project is now mostly a concrete ecosystem. That means rain water cannot pekolet going downwards into the aquifa zone and collecting as part of the underground water the way it used to. The majority of Lusaka is on top of a bedrock. This bedrock is an impameable rock. That means water cannot penetrate through. This impameable rock comes up to the surface in certain parts of Lusaka. The areas such as Makeni, Kanyama, Chiwolia, Misisi, John Lenn, Jack, John Howard to mention just a few. The other areas have got soil on top but if you dig through the soil you will still come across this particular bedrock. The bedrock is the reason why during the rainy season when you just have one hour of heavy rainfall majority of Lusaka will be waterlogged because the water will collect right on the surface just after it saturates this soil layer. So it's impossible for the water to get to the aquifa layer and recharge the underground water system because of this particular bedrock. The only points through which the water can recharge the underground water system is through the recharge zones. You will notice that when we talk about the water table the water table is actually found in this same aquifa layer. That means when anyone in Lusaka is drilling a boho their aim is to get to this aquifa layer and hit the water table. That's when that particular boho will be able to have water. But because of the disturbances we've had to Forest 26 and partial disturbances we've had to Forest 27 because of the subdivisions and also because of Chaco Baining which is taking place there the quantity of water that goes underground has been reducing. So you will notice if you visit any people in Chalala area Woodlands extension or Maken the farming area of Maken you will notice that the bohos don't have water throughout the year those that have water throughout the year will have very little water as you head towards the hot dry season. Reduction in water is because of the water table that is continuously rescinding because of the disturbances to the forests. So the question we need to ask ourselves is if Forest 27 was established to protect a recharge zone for the underground water for Lusaka is it a good idea for us to now allocate portions of that forest to individuals for residential plots? The answer to that is yes and no Yes it is a good idea to empower Zambians with land Every Zambian is entitled to land and they have the right to acquire land and develop structures on that particular piece of land The problem comes in when the development of that land compromises the benefit for the majority of Lusaka residents and the majority of Zambians Is it a good idea for a few people to gain plots but the rest of Lusaka loses out on the ecosystem services that can be drawn from the forest? I do not think so Why should the forest be preserved like we've mentioned already it protects a recharge zone There are many recharge zones in Lusaka but amongst the two biggest we have are the ones that are found where Forest 27 is and where Forest 26 used to be allocated I must mention that a portion of Forest 26 was turned into the Lusaka National Park That was an excellent idea because by turning it into an international park you notice that it continues to protect the vegetation and the vegetation continues to protect the recharge zone The only challenge we have the only challenge we have is with the rest of the forest that was turned into the Mefez project The second benefit we get from Forest 27 is the fact that this forest protects the source of the Chalimbana River The Chalimbana River has its source in Forest 27 Apart from having the source the forest itself acts as a water catchment area for the river It's some kind of water or river basin When we talk about a river basin we're talking about an area where rainfall falls and that area collects the water and lets it pour into streams and the river itself This river, Chalimbana River pulls its waters into the Chongwe River and the Chongwe River pulls its waters into the Zambezi River and just before it pulls its waters into the Zambezi River it interacts with the Lower Zambezi National Park So it has an important role to play in terms of supporting biodiversity in the national parks and supporting local farmers and commercial farmers right along the Chalimbana itself Chongwe and eventually the Zambezi River So at the end of the day the question we need to ask ourselves ladies and gentlemen is they were being established for a specific reason and that is to give us certain environmental services There are people that will ask the question why should we care whether Forest 27 is erased We can always plant two trees for every tree that we cut down Yes, that point is valid if you are talking about the function of trees in terms of absorbing carbon dioxide and also giving oxygen to the rest of us But when you talk about the role of this forest in protecting recharge zones the recharge zones are only found in specific areas So if you damage the trees that protect those recharge zones it doesn't matter how many trees you plant anywhere else the damage done to the recharge zones is permanent So you and I ladies and gentlemen have a responsibility to protect these natural resources We have a responsibility to talk to our local authorities to talk to our MPs and to talk to all major stakeholders all politicians to request the president to do everything in his power to protect these forests that we have One last point I would like to mention is a point connected to climate change Right now you will notice that we have a lot of Lord Shedding and the reason why we are having Lord Shedding is because of the water levels in the Zambezi that are very low by implication the water levels in the Karibadama also low and the majority of the explanations talk about climate change being the cause Climate change is a very broad term there are so many examples of climate change when we talk about climate change in connection to low water levels in rivers what we are really talking about is reduced quantities of rainfall Rainfall is a component of weather and also a component of climate when that component of weather and climate changes then what you end up having is climate change why is the rainfall pattern affected because we are harvesting too many trees in sensitive areas if we look at the Zambezi River itself if we look at the source in northwestern province there is a lot of damage taking place to the trees that make up part of the water catchment area for the Zambezi River when you disturb the trees you disturb the hydrological cycle or what's known as the rainfall cycle so we should give a face to the problem it's not just climate change the problem is actually deforestation when we harvest these trees at rates that are not sustainable we cause damage to the river basin to the water catchment area and once that damage is done the amount of water that can be collected and brought into the Zambezi River drastically reduces you and I have a responsibility to protect these natural resources not just for ourselves but for future generations as well when future generations have their chance to enjoy these resources they want to thank us for protecting those resources but if we damage these resources those same future generations will ask us questions and they will be very brutal with us they will ask us the question why didn't you protect these resources for us it would be a shame if we cannot defend our position and defend these forests for the sake of ourselves now and for the sake of future generations