Hey guys, Thundie here and welcome to another Battle Fit. Now this one is between the S21 FE and the Pixel 6, to find out who has the best device in that sub premium category. So let's go ahead and find out. Thanks for joining me on this video, hopefully you are enjoying the content on the channel and if you're joining us for the very first time, definitely check out more videos on the channel. We just came back from CS 2022, so some really cool tech there. Go see those videos. Also we have done a video on the S21 FE versus the S20 FE, which is, you know, it's cool. It's a nice comparison, but I know a lot of people are wondering, what about the Pixel 6? It's priced at $100 less than the S21 FE, so how does it actually compare? So we know that the S21 FE and the Pixel 6 both have 6.4 inch displays, so they have displays with the same aspect ratio, full HD, with the refresh rates being different for both of the devices. Pixel 6 at 90Hz, while the S21 FE is 120Hz, so you've got a faster refresh rate, especially if you have gaming in mind. Now in terms of other specs though, we do have a 4600 mAh battery for the Pixel, while 4500 for the Galaxy S21 FE, so it's similar in terms of the batteries there. Now in terms of design and feel, the Pixel 6 has a very unique design with that camera bar if you will, while the S21 FE takes design from the S21 with the cameras on the side, you can see the left hand side of the back of the device. It all depends on what you like there, so I would say that's something that's interesting for both. They do come in multiple colors and they do have, of course, high-end processors. This is where things begin to differ. We do know that the S21 FE is rocking a Snapdragon AAA processor, while the Pixel 6 is rocking the Google Tensor processor, which is Google's latest processor on the device, and comes with 8GB of RAM. So let's go ahead and jump into some of the key specifics. Let's start off, of course, with audio. Now both of them have stereo speakers, but in terms of the output and performance, let's take a listen to how they both sound. Honestly they do sound really good. I think the Pixel 6 sounds much louder than the S21 FE, but in terms of clarity, I think they're almost the same, but what do you guys think they are in terms of audio from both devices? Now, we jump into the heart of the matter, gaming and performance. As we know, the Tensor processor is a new processor from Google and we have the Snapdragon AAA for the S21 FE, and then we had to, of course, check out a bunch of games for both devices. As you know, we do our benchmark with Gamebench, which you can download down below if you want to use it. This is where things were same and interesting. So we started off with Call of Duty Mobile. Both devices, they both ran at 60 frames per second, which is to be expected for Call of Duty Mobile. If you fail here, then there's just no hope for you. Then we moved over to PUBG Mobile. Now PUBG Mobile, plain and smooth extreme, both devices ran well and ran at 60 frames per second, which is nice to see, and a good indication as well. And when we moved to PUBG Mobile Ultra HD Ultra, we got about 40 frames per second, again a good indication and something that's standard across the board for almost all devices, top tier devices. Now, when we moved over to Genshin Impact, this is where things differ. So for Genshin Impact, both devices ran at the highest settings for the game and we played the game for 30 minutes, roughly for both devices. This is where there is a stark difference. Now running 60 FPS was the S21 FE, which ran for 60 FPS for that full period of time for 30 minutes, while the Pixel 6 ran at 30 frames per second. Actually within three minutes of gameplay, it started dipping down from 60, went down to 40, and then quickly to 30 to 32 frames per second. So this is a clear indication of what this processor can actually do in terms of gaming. So you can have that there. Now of course, with smartphones you do other things besides game and listening to music or audio. You also have cameras where you can do a lot more with both devices. Now the S21 FE has a 12, 8 and 12 megapixel camera, triple camera setup, while the Pixel 6 has a 50 megapixel main sensor and a 12 megapixel ultra wide. I can tell you how the cameras are, but I'll let you see video and photos, especially while I was in Vegas at CES 2022. So this is the part that was a bit shocked. I thought there would be a clear drastic difference with the cameras because Samsung is going with an older camera sensor, while Google has a newer sensor and of course we know how their processing is. I think it all depends on the situations from what I saw, but I want to know what you guys think because I think it's closer than most people might say, so let me know your thoughts on the camera. Now when we look at both devices, I would say in terms of what I would pick to be a day to day, I think the S21 FE wins this battle. The Pixel 6 is a very solid device, but for me when it comes to gaming, it just doesn't handle games well. And on the other aspects, you do have a 120Hz display on the FE, and you do have really good speakers on the FE as well as the Pixel, but the camera performance is nothing mind-blowing for me to go with the Pixel. So I would like to know your thoughts. What do you think? Do you think the Pixel won this battle? Do you think I'm wrong? Or do you think the S21 FE is justified at its price point? Let me know what you guys think and know pre-orders will be starting soon. If you want to, definitely use our link down below and pre-order yours or pick up a Pixel 6 if that's something you're looking for. Otherwise guys, don't forget to like, share, subscribe, and always enjoy entertainment.


In early October, the busy streets of San Francisco are going to be transformed into a sea of uniforms. Sailors, Marines and Coast Guardsmen will be in port for Fleet Week 2011. 10,000 service members will pass under the Golden Gate Bridge on ships, just as they have for the past 30 years for the event. It's a great city, so the opportunity to be up there wearing the uniform and highlighting the Marine Corps is absolutely perfect. Scheduled highlights are the Navy's Blue Angels, Marine demonstrations similar to this one from Marine Week St. Louis and a band competition, a big crowd draw from last year. People, once they heard the band playing, started opening up their doors and came out to listen to the band. People, tourists who were walking on the street, did the exact same thing. So with an event that had very little publicity, we had hundreds of people. This year's Fleet Week is also a time for city emergency planners and military leadership to exercise how they will work together and respond to an earthquake. An event that's not an if, but a when. We see this as an opportunity for us to do some training on things that do come across our way from time to time, but in particular a mission that would be very challenging and one I suspect we could be tasked with in the event that were to occur. For the citizens of San Francisco, Fleet Week has traditionally been a time to thank those in uniform for their service, especially since 9-11. They make you proud, you know, that they're very professional, very courteous, very well trained and just well behaved, I must say. And we just had a ball with them, you know, I'm in the restaurant business, I own a restaurant in San Francisco, and we just had a room full of very happy people and they had a very hard time buying a drink. I don't think anything but they're out in their pocket, which is the way it should be. Fleet Week runs from October 6th through the 11th. In San Francisco, I'm Staff Sergeant Brian Buckwell.


My work here at Cambridge Welcome Trust Research Program involves developing effective and innovative community and public engagement initiatives that will enable community members and publics to be part and parcel of research. Community and public engagement involves creating platforms, creating avenues that enable researchers on one hand and members of the community on the other hand to come together and using good communication skills and good facilitation skills, leading them through a dialogue that is mutually beneficial to both parties. Our community and public engagement strategy has two structures. On one hand, we engage the community purely as a way of giving information and receiving information from community members. So we give information, for example, in terms of what health research is, why it is important, why we are doing it in this particular region. We give information also about why it is important for community members to understand their rights, why they should be involved in research and the kind of processes and procedures that will be undertaken and them to understand that they can join research freely without coercion, leave research at any time they want to without any consequences. So that is part of information giving and why we do that. We are receiving feedback, we are receiving concerns, views from community members in the general engagement. On the other hand, we have what we call study specific engagement and in study specific engagement we basically work with scientists. It starts all the way from when a researcher is developing their concept. And we look at what is the study about and then begin at that point to think through with a scientist what kind of engagement will be needed for this type of work. And that moves on to proposal development at the point when the scientist is developing their proposal. And we sit in proposal development meetings or protocol development meetings and look at the protocol and look at what engagement strategy the scientist has put together for their study and advise whether that is appropriate. If it is not appropriate, we then guide them through what stakeholders do you need to engage, what methods do you use, do you use meetings, do you use workshops, do you go out in community meetings to talk to community members. We further move on to looking at consent documents. What information has been put into information and consent forms that is important for the research participant to know and understand. What language has been used, is it language that a participant can understand. And if the language is technical then we advise the researcher to turn it down. And then we further move on to support the translation of those consent documents from English to Swahili and vernacular languages. So those are sort of like the two broad structures and approaches that we use here at the Cambry Welcome Trust research program for our community engagement. Two key things that have come up in the last five to ten years that are important things for community and public engagement is one the issue of trust and relationship building. It is a continuous process and any person who is intending to implement community engagement activities especially when they intend to stay in a particular area for a long time they must know that community engagement is a process. Relationship building is ongoing, trust building is ongoing. One minute you have trust from the community members, the next minute you don't. Something has happened in the community that has broken that trust and you need to put in place measures to mend, to make amends with the community to remedy what has happened in the community. So it's a process that is one key thing that we are continuously learning and has been going on over the last sort of like five to ten years. The other thing that is important for community and public engagement that has come up in the last five to ten years is that researchers need to also build capacity of how they communicate with community members. They need to understand their skills, understanding the importance of engagement and what that puts into their research. The value engagement brings into their research. That's very important because community members are the people who participate in research. So it's important for a researcher to understand the lived experiences of community members or of research participants. In order for them to use that information that they get to help improve their studies. So those are sort of like the two broad areas that have come up as important areas in the last five years. It is important to invest in community engagement and engagement itself is important because on one hand you have community members who are the ones that first of all host research activities. So for an institution like Cambry Welcome Trust we are hosted within a community. Within that community we have people or individuals who will volunteer to participate in studies. So health research develops products, equipment that are going to benefit community members, are going to be used in health services for example and they have to be tested on somebody, they have to be tested on somebody has to study the human body. So research participants take time away from their work to come and do research. We are in their homes, we are in their faces regularly so it is important to fund engagement activities to develop initiatives and approaches that will empower community members to understand what they are getting involved in. We are in a middle income country, literacy levels are not the best and often we find that information that is put in scientific documents or documents where participants are required to give their consent can be technical. And so activities that enable community members to understand the entire process of research are important activities to fund. On the other hand engagement also is important because it helps ethical conduct of research. So that already is a very important factor for somebody who is thinking should I put in an investment in this type of work. It enables researchers to understand concerns from community members that help them as they think through their next research work of how best do I ensure that I am conducting my research ethically.


What's going on everyone Sam here with late in sports cards We're ripping 2022 tops luminaries baseball hobby 12 bucks full case break number seven random division style Here's a look again at your random results We had Chris down to Travis as always you could find these on the website under the results tab as well as the Lincoln Chat, let's get going guys. So we got 10 bucks Tuesday after this. We're looking at 17 spots still left for baseball A lot of good products in that that one. We're looking at some box of 22 sterling 2020 Bowman sapphire 2019 Bowman draft sapphire And a couple others as well couple of the really good products There's a under wrap baseball. I'm back baseball three and two baseball pristine both years of Bowman sterling 21 and 22 So a lot of good products really not a lot of teams you could really go wrong with there, which is good Let's do it Luminaries All right first one here guys good luck everybody good luck everyone To a 15 go into the AL West mark McGuire There you go Danny nice one there two out of 15 on the mark McGuire that is a hit King Ah Career high season average 312 nice one there. I Hope there's a cut that'd be so far It's a big random for a cut to Big time at random. They want to go on six of fit of 15 You guys can see there. It's gonna be Jonathan India on the spark of light. There you go NL central Scott F Spark of light. These are so cool looking with the silver ink Nice one there on a one of the game's young stars as well nice one there Do this really quick? 16 to go guys on ten box Tuesday 16 spots left boom 10 bucks It's gonna be David Ortiz 10 out of 15 on the home run Kings Number one and Red Sox postseason home runs total AL East who do we got on the AL East? That's gonna be Peter M. Congrats Peter There you go, buddy 10 out of 15 Such a nice looking card man. I love Love love love the Mary's purple. We got coming up here. Let's go We got on the purples two of three Jim Tomei Going to the AL central Danny see nice one there man That is hit Kings autograph season hits total in 2006 With the White Sox and game use Jersey He was a monster 600 homerun club right there Nukes. Oh, yeah, absolutely. There you go. Congrats Danny Danny Dan the man Like a save those what I say those this guy This guy right here. We've got a Pedro Martinez nine out of 15 nl each kill a trap That is so nasty on the masters of the mounds auto unbeaten in his first seven Phillies starts Two colored patch on that one That is nasty man nine out of 15 Phillies Pedro best Pedro Phillies Pedro is best Pedro that plays for sure right there is 203 that's gonna be Carlton Fisk very nice There you go. AL East Peter M again picking up a Carlton Fisk on the hit Kings AL triples leader in 1972 with nine. It's a lot of triples actually AL East Nice one there Congrats on the Carlton Fisk two out of three on the purple second purple the case not too bad seeing those low numbers Phillies Pedro is like eighth best Pedro three of ten. We've got Wade Boggs going to the AL East By way of the Red Sox that is seven two hundred hits seasons for the Red Sox It's pretty impressive actually It's awesome game use bat on that one AL East Peter M getting another one there Congrats, man Love seeing it That is again three out of ten a lot of Red Sox in this case unfortunately Love it had a blue coming up here Boston Marlins We've got your Don Alvarez going to the AL West Danny see There it is home run Kings Astros fastest of 50 home runs Game used a Jersey auto of air your Don AL West Danny see Congrats, man. Yeah, very nice time to get that one for sure All right, we got four boxes left guys to trash cans One up here. No, we don't Mike Piazza for the Mets on the two colored game use patch auto 10 out of 15 there you go again trap One of two catchers with two 40 home run seasons There you go Mets Piazza. That is sick the pizza man all the Marlins 15 to go guys We're getting there. We are getting there All right, we've got 10 of 10 is Jose L2. They're going back out to the AL West There you go again Danny There it is Danny nice hit on that one 10 of 10 that is career hits total almost 2000 for out to that One seven seven seven game use Jersey there 177 actual sized photo geez man Pull another NLE you're in on 10 bucks. All right, we got to do that then trap this box right here Here comes a Bryce Harper That'd be the call of all calls right there That's not it's gonna be Fernando Tate's junior Chris B getting in the fun right there on the NL West 42 is a our number one an NL home run total 2021 one out of five on the Tate's Nice Fernando Tate's There it is. I think you can do a recap on this one. So you went up Why not your McCutcheon as a Philly six out of 15? There it is again trap Congrats man McCutcheon's Philly Philly's McCutcheon is best McCutcheon for sure Just a small notch above Brewers and Yankees McCutcheon and Giants McCutcheon There you go. Congrats Trav nice one there All right, let's do a quick recap here guys Got what's up, Dan and the Wiseman. What's up? Andrew McCutcheon NL East That is Mike Piazza NL East you're not Alvarez AL West Wade Boggs AL East Carlton Fisk AL East that is Pedro NL East That is Jim Tomei AL Central David Ortiz AL East Jonathan India NL Central Mark McGuire AL West Fernando Tate's Junior one out of five NL West and Jose Al 2-bay 10 of 10 AL West That'll do it right there for the break. Thanks again guys next up. We've got 10 Box Tuesdays. Let's fill it up


And that's like the story of the brigand who was robbing a caravan and I think it was seeing a bohemian at him if I'm not mistaken. One of the Sadiheen that someone took some and there was some juice in someone's saddle and they mentioned it to the head brigand that he asked him, he says, do you want some juice? He says, I'm fasting.  And he said that I wanted to leave a door between me and Allah to open. I wanted to leave at least one door between Allah and I open. He's robbing a caravan, but he's fasting. And the meaning here is really deep though, because there's a lot of people that just caught up in certain things. They just find difficulty in leaving certain things. And sometimes we as a community will not encourage them to do the good that they do. They can still do, right?  And then he looks over and he sees the brigand making tow off. He says, is that you? And he said that I left the door open between Allah and he accepted me and he let me in. And this is why I never make anyone despair. If someone's doing 991 things wrong, just encourage them to do one thing right. Just encourage them to do the smallest little thing, the tiniest little thing. And you never know. Especially in our time, given how difficult things are, is that that could be the door for them to turn to Allah to barakah wa ta'ala.


Out of her life, come on the will for her, out of her life. Daniel Adams has always wanted to be somebody. I mean, even with his attempt to be a cage fighter, which is fine. Wanting to do something great, there's another problem with that, but if you do so without any regard to whether you're mocking God or hurting the body, well then that's quite another story and that's him. Remember, he came to fame because of this little leg lengthening scheme that he was copying off of someone like a Todd White. That was clearly a sham. And when you show yourself to be a modern day Simon the Sorcerer, you know someone like in Acts 8 who wanted to buy the Holy Spirit so that he could also use it to also gain glory. Because remember, the Bible says that he saw himself. He wanted to be regarded as something special. The same thing with Daniel Adams. So now his new stick, his new way of going about making or having fame is casting out demons. But Daniel Adams happens to be one of the worst added in terms of getting people who are bad actors. It doesn't matter because he knows one thing. Doesn't matter how bad the acting is, doesn't matter how much it does not comport with scriptures.  Why? Because people have itching ears and they will want to be entertained. Daniel Adams has been caught using a paid actor, the same paid actor that Catherine Crick has used as a matter of fact, multiple times. But it doesn't matter, he just keeps going and people still keep following him, still keep eating it up. But at some point in time, Daniel Adams is going to pay. I want to talk about that a little bit later and then why we keep bringing this up and calling this out. But let's look at one of his latest antics on stage, which happens to be one of the worst displays of bad acting, but also one of the greatest displays of mockery of the word. Uh-uh, don't worry about it. Let it walk. Me and you, we dance. Because he's using words that maybe something like you would find in a movie, some tough guy. But again, that's kind of how he modeled himself. And so you would say to someone who was supposedly demon possessed, you would say to them, huh, let's dance. Who are you? For years. This is all a joke to him. This is all fun and games, even the crowd. The crowd is eating it up. It's almost like they know that they're at a play at some sort of performance and Daniel is eating up and he's playing right along with it. So too is this paid actor who she happens to be paid or maybe she's not paid, but she certainly is an actor. Hey, hey, hey, cut it out. Look at me. What do you use her for? She doesn't? The duh. You don't see this in the Bible. Even given the benefit of doubt, assuming that this might be true, it's not. By the way, guys, nothing about this is true. Now we do believe that no one who has the Holy Spirit and no born again believer, no Christian, can have this sort of demonic oppression, but maybe she's not saved. I would probably say that's a good chance because she's being used to mock God, mock the Word. And so I wouldn't even go so far as to believe that she probably is, but even still, even if she were not, this is bad acting. Matter of fact, this is next level bad acting. Ah, you know you gotta leave. You know what they remind me of? Little baby's throwing a fit. Ah. Now, again, you're giving commentary. Where do we see this? There's nowhere in the Bible where you're gonna see some sort of commentary where Jesus or Paul or Peter, anyone else who is in the middle of dealing with some sort of demonic force, they're gonna give commentary to the audience that's sitting there watching. As a matter of fact, this is one of the reasons why we need to be as diligent as we are. Paul says, do not participate in the unfruitful deeds of darkness, but instead even expose them. This needs to be exposed. This is shameful. Even the bad acting, so much so that you're gonna see him even change his accent because he's caught up into this. Hey, look at me. Look at me. Do you come from the water? Look at me. So he's trying to give his best African accent and the people that are laughing at it. They're having fun with this. This is clearly nothing biblical, nothing godly taking place here. Do you come from the water? Yes. You come from the Marine Kingdom. It's that cape. Huh? It's that cape. Eastern Cape. What did they say? Cosselet. Go. Cosa. It's a tribe.  This is what you would see at some Friday or Saturday night theater. It takes an awful lot of audacity to go through with this like Daniel Adams is doing. Totally. And then TB Joshua mode right now. This is good. Now, when he says TB Joshua mode, you need to remember he also emulates him because he sees another charlatan who has profited off of the backs of ignorant people who don't read their scriptures. And remember, TB Joshua was the one who was writing in tongues and then he would believe that he's written in tongues and then he'll go touch the blackboard or the green chalkboard. And so what does Daniel do? He wants to do the exact same thing. We're at the pit. How? You don't have to know how to do it. Go with tissue instead. I will teach you everything I cannot teach you. You inspire you. I believe that the Word of God is alive and active. Do we believe this? Yes. Do we believe that His Word contains power? Yes. I'm in a vessel of God that contains the presence and power of the Holy Spirit. When they write something like this, that even the writing on the board contains the enlarging of the word. Yes. You don't read the language. So what do happen to you? Now, there's absolutely nothing biblical about this and I would even challenge because there will be some people that will say, Corey, who are you to judge? Why should you be calling us out? Well, let me ask you this question. Can you find a passage? Any passage? A remotely? Even if we were to squint a little bit at the passage, could we see any of this? We don't see any of this. One, we never see the gibberish. Two, you write in gibberish. Touching it will cause someone to fall out. Number, also, we never see anyone falling out. But let me just make you aware of those of you who might want to defend someone like Him. Paul Peter says in 2nd Peter 2-3, he says, and in their greed, and this is for greed because they're charging money, they're taking up offering, they are trying to exploit them as much as they can take part in their classes for their personal deliveries and so forth. This is in their greed, they will exploit you. Some person will say, make merchandise of you with false words. Their judgment from long ago is not idle and their destruction is not asleep.  They will be dealt with because of this. If a person were to repent, that's different. If a person were to actually leave that and place their faith in Christ and live for God, well, that's different. But at present, how we see this happening now, that's not happening. So what's going to happen to them if there is no change is going to be hell. Hey, listen. Ah, y'all don't worry, let me come here. This is entertainment. This is entertainment. Let's have some fun, let's have fun. Let's get people to laugh. Let's get folks involved. This is just nothing more than theater. Stand still, attention. Can I tell you? And even if you notice the man behind her, he's laughing and smiling too. This is crazy. Something, this is a real demon. Now listen, I'm gonna talk to you really fast. Are you only in her or are you in her family? I found the family. You found?  I'm about to get real serious real fast, okay? I'm gonna show you. Because you haven't been serious yet. So don't laugh, guys. I know it's funny, I know we're putting on a performance, but don't laugh because I'm about to get serious because I haven't been serious yet. Something. Let me pray and cry. Huh? I finished everything.  And then she makes sure that she's speaking into this microphone again. She's part of it as well. Listen, me for her. I don't know what she's doing yet. Listen, I'm gonna do something, okay? I'm gonna do something. I'm gonna cancel your assignment. I'm gonna cancel all the other stuff you've done. So whatever's happened in the past, whatever's going to happen, you're gonna stop it, you're gonna stop it for her as well as her family, which by the way is not biblical. Ah, let's go. Now we have fun. What is this? What are you doing? Huh? You wanna fight? I can't fight you. Oh, you're unbinding them now? I don't want to. No. What is this?  Yeah? Who made the covenant? Did she make the covenant? No. Who made it? It's got nothing to do. Who made the covenant? I didn't do covenant. I was just hating them. Oh, jealous. Jealous. I can't be intelligent. But it makes you wonder, why not go and cast a demon out of some sort of terrorist? Why not go find a, I don't know, a bomber, someone that will strap a bomb to themselves for the cause of Allah? Why not go and cast that demon out? Now, I would agree, and I'm pretty sure anyone else would agree that there is something demonic in that. Why not go and cast that demon out? I know why, because it's dangerous. And by the way, they don't pay as much as this does. Be gentile and go and benefit some of that. You know what I see her doing? I see her starting a business. Yes. She's gonna start a business. Keep the clothes on. She's gonna start a kingdom business.  You're gonna call it out.   You're gonna decree and declare for her. You have this one stop shop all within yourself, Daniel. Now, what's interesting is, one, the accent came back. I don't know what that is, but then the little leg sweet deal. But where have you seen that at? You have seen that with someone like a, with a Lovie Elias who got that from a passion job, who, by the way, they are affiliated with each other. All of this stuff you see with them, now he's doing it. Why? Because it makes money. It brings people in. Because you've got a crowd of people who are not discerning. Out of her life. Come on the way off of her. Out of her life. You demon. Come on the way off of her. So the question is, who did it better? Does Daniel do it better? Or does passion job do it? Well, both of them are mocking God. And that's the travesty of it. And people are participating in it. People are participating in it. And so what do you think God is gonna do when you supply the appetite, you have to supply the forum for this micro to take place?   You will not afflict her any longer. I send you back to where you belong. Go back to the abyss. Out of her life. Give me the thing. Give glory to Jesus. Now you're saying give glory to Jesus. There's a problem with that. There's a huge problem with that. Now, the demons do know. Now she doesn't. Which tells you a little bit something about it. The demons, even the demons recognize Jesus as a matter of fact. And they cried out saying, what business do we have with each other, son of God?  So they understand that their time's gonna come. It has not come yet. You cannot send them to the abyss now. That's not gonna happen. One, it's not your job. Two, it's not their time. But even three, they recognize Jesus. And so I can promise you this. When a demon shows up and there's somebody who actually has a spirit, I believe the demon would actually recognize that the person has the Holy Spirit in them and you would see a different reaction. I couldn't be wrong. What I am not wrong about is this foolishness here, this mockery. The Bible is clear though. God is not mocked. Don't be deceived. Whatever you sow, you will reap. And how you reap in this case, they will reap destruction, everlasting destruction. And so the truth of the matter is he is gonna pay for what he's doing. There's no question about that. He is going to pay in some shape or fashion. Even if he were to change and to commit to Christ authentically, he is still going to pay for that.  But I would pray that he would have God deal with him now versus on the other side after death and then judgment to have God deal with him then. And all of those people that are participating in it, those people are not going to go unscathed as well. I know some are gonna say, well, Corey, I really had a demon cast out of me. I really, I really believe that's true. Well, first of all, a couple of things. First of all, even if that were the case, which probably was not the case, but even if it was the case, that person, such as a Daniel, doesn't mean that that person is saved. Remember, Jesus himself says it. Not everyone who says it means Lord, Lord. And what do they say? Many will say in that day, we have prophesied in your name and cast out demons. Your name, why are those two gifts, why are those two abilities mentioned? What is Jesus going to say?  And so let's be clear. Since you cannot find anything that we've seen in the Bible. Since you cannot find anything that we've seen they're doing, even if it's other people, because it's not just Daniel Adams, when you see others doing it. If you cannot defend this in the Bible, well then it's not biblical. It's just that he's just that cutting drive. That's what it means for something to be unbiblical. It's not biblical, meaning it's not in the Bible. You cannot say, well, we can't put God in the box. Who are you to put God in the box? God has shown himself to us and fulfilled himself through his work. And for some people, his word is not enough. They want a whole lot more. They want some action. They want some excitement. They want some signs. They want some wonder, but what did Jesus say? It's pretty clear guys. A wicked and adulterous generation. An evil generation, they want signs. They've been given a sign that is Jesus is death, burial, resurrection, but that was not enough for them. They want more. They really are like Simon the Sorcerer. They want to be something special, not satisfied in just being a child of God, which means they're not a child of God. So guys, just for you, they will have the reward. They're going to pay for it. Don't pay for it along with them. Don't indulge and participate with them. These unfruitful works of darkness, but as Paul says, rather expose them. Amen.


To me, Hispanic Heritage Month is a great time to celebrate our cultures and heritage and it's also a great time to honor those that came before us. Like for example, someone who really inspires me is Enid Melancholot, who was the first Hispanic astronaut and that is something that really impacts me because I want to be a aerospace engineer. Sometimes I go to the Latino Cultural Center to enjoy some of the activities that they have. They often have hang-out sessions. It's really very good. When I was in high school, there were some of the older kids who really inspired me to pursue a science degree and I hope to think that maybe I'm inspiring someone back in high school the same way. Over the summer, I visited my high school and I had a great time with the kids building small robots to compete with each other. And I think it's a great way to really inspire people, or inspire kids to have a great time with robotics and really person-sized. For a while, I wanted to be an astronaut, change the shape of the architect and paleontologist, doctor for a bit, and then I think it might have been a second meeting in middle school, where we built a robotic hat. I mean, also my dad's an engineer, so I could have played a role. It's a conscious thing. And yeah, then I decided I wanted to focus in high school and then I joined robotics team and then I was sure I wanted to be there. I really became interested in aerospace engineering, I believe. I saw a YouTube video and I became really passionate about push planes. That's what I wanted to do, I wanted to be there.


Welcome back and thank you for joining us. Once again, it's open and for live, the open infrastructure foundations weekly, hour long interactive content series, where we share production case studies, open source demos, industry conversations, as well as the latest updates from the global open infrastructure community. This is our seventh episode and we're focusing today on open source CICD. We have some amazing content coming up over the next few weeks. So please join us every Thursday at 1400 UTC for more open info. I'm Jimmy MacArthur and I'll be your host for today. We're streaming live on YouTube, LinkedIn, Facebook, and Twitch and probably even Myspace. We'll be answering questions live throughout the show. We will also save time at the end. So feel free to drop questions in the chat regardless of the platform you're on. We'll do our best to answer as many as we can at the end of the program. Today, we're here to talk about Zool, a free open source CICD solution. I'd like to welcome our guests. First, some call him the godfather of Zool, it's James Blair. He's the Zool project lead and CEO of Acme Gating, offering expert support and consulting for Zool and the one and only Mohammed Nasser, CEO of Exos where users can spin up their own fully managed Zool. We'll have real world business cases to discuss plus a live demo, dangerous, showing how to manage cross project dependencies in production. James, I'm gonna pass it over to you to get the ball rolling. Thank you, Jimmy. Hi, yeah, so I'm James Blair. I'm one of the original authors of Zool and the current project lead. And let's start with, what is Zool? Well, Zool is a project gating system and I can hear you saying, great, what's a project gating system? Well, the way I look at it is, it's kind of the next step beyond CI and CD. So if you look at the history of continuous integration, if you go back to the first CI systems, CI stands for continuous integration, what were they doing? It was when you merged a change to say your Java project, you would run the build and you would see if it broke. And that was, I mean, that was great. That was better than say, finding out that it broke when you were releasing. But ultimately that was focused on the past. We call that post merge testing. And it's still a very relevant thing to do, but it's not really the state of the art in CI and CD at this point. So fortunately, since then, we've moved on to testing the present. And by present, I mean, this is what a lot of CI systems do now. They perform pre-merge testing. So this is, you write a patch, you push it up for review and your pass, sorry, your patch gets tested as it was written. And you can find out if your patch is good or not. So we call that pre-merge testing and it's like I said, it's focused on the present. For gating, for what Zulu does, it's really focused on the future. And by that, I mean, not only are we testing your patch before it merges, we're going to test your patch as it will be when it merges. So if the project has moved on since you wrote your patch, other developers are merging changes, that sort of thing, we're gonna merge your patch into a copy of the branch as it exists at that point. If there are other changes that are being merged around the same time, we're gonna sequence those changes and we're gonna make sure that your patch works with all of the other patches that are in flight. So if you're in a relatively busy shop and you've got a lot of developers working on different things, you might have not thought to test all of those things together. But a project gating system needs to make sure that all of those things are tested together before it merges anything. And finally, an extension of this is something that we think is really neat. We call it cross-project dependencies. And that's the idea that you can indicate that your patch depends on some other patch and the system will test those together. And that's actually the focus of our demo coming up later. So we're gonna talk about that a little bit more as we go on. So you might be wondering what prompted us to think that we needed to create such a complicated system. And to explain that, I'm gonna talk a little bit about Zool's development history. So it was originally developed for the OpenStack project. And this project, this slide here, it has a bunch of logos that you may or may not recognize. These are actually logos of individual OpenStack projects. While we sort of put on this face for the world of, there is a thing called OpenStack and you can download and run it. That thing is actually composed of a rather large number of individual semi-autonomous projects. They have their own identity. They have their own logos. They have their own communities which are all part of this larger community. So if that sounds like, frankly, almost any enterprise, right? Every application these days has some form of this. We're not all just working on necessarily one monolithic thing that every application sort of has tendrils that go out and little sub-projects and things like that. Anyway, we were presented with a situation of having all of these projects that needed to develop somewhat independently but still work together at the end of the day. And so we needed to build a CI system that could handle that. And so that's sort of how Zool was born with this idea of cross-project dependencies and gating. Since those days, those early days of developing Zool for the OpenStack project, we've actually, our community has grown. We have quite a large number of users now. These people are all using Zool and there are many others as well. One thing that I think a lot of these folks have in common is that they are doing, they have pretty large development efforts and those efforts, once again, span large numbers of projects. So Zool does scale down. You can totally run it down for a single project. You can run it on, you can run the software on a laptop and it can manage a single project just fine but it also scales up really, really well. And so if you want to run a CI CD project gating system for a community of hundreds or thousands of projects that are running at cloud scale, Zool can handle that very well. And we actually have a video from one of these Zool users from Volvo. So let's actually hear from them about how they're using Zool. How are we running Zool? Well, we have a small core team continuous integration architecture that was the Zool backend and infrastructure. And we support around 111 developers who consist of many smaller teams and they have at least one DevOps you can add nodes, pipelines and repositories. And whenever a new team wants to use Zool continuous integration architecture trains one of these people to become a DevOps. So why are we using Zool? Well, one of our developers is in a really good way and he believes that premium cars need premium tools and Zool is a premium tool. And it forces us to have a green master and in that way we increase our development speed. For example, the one pedal driver Polestar 2 was built with Zool. So that's great. It's really exciting to see how Zool is being used in the real world with companies like Volvo. So one of, I think one of the reasons why it's popular in organizations like that is this idea of multi-tenancy that is built into Zool. Again, when you have lots of teams sometimes working together, sometimes working in isolation it becomes important to sort of establish how they're going to work together. How does all of this happen? How do all of the teams have complete individual control over the CI system? Or do you sort of establish some parameters centrally and maintain central control? And with Zool, we actually have a lot of knobs that we can turn to adjust that to exactly what the situation requires. So if your organization has really strict standardization, compliance, auditing requirements, you can turn that knob towards central control where all of the jobs and the workflows are managed centrally. Or if your developers need more freedom you can turn that the other way and let developers in their own individual projects define their own jobs, pipelines, things like that. So there's actually a lot of flexibility in Zool for dealing with that. And beyond that, we not only have this idea of having dependencies between projects, we also have the idea of dependencies between connections. We call those cross connection dependencies. So Zool supports several code review systems. Garrett, GitHub, GitLab, Pagier and more are in the works. And this isn't the case of just, oh, you can start up Zool and point it at whichever one you're using. You don't actually have to pick one. Zool will work with all of these systems at the same time. So if you're in an organization where one group of developers is using Garrett and another group of developers is using GitHub, that's not a problem for Zool. Zool can talk to both of those systems at the same time. And those developers can actually express dependencies between their projects across those good review systems. And I've found in talking to large development shops that this is surprisingly common. So once you get a certain number of developers, you also get a certain number of opinions about the best code review system to use and editor, of course. And frankly, our goal with Zool is to accommodate all of those. And finally, continuing in that vein, Zool supports all of the different major cloud systems out there. We've got support for Amazon, Azure, Google, Kubernetes, OpenShift, OpenStack, and more are in the works. So not only can Zool support talking to these different clouds, once again, it can support talking to these different clouds at the same time. And Zool jobs are inherently multi-node. So Zool isn't the kind of system where you just get a container that can run your unit tests. You can do full stack deployment testing with Zool. So if in order to deploy your system, you need to set up a Kubernetes from the ground up, you can ask one of these clouds for Kubernetes and deploy your system on it. If you need, say, three virtual machines, then ask these clouds for three virtual machines, you'll get them. And in Zool jobs, you can individually address each of those machines and run your job on all of them. So this is great for deployment testing. So it kind of facilitates our vision of bringing continuous integration, continuous deployment, GitOps, DevOps, all under the same umbrella, all with the same software using the same processes. We'd like to say that we want to make testing more like production rather than making production more like testing. So with all of this in mind, I want to talk about speculative execution next, which is really Zools. We think that this is one of Zools' key features. And there's two aspects to this. First is project gating in general, and that is just this, if you look at the diagram on the right, when you're merging changes into a project, the idea is that we sequence those changes and we test every change in that sequence with the changes ahead of it. And if those changes pass their tests, that's great, they merge. If they fail their test, we move them out of the way. We reschedule the jobs behind them and retest it as if that change wasn't in the sequence anymore. A natural outgrowth of that is this idea of cross-project dependencies. And so if you look at the diagram on the left, that's this idea that you can have a front-end UI change. So say that's in one Git repository and that depends on a change to a back-end server. And perhaps that back-end server in turn depends on some library changes. So what Zool does is it allows you to express the relationship between all of these changes and tells Zool to test all of these changes together as a unit and you can verify that sequences of changes that cross project boundaries, that cross organizational boundaries are all tested together and work before they're merged. So this is a really key part of how Zool behaves and a lot of how people use Zool kind of develops out of this behavior. So I'm gonna turn it over to Mohamed Nao, who is going to walk through a demo of this concept. Thanks, Jim. Great.  So I'm gonna give some context here is that we have in our case here a both an application and a library. So taking into example that we have an application for our little store that we have that greets individuals when they come to the store and such that a good developers that we are, we've decided that we are going to build a library to greet individuals so that we can reuse that library in the future and maybe be helpful for other people that want to use a library like this. So we're gonna very easily look at the code quickly. So I mean, all you see is we've got a function that has to welcome to store and we're using our little hello library to greet this individual that comes to the store. Now, at the same time here, we've got some tests because we're good developers and we've got tests to make sure that, I mean, if a customer walks in and we know their name, we're expected to say hello, Billy. And if we get a customer without their name, we're expected to get a simple hello. Our very simple library that when we kind of go into it here, all we've got is a function that is say hello and given a name, it'll give the name and given no name, it'll just say pure hello. So it's very, very straightforward here. It's not exactly the most complex of scenarios that we're trying to publish, but the most important thing is just to get an idea of what we're going to accomplish here. So let's operate with the assumption that a bunch of people got together in a meeting, got into way too many meetings and decided that from now on, we need to ask for the individual's names when they walk into the store. And finally, you're tasked to do this work. So as a developer, you tell yourself, well, I know that I've got this library that does this, so I'm gonna go ahead and make a change to the library. So I'm gonna quickly hop in here to make this change. And say, you know what, instead of saying hello, I'm gonna say hello, what is your name? And at this point, it did my work, it was a good demo. Let me run my tests as well. As my tests are running, they fail. So I say, okay, wow, my tests have failed, right, because I changed the behavior when I'm saying hello to no name, therefore my tests are currently failing. So it probably makes sense to fix those tests as well, considering that we've changed the behavior. So that's what we'll do. So hello, what is your name? And we'll run the test again. So our tests are all passing now. So as a developer, we're probably pretty happy. Probably do the right thing and be on a separate branch and I'll call that just demo reading and I will push this up to the top. So no, we just did a very simple thing, copy this, we'll go into here and I think I forgot to commit. So let's just do that, fix greeting and then we'll push much easier to not do any commits if only life was that easy. Okay, so we'll create this pull request. And so now what's gonna happen is, we're gonna look at our files changed and so we see here that we've made those two changes and Zul in the background have started to do its job and it's running the check job. So can view more details and see that it's actually starting to run all these jobs that are queued right now. So those will take a couple of minutes so that we don't have to wait through it. We'll do the cooking show trick and we're going to jump right into a pull request that has the same exact change and look at what the check results are. So we see that the test have actually failed and why did they fail here? So this job specifically, the Hello App Talks Pi 3.6 job is actually running the tests of the application using the library change that we just did that hasn't even merged yet. And so what this just signaled to us is while the library test itself are passing we've actually just broken our application by making this change and we can click on this and go into the Zoologs and notice that it's going to tell us that well, there's no problem here because the applications tests here are expecting that we're getting Hello but we got Hello, what is your name? Which is problematic and you know. So in a normal scenario if you're using a normal CI tool this is the sort of change that would not be caught because you're probably running tests for the project itself and very rarely is it giving you the ability to run tests for projects that are not actually the ones that are affected by this change. Now, the other kind of thing is, you know you tell yourself, okay, well I've got to find the solution for this. The solution for this is another alternative. So, you know, you say, okay, well so that I don't break the API I'm going to add an extra flag saying ask and default that to false and only if ask is set to true then we are going to say Hello what is your name? And then we're going to also add a test for that. So again, any expensive time and we look at the checks and we see that it actually passed with this change and that's mainly because this is defaulting to false so it's just going to work naturally out of the box. And so finally, we go back to now now we know that we've got a change that works in our library and if we merge this we're not going to break our application but the thing is we don't know if our application is really going to work once we flip this switch over because we don't know that yet because we still are defaulting to ask equals false. So that's one of the really nice things with Zool is the cross-project dependencies. So this is another pull request that I made where what I did was actually add the ask equals true and change the test to actually expect hello, what is your name? And if you look at the conversation here I've set up something unique here in the pull request which I've set up a depends on and then put the PR of the change that included the library fix. And what Zool does automatically when it notices this is it automatically checks out the library change that is in this pull request even if it hasn't merged yet add it to the application tests and then run all the tests of this application with that change pulled in. And so in this case, if in a normal CI system if you make this change, it would also break. The only way that this would not break is if you somehow merge the first change or did some sort of release and then tested it after which is again, testing is going to test not pre-mer like it's not going to test the future you're testing after the fact which is after it's already broken. And if we look at the checks here we'll see that the tests actually passed because what Zool did was actually check out a version of the library that we had installed. So if we quickly look at the console here and we see here we'll see that it actually installed the hello library from the checked out local copy. And so because of that, it's really, that's kind of like the power here is now you've got this change that tests out a library change that has even merged yet. So what's even more powerful at this point is because Zool does gating this change that failed will never be allowed to merge because it's failing.  This change that is with the ask flag can merge because we know it doesn't break the application but what's also even more interesting is because we've expressed the dependency here with Zool this change is not going to merge as long as the dependent change has not merged yet because if you think about it if we merge this change in some way this ask equals true doesn't actually exist because this other change has not merged yet. But because of this express dependency Zool is never gonna let this change merge so as long as this other change has not merged yet. And so you kind of have this locking mechanism where you can make sure that nothing is going to be merged that's gonna end up breaking code and you can have things merge in a sequential matter that it's always going to maintain that all the code is always passing all the tests and nothing breaks. So that's essentially an overview of what this sort of power that Zool gives you to do and I'll hand it over back to Jim to chat a little bit about how to get started with Zool and I hope you enjoyed this demo. I think just before we get to that and thank you, Muhammad, that was amazing. We've got John from Texas asking, can Zool test against projects you aren't an owner or maintainer of like upstream libraries? That is a great question. And I also see that Clint has responded to John a little bit that yes, you can pull in upstream or external, whatever you wanna call them, projects as dependencies, but it gets complicated without triggering if you wanna test all changes, that's what Clint says. And I think that's spot on and what this really goes to another one of those continuums, right? And that is sort of the continuum between how isolated you are as a project that depends on another one versus really interacting and collaborating without other project. And so again, Zool has several tools here depending on where you fall into that spectrum. If you really have no other relationship with that project then you're probably just going to be able to pull it in as a dependency and test your code with it. So that way you can make sure that as your project changes and as the other one changes, you'll at least always know that your project is either working or they've done something to break you. You'll find out early on in that case. If you have a closer relationship with that other project then you may be able to trigger runs of your jobs on changes to that other project. And so that's when the other project would get notification that they're going, they're about to do something to break you. And that's a great relationship to have with another project. And we found that, I guess in my own experience over the years, I found that I found myself in various places on the spectrum. Sometimes my use of another project is minor enough that it doesn't really warrant establishing that relationship with the other project. But other times, you start talking to the maintainers of the other project and you say, hey, I really rely on you and I wanna make sure that you don't do something that breaks me and they'll say, that's great because we don't wanna merge a change that breaks you either. And you can quite often establish those relationships between projects. So I think really the exciting part about all of this is not only is it a cool technical problem that you can solve with something like Zool but it leads to greater cooperation between projects. So it's a real great human factors thing. Awesome. We have some more questions coming in but I think we're gonna get back to Jim's get started with Zool piece and then we will address those questions in the end. So keep them coming. Great, so if you're interested in getting started with Zool, there are a number of great options here. If you, we have in our documentations something that we call a quick start. Basically, you can run a Docker compose setup and get a complete Zool system up and running in the matter of a couple of seconds. With that up and running, you can sort of start to evolve it to change it to meet your requirements add your own code review system start developing your own jobs, that sort of thing. So it's a great way to get started with Zool and start to evaluate it. And we've got the URL right here on the screen here. If you just go to ZoolCI org slash start that'll take you right there. There's once you've got a Zool up and running there's a standard library of jobs that are developed by people all over the world in various organizations. There is no, there is no central you know there's no one company that's driving Zool. It's a real community driven open source project. And as people write jobs that scratch their own itches they share those jobs with other folks in this sort of standard library of jobs that we have. So you can take advantage of that. That might sort of help you get ahead really quickly. And then finally, there are some commercial offerings here I have a company called Acme Yeating which focuses on Zool development and support. So if you're, if you wanna run a Zool on-prem and wanna like some help setting that up and support for it, talk to me. And Mohamed, I don't know if you wanna talk about your offerings from Vex host. Yeah, so I guess on another end of the spectrum if you're kind of more of a company that relies on something that's fully hosted and fully managed you kind of want to run somewhere else and consume Zool as a pure service. That's something that we offer as well. So can be running, it usually is running on our cloud and can consume resources on our cloud or on any other cloud that you wanted to run on. So we have that available as well if you're interested and all of these are available on the get started link that we've just shared as well. Excellent. Well, thank you Mohamed and James. I think we're gonna go to a couple more questions here. We've got one from Antoine. He asks, is the depends on recognized and commit messages slash PR slash pull request summary or does it have to be added manually as a comment? And I think this is specifically around GitHub. Yeah, I can comment on this because I thought this was a really good question. Personally, I have a lot more experience with Garrett and haven't done that much with GitHub. So I was like, let's go and look it up while the stream is still running. And I actually found the documentation Brazil explicitly mentions this. So I've actually posted it in the chat for Antoine and anybody else that's interested. So it actually talks about because of for GitHub it has to be in the PR description. That's what the documentation says. Maybe Jim will say, well, we've changed that. But as far as I know, the dependencies happen on a PR level because the mergeable, you could think like the object that gets merged is a PR in the context of GitHub. And another thing like Garrett, the context of the blob that gets merged is usually a single commit. And so therefore it works in the footer of a commit message in Garrett. And so to answer your question in GitHub it has to be in the pull request description whereas in Garrett it would be in individual commits individual commits message. Excellent. So another kind of common question we have circular dependencies. So what if you have two changes and they both depend on each other? How does that work? This is a really exciting one because for quite some time Zool did not support this. Our, as Zool was being developed for the OpenStack project we kind of had this view that we never wanted to have two changes that depended on each other at the same time. And that's because of the upgrade strategy that we chose for the OpenStack project. Each of those different components needed to be able to upgrade on its own. And so there should like always be this way to progress through an upgrade component by component without having to take the entire system down. So we kind of enforced that in the CI system by not supporting circular dependencies. You always had to be able to say you can get from point eight to point B one change at a time in sequence. As the Zool project grew to support other environments we found that other people didn't have that constraint. In fact, they had the opposite constraint. They said, you know what? We're not upgrading cloud software. We're upgrading embedded firmware inside of an automobile. So this is not something where we actually want to upgrade one thing at a time. We want to ship the entire blob over with all of those changes at once. We need to be able to make those codependent changes together. So Zool has grown the ability to support circular dependencies. And so basically any kind of graph you can come up with you can encode that into Zool. So it's not just two changes that depend on each other. You can grow that to whatever you can manage to fit inside of your head, really. So yeah, that's a great question. And Zool supports both and it does so as an option. So we still actually, you know, we set the option in OpenStack to disallow that so that we can't accidentally get into a situation where we have circular dependencies and then people who need it, they set the option the other way and developers go crazy. So Zool basically prevents me from hurting myself. That's the idea. Perfect, I love it. And so we've got someone else, John from Texas again, this guy, what are the downsides of gating? Why isn't everyone just doing it this way already? Well, I think the answer is because they haven't watched this live stream yet, but hopefully after this, once they know this exists, they will. So I think there certainly are trade-offs, right? And one of the things that happens when you start gating is it becomes difficult to merge code that is broken. I think that's a feature. And I think that's kind of key to accelerating development within teams and organizations is, you know, there's this idea of like move fast and break things, right? With Zool, we actually, we think that you can move fast without breaking things. And the way to do that is to make sure that everybody on the team can perform their work without stepping on the toes of anybody else, right? And that's what happens when you merge broken code. You merge code that you think works and it slows somebody else down because suddenly they can't get their work done. So by keeping things green all the time, Zool helps speed everything up. At least that's been my experience. When if you're not used to this, that can be a hard thing to wrap your head around. You might say like, oh, well, what if I just need to merge something, right? And honestly, at the end of the day, that's kind of an organizational question. Like under what conditions is it okay to just merge something? And I would say that normally you shouldn't be merging things that are broken. Maybe your project gets broken by an external dependency and it's outside of your control. What do you do then? Well, I mean, there's always escape valves, right? So if that happens and you need to merge a quick fix, sure, there are ways to bypass gating to get something into production really quickly. That's something that you can do. So it's kind of about like, what are the norms for the project, that sort of thing. If it's not an emergency and some external dependency breaks my project and that prevents me from merging code, that's okay from my perspective. That's actually, that's good information for me to know. I have learned that the project is broken. It's unfortunate that it happened that it couldn't be prevented. It may have been able to be prevented if you established those relationships that we were talking about with John's question earlier. But stuff happens and in that case, what do you do? And from my perspective, I wanna know that it's broken. And usually what I do is the next change that I merge is the change that fixes that again. So yeah, that's kind of how I see that. I don't know if you have anything to add Mohamed from your experience. Yeah, so I think another thing is, I feel like it's probably gating is one of those things that is kind of like a big change and shift in how we do development. It's something that maybe if you're involved in some of the OpenStack communities, it's really, it's something we're used to. But I think if you think about it, many, many years ago, there was no continuous integration. It was everybody pushing to a branch and then one day a bunch of QA people would go in manually, you know, run some stuff and run through some lists of tests and say that everything is okay. And then you would get that thumbs up. And then eventually with time, that transition to machines and computers giving you that thumbs up. And so I feel like one of the things is it's just not something that is so widespread yet. So there is kind of a lack of exposure. And I think a lot of people feel concerned or you know, it's probably like a fear of the unknown, like not really sure about this and never really seen this happen a lot. And it's like this weird feeling of like control over your project, like I want to be able to merge something when I want to do it. And when I want to do it, I want to do it now. But that potentially risks slowing things down even more down the line. And yeah, I think also Antoine's comment is really good. I mean, yeah, if there's dependencies that are breaking, fixing the dependencies generally will allow you to keep moving again. Oh yeah, probably would be nice if you could just from the get go, never have these breakages. But you know, you're gonna find out about these breakages whether you're gating or not. It's just a matter of will you merge code while your stuff is broken or will you merge code all the time? Sounds like gating is the future basically. I think so. So how do I deploy as well? What are the different ways I can do that? So there's, like I mentioned earlier, there's the, we've got the quick start which will get you a Zool deployed and Docker compose. So that's a great way to get started. If you can of course, so Zool is written in Python, you can install that on some virtual machines just like you would any other Python program. For some of the Zools that I work on, we actually, we deploy them in containers on virtual machines. That's kind of a best of both worlds situation in that we get the atomicity of container upgrades and that sort of thing in an environment where we don't necessarily have access to a Kubernetes or that sort of thing. If you do have a Kubernetes or OpenShift, there are, you can play it that way. There are Helm charts out there. We have a Zool operator that's a work in progress right now. But if you're really into early adopting and you love Kubernetes, you can jump in and help us with that. So I think those are all great ways of deploying Zool. Awesome. So Albin asks us any comments about running reproducible build systems with Zool like Nix or Bazel? I have a little bit of experience with Bazel. We're actually doing some work with the Garrett project for a Zool that helps test changes to Garrett plug-ins and things like that. And they use Bazel a lot for their build system. And it's really interesting. And I think it's a really good fit. I mean, the key concept in these systems is sort of what is effectively the cache, right? So once you've built something can you put that thing in the cache and then make sure that you get the same value? You can pull it out of the cache and save time. You can be assured that builds started from the same starting point and things like that. Exploring how that interacts with Zool and its speculative execution is actually really exciting. It's sort of like what is a reproducible build system and a build cache mean when in a world where you're constantly doing throwaway builds of things that you may not end up merging in the long run. And so far we're actually coming up with some pretty good answers for that. It's all about identifying is this build speculative or is it final, right? And so what we're doing with Bazel is saying, well, when we complete one of these speculative builds we'll use the cache to help build that but we're not going to put the result in the cache until we're sure it's final. But in the gating process, when the underlying change merges we at that point know that it's safe to put the results into the cache. Effectively the build is finalized and we can put that in there and then builds after that can use it. We actually take the same approach with Docker containers and things like that. So we're always building the speculative Docker containers and sometimes we even push them up to the registry but we don't tag them in a finalized way yet until the change merges. So really what I've done is I've twisted this question into how does gating apply to other systems? And the answer is every system we've worked with so far we've found a way to integrate it and it makes sense and it's really exciting. That is really exciting. So one question that I've gotten a lot is what differentiates Zool from just your run of the mill CI? I know you've covered lots today on gating and speculative execution but aside from those things, what's different? Why Zool? I'm going to ask if Mohamed wants to answer that maybe put a different perspective on things. Yeah, I think so for me, I think the biggest points are first of all the idea that you have a gating for your code. Gating helps merge, you don't merge any broken code. So you don't have any problems with your main branches breaking. As a matter of fact, I always thought it was funny for a while. I think still the case that the, you know how CI tools usually have a cute little icon that says passing or failing and the Zool one is a static file because if you've got your jobs doing right, it's just always passing. There's no need for us to dynamically determine if it's passing or not, because it's passing. And so that's something to kind of keep in mind of how what Zool kind of provides to you. The second thing I think is the cross project dependencies is a super powerful tool that allows you to iterate and do work across multiple different repositories to accomplish what you need. And this goes for so many different things, right? You've got scenarios where if you have a repository that contains the configuration of all your systems and you've got independent repositories containing Ansible roles that you use, well, you can do speculative testing by changing, making a change in a role and then running the tests on the repository that's running your playbooks. We saw an example of a Python library and application. There's other things you can do such as maybe using something like Terraform and building modules that in modules that are all separate and all fully contained on their own and then consuming them later. There's also some more complex and advanced things that you can do with speculative things like speculative containers. So building containers that are just not even built yet. Like you make a change in a Docker file, you don't need to publish that somewhere for you to actually make a change for their Docker file that depends on this. It'll automatically go and take care of all of that. So there's a lot of kind of power in that in being able to allow developers to be more productive without actually having to merge anything. And I think that's another powerful thing because if you think about it, let's assume in a normal scenario where you've got some more senior people that are doing code review and other folks that are writing code. Well, if you can't start your application change unless your library changes landed, now you're kind of having this bottleneck where you constantly need to have a human that goes in and merges that code for you so that you can continue with the rest of your development, which could be pretty distracting for whoever's looking at the code. Whereas with Zool, you can actually start making the library change, make the application change to a whole bunch of other changes and then present that as a single unit to be reviewed and know that all the tests for all of these different components have all passed together without you having to wait for code approval or merging something before it can get done. So I think that's also really powerful. And the one last thing that I'll add up very quickly is the huge library of roles and existing jobs. So because Zool's been around for a while, there's jobs for, we just talked about, there's jobs for Bazel, there's jobs for Python, jobs for Terraform, jobs for Docker. So there's a lot of pre-existing job libraries that are very well tested and maintained by the community. So at any time you can get the project up and going really quickly by using those. I think that's mainly the main things. That's awesome, that's a great answer. So I think we just have a few minutes left here. One thing I did wanna find out is what's next with Zool? Well, yeah, that's a great question. We have a lot of work in progress right now. One of the big things that we're focused on at the moment is scaling. Zool is already one of the, it's running CI for the world's third largest open source project. It scales pretty well already, but having said that, we still do have one single point of failure and we're gonna get rid of that. So that'll actually make every component of Zool fault tolerant and scalable. So we can grow even larger and be even more robust. We've got a project to, so Zool has a built-in secret storage system that you can use on its own or you can integrate with other secret storage systems. We wanna make sure that all of that sensitive data is stored encrypted at rest. And we're working on improving our metrics and logging. So basically better integration with various monitoring systems and that sort of thing. So a lot of operational stuff right now, we just came off of a release where we did a bunch of new in-user visible features. And so we're trying to kind of back that up with making the system itself more robust and reliable. That's exciting. You always have to do after your big release, you always have to go for the stability. That's great. So listen, thanks to both of you for coming out today and for joining us. It's been really interesting. If you're like James and Muhammad and you're supporting an open infrastructure project, we would love to have you join the foundation to continue supporting this community. If you're interested, hit us up at openinfra.dev slash join or email me directly at jimmy at openinfra.dev. Next week, we are super excited to host our open infrastructure foundation chair, Allison Randall. She will be joined by Jonathan Bryce and Mark Collier to answer your toughest questions around hyperscale, public clouds, security, software supply chains. So think hard, make them tough. Don't go easy on them. Share your questions with us in advance on all our social media channels, Twitter, Facebook, LinkedIn, Myspace and definitely join us live to see it all go down. And don't forget, if you have ideas for future episodes, we want to hear from you. Mark your calendars and I hope you're able to join us next Thursday at 1400 UTC. Thank you again to James and Muhammad for the great conversation today and we'll see you all on the next openinfra live.