Hi. Welcome to the session on the Wiki for Human Rights 2022 campaign. I'm Alex Stenson. I'm hiding behind the slides. I'm a lead program strategist at the Wikimedia Foundation. And we're going to be talking about how we've been using the Wiki for Human Rights campaign to experiment on the movement strategy topics for impact organizing focus. Most of the presentation is going to be from this year's partner in crime, Ruby Dementia Brown, who was our senior organizing fellow as part of this year's campaign. And she did a really wonderful job being the heart and soul of the community organizing for this campaign and really making it work. So I'm so proud to have her presenting here today. This is the rough outline of what we're going to talk about. We're going to talk about what we learned and that's Ruby is going to focus on. And then we have some voices from different communities that participate in the campaign and we want to give them space to kind of reflect on their experience. And then I'm going to give some updates on what we'll be doing for topics for impact organizing and other training activities throughout the year. So without me talking too much, I want to hand you over to Ruby, who's, like I said, done a wonderful round of work this year to make it happen. Okay, thank you so much, Alex. As Alex said, my name is Ruby Dementia Brown. I'm from Ghana and I was the fellow for the Wiki for Human Rights campaign this year. And I must say that it's been a wonderful experience. I'm here to talk to you about what the campaign is about, what we achieve, and then my personal experience. Then we have other panels to share their experience as well. So what is the Wiki for Human Rights campaign all about? I think we can move to the US area. What is the Wiki for Human Rights campaign all about? So what we aim to achieve with this campaign is to be able to document stories and content to make sure that everyone everywhere has access to neutral fact-based current information about our right to a healthy environment, especially in this day and age where environmental issues have gained that much significant attention. And this campaign was, as a result of a partnership between the Wikimedia Foundation and the United Nations Human Rights Council. We also had support from UNICEF and then the UN Environmental Program. So what were some of the topics that we focused on this year? So the topics that was our focus this year was the triple monetary crisis. And in that we're talking about climate change, we're talking about pollution, we're talking about biodiversity loss. And these were some of the stories and things that we wanted people to document and then write articles about. And also advocate because it's not only about writing articles, but to create that kind of awareness, bring people's attention to these kind of topics, especially in our movement where we're talking about a topic of impact. So what exactly did we attain in this year's campaign? What were the results? It's intriguing that we saw that increased participation this year, especially from the global south. We had communities embrace this campaign and did wonderful activities. We're so excited and we're so proud of everyone who participated and supported the campaign. We had more than 700 participants participating one way or the other from different continents. And we are talking about across five continents in the world, which is so amazing. And when we talk about countries, we had more than 5,000, 4,000 articles being created. There was so much articles that were created, we just had to, we didn't even know how to calculate it. We can say that we had more than 4,000 articles this year around the topics. And then we also saw more than 40 community events. And these events you run from webinars, editor tons, workshops, photo walks, dramas. And it's exciting to see people come together to talk about environment, to document stories about our environment. And we're so proud of our local and regional organizers who also supported us, took the message to the grassroots. Because we wanted to get to the grassroots level and so we worked with local regional organizers, volunteers, to help us take the message to the people and the grassroots. Next slide. So what exactly did I learn? And this is what I'm going to share with you. I learned so much, this campaign was really, really enlightening. Next slide please. This new campaign was really, really enlightening for me personally. I learned so much, I gained a lot of skills, it increased my connection. But I want to share a story that really intrigued me about what I learned from this campaign. So when I got the role as a fellow for the Wiki for Human Rights, it then dawned on me like, oh my God, I'm not even an expert in the environment, how am I going to do with this? But this opportunity being a fellow and handling or coordinating this campaign has helped me understand that you don't have to be an expert in an environmental topic to be able to participate in this campaign. You don't have to be. It's about how you connect it to your story, how you connect it to your field of interest. Because whether or not we like it, our environment is where we live. And if our environment is not thriving well, it affects whatever that you're doing, irrespective of what your interest is, it's going to affect you. So how do you connect that story to how do you connect the environmental topic to your own story or to your personal interest? And I personally, I was interested more in women, women empowerment and all that. So I've many been organizing campaigns in different areas and especially I love to work on women topics and all that. But when I came to be a fellow at the Wikimedia Foundation, organizing the Wiki for Human Rights, I began to read stories. Honestly, I've not really paid much attention to the environmental field, but when I began to read stories, I realized how connected our environment is to women. And so I began to connect the story. For instance, if you come to our part of the world, whenever there's drought and there's no water, women suffer a lot. And that's where I began to see the reality of the thing, when I began to connect the environment, where I am, and the things that happen around women. Women suffer a lot because women are seen as people who take care of women, people who need to get food. And so if there's no water, who has to get the water? Of course, you and the women have to get the water.  And then for the activity time is lost, it impacts their health. Because these are the issues that we're talking about. And there are a lot more stories that we can explore. So like I said, it's about how you connect the environmental story to your own story. And that's how you begin to appreciate the gap that we are talking about. Because there are a lot of gaps. You might think that, oh, this is for environmentalists, or this is for an expectant, some kind of abstract things that you don't understand. No, just connect it to your story and then you're good to go. And then I also realized that this has a great potential to draw the youth, especially bringing that kind of sustainability and partnership into the movement. We are in a day and age where environment has become, I mean, our environment is in crisis. Everyone is talking about it. Everyone is trying to find solutions to solve our environmental issue. And the youth are embracing these topics so much. And so this is a very great opportunity to sort of connect to partners, connect to the youth, to bring them in, to help them understand that this is also a space where they can also try to bridge their knowledge gap. Because these are youth who are interested in environmental issues already. They are interested in sustainability issues already. So how do they direct that passion into Wikipedia projects? How do they direct that passion in bridging the knowledge gap? And this is what we are talking about. And one of such partnerships that I personally witness in my country, Ghana, is when local organizers have this wiki green conference where they've brought a lot of people in the tech space, a lot of organizations like Internet Governance, Internet Society, Debbie Foundation and so on and so forth, a whole lot of organizations. And that has attracted a lot of youth to attend this conference. And you'd be amazed. This was the first time they even actually learned that they could contribute to Wikipedia. And you might think that people already know about Wikipedia and so they know that they're supposed to contribute. No, not everyone know that. So this was a very great opportunity bringing people who already have that passion and trying to help them appreciate that they can direct some of that passion into bridging this knowledge gap because knowledge is power. If you're able to empower these youth to document in local language to help many more people to even understand what we are talking about. And also another partnership that helped us to build capacity and build skills was the Climate Change Editor Tone which we organized with Open Foundation in West Africa and Youth Climate Council Ghana. And we organized this training to build the capacity of the youth who are already interested in sustainability. And we saw a lot of youth close to 100 people who were trained both virtually and in person. And it was really amazing. So these are some of the issues that we're talking about. And I believe that if people have access to this kind of knowledge, they will be able to, it will also be able to improve other people's habits or life because for me, when I read about environmental topics when I read about stories around the environment, it helped me to now understand it. So now if I'm doing something, I'm conscious about what I'm doing so that I can be able to protect my environment. And it's all because I had access to this knowledge. And this is what we are talking about. It helps to improve people's habits. And it also helps people to advocate their right because if you know your right, you'll be able to advocate your right. This is just a brief story that I wanted to share with you all that you don't have to be an expert. Just come in, have an open mind, connect it to your story, see what you can do in the moment. And so we're going to play a video that we put together. It's just a summary of what happened in the community. Like a quick video. I don't know if Alex, you can go ahead to play a video. We have some videos that we want to showcase to everyone. Okay, so while we're moving forward, I'm hoping for Alex to share his life. So what will we be doing? So what we intend to do in from now onwards is to... Okay, let's just go ahead. Can you hear me now? Yeah, we can hear you. So the video isn't working. We'll share it in the slides already and we'll share it later. Sorry. So Alex, do we just move to the next slide? Yeah. Okay. So what we keep doing, what we want to keep doing is to be able to connect more youth to the movement through Sustainability Campaign. And we're saying Sustainability Campaign because the youth have embraced sustainability topics, issues around sustainability. And it's a very great way to bring in the youth to sort of bring, like, have a space for them to be able to do what they love best in that kind of field. We also want to continue to support communities as they need to work with more strategic partnership. And partnership is very significant because one of the great ways to reach new audiences to get specific audiences is through partnership. And partnership has proven to be a very great way of doing that. So bringing in strategic partnership is very important. Even just like this campaign, this is a strategic partnership with the UN human right and the UN environmental program supporting and all that. So it's not like a very great way. Like we did for the Youth Climate Council, look at your local communities, see what kind of partnerships that can bring strategic, see which kind of partnership can sort of bring this kind of youth into your space, into your community. We document these kind of stories. And we also want to be connecting deeper, thematic training with a campaign to help organisers participate effectively. And I'd like to be talking more about that, how you want to train campaign organisers and all of that. So we also want to provide regional support for the campaign. Yes, regional support is very important because this is a global campaign. It's a campaign that we deal with different continent, different regions. And each region is different in the way that they respond to some of these topics. And so we want to be able to support regionality in terms of this campaign. So I think I'll hand it over to Alex to sort of talk more. So I wanted to invite some of our regional organisers who are on the call. Did Romeo make it into the call? No, I'm not busy. I pay them but I think it's offline. Okay, so we'll start with Michelle then to talk a little bit about their experience in the Minna region and the Arabic community. Hello, everyone. My name is Michelle Baknin. I was organising the year's campaign in the Arabic communities. This year we had really a great campaign because we tried to organise the campaign in using different approach. Normally in the Arabic home world we have like 25 countries. So before we used to organise different contests and people, efforts and participants were divided in different places. So this year we tried to organise a unified contest and thanks to the efforts spent by the organisers we were able to achieve a great success and this is the first time in the Arabic community we arrived to do a unified contest for one of the Wikimedia campaigns. We are happy to do that. In addition to that the contest was divided into two parts. We have editing campaigns, which is a normal campaign where people go to the articles and try to add contests to these articles and we had also an image contest where people can go to the street, can go to their own local area to take photos and upload these photos to comments and then they have to put the photos in the articles, the corresponding articles as well as Wikidata items. From our perspective last year, this year campaign was really a success and we are looking forward to repeat the same approach with enhancement because we had a huge feedback from participants and we are looking forward to include these feedbacks into the model we are developing and I think next year we are going to come back again with another enhanced version of the Arabic Unified Contest in the region. Thank you a lot for giving us this opportunity and for giving us the support to continue organizing this contest. Thank you so much, Michelle. It was really neat because Michelle was a campaign organizing fellow the year before and so it helped me design the first iteration of the Right to Healthy Environment campaign and he was able to bring that learning back to the Arabic community and spend more time actually building that practice and context and so this is a really important part of how we are designing this campaign is local skill out to regional skill, out to local skill, international skill out to regional and local skill. I want to invite, I probably am not pronouncing this right, I'm German and solo, was that close? Hi, okay, so my name is Gemi Sola and Shosh from Nigeria and I co-organized with, particularly with Ufemia Wandu and James Fokola that I'm speaking today. So for the campaign this year what happened was that we had more, We had we organized in more states Unlike the last one because we discovered that Well from last year we had much more. There was so much interest from last year So we took the campaign to three other locations and what we did was that would split The campaign into different sections if you come to Nigeria before you will know that you have the northern Nigeria You have a thousand you have the western Nigeria. So what we did this year was that they had they organized in all these locations From the north central in Norway that we organize in the case or where we then we organize in Lagos I'm just going to speak more on the Lagos Lagos location this year. We were able to partner with We had the Information office of the UN come speak to us Apart from the normal edict at all that we do that we did so we invited have to talk about you know the environment knowing about you know the new The Lord that when we learned that when we leave about the environment and you know Our right, you know the right for the environment and she spoke about it For an extent then we had them the audience Participants in her act with her and I discovered that this campaign was was fluid was not set in stone in the sense that It wasn't an all you know for all the different Locations that we organize We were not doing the same thing at the same time because we discovered that we couldn't do wasn't a one on one side Before or you know for this location and we discovered that just as Ruby I said earlier There was you know the youth was vested in in this campaign We're so interested and there was something very surprising about you know this particular event There's a particular young man that came in and you know his twist, you know it approached to The environment or talking about the right, you know the human rights and the right to health environment is that he He was a was an artist so he had written songs and he had written poetry Actually was a bit famous although I didn't really know him But those some people have happened to know him and I just thought about it Okay, this could be a little way that you know next year for her It could use that to campaign, you know, you have songs go out and everybody knows that Most young people like stone. So that's another twist to it. So we're now looking at it. Okay That could be something I'll show up next. Yeah, then also discovered that the participants were We're so vested in it and they took some of them. We're ready I mean they were they were so interested that we're ready to you know, we have to practically, you know We have to pass that end the session for the agreed time they also have a partnership with the American corner we hosted the Lagos event in American corner and We're looking at how we call, you know, develop more collaborations and partnerships, you know For this for the next campaign And we know to get it moving forward. Thank you Thank you so much. It's really wonderful and for the next A portion by Gabrielle. He's going to speak in Spanish. So if you're listening with the translation make sure you switch to the English channel so Gabrielle That's the Mientras nuevas para poder sentir que podía colaborar en el conocimiento de Mucha bibliographia que está sólo en inglés o en otros idiomas técnicos y poderlo hacerlo más disponible para las personas En lenguaje español y quiero agradecer todas las oportunidades que organiza tanto Wikipedia Argentina como Wikipedia Uruguay acercándonos talleres y oportunidades de Acompañarnos a aprender a usar las herramientas darnos Capacitaciones de demostración Nos ayuda a We want to apologize so much for the interruption the delay from the work meeting of the year Interrupted the recording and unfortunately Gabriel had to drop off because of that moment We will make sure that his experience is captured and the wiki for human rights and my comedians first sustainable development Telegram channels and I I'm so sorry for that It's really important that we have these regional communities that Are involved in the campaign and especially as Gabriel was saying both the The there are some systematic gaps in languages like Spanish that are best addressed by Platforms like Wikipedia We've seen this with the Arabic and French and other communities that have participated in non-english languages as well That the clang at environmental topics really do need coverage in these other spaces so because we're presenting and Sharing the campaign And we'll make sure this video is circulated. We just wanted to share out what exactly is coming up for the next part of this topics for impact focus on sustainability and We'll share just briefly that and how that is working So we are going to be running an experimental training for organizers of campaigns in the the Which media movement are in response to the topics for impact recommendation what we've learned from the wiki for human rights campaign is that These thematic topic called actions are really impactful for the wiki media movement as Ruby and All of our local organizers have said it brings in new and different communities into the movement And it's really important that we kind of create space for that We are going to be launching an experimental course this year or 30 plus organizers who are experienced Running campaign activities in the movement where we will be talking through how to design a campaign from scratch The goal is not only to have more prepared organizers for the wiki for human rights Earth Day campaign window around the topic of suspending sustainability and climate but also to give you skills and insight Required to apply that structure to other topics and so we're really excited for this The hope is to have a regular capacity building opportunity for organizers interested in We'll be announcing that soon Keep an eye out for announcements in the telegram channels and other spaces Additionally, there's two campaign cycles that are relevant to this theme Both the African knowledge initiative Campaigns that were recently announced by Felix on the African Comedians mailing list with the wikipedia residents Cess Laos who is a wonderful organizer of wiki loves Africa and their campaigns And they're going to be doing other interventions around youth environment in Africa day And we will be doing a Earth Day campaign cycle again That will include the wiki for human rights topics, but also other sustainability topics So keep an eye out for that announcement Those on the channels we've used so far Additionally because The wikipedia movement is one of the big open Communities working on climate. I wanted to highlight a grant that was given to the open climate community group This is a group posted by open environmental data and apropedia who are allies of the wikipedia movement They are going to be announcing fellowships for organizers in the Wikipedia movement who want to connect with other people and other parts of the open movement around climate and sustainability These the collaborations are designed to be take the open movements values And kind of connect them to the climate movement and the moment we're in now if you want to follow more you can Go to apropedia in the open climate page and lastly We want to keep you involved There are two telegram channels that where we share all the updates about these sustainability work the specific to the wiki for human rights campaign telegram channel and The wikipedia for sustainability development one both of these have opportunities and like the role that ruby played this year Michelle the year before we had another organizing fellow role for this year part of the goal of the campaign is to rotate Coordination of the campaign amongst different organizers within wikipedia movement to give them an opportunity to network and learn how to design these campaigns As ruby was saying it's a really important opportunity For you know development and learning if it's you really need chance to dive deep and then go back into your part of the movement and use those goals so apologies for the disruption in the Session and it's really I hope the next part of the The program is able to continue And we're really excited that we So I will be sharing links to these opportunities in the various telegram channels and it's really exciting and thank you Michelle ruby and Given sova for Hanging in there and trying to come back. I realize that when presentations are disrupted. It's always challenging. So I'm Lots of appreciation For everyone involved the 40 community events the 700 participants only happens when we pull together as a movement to address topics for impact and this is the the future that movement strategy and other parts of the Movement strategy wants us to go and so I'm excited for this and we hope we can keep learning together on how to do this better each year So, thank you. And if you have questions, please reach out to us in the telegram groups and again Because of the disruption. I do expect very many people to be in the channel and we hope we can Connect more if you have questions and either plan I will try to answer them. But otherwise, please connect with us in the I Am yeah And we saw some people so if you have Questions feel free to drop them in the chat. We can we can respond to it. I just discovered that they're folks still hanging out We can definitely respond to those are the etherbed So sitting come across and come from different parts of our class and that's for the Campaign it was a site for we learn we talked about Most of them So in helping to bridge the contents club on a social work, about 5 to 10 years from Ghana and Africa. Hi, my name is Ruzina Mishipam, I'm a fellow at the Ruzina Foundation for Ruzina Human Rights. One thing I learned from this workshop is that you don't have to be a professional to publish a stuff. The little you can do, edit your words, add a meaning, add an explanation to something and then it goes a long way. And also be sure to try as much as possible to publish every little thing that have been delivered to good data, that can change Ghana and Africa on the mark. Hi everyone, my name is Ibanaliti from the Ruzina Human Rights Wax Show. This program has been essentially an exciting one. I've been working with Ibanaliti as to how climate change is changing the world and how I can contribute to my culture, to the development and to the acquisition of climate change. With education, I've had the opportunity to contribute to the development of climate change and to the development of the world. My name is Ibanaliti and I'm a member of the Ruzina Human Rights Wax Show. I'm here to share my experience. The first thing I learned was the ability to edit from Wikipedia and also how to write our own story to help people make money. Hi everybody, my name is Sarah from Wikipot Human Rights Wax Show. So I joined this work this to the Wax Show and I learned a lot, particularly how to edit for the edits on issues relating to the environment and climate change. Initially, I came with some very funny discussions about how to do that. But I've been really enlightened that it's more than just editing things but I'm doing too much like you can actually perfect everything. And it's very, and it's explained, the sources are really credible as well. So I've been really enlightened and I hope to be, to benefit your community and the campus, the ground campus where I grew up. Thank you. So I'm going to play the community video as well. There's one live video and one check. I don't like to see mine. We see it. It's not coming through completely correctly. Hello again. For some reason the screen share is not working on the video. I think the... Okay, this is a little bit challenging. We're not getting a proper... We're not getting a proper screen share in the audio. Yeah, were there any other questions or observations we wanted to capture on video? I think we will see the floor because of the complexities that happened here. I'm so sorry. I did answer a question in the chat about the community of foundations positioning on renumeration and stuff. The place to look for information about our human rights positions about how the foundation supports human rights is through the human rights impact assessment and the other parts of the other part of the organization that's focused on human rights. You can ask specific questions there on the talk page. My team is not a policy team. It is an organizing team and so we aren't the primary stakeholders. I suggest we stop the session because we don't have any more questions and the video playback is not working very well.


The 30 abducted students of Federal Government College, Verna Yuri, in Kebis State and a teacher have regained their freedom after spending six months in captivity. Special advisor on media to Kebis State Governor Yahya Sarki confirmed the release via a statement issued on Saturday. The spokesman said the release victims would undergo medical screening before being handed over to their respective families. Sarki thanked security agencies and congratulated President Mohammad Buhari for the release.


Greetings, RISC-5, friends. So last video, we talked about transparent latch and coding it up in MyGen and formally verifying it. So now we have a nice transparent latch that we can use throughout our model. This video, we're going to talk about asynchronous memory. But first, a little correction. I mentioned that I was working with RV32E, which is the embedded version of the 32-bit RISC-5 instruction set architecture. Several people wrote in to say, no, that's probably wrong, because RV32E only has 16 32-bit registers and not 32. And they are indeed correct. What I meant to say was RV32I, which is the base or integer extension of RV32, which does indeed have 32 32-bit registers. So thank you very much for pointing that out. It's RV32I. A lot of other people wrote in with some interesting suggestions. One of the most common comment was, why didn't you do this versus that? Or you could do this versus that? Or your buses don't have to be that big? And really, the reason is it all comes down to a trade-off between hardware and efficiency, I guess. In some cases, the less efficient you make your software, the less hardware you have to use. Or sometimes the more hardware you have to use. Like, for example, I have three 32-bit buses so far, X, Y, and Z. Now you could get away with a single 32-bit bus and just time slice it. So you send, say, RS1 on the bus first. On the next cycle, you send RS2. You have to latch those. And then on the next cycle, you do the calculation and send the result on the data bus. So that's already three cycles. So I really wanted to have, as much as possible, single cycle instructions. And in some cases, that will result in a larger bus, but maybe less hardware. So again, it all comes down to a trade-off. And this is just the trade-off that I've decided to live with. So there is that. So why don't we get started and talk about asynchronous memory? So let's take a look at a typical memory. So here is a page of the datasheet that I have for a typical memory. Now this is a static RAM. It's an SRAM, which means that there aren't any refresh cycles. It's also asynchronous, which means that there aren't any clocks. So as you can see here in the read cycle, number one, what we're assuming is that the output enable is active. So let me just draw really quickly a picture of the signals for the memory. So there's a data bus. It's bi-directional. There is an address bus that, of course, goes in. There's a write enable pin, which is active low. And there's an output enable pin, which is also active low. So there's also a chip enable pin, which we're just going to assume is always enabled. So for this read cycle, basically the output enable over here is always active. So we're always outputting data. And what that means is that we're just continually reading the memory at whatever address we specify. So according to the data sheet right here, we can see that when you present a new address, let me color that in red, when you present a new address here, then it can take as much as this amount of time in order for the data to become valid. So you present an address here, and then you can read the data at that address over here. And in the meantime, the data is pretty much meaningless, so it could be anything. Now, I think I have on the side here, yeah. So here's some timing. Here is the address access time, which for a 12-nanosecond access part is a maximum of 12 nanoseconds, which kind of makes sense. Same thing for the 8-nanosecond part and the 10-nanosecond part. So if I could get a grip here. So that's really what's going on with address and data. So we can also look at the write cycle. So there are many different ways that you can do a write. And the data sheet calls these out here. There's write cycle number one and write cycle number two. For write cycle number one, it basically says it's chip-enabled-controlled, which we're not going to do, because we want the chip to be enabled all the time, just for simplicity. So let's take a look at write cycle number two. This is write-enabled-controlled, and the output enable is high during the write cycle. So the output is basically disabled. Now, the thing about the bidirectional data bus is that in the memory, there is effectively two buffers, one going out and one going in. And they're sort of connected at the ends. So the idea is that when you want to read from the memory, data flows through this buffer. And that's what the output enable line is for. And when you want to write data, data will flow through this buffer into the chip. And that's what write enable is for. So the thing is that you may not want to have both of these buffers enabled at the same time. Now, the chip is able to handle that. In fact, by default, if both of these are active, then it's only the write buffer that's active. So that sort of takes precedence. But let's suppose you didn't do that, because your output enable signal maybe went to other parts of the circuit. So let's take a look at what happens when you want to write. So what it basically says is, OK, you put the write address onto the address lines. So write address goes here first. But you don't put the right data in there, because you're still outputting from the chip. And of course, if the chip is outputting and you're trying to drive data into it, that's no good. Because then you'll get a driver-driver conflict and burn something out. So what they do is they also say, OK, turn output enable so that it's disabled. So we disable that as that's step one, that's step two. Now, it basically shows here that, let's see, the data out goes high impedance. Let's see, when does it go high impedance? It actually goes high impedance after you turn the write enable on. So you enable write enable as the third step. As the fourth step, you basically wait. And how much time is that? Well, it says that it's T-H-Z-W-E. And we can take a look at what that is. Let me just scroll over. So we're looking for T-H-Z-W-E. And that says that for a 12 nanosecond part, this is a maximum of six nanoseconds. So you can't present data within six nanoseconds because otherwise the memory buffers may not be fully turned off. So once you wait that amount of time, then you can put the data in. So step five, of course, would be put your data in. And let's see. Let's see. OK. And then it says to disable the write. So six is disable write. And what it says here is that you have to hold the data input. You have to hold it for T-H-D. Now let's take a look at what T-H-D is. T-H-D is right over here, and that says it's a minimum of zero nanoseconds. So you could stop presenting your data the moment you disable write. Of course, the problem is that when you do that, well, which actually comes first, if you get it the wrong way, then your hold time is actually negative, which is no good. In other words, you release the data before you release the write enable. And that's no good. So just to be safe, you want to keep the data input stable while your write enable pulse is transitioning. So let me draw that out in terms of sort of a diagram here. So here is your write address. So we turn that. So that's your write address over here. So the second thing you do is you disable write. So the second thing you do is you disable the output enable. And you could do that simultaneously with presenting the address because if the chip is in read mode, then all it's going to do is it's going to read that address. So we're going to disable output enable. And then there is write enable, which we are going to enable. So and then you have to wait however long this is for the buffer to turn off. Then you can present the data. This is the write data. So there is where you present the data. And then while you're presenting the data, you can release the write enable. Then you can release the write data and release output enable at pretty much the same time. So that's write cycle number two. Fairly complicated. But there is another write cycle that you can do instead of this one. So this one is write cycle number three, which basically says that the output enable is always low. So it's always active. So this is what I meant when I said that you can have the output enable and the write enable both active and write enable will sort of take precedence.  So again, the first thing that you do is you present the write address to the address bus. So that's step one. Now the output enable is always active. So we're not going to change that. So the next thing that we're going to do is we are going to activate write enable. So make this active. That's step number two. Step number three, of course, again, is to wait for the buffers to turn off for the memory. So three, wait. And we know that that's going to be 10 nanoseconds, not milliseconds, 10 nanoseconds. And then at that time, you can present the data in. So four, data in. Okay. And then again, you release the write enable and then you can release the data after that as well as the address. So basically it's going to look like this. This is your write address over here. That's your write address. Your output enable is always active. So whether you're reading or writing the memory, you'll leave it alone. Okay. So the write enable now goes low and you have to wait some amount of time. Then you can present the write data. Whoops, that's wrong. Then you can present the write data after that and then you can release the write and you sort of want to keep the write data around for a little while longer. The problem though is that the moment you release the write, well, output enable is going to turn on again, which means that your chip is going to be outputting data. And again, if you don't release your write data fast enough and that's this time over here, then you're going to get a driver-driver conflict. So you have to release this pretty quickly. How fast is that? Well, it's LZWE. Let's take a look at what that is. That's over here. LZWE is a minimum of three nanoseconds. Interestingly, they don't say what the maximum time is. So, okay. So that's write cycle number three. Now, I don't really want to do that. I want to do write cycle number two, which is where you disable the output buffers from the memory and then you can write to the memory. So this way what I can do is instead of this, again, this is going to be write cycle number two. So it's this amount of time that I can actually wait. And once I do that, I can present the write data like that. So that's pretty much what we want to implement in code. So why don't we just go ahead and do that? So here's the code. So the interface is basically just, you know, the address. Data in and data out. Again, because nMyGen can't really do bidirectional signals. We just have separate data in and data out. And, you know, we read and write them appropriately. We also have an active low output enable signal and an active low write signal, which, you know, we'll do it active low because that sort of corresponds to the actual chips that we'll be using. So in the constructor, what I've done, just to be a little bit flexible is I've added some parameters. So you can specify the bit width of the memory and the number of address lines. So the idea is that for, you know, quick formal verification of the entire system, we're just going to set the width at 32 bits and the address lines to five. The reality is, of course, that the memory chips will probably end up using our 16 bits wide. And of course, they'll have way more address lines than five, but we can ignore those address lines because they'll always be set to zero. So that when we formally verify the system with modules that represent the actual chips that we're going to use, you know, we can just set the appropriate width and number of address lines. Of course, we have some assertions. Obviously, you want the width to be greater than zero, the number of address lines to be greater than zero, and I really don't think that we're going to need any more address lines than 16 at any point. Okay, so here are the signals themselves address and active low output enable and write and the data in and data out. Now, here I have the actual memory. It's basically an array put together using a Python list comprehension. So, you know, two to the whatever address lines you have, that's how many memory cells you have. And I set them as recetless equals true, which basically means that even though they will be clocked using the write signal, there is no separate like reset line. So, you know, the memory powers up and whatever data it has is whatever data it has. There's no zeroing out of memory. All right. In addition, rather than putting this memory as a local variable inside elaborate, I decided to break it out as a private attribute of the class. And the reason is that for formal verification, I do want to peek inside the memory to make sure that the internal state is correct. Now, this is different from like unit testing where typically you only test the public API. However, it is very convenient to look at the internal state and especially for formal verification that becomes fairly important. You probably get around it by, you know, doing things like manipulating the API to read the memory that you're interested in rather than directly looking at the memory. But, eh, okay. So, elaborate where we're building the logic of the module. It's fairly simple. So, the thing is that because we don't actually have a global clock that we're looking at, we're only looking at the local write signal, we want to sort of turn that into a clock so that we can clock data into the memory when the negative write signal goes from low to high. So, to do that, we create a clock domain. We're going to call it write clock and we're going to say that it is a local clock, which means that only this module and any of its sub-modules have access to that clock. No higher module has access to this clock, so it's kind of, you know, a private clock almost. So, we add that to the domains, to the clock domains, and then we set the clock signal because remember a clock domain has a clock signal and a reset signal. So, we set the clock signal to negative write because that's what it's going to be. Okay, so now here what we're doing is we're always outputting zero on data out. Now, in nMyGen, again, previous state, later statements take precedence over previous statements. So, I can set data out equal to zero and then I can set data out equal to one and data out will be equal to one. So, this is sort of a default value, zero. And then finally, if the output is active and the write signal is inactive, then the data out is simply going to be whatever the data is in the memory of the address that we've selected. So, and it's in the combinatorial domain because this is an asynchronous chip. You change the address, the output changes. Now, again, we can't simulate things like delays. I mean, we probably could by having maybe a clock that goes at, I don't know, 0.1 nanosecond cycle time and then saying that this signal happens 100 cycles after that signal. But that is probably not a great idea and I think abstracting out the delays is just fine. This last statement is where we actually clock the data into the memory. So, if there is a write signal and it goes high, then we clock the data in into the address. This was just a quick simulation to make sure that I was doing the right thing. And in future modules, I don't think I'll have to simulate anything because at that point, I'll sort of like, you know, be in the groove and sort of understand exactly what I'm writing. But it's always a good idea when you're first starting out with nMyGen to write some simulation to actually see the signals do what you wanted them to do. Okay, formal verification, how does that work? So, the first thing we're going to do is create an async memory with 32 bits and five address lines because that is what I'm going to be using in the system. I could probably get away with way fewer bits and way fewer address lines because after all, if it works for 32 bits, it probably works for two bits. If it works for five address lines, it probably works for two address lines. But nevertheless, I'm just going to do this anyway. Okay, so now when you pass signals to formal verification and you basically tell it, you know, you can manipulate these signals as you like. You can turn them high. You can turn them low at any time, whatever. You can restrict the things that formal verification does if you know that you're going to be using the inputs in a particular way, and that's what these assume statements do. So, first of all, what we're going to be assuming is that we're not going to be output... we're not going to be outputting at the same time that we're writing. So, this basically says that we're not using that right cycle where the output enable is always enabled and then we just write. So, both of these cannot be zero. Okay, the next thing is how we're going to specify that the output enable and the write signal changes have to be separated by one cycle. So, if you remember the clock diagram, we don't want to turn off the output and then immediately turn on the input to the memory because, you know, there may be some buffer collision, so this is just giving us some space. So, if the negative output enable fell, in other words, we're turning on the output, then assume that currently, of course, the write is going to be disabled. Honestly, I probably didn't have to specify that because of the above assumption, but currently the write is going to be disabled and also in the past cycle, the write is going to be disabled. And the same thing holds true with the write signal that if the write signal becomes active, then we want to make sure that currently the output is not active and also in the past cycle, the output is not active. So, this forces formal verification to separate when we change the output and write signals. So, this next statement means that the way we're going to use the write signal is that when the write signal goes high or when the write signal is, you know, active, we're going to assume that the memory address is stable because, again, you know, we don't plan to change the address when we're writing because that would be pretty bad. So, what we're saying to the formal verification engine is don't change the address if you're going to write. Okay, so here's a cover statement. We just want to make sure that, you know, at some point we're outputting A's and in the previous cycle we're outputting B's. Now, of course, because of that separation between reads and writes, you can't write A's, read A's, write B's, and read B's using this cover statement. What this cover statement says is read A and then read B. So, what we expect is that formal verification is going to say, okay, in order to do that, we have to write A, write B, and then read A and read B. Or, you know, write B and write A. It doesn't matter what you do. So, that's the cover statement. And now we get to the actual assertions. So, we want to make sure that when the output is disabled we are outputting a zero. Otherwise, if the output is not disabled then we want to make sure that the output is equal to the memory cell corresponding to the address. In addition, when the write signal goes high, we want to make sure that whatever we wrote is actually in the memory cell. Let's see. So, the next thing, this is something that I stole from ZipCPU. How to formally verify a memory. Basically, what you do is you pick an address in the memory and you say, well, if we don't write that address then the contents of that address should not change. If we do write that address, then of course the contents of that address should change to what we wrote. And that's basically what all the rest of the code is going to do. What we do is we sort of reproduce that local clock because we want to know when formal verification decides to write that memory cell. So, that's all this is doing. And then we have saved data in order to sort of keep a kind of a synchronized copy of the data that we think should be in the address. So, what we're going to be doing here is all the time if the address is the same as the address that we picked and what any const means is that formal verification is free to pick an address, any address, but it has to remain the same throughout that session of formal verification. And of course the magical satisfiability solver, the formal verification engine is going to say, well, if it works for one address then it should work for all the addresses and it's going to attempt to prove that. But what this says is we're going to fix it and then treat it as fixed for the rest of the session. So, if the address is equal to that address that we picked, then if we're saving the data then put the data in into our copy of the saved data. So, that just says when we're writing the memory, keep around a copy of that memory. The next thing is when initial, that is basically the very first cycle of formal verification. Now, on the first cycle we actually don't know what's in memory. So, we don't have a saved copy of that. So, what we're doing is we're assuming that the saved data is equal to whatever is in memory. Now, formal verification is free to say, well, saved data is zero in the beginning, so I should zero out the memory, or it's free to say, I can put whatever random data I want in saved data as long as it's the same as whatever is in memory. And finally, we also want to assume that we're not doing a write at the beginning. So, we're just going to assume that write is disabled. And if we're not in initial, then the saved data has to match the memory. That's all there is to it. So, we can take a look at formal verification now. So, let's go ahead and compile the code. Great. And let's go ahead and run formal verification. Okay, so formal verification took, you know, about a minute and a half or so, all totaled. And we can see that bounded model checking past, which is great. In addition, we found our cover statement and that passed. So, let's take a look at the trace that it came up with. So, we can take a look at the memory. And we can see what formal verification did in order to read b's first, and then read a's. So, what it did was it set the address to zero and the data into b's, and then it wrote right over here. And then it set the address to two and the data into a's, and then it wrote it right over here. And then it read zero, and then it read address two, which totally makes sense and sort of, you know, verifies that what we think it does, it actually does. Okay, so that's great. We formally verified the transparent latch and we formally verified the async memory, which means that we have all the pieces we need to create a register card. So, let's do that. Okay, let's take a look at the register card now. So, here is a kind of a cleaned up diagram of the register card. So, there are really well, let's see one, two, three, four major components here, aside from the clocks. So, there are the memory banks that's going to store the data. There are the output latches which are going to latch the X and Y outputs. There are the right buffers over here, which will put the Z bus onto the data inputs of the memory when we're going to write them. And then there are finally these multiplexers which select the address that we're reading and writing. And again, remember that we have a phase one clock that we have a phase one clock, which tells us whether we're doing reading or writing and they're interleaved. And then a phase two clock, which is when we're writing, when we do the actual write. So, I've sort of drawn out all of the control signals over here. So, the control signals are the ones in red. So, these are the ones that are going to have to be on our system wide bus. So, there is a bit which says whether we are outputting a register to the X bus or register to the Y bus. And then another bit up here whether we're writing the Z bus into a register. And then of course we have the corresponding register numbers, the X reg, the Y reg and the Z reg. So, we have those and we have the clocks and that's really about it. And of course, the X, Y and Z data buses. So, we can see from this big complicated diagram that what's actually going to happen is during phase one, so right over here we are going to read which means that we are going to put whatever address we're going to read from into the X or Y memories. So, here is the read address which is going to be the X or the Y register. And then on the right half of the cycle we're going to give it the right address which is the Z register. So, we're going to do that all the time regardless of whether we're reading or writing. Now, controlling the latch output is the bit which tells us whether we're outputting the register to X or outputting the register to Y. So, that controls the latch. In addition the latch is latched on the negative edge of phase one. So, that's when we latch the output of the memory onto the bus. And when we're writing, well, there's this little circuit over here which basically controls the right buffers over here and it also controls the right pulse to the memory which basically gives us this when we're writing that there is the right data right over here to write into the memory. And that's really about it. So, you can pause and look at this diagram and, you know, prove to yourself that it works, but let's not just leave the proof up to you or me, let's leave the proof up to formal verification. So, let's take a look at the code and see what it looks like. Okay, let's take a look at implementing the register card. So, up there I've put the diagram of what we wanted to build and I'll just be going through the code and, you know, drawing on that diagram to show exactly what piece of code implements what piece of that diagram. So, I just put some comments showing the attributes. So, we've got our three buses, X, Y, and Z. We have our control lines. These are one-bit control lines, whether we're reading from a register to X, reading from a register to Y, or writing from Z to a register. And Reg X, Reg Y, and Reg Z, those are which registers we are reading or writing to. And here's a little diagram of the clocks and it's, you know, basically just taken straight from the diagram. So, these are the clocks that we're going to assume that we have to work with. So, these are basically two clock domains, pH 1 and pH 2. Alright, so here what I've done, well, of course, up here I've declared the buses as 32 bits. I've declared these control lines as single bits and the registers as five bits because, of course, there are 32 of them. And then I've defined the sub-modules.  So, we've got two asynchronous memories. Those are the two banks. Those are this XMEM and this YMEM bank. We have the two latches. So, those would be this latch here and this latch here. And then we have the what I'm calling the right latches, which are these two buffers over here. Now, again, I'm using a latch. I'm not actually using the latching feature. I'm just using it for its buffering. And in fact, when we implement it, I'm probably just going to use the same chips because it's always easier to design a circuit with the same chips because then you don't have to have so many different chips to place. You can just place the same chip in all sorts of locations. It's the same thing with resistors. You probably want to stick with using the same values of resistors, the same values of capacitors, unless you can't. And then, of course, you don't. Okay, so here's the code. We start with a module and we start by pulling out phase one and phase two, specifically the clock signals for those domains. Remember that a clock domain has a clock signal and a reset signal. So, we're going to just be using the clock signals. And here, what I've done is I've just, you know, given myself saved myself some typing. So, here I am loading the sub modules into this module. And again, you know, here I'm just sort of, this is not saving myself typing, but this is actually for readability. So, you know, basically I'm saying that the read phase is when phase one is high and the write phase is when phase one is low. So, the next thing we have is just a statement that says that the two write lines for the two banks are tied together. So, we're reading them at the same time. So, I can put in green, sort of. That's what that statement does. And let's see what we have next. Okay, so, again for readability, I say that the banks output enable signal is equal to the read phase. So, in other words, during read, we want to output from the banks. Now, because the implementation has an active low output enable signal that's why I invert it over here. So, that just says that we have for the read phase, let's see here it is. Right here and right here. So, those are those signals. Okay, so the next thing is I have two addresses. Now, these are actually intermediate signals. And MyGen already has a MUX statement. And what this allows us to do is select one of two signals based on a third signal. It's kind of like, you know, if then else, or maybe a ternary. So, what this is, so what this is is the implementation of these multiplexers over here. These two multiplexers. Based on the read phase. Right, so we're selecting either X or Z or Y or Z. And then we are feeding that into the memory address. So, that would be these lines over here. Great. Alright, what's next? We have some data lines. Okay, so what this is. Now, this is basically the way that you define a bus that has high impedance drivers on it. And only one of them is going to be driven at a time. So, we can see that this is this mem data bus. So, I'll draw that here. That's what these buses are. Mem data, X mem data, and Y mem data. So, the X mem data is just equal to the data out coming from the bank and the data out coming from the right latch. So, basically this bus gets driven by either the output of the memory or the output of the latches. So, that's what that implements. And remember that when an output goes high impedance, it is zeros, which means that, of course, OR is the right thing to do. And finally, of course, we want to take that bus and feed it into the memories as well. Okay, and this section of code I just realized that I completely skipped over. So, let me take care of that right now. This is the multiplexer right over here. So, we have the negative right signal that's normally one. So, that's this part of the multiplexer right over here, except if Z to reg is one, then we select phase two. Now, I didn't use this using the MUX statement, but I could have. But to me, this was sort of a little easier for me to understand that the negative right is inact, the right signal is inact... that the right signal is inactive and only when Z to reg is selected or high that we let through phase two. Okay, and now I'm basically saying that the output enable, again, this is a readability thing, for the output enable, which I'm saying is a positive signal, it's the inverse of negative right, and then of course I'm just inverting it again, because the output is a negative enable. So, you know, this is because sometimes active low signals are hard to reason about, so it sometimes makes sense to make all of your signals positive or active high, and then you can reason about them. So, that's what this does, it basically just sets up the latch. So, we have data in coming from Z, so that's this okay, we have latch enable is always high, because it's always going to be transparent, it's always on, and the negative output enable is of course the negative of the latch output enable, which is just this signal over here. So, that's what that does. Finally, we've got the X latch and the Y latch to deal with, so the data in comes from these memory boxes, so that's here. The latch enables are just phase one, so that's this and this, and then finally the output enables are just the negative of whether we want to read from those registers. So, that's this signal here and this signal here. And the very last part is to actually go ahead and output the latch is, and the final part is to output the latch is onto the buses, which would be this and this, so let's see, yeah that pretty much covers the entire design. So, now let's take a look at formal. So, in order to verify this, what I've done is remember last time we sort of assumed we wrote assume statements for the various signals, well here what I'm saying is I know what the clock is going to look like, so I'm just going to create that clock. So, I create two clock domains, phase one and phase two. Of course, I'm going to declare the register card and I'm going to add the clock domains to the modules domains and the submodules to the submodules as usual. I have a cycle count, which I actually don't use for anything, and a phase count. So, the idea is that we are going to have six phases. So, let me see if I can move over this diagram. Yeah. So, we can see the six phases here. It's actually one, two, three, four, five, six, and then back to one again. So, those are the six phases. I mean really I could have just said there were four phases and maybe saved myself some time, but it looked more symmetrical to just divide the clock into six and then, you know, change the signals based on that. So, that's what this section of the code does. We're basically counting the phase up from zero to five and then back to zero again and we're manipulating the phase one and phase two clocks. We're also increasing the cycle count every time we hit the end of a phase. Again, I don't really use it, but, you know, why not, it's there. Now, here is where I have some assumptions, because remember that when you allow formal verification to take control of a signal, sometimes you have to tell it that there are certain restrictions on the signal. And in this case, what I'm saying is that all of the control lines and the data on the Z bus must remain stable or we're stating that they will remain stable throughout an entire cycle.  And we state that we are not going to be doing that. Okay, so here I just have a simple cover statement. What I want to know is how do you manipulate the control lines such that at some point the output on the X bus is non-zero, the output from the Y bus is non-zero and they are also not equal to each other. So what I want to know is, you know, kind of what I did with the asynchronous memory. Can you show me an instance where the two buses are reading from two separate registers and they're both non-zero? Which reminds me, once again, I've forgotten to say that register zero's output is always zero. So I will add that after I do this formal verification. I promise. In fact, I'm going to put it to do here right now. Because I've consistently been forgetting that, haven't I? Okay. So here are some assertions. Now, basically, this is that when you read X, when you read a register into X or you read a register into Y, those buses should not change during the cycle. So, you know, that basically says that they have to remain stable so that we can do the calculations through the entire cycle. In addition, if we don't want to output anything onto the buses, then those buses should be zero. High impedance in the actual circuit zero here. Now, on a right, what we want to make sure is that the data that we have on the Z bus was actually written to the register that we wanted. And not only that, but it's written to both memory banks. And here's where we sort of sneak into the private instance variables. So here's where we sneak into the private attributes of the register card and, you know, peek into the memory and just make sure that, you know, everything is correct. Okay. And then here is pretty much the same thing that we did with the asynchronous memory. We are going to just pick an address, any address, and of course I'm going to change this when the address is zero. And make sure that the contents of that address doesn't change unless that address is written to. So that's what all of this stuff is. It's basically the same thing. Except in this case, we want to make sure that we check both banks of memory because, so remember that each bank of memory holds a copy of the registers and, of course, they should be the same. And that's it. So formal verification has completed. It took a little while. It took about half an hour to do, presumably because there are more things to check. I don't know. It's kind of no coincidence that it goes very quickly for maybe, you know, the first 12 cycles and then it just bogs down just that sort of interface between going from cycle 11 to cycle 12 probably because we have six phases in our cycle and it's only, you know, at the interfaces of the cycle that you can change the control signal. So, you know, maybe that has something to do with it. So it happens when you're checking the assertions for step 11, it happens again when you're checking the assertions for 17, it could be, you know, three cycles down the line. But, you know, whatever, the point is that it passed, which is pretty good. If we look at our cover statement, it didn't take very long to find an example. Let's actually take a look at that. Okay, so let's take a look at is this the reg card? I think this is the reg card. So we can take a look at the buses. We can take a look at phase one and phase two. Okay, so we can see that it's gone through two phases. Let's take a look at the control lines for x and y. Okay, so they are both zero, except on the very last cycle where it changes to one. We can look at reg x, reg y, and reg z. And we can look at, there should be another z thing to register. Okay, so we can actually see that what Formal decided to do is right over here, we are writing to register number five. What are we writing? We're writing 08,000, and blah, blah, blah. And then on the next cycle we are writing to register one with 0,00 2,0,0,0. And then over here we are going to read from registers five and registers one simultaneously. And that's how you get on the data bus two different values that are non-zero. So that's pretty cool. So it sort of shows that our circuit at least can do something, which I guess is important. So now what I'm going to do is I'm going to modify the code to add register zero. So there are a few ways we can go about this, but almost certainly what we're going to need is something that checks whether the X register or the Y register register number that we want is zero. So let's just add I'll just call that some zero checking thing, right, and Y goes in here and X goes in here. And then maybe what we want to do is if it's zero we don't want to read from the memory, but instead what we want to do is sort of inject a zero. So maybe what that should be is perhaps another latch, another two latches which go to X and Y. No, that's not really going to work because then we have to turn off the other latches. How about this? How about we have a buffer that goes into here that outputs a zero and if the register is zero and we're reading it then we then we select that buffer to the output instead of the memory buffer. Yeah. So maybe that's the right way. So we're going to have to modify these output-enable signals. So let's do that. Well, let's see what changes that I made. So first of all I added these zero latches. So this is going to put zeros onto that internal data bus if the register that we're reading is zero. So I of course added that to the sub modules and then we have the checks for register zero. So this is just a signal and if the register is zero then the signal is high. So the modification that I had to make of course is that when we read memory we don't want to read the memory if the register is zero because otherwise we're both outputting a zero through the zero buffers or the zero latches and through the memory. Which wouldn't have any effect on the simulation but of course it or on formal verification but it does in the implementation because then you'd still be outputting something on the memory. By the way, are these rings in my glasses distracting? So I have a ring light in the camera that is giving me some extra light. Let me know. So what else did I have to do? Well of course I had to set up those latches right over here. So the latches have data in of zero. They're always transparent but the outputs are only enabled when we're reading register zero for x or register zero for y. Let's see. And then this is the modification to the internal data bus. I just added that or statement. Let's see. That is it for the logic in terms of formal verification. So first of all I modified this assumption. Originally I had it so that if the phase count was equal to then the current in the previous five control signals all had to be stable. This time I decided to make it so that if the phase count was non-zero then all the control signals had to be stable. Just for the previous clock cycle. Turns out that this saved a lot of time in formal verification. So that was interesting. And let's see. I had added a new assertion that if we are reading from a register and that register number is zero then the output should always be zero. And finally when we're actually doing the checking of the memory I am placing an assumption saying that you can pick any address except zero. You can't pick that one because you can't write to it. And of course obviously even if we do write to it it doesn't matter because we're not going to be reading from the memory at register zero. So that was that. And here is the command line. Let's get rid of the whiteboard. And it passed. I mean it did the right thing. And you can see that it only took 11 minutes instead of something like what was it half an hour or more. So that is the register card. And that is it I think for this video. So we have completed and formally verified one card out of the system. We have determined that in addition to the X, Y and Z data buses we are going to need certain control lines for the registers that we're reading and writing and whether we are reading and writing some registers. So those are our going to go into our control bus. So the next video we're going to deal with another card. The shifter is probably pretty easy to do. Why don't we do that next video? So until then, thanks for watching. See ya.


You are still watching Waze Now Global Family Day also known as World Peace Day is celebrated every year on the 1st of January of course to promote the concept of harmony and unity in the world for the more it emphasizes the idea of the world as a global village in which we are all family regardless of Citizenships borders or race. I mean when I saw this international holiday, I just remember the speeches that Black man Putin and then what's his name? the Ukrainian guy Zelensky. I remember their speeches as a chat. Wow What needs I mean literally like is there I don't do that I really don't believe in war. Yeah, because I believe truly that there's absolutely nothing that can be settled and resolved without I mean like without There's a lot of things that you can settle without having to go through the route of violence or the route of violence Whatever you call it, right? So when I see this killings here and there left right and center you bomb me I bomb you you do this I do that. I'm just wondering like What exactly is the fight for is he a personal ego thing or what exactly is it about right? And we talk about world peace day We're talking about family day and you're looking at it and you're seeing that you know People cannot just rise above setting kinds of differences. Just embrace peace no matter what it is You know, it's just difficult one can only hope I mean we're in the face of two Major conflicts that have been one running for longer. That's the Ukraine Russia Israel Gaza and then now we've got Israel and Hamas and you know America waning and all the Effects of that across the world anti-Semitism people who are pro Hamas. I mean it's when you look at it None of it makes sense.  But I was watching a movie last night actually And it was about Scotland many many, you know decades and centuries ago where the Kings Had asked the King of England the Lords of Scotland and asked the King of England After the death of the King without an heir to help them pick a King and in that in that decision They realized they made a mistake the King tried to in fact took over Scotland a photo wall for eight years and lost and eventually And I just you know in watching that movie. I thought to myself the same things in the 1300s This is 2024 You know nothing really new on your son whether you are fighting for land whether you are fighting for ego Whether it's driven by greed was women all of these things. They have always existed and I kept saying that Until the human race decides to do things differently And I don't know even what is going to trigger that because maybe it's one one day aliens turn up And we all have to band together. We don't care Maybe then that would be what will happen, but we keep repeating the same things over and over again So we're not learning, you know Well, there have been so many wars Well, by now everybody should have the sentiment you have which is that never again, but here we are I was I just in fact I was playing something for background noise and I was watching the The the debate for the Republican nominees in America and all of them were unanimous in the crush crush kill destroy and I'm like These are people who are vying to be leaders So I mean that if we all still see that, you know, everything must be met with brute force I think I think I did at the base of every war that I have studied, right? It is a function of ego I Is a very big part like so can you just put aside those like literally who are you trying to impress you want to show that? Oh, my weaponry is a lot. I can dominate you It's just it's just ego play out. Yeah. Yeah, and it's so sad. It's so sad All right, so what did you find for us in today's news? well, I'm starting my story on one based around security and This has to do so it's not really for me about the locality In which the story is about so the headline Says lecky streets gates removal will worsen in security And that was coming from human rights lawyer and senior advocates of Nigeria miss Diablo lower I think we're who are who are said a decision of the legacy government to remove street gates in lecky phase one is ill advised now He said this yesterday And of course, we all know and remember what happened in lecky phase one during the SARS Ensars protest and how lecky was overwhelmed with crime and you know and a lot of streets had gates put in After because let's be honest That's a quite a porous neighborhood because it was many residential, but now it has become quite Business district and commercialized so people are sort of living in the middle of businesses And you know they really did go through a lot in that period and they of course then taken their own security into their hands and put up And put up these gates now I understand that and this was driven according to the story by the visit of the president over the Christmas break and where he was According to the story wrongfully informed that the cause of the traffic was that there were lots of street gates now Put up in lecky, which was causing gridlock To which the Lagos state government has now started to remove those gates So he's appealing to the governor to instead work with the residents association to achieve something that is a workable arrangement Around it. I mean why the story stood out for me It's not really about whether it's lecky or wherever the case may be the fact is that as citizens We constantly have to take our own security into our own hands We build more gates. We build higher walls, you know, we have we pay for our own private security So for me, it's it's more the symptom the root cause rather that I'm looking at in that You've clearly not been able to provide The kind of comfort that your citizenry need to know that I am safe without gates These gates to be honest only give us an illusion of safety so they have taken the matter into their own hands and Rather than having this sort of open dialogue around how do we make this place more secure? We just always have largely reactionary Approaches and that is it. Take it down. Take it down. I saw it. It is just the wrong guess. Yeah Reaction to that kind of Problem that you're trying to fix so if there's a gridlock it is not removal of those gates Let me cuz let me tell you we have we are far from where we were Where you just wake up in the middle of the night. There's a Like yes Christmas time at night you are always hearing gunshots you always here waking up in the morning to hear Oh, they rubbed in this street. They rubbed in that street It's tough of ours then when I was still with TVC He came back to a bruise all over his body and robbers had invaded the house Even while I was in the university in Delta State University, I we because of the Insecurity right the information that we gathered was every every room had to have a burglary So we my mom and my dad installed the burglar inside so you love the door, but there's a burglary outside So do you know that even when the armed robbers came they didn't even bother to touch our door? Because even those who work with information, right? This is not a case of oh this gridlock Do you understand the problem that you're going to cause for this residence? A lot of us are paying through our noses Living in gated estates. Yeah, not because we choose to live in gated estate because we want to be big men and big women No, it is because of the security that we're trying to ensure that at least we're safe In the in an estate the other day I saw a video on social media where the man's car was completely vandalized in Benin Vandalized it took out the brain buzz it took out everything that was valuable in that Mercedes SUV Genocide and these are the things that you know some of these What's he called this? estate security Measures that a lot of residents have put in place together Yeah, I think for me. I mean I also understand how these gates can impede traffic Because where we find that alternative alternate routes are available I mean typically the idea is that when you try to to direct traffic all through one route You're always going to have good luck. So these are the streets and then Alternatives and meant to disperse the traffic and ease off. But you see the thing is these things are like I said There are consequence. So you have to have engagement. Oh, you put there's always a why we're not crazy, right? Why is this gate here? How do we achieve the security that you want and also ensure that we don't cause good luck Then we have engagement we have interactions perhaps, okay You don't need a gate at every two streets Maybe if we look at the and just a set up and we create a big barrier that says okay There are gates maybe four gates in these streets and every street in between. There are no gates Those are the kind of engagement that we should have but when people have gone and done your job Then you now come from the place of authority where you have failed to do your job Satisfactually to protect the people and give them a sense of security. Then you just will the hammer of authority So I mean it goes for every neighborhood, but of course God help us Well, I feel I agree hundred percent with you some of the gates are unnecessary. Yeah, like you see this Every every street once you put gates at the major because we have a lot of people that take hard drugs and all of this Around right so if you put gates at the major points, it is enough Yeah, you know instead of all those in in-betweens is really just dialogue to understand What the security threat is and how best and how best to mitigate it. All right, so I am not oblivious to the expressed and Sometimes unexpressed frustrations of my fellow citizens I know for a fact that some of our compatriots compatriots are even asking if this is how our Administration wants to renew their hope and this was an excerpt from the president's speech that he gave this morning So I woke up this morning quite late, but I had to go catch up on the speech on social and on YouTube, right? I'm quite Not really. Let me not say I'm excited. I am I'm looking for the word. I'm not excited, but I am I Well, I appreciate let me put that word I appreciate the fact that he pointed the real core issues that are happening You know that we need to really focus on in Nigeria. However, I don't understand how much of security You know when you say that, you know, there's been a lot of progress in security on what matrix are we Measuring some of these things right which will just make me to keep quiet because we're gonna go on a break now I will now discuss our topic for today. I'm holding myself