Hello, my name is Matthew Fala and I will be our presenter today on discussing the flip it event loop systems and also some of the optimization efforts that we took recently. So just a little bit about myself. Yeah, I've been working on this PR that just got approved and merged into flip at 1.9. It changes up a little bit of the event loop system transitioning over from a FIFO event loop to a priority queue event loop and we'll get into what exactly that is just a little bit. And so yeah, so we just wanted to share a little bit about kind of our findings, the improvement metrics and statistics and also kind of what you can do with the flimbit community and what AWS can do to join in on the optimization efforts. So a little bit about myself. I work for AWS, Amazon web services. And also I am on the ECS observability team. So we work heavily with flimbit and flimbit integrations, trying to build sort of images that are on top of flimbit to help our customers send logs easily to Amazon services and also wherever else they would like to send their logs or metrics. And also a little bit about me is that I studied at the University of Southern California where I got my bachelor's in computer science. And yeah, I'm just thrilled to be presenting to you kind of our findings on the flimbit event loop today. So yeah, the title of this presentation is flimbit event loop, demystify it and join in on the optimization efforts. So I hope that after this talk we can all be kind of up to speed on what the event loop is and also, you know, what optimization efforts are sort of being taken to improve flimbit and also what can be taken in the future. All right. So yeah, let's begin with I think the best way which is the customer impact. Why should we care about the event loop in the first place and optimizing it. So yeah, let's just start with statistics. So our customers are kind of sharing with us that we're, they're getting like 50 broken pipe errors and 49 connection timeout errors within a span of five minutes. And they're seeing this just kind of appear in their flimbit logs. And this is not very good. So each time you see one of these errors that triggers a retry in flimbit, it means that there's a genuine network error that's occurring. And this is quite a bit, it's like 100 errors in five minutes, which to degrade performance. When does this happen? So you can see that in low throughput cases, we're seeing it's very relatively stable. As soon as you start sending logs at like 40 megabytes per second plus for some, maybe some of the bigger companies or, you know, for, you know, like maybe one kilobyte logs, 40 megabytes per second. So in those cases, you'll be starting to see the errors are on the right hand side. So connection timed out, broken pipes, and connection initialization errors. So we kind of took to the whiteboard trying to figure out some ideas of what could be causing these problems. At first we thought maybe it's API issues. So maybe we're thinking that the place that we're sending our logs are having network problems like firehose. But then we realized that, you know, other customers are using firehose without flip it, and they're not seeing these problems. So we chalk that out. The second is that it could be like a timeout problem. So maybe firehose is working is just we're not waiting long enough. But it clearly says that it's taking 10 seconds plus. And yeah, so we said, no, there's no way that firehose could genuinely be taking 10 seconds for the network request to complete. And sure enough, we we verified that, yeah, firehose does not take, you know, 10 seconds to complete. In fact, what we did when we profiled zip is we found that the network calls complete within around like 100 milliseconds or less. However, when you have some code that makes a network call and flip it, it actually takes around, you know, 10 seconds to complete the line of code that's that's responsible for making the network call. So what we'll see that the network call itself is actual network activity completes in about 100 seconds. But the code when it gets to that point, takes, you know, 10 seconds to to move to the next line. So what's going on? There's a little bit of hanging whenever you make a network call, but we found out that there's some some hangs, you know, it hangs for like 10 seconds on these problems appear right afterwards. So this is just a small diagram of what we found is happening. When some code is running, code gets suspended to make a network call, just kind of wait for the network call, the network call completes really quickly. But then it takes over 10 seconds for the code to get back into the running state. And that's the problem. So just a some metrics that we were collecting. Yeah, so you can see the blue and the silver, the blue represents broken pipe errors, you see the very heavily clustered. And then the silver is the connection timeout. Also, there's a lot of clusters you can see, maybe more clusters. And yeah, but but yeah, this is just a lot of errors that are occurring. So in order to really get to the bottom of what what the issues are and how we can resolve it, we needed to really look into how Fluid Bit manages code, right, how Fluid Bit manages manages suspending code and resuming code. And so to do that, we have to get to the very base layer. And that's the event loop. So that's how Fluid Bit handles running code. And so yeah, that's what this presentation is going to be about. It's going to be about demystifying the event loop so that we could resolve these problems and then joining in on optimization efforts. And we hope that we can guide you through that so that you can also join in as well. So kind of a quick summary of things that we want to cover. Event driven programming, which is kind of fundamental of how Fluid Bit's paradigm sort of works in terms of events and code. Then next is a thought framework to think about the event loop that we've been using here at AWS. And then second is there it is the event loop improvement. And then next is going to be networks to build the improvement charts, so just some metrics and then priority event loop problems. So we might have a chance to take a look at some of the problems with the current solution and then some future work that we can all sort of work on to further optimize the Fluid Bit event loop. All right, great. So let's begin with the event driven programming paradigm. So this is a paradigm that Fluid Bit really uses where you can make sort of blocking network calls without hogging the CPU. So if you're looking at some programming language like Java or Python, when you make like a network call or when you do some sort of blocking operation, what you'll usually see is that the code or the thread will sort of block and not allow anything else to run for a certain amount of time when you make a network call. So that's kind of what we're seeing right here. It's a synchronous networking operation. So the code just blocks, waits for the network call to complete, and then the code will resume. And in that time, maybe the CPU, the thread will not be doing anything. It'll just be kind of like sleeping, waiting for the event. In Fluid Bit, however, we see something a little bit smarter. So this is closer to like maybe like a JavaScript, like Node.js style networking, right, where what happens is when you run some code and the code stops on a network call, what actually some other work begins to run on the CPU. So the CPU is not being idle. And once the network call completes, the code gets triggered to get resumed. And yeah, when it's able to resume, it'll just start running again. So yeah, this is very, very good, very beneficial for heavy IO operation code. So when there's a lot of network calls taking place, you're not just going to let the CPU be idle for every time you make a network call. All right, so yeah, let's take a look at how this is exactly working. So the code's running for a little bit. The network call gets made when the network call finishes, this triangle thing appears, right? So that's your event. And the event triggers the code to run. So yeah, that's this is kind of like how your standard network call will be made. So key concept of event driven programming. So this is maybe a little bit more of a complicated scenario that shows these events is that there's always these events and the events trigger the code to run. So whenever you have code that you need to run, you always make an event first event gets triggered and the trigger event starts the code. So here you can see that we have two events. We have the start code event and start other work event. So same as the previous slide. Great. So the start code event gets triggered. Both of these events are triggered at first. Only one of them gets to be processed. So it starts the code. The code hits a network call. So it gets suspended. And it's waiting on that network call to complete. The other work event now flip it realizes that, you know, there's no work being done because the code has been suspended. And so it decides, okay, let's go look through all of our other events. Is there anything else that's triggered and it finds this other work event? This is great. Okay. This other work event tells us to start up the other work. So it goes ahead and runs the other work. Now, while that other work is running, the network call finishes and so that generates a new event called the network event. That doesn't really mean too much for Flupy at this point because it's just processing the other work until the other work completes. So other work completes and all of a sudden Flupy says, oh, no work is being done. Let's take a look at our events and in this case it sees, oh, there's a network event. Great. What does this tell us to do? Well, it tells us to resume the code. So it resumes the code. And that's it. That's our more advanced scenario. That's a more advanced example of Flupy event loop. So you can see that we ran some code. And the key concept is that all the code is being triggered to run by these events. If you want to run some new code, just make an event, let it get triggered, and then when it gets triggered, then the code will run. And a really key part of this is that all of this is running on just one single thread. And so it's kind of an awesome paradigm for managing asynchronous operations just all on one single thread without having to manage multi-threading or anything complicated like that and not allowing for the CPU to be idle. So, yeah, all this is why Flupy is extremely efficient. And you can take a look online for other documents on adventure programming to learn more. Okay, so event-driven programming. What is the event loop? So this is kind of the next section. So diving in a bit. The event loop is kind of like this layer that everything else, all the code in Flupy, runs on top of. So you kind of think about it as like this fundamental based layer that schedules everything that runs that sort of system that we talked about where events trigger code to run. Let's take a look at the different responsibilities in Flupy because Flupy has an event loop and also the code that sits on top. So the code's responsibility is to code essentially all Flupy. So all the plugins, the core of Flupy, everything is sort of in this code section. The code also is responsible for triggering and not just triggering, but registering events to the event loop and also removing those events from the event loop once they get triggered. The event loop, however, its job is to monitor those events. So maybe like a network call event. And when those events get triggered, like the network call completes, it needs to run the code that's associated with that event. So you can see there's kind of like a bidirectional connection. The code puts events, the event loop puts events into code. All right, great. So this sort of bridge that's connecting these two sections is the events themselves. So the events bridge together code, pointers, and also event file descriptors. So file descriptors are just kind of like a way that the operating system can monitor different files or maybe not files because in Linux, everything is a file. So you can monitor things like network calls, timers, timeouts, anything really that the operating system needs to take a look at. On Windows, this might be something sort of similar like sockets, but in Flintbit, we just have some kind of abstraction and call these things file descriptors. These events are added to the event loop. All right, so for the code, the only thing we really have to care about, because there's different types of code just to be aware of that, there's like callbacks, core code that's embedded into the event loop, and coroutines. We really care about optimizing the coroutine case. So that's mainly what we're going to be taking a look at in the next few minutes. Yep, so the coroutines include all the plugin code. It includes sort of input and output filter code, and that's mainly what we need to optimize. So there's a bit of an issue with discussing how to improve the event loop, and that's that things can get really complicated very quickly because you're talking about coroutines, yields, connection timeouts, ready lists, and a lot of different things that are sort of working together to create the system that everything else can be built on top of. So at AWS, we found that the best way to think about the event loop is with an analogy, and this allows us to really just sort of scratch up or spitball ideas towards improving the event loop without having to dive into the implementation and the nitty gritty details, but looking at it from a high level that allows us to conceptually target the best solutions possible and really optimize the event loop from a conceptual perspective, and then allowing for those implementation details to get worked out whenever we decide to choose a different path to optimize the event loop. So let's take a look at this analogy. So the analogy is the following, and we're about to explain it. So this is it, but we're going to go through it one by one. There's some people at desk and they're filling out these forms, and they're making calls to their friends when they need answers for the forms. So going through it one by one, there's these people, they're just kind of waiting around, and these people represent the coroutines. Then there's a desk. This desk represents the CPU, so the person needs to be at the desk to do some work. And then there's forms. So forms kind of represent the code. When you're at the desk, you can be filling out your form. You can be adding answers to the forms. But what if you don't know an answer to the form? Well, then you have to step away from the desk, call your friend, get the answer. So that's kind of this phone to friend section there in the bottom. All right, where are they going to be doing this? Well, they're going to be doing this in the phone booth. So the phone booth represents a not ready list. So stepping away from the desk represents, and calling your friend represents doing a network call. This phone booth represents the not ready list. So there's just kind of a list of these coroutines, these people that are making network calls, and they're not waiting in the desk line. And lastly, that desk line represents it first in, first out, event loop ready list. So when you finish making your network call, when you finish calling your friend, and you have an answer for your form, well, you can't write it down immediately because you don't have the desk. You don't have the CPU. So what you need to do is stand in line for the desk, and once you get to the very front of the line, then you will have access to your code, which is the form, and you can write down the answer and continue on your work, filling out other questions on the form. All right, so yeah, going through an example, we have one person who's filling out his form. He's at the very front of the line. He gets to a question that requires him to phone a friend. So that's like a network call or something. So he steps into the phone friend line away from the desk. The code is still around. It's just no longer being processed by a coroutine at this point. Someone else comes, steps up to the desk, who's waiting in line, the next person, and he grabs his code, his form, and begins filling it out. And when he gets a network call or finishes, then he'll step away from the desk. And then next, someone who is phoning their friend gets an answer from their friend. So that's like the network call completes. And what they do is they need to stand back in line. Great. So that's the whole example. So yeah, in Flipbitland, we already kind of covered it, but essentially all key four coroutines, they're waiting in line for the desk to get to the CPU. When they make a network call, they have to step away. And then when the network call completes, then they can step back in line and then wait for the desk to write down their answer and continue on their work. All right, great. So obstacles, there are a couple of different things that we have to keep in mind. The first is that these coroutines have a problem remembering their answer once they get it from their friend. So when they stand back in line, if the line takes over 10 minutes, then over two minutes, then they will forget their answer. So in Flipbitland, this is kind of like saying that if you finish your network call, and then you are starting to wait to go write down the answer to process that network call to complete it, if you wait too long, there will be a broken type pipe or connection time out there, which is not a good thing. So what we need to do is make sure that this line can be short enough that you can remember your answer when you get to the desk after you phone your friend. The second constraint or obstacle is that person switching takes time. So when you stand in, when you change from just a line to a desk, and a new person takes a desk that takes a bit of time so we don't want to add more person switches, what we have right now is fine. Okay, so there's a problem with the first and first out event loop, which we're looking at right here. So you can see the first and first out because when you stand in line, then you have to kind of wait in line for all the people in front of you to get to the desk, to get to the CPU in order to begin running your code again. And here's the problem. Once this desk line gets really long, all of a sudden when you finish phone your friend, you have to stand in this really long line that's maybe like 10 minutes, and when you get to your desk, you forget your network calls result. So there's a broken pipe or connection timeout problem. So where are these people coming from? How can this line get so long? Well, the answer is that all these people are kind of like inactive coroutines, right? So these coroutines are sort of queued by the input plugins. So in FlintBit, you have these input plugins that are generating the data, they're generating all the logs to get sort of flushed by the output plugins. Well, with the old FlintBit, so FlintBit 1.8, what would happen is that you would just have all of these sort of data, all these sort of coroutines waited to be sent over to the desk line, right? So they're waiting to go from inactive to active. And unfortunately, the old solution, which was in FlintBit 1.8, is to take all these people immediately when you see them, every time there's a flush, move all of the people who are inactive, who just got generated by the input plugins, to active, so to the desk line. And what that causes is for the desk line to get really long. So you can imagine that if you are creating like 100 different input chunks of data, or 100 different coroutines on the input plugins, immediately those 100 coroutines get turned into active coroutines, then that's a lot of coroutines be processing at the same time. And that's what we're seeing. We're seeing sometimes around like 100 or more coroutines being processed at the exact same time. And you'll see that because there's so many coroutines being processed at the same time, this line gets extremely long. And people forget their answers by the time they get to the desk. How we can resolve this is with a new policy. So the new policy is that we need to have people in the whole line, so the input plugins sort of output, we need to have them wait until everyone at the desk has cleared. So what that does is it makes sure that the desk line is as short as possible. So if there's someone kind of like in the first row who's waiting at the desk line, then we will not allow anyone to be admitted from the whole line into the desk line. However, if you look at the next section, if the desk line is empty, so that might mean that there's still people processing network calls on the phone booth, but if the desk line is empty, then we can start admitting people from the whole line. To do this, we need to implement a priority queue. So yeah, just going to the new policy. This is the same slide. Yeah, so we can see that now we're keeping the desk line extremely short. So you can see that people get to the desk, they make a network call, when the network call completes, they go back to the desk line, and we're not allowing anyone else to join this sort of group of coroutines until all the people on the desk are clear. So you keep this desk line very short. And to implement that, we can just make really, there'll be two priorities. So inactive coroutines have a lower priority to hit the desk than the people who are waiting at the desk. So the active coroutines, those ones can get a higher priority and get prioritized. And just by doing that, we can implement this policy. So how does this look if we revisit the event loop? Well, if you remember before we had these events, they were all having the same priority before. Now we're going to add priorities on top of that. So you can see that we added numbers to these events and added some priorities. So the people, so kind of looking on the right hand side and the left hand side, the people represent coroutines. So kind of remembering to our adventure of programming, these events trigger code or coroutines to run. So each of these events have kind of people attached to them. So now we can prioritize the people. So the people who are inactive, we give them an event that's linked to them with a priority of two. So they don't get the priority. And then the people who are active, who are making network calls, who are already standing in the desk line, they get a priority event of one. And so these events, when they get triggered, will always make sure to prioritize the higher priority. And you can see that when you do choose an event, when an event gets triggered, well, then you send one of these people to the active coroutines spot at the desk, right, which is this top section above the event loop, which is running the code. All right, so let's take a look at the changing responsibilities. So the code responsibilities, everything's the same except the code also needs to set a appropriate priority to the events. However, this is not mandatory because this was implemented such that you don't have to choose a priority. If you don't choose it, then I'll just do a default priority, which is what we had previously. And everything will work the same. And then next is the event loop. So the event loop, everything's the same, except we're going to make sure that if a couple events are triggered, a couple events are active, we're going to process through the higher priority events first. And lastly for the events, everything's the same, except instead of just having code pointers and file descriptors that we're monitoring for the events, what we need to also add is the priority, which is optional. Great, let's take a look at the improvements. Now that we implemented this, so this PR was implemented and merged into 1.9. So, yeah, we're doing a lot of testing on 1.8.11. And we're also doing it under a bunch of different slowdowns. So we're adding some delays to flip it and see how it would react, how the network problems would get impacted by slower machines. And you can see that all across the board we're seeing tremendous improvement. So, you know, from 9096 to 100% improvements on the connection timeouts and the current things are being reduced by 50 to 81%. And this is in terms of active curtains. So this is, you know, tremendous results. All right, next up is just some tangible error data. You know, we can see that we had 51 errors in a span of five minutes. That got reduced to two errors for the broken pipe. We had 51 connection timeout errors in a span of five minutes when we're sending logs 40 meg bytes per second, one kiloblatt logs, that got reduced to one in five minutes. So tremendous results. The coroutines went down from 15 to 7 on average. You can see these errors. This is the sort of graph that we showed four tons of clusters of errors. And you can see that the clusters are always preceded by these large amounts of coroutines. And this is all in 1.8. So high number of coroutines yields high number of errors. Well, now you can see the number of coroutines went down. So the axes is a little bit different. So the old axes was up to 60. Now the new axes is up to 18. So these coroutines are being kept at a much lower level. You can see that because of that, there's much less errors. In fact, we only see three errors. You can barely see it down here at the bottom right hand corner of the graph. So yeah, so again, just looking at these two graphs, you can see there's a tremendous improvement from 1.8 to 1.9. So just this quick summary, the network errors got reduced from 96 to 100%. So really good, really good stuff. The active coroutines got reduced by about a factor of three. And then error clusters were removed. So all this is really great stuff. Okay, so really quickly, let's take a look at, we're going to skip through the improvements and problems just so that we have time. All right, so we're going to get into the related domains of development. So yeah, so what can we do in the future for the event loop?  We covered so far some, you know, problems with the event loop and solutions with the event loop. And also, what is the event loop? And also, how did that, you know, how did those changes, how this changes the event loop impact loop in a profound way to make networks stability, improve and increase. But now let's get into some related domains of development. You know, what's left to be done? Well, if loop it really wants to be as performant as possible, in order to do that, we need to utilize as many, you know, threads as possible. So recently, there was a transition from, you know, it's just kind of single threaded application to multi threaded application with workers. So that means that every worker gets run sort of on a different sort of for output plugins, you can run output plugins on different workers, which which get run in different threads. That doesn't work though, however, yet for input plugins or filters. So kind of on the future roadmap, but there's a lot of talking in D about adding worker support for input, and also filter plugins. And so to do that, we really have to take into consideration the event loop. Because you can kind of think of every single worker is having its own event loop. So every time you have thread, they can run asynchronous code, they need to zone event loop. And so in order to make these changes, we'll have to have this fundamental sort of concept of the event loop in our minds. Which yeah, hopefully this discussion sort of allowed you to sort of gain insight into the next part is the reducing events. So another key to this event loop system is to not have too much event pollution. So if we have too many events in the event loop, then it becomes very inefficient. So there are some events right now that that don't really need to be there that we can reduce duplication of, mainly like the DNS timeouts, some of the other timeouts. But at the time when the DNS timeouts were implemented, there wasn't really a good mechanism to coalesce these events. But ever since, there was some code those written that brings together all the cleanup functions. And that's used for like the network timeouts. So some talk that's been happening in the community is to bring together all these DNS timeouts. So you don't have all these random events sitting everywhere, one for every single DNS call, one for every single network event, in order to really make it a bit more efficient. Because the less events that we have, the better. That's the less person switching for the desks that we talked about. All right, so that's all that we have time for. So I'm really looking forward to the Q&A right after this. And also, just thank you so much for your time that you're spending to listen in on this discussion. I hope it really helps to give you some fundamental understanding of the split-bit event loop and how you can join in on some optimization efforts with this mental framework in mind. Now, if you would like to stick around, we'll have a follow-up section for this to go into the details that we skipped over. And also some deep dive discussing kind of how exactly we implemented some of these changes. So the bucket queue, some task pipes, some multi-threading between different threads and the different workers getting into that just a little bit. But we don't have time for that in this discussion. So we'll post a link maybe in the Q&A for the full talk over there. If you have any questions, my GitHub handle is Matthew Fala, his first name and last name, those spaces note all our case. Please feel free to reach out to me. And yeah, I look forward to what flip it has to offer to the community and to all the customers going forward and with all of the network improvements that have been made and can be made in the future via the event loop being fully optimized. And so thank you so much for joining us today. And I look forward to our Q&A right after this. Okay.


This is a very common theme when we talk about automation, right? You want to reach maximum efficiency level. That's good, but let's keep in mind this is just a path. It's not the destination. It's a good path to take, a path you have to take because it monetizes, right? But it's only the first step. What comes after the efficiency? What comes after the possibilities of saving money? So I made this pyramid, which I think is showing it pretty nicely. It's an automation digitization, you know, the seven asians, as I call them, right, being at the bottom of the pyramid. They generate this, and they basically kind of move around a little bit, depending on what business you're in. But the ultimate way to monetize what you do is on top, right, is the purpose. So why are you doing stuff? Who are you doing it for? How are you doing it? What do you stand for? 82% of millennials, the latest research shows, care about companies, whatever, doing the right thing, right? Being the right thing, having the right purpose. They would rather buy from a company that does that. They're not. Very important point, I think, for our future.


As reactions continue to trail Twitter suspension in Nigeria, we take a dip dive into its effect on the people, the economy and the polity. A PDP Chieftain tells us when banditry would end if the federal government sponsors factional bandits. This is Plus Politics and I am Mary Anacorn. Days after the Nigerian government announced the indefinite suspension of Twitter, reactions are still trailing the development. Netblocks and international internet monitor stated that an estimated 2 billion Naira has been lost to the ban on Twitter by the Nigerian government. In a statement, the Minister of Justice Abubakar Malami said he had directed for immediate prosecution of offenders telling the public prosecutors to swing into action. And while responding, human rights activist, senior advocate of Nigeria Michael Zekome asked the federal government to get ready to build more prisons to accommodate airing Nigerians who are likely to bypass the ban on Twitter usage. Joining me to have this conversation is Confidence Daivle. She is a tech expert and a cyber security expert. Also is Kala Wale Uluwadari. He is of Serap and also joining us via telephone is Shegun Shopitan of Act Network. Thank you very much, gentlemen and lady. Thank you very much. Thank you so much for having us. All right, I'm going to start with Confidence because she's a tech expert. So a lot of, I've been in tech forums for the past two days talking about how, what this means for those who use Twitter as a place for their businesses and how much money Nigeria has lost as a country. But again, let's stop by talking about the fact that people are using VPNs until now I probably, most of us probably wouldn't know what a VPN is and explain to us, give us a background into how these VPNs work and if there are any downsides to it. So I got exactly the same kind of text message on my father yesterday.  By the way, what is VPN? So I'm going to answer that question the way I answered my father. VPN is the acronym for Virtual Private Networks. I mean, back in the day when we used to play with some, with tissue rolls and things, we would make the tissue roll into a tube that would combine them together. So one person is going to have one at their ear and then the other person is going to have the other side of the ear or at their mouth. So the other person will speak and the other person will hear, but to that tunnel only. So think about that tunnel we used to create as children. I don't know if you've heard as much as I did, but I created one of those. Think about it where one person is speaking and one person is listening. But on both ends, if you don't have that channel on your ear or your mouth, you will not be able to communicate at the time. Other people also outside of that environment that do not have that connector will also not be able to hear or speak to either of you. So that's exactly what a VPN is. You have communications from end to end, but they're only passed through a tunnel which allows outsiders not to be able to easily drop on that communication. So on its own, a VPN is actually a security tool because it helps you ensure that you are communicating confidentially on the internet, which means that no other person can easily drop on your conversation. So for example, if I'm on a public Wi-Fi, it's advised by security experts like myself that if I want to carry a confidential or very sensitive transactions like use my bank app, then I should get on a VPN on a public Wi-Fi. So hackers around will not be able to get and sniff out data that I'm transmitting. So actually a VPN before this time has other uses apart from transmitting yourself in seconds to another country, which is now the use that is currently in this case being used for. So if a VPN has many other uses, one of them is what we're currently using now, which includes being able to use another server, bounce off traffic around the internet, and make it seem like somebody's in another location apart from the location they currently are in. But the primary use of a VPN is actually privacy. Is it safe? Because the question everybody's asking is, is it safe? Because we've seen all kinds of messages all through the weekend saying, oh, do not open your bank app if you're using a VPN. Do not do this. If it actually has downside, is it really safe? Because the picture you're painting to me is that it ensures some form of privacy. But how safe is that privacy? Is my information safe under that tunnel, or will it come back to bite me in the back? Okay, it depends on what kind of VPN, so it's still subjective, it's not a yes or no answer. So a lot of people now, because of the rush of what's happening, people are downloading free VPNs. With the free VPNs as well, they're not sure about what, you've not read the privacy policy most likely, you don't know what in the line technology is. Most of them are just set up as proxies that may not be accountable per se. So I would definitely not advise someone to randomly download a free VPN right now. But for the more trusted version, the more trusted VPNs that usually require you to pay some for, which, for example, will also not have place advertisements on those platforms, I hold on more secure and can ensure that privacy assures us on a very, very high level as well. So I would say that either buy a VPN that you pay for, usually they'll be from a good service provider, or use a VPN of virtual platform as part of the features of already existing security software that you have. Some antiviruses have that feature as a VPN being part of its features. Some password managers as well also have a VPN as part of its features. In that context, a VPN is way safer. I'm going to come back to you because there's more news as a consensus Twitter and other tech issues that Kolaulay and Shegul might not be able to talk about, but we will put you on pause. Let me come to Kolaulay. The SERAP was one of the first organizations that took up the federal government on the issue of the ban of Twitter over the weekend. SERAP, like I always say, is always on its toes, with a lot of lawsuits against either the federal government or some power statels or governors. Why did SERAP think that it was okay to take the federal government on? I mean, the federal government has said that they're doing this in the interest of unity of the country as there are people who seek to, you know, break down that unity that we once used to enjoy. Thank you. The first and foremost, because we are Nigeria, a user of Twitter, not only to do our advocacy, but also to get information from the cyber and we believe that what the Minister of the Commission has done for this on lawful and the law is clear that one need not be a senior lawyer to understand that a minister cannot make law. The minister is not a member of the National Accenture. That is why we have a lot of people there to do that job. And so by a public statement, a minister cannot create an offense. And then the same, the same statement tried to punish people by that public statement. And that is why we accept that we're going to go to court to challenge the ban of association or whatever name you want to call it. And Jarata would see these subsequent events that lead credence to the unjustifiability of that act by the government. Let me pick out some of the things that have been major headlines. The NBC, which is the body that controls the media in Nigeria, have put out a press statement saying that all media houses should suspend their Twitter handles. This is because certain media houses were still using their Twitter handles to post their stories. Because again, social media is now the next big thing. It's gone from you buying newspapers at some newspaper stands to reading it off the palm of your hands. But then the NBC has said all media houses should suspend that and not even make a reference to Twitter, anything that somebody posted on Twitter. And this again has gotten a lot of eyebrows raised because people are wondering why this should be a directive from the NBC. But of course the NBC is trying to make sure that people adhere to the government's ban on Twitter. Now again, Malami, the attorney general of the Federation, has come out to say that he's going to prosecute those who are offenders, those who have bypassed the system to continue to tweet. How does that even work? And what would be written on the statement, if I were to be arrested for using Twitter, using VPN? Is that legal? Is that constitutional? I'm just saying, if I were to be arrested. Again, the attorney general is a member of the the position of that. He wouldn't be in a senior lawyer. He cannot make law. He cannot. He's not a member of the National Assembly. Now it's really, it makes the mind what the motive of the attorney general is to make that statement. The law is clear in that regard. The same constitution that gives up the right to take on the expression in section 69 also provides for the principles that on this four criminal liability section by the 6th or the 12th. And it's not simple. One, it simply says that for anyone to be prosecuted for any criminal offense, such an offense must be defined before and in written law. And so the question is, there is no written law in Nigeria. And written law in that context means an act of the National Assembly or a law passed by a state out of a sentence. In Nigeria, this day as well, there is no law that criminalizes the use of social media or Twitter as a platform. So when the attorney general said to prosecute, it's really the important question to ask is on that law with someone who prosecuted and to keep in mind that the law, where laws are stated, the law creates an offense to create a punishment. And that is why George cannot punish an offender without looking at the starting books as the minimum or highest recommended analysis. So in this instance, in the absence of a law that suffocates a judge, what were the judge used as the pronouns, either obviously guilty or even prescribed punishment, it cannot stand. And to go to the aspect of the NDP, I saw that statement, that using the words in elective and advised in the same statement to broadcast the media, I said, really, this is the same NDP that we need to code that set up a challenge. We are challenging it in court, but to defend the question. And this would be the thought that we could go to court on this issue as well, about the propriety of the NDP code and the way the national broadcasting functions isn't the code to stifle the freedom of expression. This again is just an instance of common stifling, conversation and dissent. But I would say that this is not a media reaction like some would think. This is a well thought out plan, even though not intended possibly to stifle the dissent of people who perceive that that is critical views of government. Ultimately, the civic space works so far for it. And that participatory performance is being drawn to the dog. Okay. Shagu Chopra is joining us on the phone. Shagu, let's talk about the FIJ and I'd like to quote them directly. They said that the background to this whole Twitter embryo started when the NSAS protest was on in 2020. And they said, this protest did not just happen on the streets in Nigeria. It did happen on social media.  And that was the beginning of the problems of Twitter in Nigeria. In fact, the government felt a need to control the cyberspace more while we were in the thick of the NSAS movement. And now here we are, almost a year later, with sudden unsolved and unanswered questions. I mean, over the weekend, we heard that a story broke of bodies that were identified as some of the people who were killed as a result of that protest. But my question to you is, where does civil society come in here? Because there seems to be a collaborative silence of sorts. We hardly had any governor, except the Ayoste governor, who's spoken up against this, asking that the federal government rethink this particular move. But we've not really had governors, per se, step up, even the governors that are in opposition. Does it seem to you that maybe our governments, whether they be of the APC or the PDP, are okay with the idea of somewhat stifling the voices of the people, especially on a platform that's very vocal, as Twitter? I don't think Shagu can hear me. So I'm going to throw that question back to Kala Walee. Mr. Kala Walee, can you hear me? Yes, go ahead. Maybe you'd attend that question. You need to be banned. Sorry? Yeah? So it is really difficult to understand the motives of governments. And that is why maybe in this instance, it's best to get that motive, even from the barriers the spokesman for the various agents, for the prescriptions and for the minister of information and from the African-American participation has to be a motive. But from what we've seen, this is an attempt to stop people from engaging. And the reason rightly said, I think it stems from the way the engagement took during the NSAS protest, both free during the protest and after the protest. One thing is to understand that engagement needs to be done by the citizens. Of course, some people may be responsible in the use of platforms, but of course that doesn't justify this calm down, freedom of expression. At least not in democracy, like we are in Nigeria. So it's an ill will that will blow no one's mind, ultimately. But NSAS and what it has brought is what governments should learn from how to participate in the engagement. And it's interesting, quite a long story, that the minister of information actually tweeted on Twitter about the ban of Twitter. So what does that say about the, even the minister of defense puts out updates about the fight against the terrorism. I think on Twitter too, there's another social media problem. When is that over? Russia is like lately that way. It is for government to understand it's use. And I believe that, and we've said this over time and again, we have enough law that punish any responsible use of social media. There are laws that it takes you of legal and defamation. And defamation, and there's a cyber contact, even though some sections of that, there was also a question of the law. There's no need for this time. Ultimately, it's not going to help anyone. And as to the government, that's not the only thing. I don't think we should use the use of an arm, that's a crime, that will not add to the government. In rules, they would appear that that same attitude of the president also applies to the various states. And that's what we see in fractions on freedom of the press. And freedom of expression is not related. It cuts across parties at the party line. And it cuts across from the highest level of government to the lowest. It is explained that those in government seem to fear the citizens because they feel any critical need is seen as being unoppositioned without understanding the need for that conversation, even if it's not palatable. Interesting. I'll come back to you. Let me go back to confidence. Now, another story that broke today, obviously, we all woke up to the fact that quoting the federal government, having a partnership of sorts with China to get a firewall of sorts, something similar to what China itself has had over the years, blocking out the likes of Twitter from its cyber space. So what does this mean for us as a country and how long does it take to build a firewall in the first instance? And is this another way of keeping people out of not just Twitter, but maybe every other form of social media. And in the case of China, if I'm not wrong, there are options. China's tech industry is superb. Do we have anything to rival these social media platforms if we were to face them out with this firewall? Thank you so much for that very brilliant question. So for start, let's understand what a firewall is in the first place. It's not fire on the wall. It's actually a general tool that allows for filtering of network traffic. So what goes into the organization and what comes out? I mean, in the context of a business or an organization. So firewalls are in use again, just like VPN is currently for protective measures. So it filters what comes in from the exterior network, which is the internet, into the interior network, which is the organization's internal network. So you see that a firewall is currently in use for monitoring purposes. It's also used for filtering purposes. Now, translate this to, let's say the way a firewall works within an organization. Because Facebook can be destructive in your workplace, or your workplace might have policies such as, you know, you're not watching porn, because watching porn is going to, you know, sometimes download half the code on the computers of this organization. So what happens is that the software is developed, sorry, a firewall is deployed, just like every other preventing measures.  Those blocks are called rules. So those rules are what helps in filtering the network, filtering whatever comes in and out. So the firewalls are in use. I'm just saying that to establish a firewall actually a security tool in use to protect people. In the context of being used, the way the Nigerian government wants to use it, and the way China wants to use it, or rather, China uses it, is also the same way, but filtering such a way that it sends us what people can get to see, what people can get to interact with, without the confines of the timeline.  So a firewall in that context really is really starting and it could be used in many, in many ways. It could be used to, for example, monitor and be able to ensure that certain views are suppressed, and that's the scary part. And you just can, You're not able to access certain information that is vital for you to access, or you can also ensure that assembly is actually curtailed. And these are all things that are negative. Okay, before you continue, sorry, let me just comment, you talked about monitoring, and that might just also be an infringement of our privacy and our rights. If a government has a right to monitor what we're doing, that can also mean that people can be targeted. And this, I'm sure, one way or the other, could be an infringement of our rights, and it could be against the Constitution, except laws are put in place, right? Exactly, yeah.  I mean, it could monitor your private conversations that are not supposed to be listened into once they're passing through the web and they are not encrypted. Again, even if they're encrypted, it depends on what level, what I mean encrypted, that means they're locked and ensure that only the people you intended for get it. So even with that, if it's a certain level of encryption, then it becomes really locked in. But then if it's still, you're still going to be able to filter. So if the user that performs Twitter today, it might be another platform tomorrow that people pivot to. If it doesn't agree with what the government wants to the citizen at the time to interact with them, they're definitely going to also block that as well. So it's going to be, it's going to be, we are just starting off, let me put it that way, very, very nice sense. And speaking about this in comparison to China, China has a well-established technology. In fact, I say that this is going, this is a slow suicide for the Nigerian tech industry. What's currently happening? Because not only is investor confidence being lost, we know that the tech industry is currently contributing very high to the GDP of Nigeria. So if investor confidence is shaky, and we're setting the shockwaves at a time when we should be recovering, when we should be attracting investment, where unemployment is an issue, and we are having this sort of shake-up in the tech industry that is causing investors to pull out, it means people are going to be losing jobs. And we've seen it on Twitter even recently, we've seen it where people are, their developer teams are divided currently because investors are pulled out. We're also seeing that even the alternative platform that was once floated, we said, we looked at the privacy policy of that network, and we saw that it literally felt like having your back outside, because privacy is out the roof with this particular indigenous platform that we have. And the only one of that. So really, we don't have the technical expertise, the technical tools to supplement Twitter. We also have this particular, but it's taking a very negative effect on investor confidence, which is going to actually result in losses in millions of dollars in investment already made, because people are actually making exist, as we speak, and also prospective investments into Nigeria. So this has a real negative effect across multiple sectors and especially in the tech industry. Okay, well, that's scary, but let me come to Shago. Shago, can you hear me now? Shago, can you hear me? All right. Well, so that we can let Mr. Kalawale go. Finally, Kalawale, you just heard Confidence state that there will be monitoring if we do have this firewalls, meaning that conversations might be listened into and meaning that people can also be targeted. How do we make sure that everything that the government decides to do if they finally, you know, go with it is done constitutionally and the rights of the average Nigerian is not trampled on? Well, I think... I think we could say we're going to be bound for spending as well, if we're going to join us in this conversation. That being said, the proper way would be to pass law of enabling legislation to create a legal framework for all this, but that itself is a problem. And we've seen the government try to do that with the age, each day of the social media deal and some part of the NGO deal. Ultimately, it is not about the legal test, it is about the trust that the people have of those who are going to demand those laws that they're going to use it against the people.  The question that we need to ask is what is the motive of government for having a firewall? We can define that motive now. That doesn't, that's a rocket science. It is to stop automation along the lines of what the government defined as not before. So, we will have given that government that right to define what we should hear, what we should not hear by looking at information and what we hear or see as before. That means how we engage and what we say. So, that itself is bad. I don't see in any legal framework that will help the people. Having said that, there are constitutional provisions that clearly provide that if any law is passed, you know, by the state out of assembly or the national assembly, that is in conflict with the constitution the constitution will prevail. And because constitutional provisions of privacy are paramount, naturally any law that tries to have the great from those rights will be null and void of an unknown effect. But the question is, do Nigeria's trust its government to add a law that gives them any kind of power, any standards of power to regulate what we see and hear? I think I want to find a way to do that. Mr. Chopital, can you hear me now? Unfortunately, today is not a good day for Shagu Chopital's line of I guess that his line has been banned too. But finally, Kola Wale, the excuse that the government keeps giving and you just asked my other question because I was going to ask that, look, we already having, we had had town hall meetings, we had had hearings on how to tweak our constitution. And people are still debating on the sincerity on the part of us, our legislators and the government to make laws that would one way or the other favor the people as a matter of fact, we have complained about the 1999 constitution as amended, as part of the problems that we're facing today in the country. So if we are going to trust them more to deal with how we express ourselves on social platforms, can we trust them to make the right choices for us? But the federal government continuously points to Twitter as a platform that's trying to balkanize the nation as this is an institution they keep making. Is Twitter really trying to balkanize Nigeria? And what do they get out of it if that really is the case? I wouldn't want to speak for Twitter but the content and antecedent that we understand, the way news travels around country that we are with the high population of the rural and of the educated I doubt it will die with something government to watch. Look at what's happening. If all you wake up, you find 20 messages including 17 videos and some pictures taking last 30 seconds and this morning on the phone. Does that mean you have to ban or suspend WhatsApp? No, I don't think so. And saying Twitter is a problem and it does shine away from the problems we have because the economic and the political issues that we have are not caused by Twitter. And I would say clearly that those problems too are not caused by President Bari. No. They fail, they fall in. But the question is what are these administrations down to solve those problems? And if a man in the Constitution is going to go along to solve those problems and I believe it's all then it should be amended in that light. But as to whether we can stop the government with any kind of kind of discussion that takes a little bit of a right and clearly we've given my expression I wouldn't want to I wouldn't want to say that. Okay. Well, we're out of time. I want to thank I want to thank confidence Dave Lee. She is a cyber security expert. Kalaululululuadare is of Sarah. Thank you very much, ladies and gentlemen for being part of this conversation. All right. Thank you very much. Well, we'll take a short break now when we return we discuss a suggested method to end insecurity as soon as possible. The goals who are suggesting it we'll get to find out after the break.


Hi and welcome to the session. Let us discuss the following question. The question says a heap of wheat is in the form of a cone whose diameter is 10.5 meters and height is 3 meters. Find its volume. The heap is to be covered by candles to protect it from rain. Find the area of the candles required. Let's now begin with the solution. We will first write down the given information. We are given that diameter of cone is 10.5 meters. As diameter is equal to 10.5 meters, therefore radius of cone is equal to 10.5 by 2 meters. And this is equal to 5.25 meters. We are also given that height of cone is equal to 3 meters. Now let's see what we have to find. We have to find volume of the cone and then we have to find area of the candles required. Let's first find volume of the cone. We know that volume of a cone is equal to 1 by 3 pi r square h. We know the value of r in h. So we can easily find volume by substituting values of r in h in this. We get 1 by 3 into 22 by 7 into 5.25 into 5.25 into 3 meter cube. Cancel 3 from both numerator and denominator. On cancelling 5.25 by 7, we get 0.75. On simplifying this, we get 86.625 meter cube. So volume of cone is 86.625 meter cube. Now look at the question. The question says the heap is to be covered by canvas to protect it from rain. Find the area of the canvas required. Heap is in the form of a cone and we have to cover this cone by a canvas. So clearly this means we have to cover only its rounded surface. So clearly area of canvas required is equal to surface area of cone. We know that the surface area of cone is equal to pi rl. We don't know the value of l. So we will now find value of l. l is equal to square root of h square plus r square. In the question, we are given that height is equal to 3 meters and we know that its radius is equal to 5.25 meters. So on substituting values of h and r, we get square root of 9 plus 27.5625. Now this is equal to 36.5625 under the rule and this is equal to 6.0467 approximately. Now we know the value of r and l. So we can now easily find curve surface area. So let's now substitute the value of r and l. Pi is equal to 22 by 7. r is equal to 5.25 meters and l is equal to 6.0467 whole meters square. Now this is equal to 99.825 meters square. So area of canvas required is 99.825 meters square. Enzyme required answers are 86.625 meter cube and 99.825 meters square. So this completes the session. Bye and take care.


Hey guys! Today, I'm going to make our easiest $5 dinner veggie stuffed shell. You're like, wait a second, where is Kristen? Who is this person? Well, Kristen's on the turn and believe. My name is Stephanie. I'm sister number four. I'm filling in for her today a little bit about me. I live in Southern California with my husband and my five kids. Before we get started, I wanted to let you know if you are trying to meal plan for your family, we have a free meal plan mini course. It walks you through the steps of how to set up a meal plan for you and your family. It's free. I'll leave a link in the description to where you can find that and let's get cooking. Okay, so let's talk about what is in this recipe. Like I said, $5 dinner, just a few ingredients. So the first thing we have here is some jumbo pasta shells. These are a dollar a box. Then we have diced mushrooms depending on where you're shopping and if you're shopping sales or not, you can use fresh or canned mushrooms. They're about a dollar or a dollar 18 depending on where you're at. And then I have a diced onion that I cooked together with this and the onion was about 50 cents. Next we have chopped spinach about a cup. This was frozen and so I bought this. I drain this and honestly, it's about a dollar worth of frozen spinach. And then I have a cup of mozzarella cheese. You're only using about half of a bag if you need two cups. So it's about 93 cents depending on where you're at. And then we also have pasta sauce and you can get pasta sauce for just over a dollar. So altogether just over $5. I am also going to add in some olives, which you can find olives for like 69 cents a can. So it doesn't bring it that much over $5. But I'm going to add in olives today and you can too if you like the taste. So the first thing I did, I cooked these jumbo pasta shells and while they were boiling, they take about 14 ish minutes depending on the brand. Make sure you read the box then over the stove. And I'm doing it here because my kitchen sheet like it used. I didn't want to have to like turn over here and cook these. But I did it while these pasta shells were cooking. I cooked the mushrooms that I talked about and it diced onion and it took me. Oh, they probably came together in about 10 minutes. And this is going to be the base of our filling for these shells. So we have mushrooms and we're going to add in the spinach. This has been thawed and drained. Try and drain it as well as you can. You want to make sure you get all that moisture out so you don't have soggy insides of your shells. Then olives. These are just black olives. Again, I actually have these already in my pantry. So I felt like it was a sunk cost and I didn't feel bad about adding those. And then we have the mozzarella cheese. So this is it. This is what your inside filling is made of. Then you're just going to take these cooked jumbo pasta shells and then you are going to scoop a little bit of this mixture into every pasta shell. You are going to bake them in a 9 by 13 pan. So in the bottom of this pan, I am putting half of the 24 ounce jar of pasta sauce. And then you are going to fill each shell and then line the entire 9 by 13. Usually when I make this recipe, I usually get about 20 shells full, but I like to be extra generous. Okay, so I filled up all of my shells and as usual, somehow I always end up with 20 stuffed shells. So if each person gets four, you can serve five. Honestly, these are pretty hearty shells. So once you filled your entire 9 by 13 pan, then you're going to take the rest of the pasta sauce. So half of it was on the bottom and the other half we're putting on the top. You just want it a little more sauce on top. The last thing you want is dry pasta. Then we are going to cover this. Ooh, sorry about that. Also, you can probably hear my children running and screaming in the backyard outside. Hopefully it's not too much, but cover it. You're going to bake this at 375 degrees for 25 minutes.  And so that's what we're going to do. This is what they look like when it's all done and I have a kitchen helper here who's going to help me test it out. You want to test it? What do you think? Yeah? If you're looking for more easy recipes just like this one, you can check them out here.


If you want to make videos like this, you will need rotating display stand. The cheapest usable one you can buy is around 20 bucks, but almost all of them have predefined speeds and use the external power supply. Instead, if you have a 3D printer, you can make one. This is the rotating display stand that I made. I needed a simple and fast solution, so for now I just made a basic one where you can control the speed in both directions. In one of my next videos, I will update it to be controllable by external controller, for example a PC, which will allow me to precisely control the speed, angle, acceleration and position. I tested and it turns out it can easily rotate weights up to 3 kg and since it's using standard 9V battery, you can use it anywhere without the need of external power supply. Speed of rotation can be controlled up to 2 rotations per minute in 100 steps. To make this rotating display stand, you will need these few things. I used this KYK Japanese made taper roller bearing, but as you can see it's a bit wobbly. There might be a more suitable bearing for this case, but this is the only one that I could find. If you have any idea of how to fix this wobbling, feel free to write a comment and I will see what I can do when I update this device with the features I mentioned. There are only 4 parts to print on a 3D printer, base, top, gear and a knob. There is a link where to get them in the video description. This is how to connect everything. You can get the code from the link in the video description. Here is how is everything put together. To get more professional look I got a 3mm glass sheet and I cut out a disc with diameter of 40 cm. You can paint the bottom of the glass black as I did, but I later found out that in most cases you don't need to do that. I hope you find this project useful and I earned your subscription. Feel free to like the video and check my other projects. Thank you for watching.