I don't think it's a good start, I think it's the same part of it, but I think it's a different thing or it's a hard part, but I often comment between this management and QA, that this management is actually to create, get into a package in a good state, you know, in a digital access table state, whereas this management is releasing access table packages. It sounds a bit different, but in the end, in my experience, it's just two different ways to look at the same thing. So that's one of the most important things I learned, and actually if you look at the release team members, all of them are very active in QA also, and more or less you can style it as of now, more or less I've written the choice of the release team to be able to create as everything, no matter in uploads or whatever, because you probably need to know more than just your own package. That's a common thing, and that's why I was trying to release QA, so that we should talk a bit about what we're doing with the release, and also what we planned to implement for the next version for Edge. So, yeah, so if you look back, what's happened well and not so well, we see a lot of things where we couldn't improve, I think. Of course we see a lot of things that happened well, but that's more for the talk of more audience, whether they were all good or not, now we say we can improve more. So, yeah, one thing is that it was not working as well as it is now, it's outside now to memorise itself, so it has to be an end to all of these processes, but oh, it's good to know why it's an extra force thing, so now we're done. That's good. So, now let's see if we can get to my slides. Sometimes you see volume problems much better. Problems will solve themselves if you ignore that problem enough. Yeah, but sometimes it's getting worse and worse. I would be better if I just paid for this. That was a long, long time ago. Yeah, I think it was long after everybody leaves, but that's not the way that things start anymore.  Hey! Can we see some slides? Yeah, we also have a local line to go to. Pardon? Yeah. Don't have me, I know that we can have one of those extra lovers. Send them to me. Send them to me. I don't mind. We'll just back to the system up. So, we see the next one. I think we have here my last one. So, do one of you know offhand how to make full screen mode? In GB. I know for XPBF. Yes. Yes. It doesn't affect full screen mode. Now let's see if it's there. And it's true A. Yeah. There's something like that. Yes. It's something like that. Oh, I think it's the FD. Yeah. Oh, yeah. So, now let's see how it goes. So, okay, now it's my first slide. Yeah. So, that's what I already said. So, the next slide is what we have. Now I have something like that. Okay, look up. No, you should look on screen. Not that bad. It's not that bad. It's not that bad. It's not that bad. Sorry. Sorry. So, what about the rally mode? It's money storage. So, if it's very simple. They got, shimmy tools, bugsp advisor tools. You every lightange. Of course based on this was my Twitter account. I think that's not a filter for ZTE Plugin. But in the end it is not very fine. ZTE and Z ez updates. updates that we will announce was very good. Even if we didn't know it was things already, this time that if on the end we will do that, and then we can do a date end plus these days that allowed us to start learning even for a time that we didn't know was infrastructure really ready. So eventually it was fine. One thing that is definitely important to be aware of is a new policy and basically for more than half a year a new policy was if it's broken upload a fixed version now, which is not the official any new policy before was if it really needs to be uploaded later, at least to the later in the late four plus fourteen days. And for a very long time we worked with if it's too broken you can just upload a trunk to unchecked so that you can store it on the same day. And that's something you need to consider if you want to which any new policy you want to continue. Of course some, as I see back things that still upload in the late seven because the upload is a little bit more careful so I'm checking if it's a maintenance or more time. Most as I see back things it's so simple you just should upload there. And that is actually what we are currently doing for the C++ API transition. I personally think we should go to a more aggressive and a new policy. Of course it doesn't mean just upload anything you just like but if it's broken, it's a maintenance and also brokenness you should be able to fix it and you don't have to wait for the maintainers own personal good mood to do it. Also what we are well, at least my opinion of course is the management of the release in large set of course starts at the time where I looked first into the release team as if we are at the first release announcement where we are at the time where I was at the development of the song I don't want to comment about December two thousandth of the announcement. Yeah, a lot of the songs were done in large and had a small set is read our, basically read our release announcement. Yeah, I don't know a lot of things that are not meant for the releasing. Take a look what's the transition sound. The transition sound is one of the stuff that I would come back later on because it sounds like I have been very much to this game. Yeah, a lot of more things could have come better but I want to highlight from the season art is this what we need to reconcile should we also release some development packages earlier? I can put all the slides in the back of the phone. Because for example somebody managed to upload a CDBS fix to unstable just five days before the release which was like that some packages had a CDBS untill then very very long. I would say that CDBS is now at the back of the release. But it's not too good. Yeah, so that's it. A lot of small stuff but it was a cute situation, wasn't happy at all. So what we want to do in Edge is we want to do a timeless release in December 2006. We have said we want to not so much, we don't want to make as many release blockers as before. Only again a small stuff set and the rest of the important thing is more of an A-like approach. We want to do it but we don't manage to finish it. It's still okay. We can live with that. But what we definitely want to do is we want less dependencies between libraries and A-lit bumps. That makes life hard for the release team because it plays a testing position. It makes all the life hard for the security team. So those of you who were here during the security discussion, the members said, oh it's really bad. If I do upload of a new version ofこちら, it will be like this. If you upload 17, it will be like Scallion and so on. So that's something which we should do as QA. Of course we want to do less pain with some arch but there's now my opinion which is probably on the way because for some M6 AK performs now better than the previous M6 AK. So in this example, one can motivate people to do their own QA on the arch texture. That's also something that should be left for QA to report us. Yes. And lots of more small things that we want to do. Of course there's some ongoing QA which has happened already before the release of Sage. It should happen now, it is happening now. That's when they had a full-fledged task because I was just normal and I was maintenance of QA off the loop. Patches need to be build able in testing and in unstable. That sounds very easy but it's quite often broken sometimes later. Then the next is ongoing QA works and patched on the build in P-Builder and if it doesn't build anymore a C-Paxon file, that helps very much. Something else I should put down by the maintenance actually is that it checks the upload before they put it on front of the P-Master. Yeah, patch question is just normal QA work but it helps very much for the release process. There won't be a release if there won't be a patch question practice. So that's very, very, very well. And more guys on this for the release process, I think that's something I think a QA should just say we have a package and we apply some guy. But we should really say how can we help to maintenance to make this thing better? Because it's case better so it's more fun for all of us. It's just better than my opinion. There's something new QA is that we want to do. We want to work as lively manifest stuff. So Steve is doing some work with lively manifest stuff. It has two things in mind. One is to know better which stuff the library is actually used. And the other is to make sure that the library is a simple version at the moment. That's something that would help in a lot of different releases. Second one is we want to get rid of at least some of the specifically compiled libraries. We know for example that Zlip is directly compiled not only in such things like open office or de-packaged, but a lot of other packages and modes are even unknown. So that's something simply to say you want to know where it's in and then fix it. And the next question is does a package is possible to install a package or move it again? Zlip is doing some work as a pure part. Zlip is working on the last item that's in my opinion quite important is actual pricing policy. Check it. Because it's really broken if we have more than two different versions of pricing in the same release. It's the same as of course for other things like more than two different versions of Zlip, new TLS or our five different versions of the version database or similar things. Yes, I have a painful, not only for the release team for the QA. It's something that really seems to be where we, you know, this meeting says we want to have some, but we are going to last let go by dying out of this policy company. But at first the first goal is QA to work and if we as it seems out already the disk is in the box but we just don't notice it because we don't check for it. Or we will say we start first with QA and in the end we say there's only a few left and we believe it will become the disk. So what we want to do at the edge edge, that means die edge for the disk, we want to check the installers of these databases before we accomplish it. I think we all learn that with less than very hard. So that's possible to play if you can do work as carefully as you want, but you should really do a check with the final version of what the STDase and the final version will look like over this time. So this is the final release of the final and official Archer's date. And then from the official Archer's date may somebody just place some release files by hand and forgot something. That was better than happy. So that was the release notes, should start earlier. There was a lot of stuff on the release notes. One of the things that we started is that we have now absolute package for the release notes. So if anybody makes a change to the effect on extra release notes, this file now also won't fit. That sounds a little simple, but it will definitely help very much. I already put a bug. I've seen it. I guess I should make a bug as long as you were fast as I need. Yeah, so you see, we can learn what is important to the phrase to get an experience, to learn an experience, to put an experience for other people. That's one of the important things. There were now some slides about how to create the release interface. I think if you ask a question I'm happy to answer the sentence and discuss them. I think you have some rather first question before to ask a question. Yeah, a few slides before. A few slides before. The first slide with the negative points. Now let's see how he can go back. Hi, Mr. Pepp. Is this one or the other one? The other one. The other one? Yep. The point was don't drop that packages not for the next stable release to Unstable. So that means as all some packages in currently Unstable which have a series of wave back which just says don't put this package into stable. For example, TMEA. Yes. Or there was another page I can't remember. And doesn't mean that such packages go back to experimental. Well, I think the other side is a bit more difficult. If you have a package that sets a leave of the package I don't mind what. If there are testing, there are packages I don't really care. But I care for example if there are not so many packages called for example KMEA. Then we say one to release with the version 3.2 and two days before the team's position happens. One day before the main channel uploads the first part of KMEA for the main channel. The first part is very important to emphasize that KMEA team has a group better than much.  But now I want to say now it's a very good KMEA team. And now we're at the team and I really have this KMEA. I think we're almost done. At that time is such a thing. And now I want to answer because I understand anyways it was an incredible maze. So the set is not acceptable. Of course it is a police package so I don't mind. I think the answer to the question is a little bit similar. Our seed box on the packages are on packages that are not testing and will not be released at all. And that point is about packages that will be released and KMEA in the meantime starts an upload before the first one. I see. So it's more about don't upload new releases than don't upload packages. Yes of course. It's a maze. The answer is I understand what you're saying but I hope so when the next answer is in the second chapter it will be but I got my answer. That's a slightly different story. I have a question about the test process on the CD images built for the next release. I am a little bit concerned that checks being done on the CD images which is the very last thing before the release was done as well as they were done this time. Do you plan to to have automatic checks like this in the English language? The problem system was something else. The problem is what happens this time? I think the full time of how the release happened. So the release happened in the morning about the last there was an extra the release was just a lot of last as you can see backfitted from the in some hand you can see there was extra the release and after the release the middle team started to the last middle the place by hand some parts in the middle the release files but not by the release files started to build CD images from it CD images installed as a studio of course but they had some security line because as a studio line was at that time checked out if someone testing it actually the best idea was to commit something like four weeks before the release or two months before the release the security they wouldn't need any issue but what would have been better at that time they both know the least version of that they were able to check and on the next day the simple things were changed so the release started to build the middle team the CD image team the other one was the real one and for the next time the plan basically my idea is basically there are different opinions of course but the least opinion was what is down to if you make the last file then the strict even though it's not a problem then we change the sibling makes the release and a better few selected people can have some FTP master so these people have the official strings and a bunch of people who are doing a lot of quick errors say this dude installed a computer and then we take about not only something like actually we had something but also changes to these we hope to make something like a few days of changes to these so we had too much further than the last days if you want to add something on your point another point is when we talked about WNCD earlier and WNCD has a lot of places where you need to configure things to use the proper archive to set proper things and they were just a couple very very minor mistakes made at that time because of time pressure and WNCD will be rewritten before release so that should make it a lot easier another thing is that we will probably switch to using the proper release names instead of the code names instead of the face names and that will also get rid of these problems because the install will then just put in charge in the testing security line instead of stable or testing I would however still suggest that there would be to prepare and keep current a kind of checklist to be done a list of checks to be done against city images there can be really real test cycles for the city run so that definitely it would be very nice to only hit a single button to build the cities after the city team is working on that and also we will make much more check this, we will when everything there are a lot of mistakes that we can make the same mistake twice list up to stable mistake the check except we won't do the mistake I was going to ask out of the city if you know how there is city deviancd rewriting is going because we should keep an eye on that so that it doesn't become the edge blocker just send a mail to deviancd list and Steve McIntyre will hopefully give you an answer but he really presented his plans quite extensively there were a couple of sessions held about it and he even intends to go so far as to rewrite the city writing tools because there is stupid licensing issue with them currently and we have this crazy upstreaming maintainer for them but actually there will be Sunday before the before the release we will say all shows are done by now come we done we will make check we will take care of that but yeah when of course Lanzler just said mark is one downside between the day we have like last week the public release they won't be in the store anymore they will be in the store I saw the movie of Louisville I think that what was just described is very important because the release so far has been mere eccentric if you like and we should go to a more overall approach where you take both mirrors and CDs and the release notes and everything else that goes with release into account there was the pressure that it is released same thing for setting up the security infrastructure properly within the time frame you also have the time to do that same thing for maybe maybe even do last minutes changes to the bootstrap and make sure that the new testing is supported instead of having complete inability to install testing yeah and so on there are a lot of small things that we can do better but for that we really need to say we have one week on every time to make the final small adjustments but I know that one of the step to P-Masters very much is that when these CDs are being pushed they are simply some of the caches that we definitely want to have one FTP master has said well it is the image we are going to work in time and just publish a sibling and we are done which is something I personally would rather not just do so what about just setting the sibling and then wait for a week for fixes to come and you can still push stuff into the problem that you usually will be able to say and then declare the release as soon as the sibling is published so what we intend to do is we put the sibling in place but only allow selected developers who we are sure that they won't leak out to excellent it when you can't leak it out as long as the end user doesn't see it then no one actually gets it so maybe allow everyone to see the released version and you just say maybe we are going to do changes and then you can publish the finished play of that series and then you can and Monday when we are sitting on this Monday afternoon I said this time we are going to Monday evening and this time we are going to push everything but actually on Monday morning I want to hear one host name one idea is of CDimages which is normally not published and Monday morning the man is brought out which means you have already half of our full uploads of these and people start to release these in a full in place because it was last time something like 15 minutes you would be challenged to as in high-technology at the moment that the sibling is visited to public there is no way out we can have one mirror that will get in the news start first you have to make your point and you don't you don't promise that is the final thing you say this is our release camera but people are going to listen you should stop you should stop you get this last story you don't even know that but that is part of the release story sorry what do you mean by release camera it is available on it my life, my death experience what will happen if we put it on a very hidden place it is somehow available to the public so first when it is released on it there will be no some mirror operators who will just use very little mirrors so fdp can't stop and pull from that mirror it was more current then we can't if you make a part of the normal release process so it will just be like the current testing or edge or whatever it is called and people don't rush for that it is the release what happens if there is an important problem with that people have it sold and you cannot provide one more to the final release go to hit decent shit ok one thing the importance what we are doing in the testing is that we will be free so people can test but what we really need we don't need an almost release thing but it is a full release thing for the last test cycle and we need to be able to repeat this last test cycle is full release stuff as often until it is now the final in nothing changes so it is a full release thing it is a full release thing looks so full release so we can play it out that is not for the set it simply pops up and it is broken and I can remember on the other leg of the release where all people dip up a sponge up here and then be in good and then be in the middle so it is nearly half of the middle which was before the release announced that I can and basically but my experience with management of the release is there is no way that 30C is it I am breaking you can stop it I just wanted to add the same thing you are pointing on at the moment you are pointing to the wall happened to free BSE about 2 or 3 times do you mean it is a full release or what? they push the release up to the mirrors without having the announcement out and 15 minutes later there is a slash drop the people are starting down the ring and the free BSE people had big problems saying we have not any release announced as long as this hasn't happened this is not the release they just didn't manage it the only thing they managed is to 2nd or 3rd time they managed to get the slash drop that far they didn't bring that size yes but that was the only point actually when our plan was to smash it which happened out of my relevancy was we made top level mirror pushes to family from the mirror in the US in Europe and Asia and we know that the mirror push is an important part of the mirror push takes about 1 hour till it is released so we said ok we will set it out of the release and also wanted to have our 8th push start at the end and we set it out of the release to have time for the release because we are so sick so we have to move it to the end normally and so on one question when the CDs are tested and the mirror pulls ready I believe that the images have to be built in each principle mirror so the images are for the CD images we have two things for the CD images one is the chip to find and the other is small and we have CD images CD image network is the most part of the CD image network is an important part of the CD image post so what is the set what the e-book will do is to know long enough in advance they could push images but themselves so as they are in the middle they just need to be moved and then we need to say at this time we are going to publish and they are going to log into each other and make this move to the host and then it is public and a mirror will have to do that the CDs and the the CD images and the CD images are actually produced at almost the same time there is no time lagging that the only thing that lags behind is the turns and I thought that each printable mirror instead of syncing the images they pull the GTO files and build the images you know I remember I just finished a mirror and I would have to ask there is one thing that is important there is a chip to find actually in the e-book because it is the first e-book and it is not so good to collect the site so at that site the images are built the chip to find are generated and the image that we work they are the chip to find the CD images are very important I mean but the CD images are very helpful and if we say in advance we will make this process they will be able to contribute to us ok, something else I would like to go on or spend some time on is about this whole library of transition stuff one thing that is really very helpful for us currently is a transition of different libraries for example the Lib Check one they made a library from the SO name ODOT 80 to ODOT 100 yeah, it is all the package was removed at that time but about 30 to 40 those packages are depending on that package and that means that all of these packages needs to be fixed at the same time we go on to testing and this is not only true for that but even worse if there is some, for some reasons they need to implement an action version into a stable later on because I am bug fixed all of these packages need to be built in stable which is really painful so for testing there is some easy idea to solve it so that it is just to keep all of one of the loading packages in testing as long as as long as necessary as long as necessary until all packages disappear but for stable it can't do that for stable how does it work for stable if for example Lib Check is an easy one but say for example Lib Cairo is going to the same way for Lib Cairo we are creating here a norm all depends on and as there are some security bug fixes there will be some new Lib Cairo to fix it that bounds this domain but the other is a bug and that's something which would really hit us with more than that but it would be even worse if you would have such a security issue in SQL that would bump it's not only about bump this in no LibGCC LibGCC I didn't want to hear that because LibGCC I can take a bug from a potato and then I can LibGCC not necessarily not the other way around I can take a bug from Sahaj which is a C yes but the other way around is something like API compatibility thanks to library version but the possibility of security fix and you need to break forward compatibility it's something like highway highway do you mean like a silo? it does happen in the kernel it does happen in the kernel it has it I mean in a number what's the number of reverb I don't simply need to come to a clever solution but I think that's something that we need to keep in mind some other life sentence so any more questions would it be possible to make it easier for developers to see what packages are involved in major transitions that are going on at the moment I know the information is available but it's not very accessible actually currently it's so bad that I wish I would know better what's potential involved it's really bad because the C++ API transition is so large it's really bad if it's simply that high for example I know how many people really know that the next KDE version is tied into the C++ API transition because of course it's technically okay but it makes it hard for outsiders to understand what is going on there well developers or users well for users we send out mail before use we say it's unstable but one of these users suggested that there could be an announcement for all users that could get this kind of stuff so this has to be such that it's a code that we don't announce no I'm going to send a mail to DDA with the user details about the transition if you have this upgrade you will have to remove some packages so you don't have to do that I think there should maybe be a page where you'll have these transitions are currently by the release team that are being tracked we want to move them to testing so we don't want new uploads and you'll have a field where you can enter your package name and you can see is this package affected by the transition for an old package it's quite easy to know yeah that makes sense it's very easy you have to do a huge reverse dependency check uh... that's all you have to know it's not a package I think I know how to spend this I think that the training has been really high but as a user point of view it's much better I just discovered that one of my packages was actually containing some C++ files which I actually forgot because if you have that code available you could make a check in a product processing and say sorry, this package is not amount at this point because of transition going on this is a cool idea I think I know some people who like to send a C++ check but it's not a cool idea to make such a page okay I know so thanks for all


Yeah, so this came out of like a fun project. I wanted to write like a full like an end-to-end Symbolic execution engine in solidity with including the the solver that we usually using in the in the background and This is actually pretty fun. So I wanted to share with you what this does So a few questions for like audience adjustment who yes, who here was at Hari's talk yesterday about symbolic computation in Yule Okay, who knows what symbolic execution is Okay, nice. I am prepared to tell you what it is though for the ones who don't know So I'm quickly gonna go over some slides and then we're gonna move to code this word Oh, these expressions are thrown around a lot like what symbol execution? What's constraints? What's SMT solver? What's all that stuff and a lot of people know what it is but if you don't know that is it kind of like you feel left out and these words are used very Trivially even though they're not really they're simple but not trivial. So first I'm gonna tell you what's not symbolic execution and That's concrete execution. So let's say you have. Oh, yeah last question. Who can read assembly like this Nice, okay, that's very good So let's say we have this Assembly here from EVM and you want to run a concrete execution over it So let's say we have this call data It's 12 in hacks. I don't know what that is and what is that in decimal like 20? No 18 yeah, it makes sense So if you run this program that call data, what do we get? What's like there's no return here. So let's just consider the top of the stack as sort of a return In this case, we got a 12. We're gonna push 0 and the stack would call data load that Position we get the 12 push 3 multiply that's gonna give us 36 in hacks We add one so we get This number top of the stack, right? So this concrete execution you have a program You have a concrete input and then you execute the program that input to get an output So now what is symbolic execution? We just said what's not So T11 actually has a pretty good explanation of what it is So it turns the program into math and then solves math formulas That's actually a very precise although very vague Description of what it does we have the same program here, but now instead of a concrete call data We're gonna have a symbolic all day What does that mean to be symbolic is that you just use a variable instead of a concrete number? That's really all you do you look you keep looking at variables. So Our entire call data is going to be CD now. It's just a variable the top of our sites We're gonna be available called top that's all we're doing so here We're gonna collect constraints which are things that must be true when we run the program. So When we run call data load of zero, we're basically doing CD of zero, right? And then we can also call it X. We can call it Z. We can call it whatever. It's just a symbol and It happens that that thing must be greater equal zero because we're treating we're dealing with EVM words and they're unsigned, right? The second part is that we are signing that to X We just make a variable out of out of that when we do the call data load Next thing we have this multiplication. We can make another variable for it called Y Which is now X times 3 Finally for this ad we can make another variable for it called top And then which we just did the previous top of the stack, which is Y plus 1 So you see that for every operation we add a new variable We add a new symbol that represents that expression and we collect all these expressions So we end up with what we call these constraints and this is what is our symbolic encoding So you take the program in EVM bytecode and assembly here Which transform it into a set of constraints and that's our symbolic encoding. They're different There are many many different ways to write these constraints from a program Which means we have different ways to symbolically encode your program Why do we want to do this? So our symbolic encoding is going to turn into a system of linear inequalities So this was our set of constraints That's going to turn into this system of linear inequalities. There are equalities here But they can be very quickly translated into inequalities so we just keep them as equalities for simplicity and Why do we do this? The reason why we do this because we know how to solve these things With algorithms that you might have seen in high school or university or you still will see it when you finish high school and what could we do with it? We can for example did the same thing we did before we can give a concrete call data in this case the same call data as we had before and Run it symbolically. What does that mean? We're gonna in this case a simple substitution does it we can substitute CD by this entire call data We should substitute CD of 0 by 12 and so on and we get That the top is going to be this number When we solve that with Gall-Jordan elimination or gosh elimination or there's tons of ways of solving it a simple substitution here will do It not only gives us the value for top It gives us values for every single variable in this system We could have waited that it before with the concrete execution So the cool things we can do with this we can ask many many things So you can ask for example can top be greater than 10,000. How do we ask that? We simply add a constraint that represents that statement in this language So can top be greater than 10,000 basically gives us this constraint here and then you but here's the answer It is possible in which case such a solver such a math solver will tell us that the system is Satisfiable meaning that there is evaluation for every single variable in the system that makes this the the set of constraints Satisfiable it is possible that all the constraints are true at the same time And it also gives us what we call a model which is the actual values that make the whole the whole set of constraints valid and similar to before we have a value for top and we also have values for every single variable that appears in the in the system We can also ask can top be zero What do you think so we can represent it for this constraints pretty simple By the way, we're all these variables are on the integers. There's no real irrationals here. Everything's integers In this case it's over says the system is unsatisfiable. It's inconsistent. There's there's no way all these constraints can be true at The same time. They may be true in separation, but they will never be true At the same time what we want to do is basically Do exactly that in Solidity so but what exactly do we want to do you can do several things you can Try to prove that a certain assertion is true you can prove that a certain thing always happens or never happens kind of things For our use case, we're going to try to find unreachable branches. So here's a piece of Solidity We're going to analyze even bytecode, but this is just to show an example So I have this function takes an integer acts and force we require that acts has to be last or equal 10 Then we have in the branches has if acts last we go 50 does something and then The rest does returns false So this branch here basically the false branch of the if it's unreachable right because acts we know that acts is less or equal 10 from the beginning of the function Which means it's always less or equal 50 Meaning that it will always enter the if and it will never come to this part of the of the code you take the true branch this is reachable because these constraints are Satisfiable together But these are not right safe acts has to be less or equal 10 it cannot be greater than 50 So this branch is unreachable. We can remove the whole thing. Well, not the whole thing just the the bottom The cool thing about trying to get stuff is that we need very little support From the AVM, of course If you want to write if you don't write a symbolic education and you need to write an interpreter in the first place But you need an AVM interpreter But we don't want to deal with every up here because it gets really big really complicated And we don't want to do things like call create and storage and all this complicated stuff Which of course you could in a lot of tools do that We don't want to do that in Solidity the cool thing again about this encoding We we only have to care about the stack operations control flow so jumps and Upcodes that stop the execution and relation upcodes And so basically we're going to care mostly about as I saw before ifs with Relational operators inside so less than greater than and the negation of these so that you can get Less than or equal and greater than or equal the symbolic encoding. We're going to use is also pretty simple So for every EVM expression that we saw before we're going to transform into math Constraint of the form a minus B less or equal k where a and B are going to be variables and k is going to be a constant So this is also what Harry was talking about yesterday in in his talk And we got things like like this for example whoever was in Harry socket together. Is this system satisfiable?  It basically takes these constraints this math constraints and it tells you Whether it's possible or not that these things are satisfiable at the same time And if it is possible, it's going to give you values for the variables that make it satisfiable Otherwise just says it's not possible at all for these things to be satisfiable together The solver is much simpler than the things you need like ILP or SMT when you need to solve it linear combinations Or even nonlinear expressions and the sort sorts of things that you end up with when you start encoding Arithmetic expressions and other things and as also higher explained yesterday, this runs in one or more time on The graph generated from the constraints using the Bellman Ford graph algorithm not gonna go much into that if you want to Learn more about that. Please rewatch high stock and This algorithm is super simple. This is basically almost the whole thing and most of it is comments so now all we need to do is Put it all together So this is the whole project So these are two tasks files one for the solver itself Just like unit test for the solver and one for the symbol execution engine and then you have all those files for the for the whole engine so So What we want to do is like write the interpreter how to be right the interpreter we need so by the way Please if you have questions, just like try to you can ask questions right now just to make sure we go numb in a good flow Actually, it's not here. So usually when you write this interpreter for EVM you have this context What is the context you have the code that are executing you have the program counter? Like what which opcode are you executing right now? We have a stack in our case gonna be a symbolic stack Don't worry about that now We have a path which basically it's a it's a path of all the program like of the program counters that were visited in the In the jumps and we're gonna use this to detect loops and exit because we don't want to encode loops We have an array of constraints. This is what I showed before like when you see the require It says require act less or equal 10 we go into that branch so we keep that constraint because that thing needs to be true for the rest of the execution and this counter variable is just a Counter to help create new variables when we were creating new variables for the expressions x y and z and so on here We're gonna be expression one expression to expression three and so on and they need to be different in the branches that we execute So that's it. We have the context Ignore the rest for now. Let's jump right into the Execution engine so we have this recursive function called run from Which takes our context so here you see it's basically gonna traverse All the opcodes select the opcode This is just a check that we just exit early in loops we becomes an under approximation, but we don't want to do loops We extend the path with the Disney opcode And here is the part that The first part of the what I mentioned with the interpreter.  So this just does the usual Stack handling so if it's a swap you're gonna go into the stack and swap the numbers if it's a dupe You're gonna duplicate whatever it is we've duplicated if it's a push just push that number into the stack here The only thing we do is apply a function on The stack arguments we just so for example if you have an ad We're not gonna encode the ad precisely here, but we do need to consume the stock slots and put a new return Value there, right? So this basically just uses this handlers we have internally. It's like a bunch of function pointers To if you have an ad so this is generic for like all the all the upgoes We don't care about it takes the number of arguments this opcode takes pops all of them from the stack Creates a new work what we call symbolic variable So like a new expression 13 or whatever here and puts that expression on the stack And we don't really have don't really care what it looks What it looks like right now. We don't really care what kind of constraints we have over it And In here is a part of the that we actually care about the where we do the check So if we have a jump every time we see a conditional jump We take the the the argument of that jump we take the condition that makes it jump and we ask the solver Is it possible that we can't jump to that location? because this is what before we had this this required an if right so we have required x less or X less Then are equal to 10 so we have that saved x must be lesser go to 10 And then we see if acts greater than 50 and then ask is it possible though that is that acts is written that 50 so at this point that's when we We have all the math things encoded already in here As you'll see this makes symbol. This is all like internal helpers not important right now so here is what we Do the check So a check if the opcode is relational So if you have a last then or greater than or if it's an is zero because if you need to do greater or equal We don't have greater equal in a VM. So we need to do is zero Last then right so and similarly for Last than or equal. So if it's one of these we basically take the the condition which is here we transform it into an DL expression difference logic expression And basically call this over so we have this check here Which will take all the constraints and we'll call this little DL server that I mentioned Which and this is the check We call this over and if the server says unsat then we say this branch is unreachable Why unsat because if the branches if the branch conditions are unsatisfiable together it means that This over will say unsatisfiable right and this means that that part is not reachable Because there's something in the middle that is not allowing that will not make the code the code the code path is basically going to be inconsistent and What the silver looks like is? Yeah, this is the entire silver So you take the constraints So here just build the graph. So this is building the graph You just need to know how many variables you have This is still building the graph and then here we run the the single the single source for this path algorithm Which is the first part of the silver which is basic. Yeah, it's a very basic graph algorithm Then we did a negative cycle detection and that's really all this over does this is and 20 lines of code it's really simple and Yeah, it's a logic that I really like because it can do a lot of things While being very very simple The last thing that I want to show is how do you use this? so Here have this contract unreachable that has a bunch of functions and that is like some unreachable branches in each of these functions All we need to do to test that is really just this We call the same run function from the library from the symbolic symbolic execution library with the runtime code from the contract that's really all and Here's a simpler thing just like manually just a simple test With somebody care that I know what it does and if you run this Yeah, so here you'll see that This is the complicated case with all the solidity high-level functions and It's not the best way to report the things but it reports it emits an event That's as unreachable branch with the PC 255 this tiny example So it says this is the same as I showed in solidity just like in written quickly in in Yule and This is the bytecode that it generates well that I wrote manually and So we can quickly Compute this together keeping track of the stack and then you'll see what it What it actually does in execution so push zero We're gonna push a zero then we do call it a load of zero. It's gonna give us some x Then we push 10 we duplicate the x We do last then so this is gonna turn into this This is the stack by the way and The top is the higher position.  All we do is just so we're gonna pop We're gonna pop this first two arguments, right because of the Jump but because we go into a branch This condition must be true for the rest of execution, right? set of constraints So we keep going in tag one jump that's dope. We duplicate acts again we push 50 we do an LT now and Which consumes the x and this becomes top of the stack just a symbolic expression like y equals x length less than 50 less than x We push 14 and then we jump To and then at this point when we see the jump We're gonna ask the solver. Is it possible that this new condition 50 less than x is? Consistent with what we already have x less than 10 and it's over is gonna say that's not possible and at this point here Precisely at this jump I that's where we basically stop and say this branch here's is the true branch like where you're jumping next is Unsettled soluble so you can actually remove that entire branch, right? But yeah, so There's a lot of code behind that But it's a lot of helpers the main intuition was basically this algorithm of just like running the interpreter carrying about a few codes not carrying but other upcodes and Yeah Happy to take questions Super cool talk. This is why you can do this in solidity I'm wondering about overflow though because your assertion at the beginning was that that one example you showed was impossible But it is very possible in the presence of overflow now that one wasn't because you need the answer to be minus one-third So it's not gonna be possible Okay, sure. Yeah, but it doesn't look like you handle overflow any yeah, right? Yeah, exactly So that means that your results are not Correct. Yeah, exactly. There's a bunch of soundness stuff you have to add to this Okay. All right. Thank you. Yeah, sorry. I didn't see but is this code somewhere? available to Yeah, this repo github.com slash that thing and There's probably bugs in there though. So feel free to fix them So since you wrote this in solidity, I do have any thoughts on why you would want this to be executed on chain Not at all Should not run this on chain. Yeah Actually, so if I wait let me quickly Just look how much gas this takes for this tiny program You said that for a given program, there's a lot of different encodings you could have Can you give a few other ideas of other encodings and what would be the trade-offs? Yeah, so this encoding uses This encoding basically chooses which has different logic because the solver is very simple so we could write in solidity, right? So the the encoding is tailored to become systems often the qualities that look like the constraints that a DL solver would take but Where is it now? In Harry's talk actually which I have here There are different So if you want to if you actually want to encode add mold of all these kind of things you will need More complicated constraints like linear combinations Where is it hurry? Yeah, you'll need linear combinations like this for example and more complicated constraints and you'll need like a simplex or integer linear programming thing or even a nonlinear solver depending and these things are a lot more complicated so the simplex is what it's It's an exponential algorithm that Kind of happens to run mostly in polynomial time these days But a nonlinear nonlinear if you're trying to solve nonlinear constraints That's an undecidable problem, and you're gonna have a hard time solving it so Yeah


Okay. The recording is on. Welcome back to the second lecture. Obviously 310 for class. Any questions on just communication? I know it's a very simple topic, I think complicated. But from the context of church and Christian ministry, any questions on that before we move forward? Okay. Go ahead. Sometimes people use the issues that are happening in the church congregation. In there is so much. And I've heard, I've heard things like that. And they feel it's a good example because the church knows it, which has people have seen it. But then is, I don't think it's actually right to use the first or the second word, what the person did in this moment. But I just want to know, is it right or is it wrong? Very good question. So the question is, in our preaching or Sunday, or preaching or, you know, in Sunday services or other public public settings, can we, or, you know, is it right to use examples of, in the names of people, incidents, things that are happening, or have happened as part of the sermon? Now, one is I never do it. I feel it's wrong to use, let me qualify that. In general, I don't do it. So that means, especially when it's, you know, a different, a difficult situation. So I would never mention a person's, a person's name, meaning people who we know, it's okay, we're talking about some historical figure or, you know, some Bible character, obviously, somebody in the congregation, somebody who's there. I wouldn't use that person's name. I wouldn't necessarily talk about that situation in as part of the sermon. So we never do that. The only time you would mention a person's name is if you want to celebrate that person. Oh, you know, John did such a wonderful job. He went on a mission trip. You know, he reached to somebody. If you want to celebrate a person, yeah, do it publicly. And if you really want to, okay, that is a good thing. Right. So yes, if you want to celebrate somebody celebrated, you know, there's something good they did. Yeah, you can mention that. Never to correct, to put people down to expose difficult situation. Never do that. So that's something. So those kinds of matters have to be dealt with privately one on one. Right. Now, what does the Bible say in 1 Timothy chapter 5? The Apostle Paul writes, he says, Do not receive an accusation against an elder, except in the mouth of two or three witnesses. So I'll give you the exact question. First Timothy chapter 5, yeah, verse 19, 20, 21. So he says, do not receive an accusation against an elder, unless they're two or three witnesses. And then he says, those who are sinning, they're new before all that others may learn and be correct. So if, especially like an elder, somebody in position of leadership, if they are doing something wrong, first thing is, I must deal with it privately. If there's an accusation, something wrong, I deal with privately, make sure that there are, you know, valid witnesses in actual general things. But if that person is continuing to sin, if that person is continuing to do something wrong, then I have to bring the matter in because those who are continuing to sin, they're new before all. But who is he talking about? He's talking about the elders, he's not talking about 8-bit church members. We can't just simply say, oh, that person is doing wrong with this person and talk about it in public to everybody. That's not the thing. The context is, if there's a person who's in spiritual leadership who is doing something wrong, deal with it privately, make sure that, you know, there are two or three witnesses, the case is general and you deal with it privately. If that person is continuing to sin, that person is in leadership and they're continuing wrongdoing, even after production, it's going to affect the community. So in that case, he says you address it. So in the last, you know, example, in the last 23 years of fasting, this church, APC, I think only once I've had, only once I've had to deal, address a matter of ability, but that was to explain a decision we made about work. Otherwise, we don't. We deal with it privately. Then we don't mention those things. Now, of course, the things that we do publicly are when we are appointing a new pastor or we are releasing a new pastor, those things, you know, actually this coming Sunday, one of our pastors is moving abroad. So yeah, we will do it publicly. We'll call him on stage, we'll announce and we will thank him. I've been saying, okay, he's served so many years. We are blessing him, he's moving abroad. Okay, so that those kind of things we do publicly. Yeah, but they're welcoming a new pastor released in the past. Or any transition, important transition that's happening. Yeah, those we do publicly. If you want to celebrate somebody, we do it publicly, but we never criticize, condemn, judge, individuals or partners. Because it's very harmful for people, you know, when we do those kinds of things, it hurts people, so it should do the work. Pastor, just a follow up, Christian, for that. Let's say we've had a comment from people or let's say there had been a discussion regarding some matters and if it, do we address the matter in sermon, not mentioning the name of the people? Let's say, for example, one, I'll mention two examples. One, Maria Person has given an interview to church and he did not qualify. And the next time when we talk about excellence and, you know, the importance of being excellent and not able to crack the interview, would that person get hurt or, you know, that is not, we are not mentioning about that person, but what if they try to connect with their incidents and think like that. Another example is this, I mean, recently happened, some people ask about giving holy communion to people who are not baptized. And when the next time any such kind of sermon comes, when we mention it, would that people get hurt? I mean, we are not mentioning anything, but if we address the question, wouldn't that people get hurt? Yeah. So, yeah. So what we need to do is just, you know, kind of use a little bit of wisdom. So if an example like this, let's take the first example, if there is a matter of, you know, like somebody interviewed, they didn't get in, but let's say the next Sunday you're talking about excellence or something. I think how we communicate it can be, we just communicated saying, you know, for all of us in all areas of life, in every kind of workplace, you know, people do expect excellence. So that means we, you know, because in our minds, it's very clear that I'm talking about excellence, but I'm not talking about that particular incident. For us, those two things are very separate. But we are also aware that there's somebody sitting in the congregation who might have a tendency to make that connection, which is not, we never intended for that. So we can be a little extra cautious in how we communicate that particular point in the sermon. If it's happening, you know, in close proximity to that incident, and it's part of the message, you're, you know, you happen to be speaking, okay, so just give it a little extra separation, you know, from that incident. That means what you're doing is you're being conscious that you don't want that individual or those individuals to think that, even think that you're connecting these two points, but it's very clear, you are not. So just, you know, say, okay, you know, you're making very broad, you're saying it's not just in terms of sitting, but in any situation where we are working is certain how we do want to pursue excellence. The other case when you're talking about communion, I think how we need to say what we need to say that it's okay, this is, you know, this is how we practice Holy Communion. And you know, you can do it again. In a way that, I mean, if people do the connection, it's, you know, it's not intentional, if they make the connection, they just leave it, you know, it's up to them to resolve it. It's not that we are intentionally doing it. Because our conscience is clear, our mind is clear, and we're going to present it in a way that is separate from that particular question or that particular incident. So I think we should not be a, you know, we don't need to fear that they might make a connection, but we can be wise. That means we can try to present it as distant from that particular incident and communicated in that way. I hope that helps. Yes, boss. Yes. Thank you. Now in some cases, I don't even bring it up. You know, for example, I tell you one, one difficult situation. And this happened many years ago. I forget which year, but so we had started our campus in south, APC south campus. We had started it. We were still small at that time. So, you know, I would say the congregation may have trained just 20, 30, something like that. So you're still small. And yet we had the congregations there in south Bangalore. Now what happened was one Friday evening in our primary thing, two men came. They met me on the thread. They said, Oh, we heard that you have a campus in the south of the city church there. And they said, Oh, we, these two men, brothers, they said, Oh, we want to start a ministry in the south. I said, Yeah, good. We need more churches in the south. Because that seems to be a big unreached part of our city. So that's great. And then they said, Yeah, we want to do healing services. So yeah, go ahead. And I just wanted to show some support. So I said, you know, if you go and start a church in the south of our city, be as APC, we will contribute 50,000 rupees to help you start it. It's our gift to you. We will give that to you to help you start a church, our ministry. So I made that commitment, the verbal commitment, saying we will help you. And these are like two people. I mean, I never met them really before this. They just came, they were talking as believers. Then they said, we want to start actually when they told them, first they didn't tell them what sort of church they said, we want to start a prayer meeting. I said, go ahead for it. Then they said, we want to start a healing service. And I said, go ahead and do it. Then they said, we want to start a church. I said, Yeah, go ahead. I made the commitment, you know, we will help you when you're 50,000 rupees will give you. And this was many years ago. So at that time, 50,000 rupees was a good amount to help them get started. And that's it. We prayed, we met after maybe two weeks after that meeting, I got all the information from our church people, people who are, you know, we have, we are congregations still very small. We are just, you know, in the early stages. And get information from people saying, hey, they were these two pastors, they're visiting all our churches, and they're coming to our people's homes, they're giving them prophecies, and they're telling them, see, your pastor doesn't even come and visit you in your house. Of course, I was not visiting people's homes, you know, that is very far away, and all those things.  And so at least two families, at least two, and I don't know about the details, at least two families called me and said, Hey, this is happening. How do we, what should we do? And I was so disturbed. Because these two people came in totally, they're going to start a church. I didn't expect them to go and disturb our church people, right? I thought they were going to go and start the church, do a new work. And I always promised to help them. But now the news I'm getting is they are disturbing people in our own congregation, and they're saying these kinds of bad things, putting down all of them. And I was like, Oh, God, what am I supposed to do?  But here's how I handled it. So for quite a few weeks, I was struggling with this. But I said, I'm not going to speak about this from the pulpit. I will not mention their names. I will not talk about them. I will not talk about this matter from the pulpit. I will just minister Cotsworth, just minister to the congregation, be quiet. And it was difficult, you know, because I knew there were two or three families in the congregation who were being disturbed by these people, disturbed by these people. But I said, I'm not going to talk about it. I don't want to give, in my mind, I think I don't want to give devil pulpit tax. He's not worthy of pulpit tax. I'm not going to give the devil any time on the pulpit. This is a disturbing thing, but I'm not going to give the devil pulpit tax. This pulpit tax is sacred. I'm just going to speak about his word blessed people born. And I didn't know how to handle it yet. So I'm just saying, Oh, God, what do I do? How do I handle the systems? But I remember that these two people when they came, they had used the reference of another senior pastor in the city. So what I did was I called that senior pastor was a good friend of mine. So I called him and I said, Pastor, the two people, they came, they mentioned your name, they said they came from your church. They, you know, I just gave a little background. I'm going to ask, do you know them? What do you have to say? Then he told me, he said, Oh, they're causing a lot of trouble. They caused trouble here and they got out. And they mentioned the name of another pastor. So I also called that verse and asked them, you know, these people have said this, this, what actually happened. So he also gave me an update. Then I knew that these people were actually causing trouble. So the only action I took was I informed them that I will not, because that they have caused this trouble, they're causing this trouble, which is not right. I will not be giving the money that I promised. So I've been through that. I said, see, I didn't expect you to go and trouble our own church people. I expected you to go and start a new church and I was willing to help you do that. But this is what you've done. You've gone and you're disturbing people in the existing church. That's not right. And so I'm going to go back on my word. I'm not going to give that money that I promised to you. So please excuse me from it. That's the action I took directly with them. I did not say anything to the congregation. I didn't discuss this matter with the people. The individual families complained to me who reached out to me, I just say, you just stay firm in church and continue growing. That's it. I remember one Sunday towards, you know, while all this was going on on Sunday morning. In my mind, I was saying, God, why is this happening? What is the real cause behind all this? Why is this happening? I remember that Sunday morning while I was in South on the campus there. I was coming forward to the worship. I just got over. I was coming forward to pray and suddenly in my spirit thought throughout the words, divine order and the message that came to me was, whenever we violate divine order in the church, we cause confusion because of this kind of problem. I received that in my spirit. Then I went back to the New Testament. I said, okay, we got to sing something about divine order. And I started searching. I said, hey, is there anything about divine order in the New Testament? And then I saw Paul to the Corinthian church, two Titus, and even in the book of Revelation, Paul mentions, he says, when I come, I will set things in order to the Corinthian church. To Titus he says, Titus, I want you to set things in order among the churches in peace. So then I understood that there is something called divine order, that there is a way in which, as churches, we should function. And when we violate divine order, we cause disturbance in the body of Christ. And that's how the book, I wrote a book out of that all divine order. So the book came out of that whole journey and struggling. But the, so I learned through that. But the thing that I resolved to do was, I will not talk about this from the full points, because I don't want to talk bad about these people. I don't want to mention their names. I don't want to speak bad about them. I handled it privately. And everything went smooth. And I learned, I received a revelation through that difficult experience about divine order. And I learned from it. So that's an example where there was something disturbing going on, the congregation was disturbed. But it was a resolve not to address it in public from the full points. Just handle it privately and keep focused on doing what God wants us to do. And then eventually, all the everything's decided in, they, those two people, they left that place. They really did not even start a church. Within couple of weeks, they left. I don't know what happened after that. So, yeah, that's just an experience. Pastor, just one more question regarding communication. Let's say two individuals among the congregation, if they have a misunderstanding, and one person lets us know, do we interfere or not? Or how do we stand in that place? Yeah. So I think our first step is trying to see if they can solve it amongst themselves. That's the best. So somebody comes to you and says, hey, this is happening between us. There's a problem. Then we can advise this person saying, hey, try to apply the principles of the Bible. And what if we try to peacefully resolve the matter? If you cannot, then what if you can come and meet me and I can help you intervene? So the first step is to see if they can resolve it between themselves. If they cannot, then it's good that both come and as a pastor or if you need leadership to be involved. This is Matthew chapter 18 where Jesus said, if you haven't been against a brother, you go and try to go and tell them and settle the matter with them. If that you cannot settle it, then you take it to the elders of the church. So we're following the Matthew 18 principle and we try to resolve it there and whatever is decided, they have to follow. If they don't follow, then the person who's not following is answerable to God and Matthew 18 actually says, okay, you kind of send them out of fellowship. So I think it all depends on the seriousness of it and what the matter is. But I think step one, let them try to resolve it by themselves. That doesn't happen. Then let them bring it to the elders of the church according to Matthew 18. And I remember one serious case that happened in our church which was here in Bangalore was about two businesses. So there are two people, they're both part of the congregation. They're both having their own businesses but they were working with each other and then there was conflicts. Now these are two brothers, people who believe in the same church. They have their own businesses. They were doing something together and then there was conflicts and it escalated. I think it even, how far did it go? I can't remember now. I think there was some police complaints. There were some legal issues. So it kind of really went and this is between two people and so finally they reached out to me and then I said, okay, the Bible tells us to do this. I know it's a big issue. This was involves money. It involves business. It's gotten into some complications. I know it's there but let's see if we can sit down and resolve it. So both the CEOs came and we sat in the church office. They came with all their information and we did what Matthew 18 told us to do. Sorry, we listened to one side, listened to the other and this was of course a business matter. So there was a lot of money involved and all of those things and then we said, okay, our goal is to resolve this matter. And just to sum it up, one party had to repay. I mean, there was some misunderstanding or things and so on. So we said, okay, this party has to repay so much amount. This person was willing to forgive certain amounts. This party should repay. How can they be established a payment plan and we say, okay, this is how we're going to repay. It's the schedule. This is how we're going to repay. Let us settle the matter here and that's it. So that's how we handled it and it worked out fine, meaning not saying they became friends or anything. The matter was resolved. Now, it would have been nice if the relationship also was curable but it did not happen. At least the matter was saying and it didn't escalate into some legal fight and all that. The matter was resolved, whatever was had to be paid was settled. I held them accountable. I said, you have to send me an email to show that this thing has happened. So that was clear but the relationship is something we cannot force and to my knowledge, they went the separate ways, which is a decision they made. So to answer your question, we follow matter 18 principle and do our best. Thank you. Thank you. Thank you best. Any answer on communication? Just a question. I didn't expect all these questions. Okay, let's go forward. So now we change our focus to culture, lesson number 10. So we want to focus on the organizational culture, the culture of the church as an organization. So we can look at it as the culture of the church as a community that is the culture of the congregation or we can look at the culture of the organization. Right? So now we are looking at the culture of the organization. So if you're talking about the ministry administration, the administration part, it's we want to talk about the culture of the organization. That means we have to be careful to maintain a good working culture in the organization and time and time again, we will read, if you look at Christianity Today, the Christian magazine online, online Christian magazine, it happens almost like every year, there will be some reports of abuse inside a big Christian organization. People were not treated properly and sometimes it surprises us.  And when it comes out in the news, it's very shocking that we would think that, hey, a Christian ministry must be having a very healthy, joyful, compassionate culture where people can be very happy doing serving God and doing ministry. But when this kind of news comes or whether it's a Christian ministry or a Christian church, and then we realize that this doesn't happen automatically. We have to guard and we have to intentionally create the right kind of culture within the organization. Otherwise people can get hurt and people can, it can be very bad. Even inside a Christian ministry or a Christian organization. So we need to talk about this, we need to be careful to maintain the right kind of culture, work culture within the organization. So that's what we will talk about in this list. So when we talk about culture, basically they're talking about common values, common practices, how we all work together, how we all relate with each other. So it can be described through jointly held beliefs. That means we all believe certain things. There are values and practices that we commonly follow. We have certain ways of behavior and thinking. We all seem to follow that. We have certain way of doing things, how we do it. So these are things that actually shape our culture. The culture within an organization. And so even within the Christian ministry or within the church organization, we have to be careful about these things. So for example, God is giving an example. We all hold the common belief that we need to honor and respect one another. We also hold the common belief that we need to honor and respect our leaders. And these are biblical things. But if that belief that we have to respect our leaders is taken too far to the point where, example, we put our leaders on a pedestal, that creates an unhealthy culture. See God told us, you respect those who labor among you. But he didn't say put them on a pedestal. So you respect them, you honor them, but don't make them like next in line after God. Or if my honor and respect for leaders share puts me in a place where I'm being misused or abused by the leaders here, then that's an unhealthy culture. So here's an example where a belief, a jointly held belief, especially in the Christian context, where the Bible is teaching to honor those who labor among you, honor those who minister to you, the Word and doctrine. So the Bible's teaching honor, respect them. Yes, it's a commonly held belief. We all have the same belief. It's part of our culture. But if it is taken out of context where either I'm putting the leader on a pedestal or allowing the leader, because I'm honoring the leader, the leaders abusing me, that's a danger. That's a misplaced part of the culture. And like this, we can look at many examples where a commonly held belief or a practice or a way of thinking or way things are done, if they're not kept in the right place, it can actually lead to a very toxic culture, a culture where people can be hurt, people can be abused, and the culture becomes very toxic. It's unhealthy. So our beliefs, our practices, our way of thinking should be kept in the right place. That's very important. That's how we can maintain a healthy culture. So in a large organization, we need to understand that there could be some cultures. That means there's an organizational culture, but locally within various groups, the culture could be a little different. The dynamic of the culture could change over time. We do external internal changes. And what we're after is that the culture of the Christian organization and the culture of the congregation, we want to have a true, genuine Christian, totally kingdom culture. So that's what we should be watching about caring about and working towards. So why is culture important when you talk about it within an organization? Why is it important? Because it affects all the employees and it affects the employees' experience, you know, working in the church. How do they feel happy? Are they able to do their best? Do they feel valued? It affects their outcome to some degree, of course. Productivity depends on their skills and knowledge and all that. But culture also influences their productivity. You know, if it's a healthy culture, people feel more energized to serve them. It also affects how the congregation is served. The staff are very happy. They will cheerfully serve the congregation and also protects the organization from negative influences. So the culture is like the organization system. If we have a good healthy culture, if bad ideas try to come in, it will automatically protect the organization. So I don't know. This is our culture. This is how we do it. We will not entertain that negative idea, the negative influence in our culture. So it's very important that we create a good culture in the organization and of course also in the congregation. So the principles we learned today will apply to both. Let me just cover one more point in the middle pause for today. So our next question is, what shapes the culture? How does this culture shape? And in a lot of research and writing about culture, one of the things that you will find is that leadership, culture starts with the leadership. That means it actually goes top down because if whatever the leaders model, people will tend to follow. So this is one thing that doesn't go bottom. It's one thing that comes top down. So the leader or the leadership to a large extent, they influence and they shape the culture in their organization or in their sphere of influence. So people are watching whether it's a main leader or it's the leader of the team or leader of the ministry. People are going to be influenced by whoever is the leader there. So leadership is very important. So how does leadership matter? The leadership, the leadership's behavior must be always consistent to the culture that we want to produce, the values that we want in the organization. So if the leaders at all levels, starting at the top and the leader at every level, they model, they embody the values that we want to see in the culture, then people begin to reproduce them. They begin to see the same thing. So we must be reproduced of our own kinds. So example, if the leader behaves like a celebrity, example, the leader behaves like a celebrity, what happens? We create a celebrity culture. So everybody thinks this is how we have to treat the leader and become a celebrity in mindsets. Then what happens is, if there are junior leaders, the junior leaders also behave like celebrities. They expect the same kind from those who are under them. So we create a celebrity culture. We begin to put people on pedestal and all the negative things that come from a celebrity, especially if you're having it in a church context, you're having it in a ministry context. It's very unhealthy. Maybe a celebrity culture will pass when in the entertainment industry or the music industry or something, but in the church, that's not part of kingdom culture. It's not part of church culture. In the church, Jesus has taught us to be servants. He said whoever wants to be a leader, that can be a servant. That's the model Jesus set for the church. So celebrity culture in the church or in Christian ministry, it is an anomaly. It is something wrong. It is unacceptable because it's not something the Bible embraces. The kind of leadership is about servant leaders. So the leader has to embody that. If the leader walks as a servant, then all the other leaders will also walk as a servant. As servants, you will create a culture where people are ready to serve. They don't mind doing anything because the leader models it. Everybody will follow that. So that's the first thing you must understand. In an organization, culture comes top down. It starts with the leaders and whatever the leaders embody, that's what is going to become part of the culture. So as leaders, we have to very consciously think what is the culture I want to have in the organization. It starts with me. I have to embody that. I have to model it. Then I can create that culture in the organization. So with pause here, I'm going to talk more about this next week because it's a very important part of church and ministry. If we get this wrong, then the organization suffers. People in the organization suffer. So we need to really understand this problem. Any questions before we close or any comments? Anybody wants to say anything? Let's close in prayer. Thank you for your patient listening. I hope all of these things are useful for the ministry. Please close in prayer. Lord, we want to thank you for this morning. Thank you for the word we received a God. We pray a God that our communication and our culture would be according to kingdom standard and we would be able to bring your truths to people and also in our way of communication help us to be models of God. And we ask that help us to see your kingdom being established in our place of thought. We give you praise. In Jesus name we pray. Amen. Thank you everyone. Enjoy the rest of your day.


100 mental health videos, that's some exciting stuff. I got some good news too to stick around. What's up everybody? This is Chris from the Rewired Soul where we talk about the problem, but we focus on the solution. And I just wanted to celebrate for a moment with this quick video that I now officially have over 100 mental health videos to help you out with your mental health. Or with somebody that you know. So if you're new here, if you don't know me, welcome and look around. Browse around this whole channel because I got all sorts of good stuff on here. But I'm just really excited and really grateful. I just started this YouTube thing a couple months ago, like taking it seriously and it's been going incredible so far. As of right now as I record this, I already have 278 subscribers and thousands of views. I think it's almost at like 8,000, which is pretty crazy and pretty cool. And what that means to me is that there's people out there who are looking for solutions to dealing with anxiety and depression, addiction and any other type of illness that might be troubling them. But I also do these videos to help with everyday stress. And I really appreciate and I'm grateful for everybody else who's been following me, who watches my videos. And especially everybody who leaves comments and asks questions or thanks me for the video. I get an overwhelming amount of messages on my Facebook page or my email from all sorts of different people. And I actually got some great news just the other day. A young woman who I was talking to. I helped her out. She got into a sober living. She's working a program now and she's staying clean like that's awesome. And in case you haven't seen my channel trailer, five years ago I was hanging on to life by a thread. I had a 10% chance of living. I didn't even want to live. And I was given this gift of life back. And I learned so many things during my journey, just dealing with depression, dealing with anxiety. I was a drug addict. I was an alcoholic. And there was nothing at the end of that tunnel. There was no light. There was nothing. So I do these videos to share my experience. But I also do a lot of studying, a lot of research. And there's a lot of information that's out there that a lot of you don't know how to access. So I'm here to share that with you because I just want to help people. Where I'm at now, I keep what I have by giving it to other people. So everything that I've learned, I give it to all of you and I'm really grateful that you're even here. So if you're new here, like I said, check out my different playlist. I have a whole series on mindfulness and I need to do more videos on that. There's a lot of introductory stuff. Mindfulness is something that completely changed my life and there will be more videos on it. I also have a depression hack series. I have an ask an addict series. If you're an addict who's in recovery, if you're an addict trying to get sober. If you know somebody who is addicted, check out my videos because I'm trying to educate people on that stuff. I also have a series called Losing Weight Mindfully. I am down 25 pounds by the way. And this is a series where I talk about how I'm using mindfulness to actually lose weight. I have a whole playlist about mental health news. It's important that we talk about what's going on in our country when it comes to mental health. So we stay in the know and we know which areas need more attention and what's happening because this affects all of us. So moving forward, there are going to be some slight changes to this channel. I've been calling it my slight pivot. So a lot of my videos are longer. I've done them, you know, 10 minutes, 20 minutes. Some of my live Q&As have gone about an hour or so. And I'm going to start doing shorter videos. I'm going to try to keep them around the five to six minute mark. And those of you who like my longer videos, please leave a comment down below because I'm on the fence about how many I'll do a week. Because those are more in-depth, a little bit more educational, a little bit more information coming at you. But what my purpose is, the reason why I'm here, the reason why you're watching me right now, the whole motivation that I do this is that I want to help as many people as possible. And a reality that I need to face is that a lot of people have short attention spans. So if they're going to dedicate time to me, they might want to only dedicate about five or six minutes of their time rather than 10, 15, 20 minutes. So I am going to do shorter videos and you might actually like it. I'm going to try to cram a lot of information in there. But the good news is it gives me a lot more content so I can focus on specific subjects. And that way you kind of learn a little bit more about it or a certain topic. And then I can continue that on into another video. So always make sure that you're checking these info cards right above my head because I'm going to be linking to my other videos and how they connect to each other. Because keeping good mental health, it takes work. And you got to start looking at these different strategies and techniques and finding out which ones work for you. So I'm going to start doing shorter videos and I hope they help. I hope you like them. But what I want to do, I want to start bringing more traffic here so I can help more people. I have an attic mind and there's never enough and as many people as I'm helping now, I want to help a lot more. So if you want to help me out by doing this, go ahead and share my videos. Share my videos with someone you know who struggles with anxiety, who struggles with depression, who struggles with addiction, who struggles with their weight, who struggles with happiness in general.  So I'm again very grateful for everybody who's been following my channel. There's a lot of cool stuff to come. I have an entire notebook just filled with ideas so I'm never going to run out of content. So stick around. I got a lot of exciting stuff. And if you're new here, if you haven't yet, right below this little box is a round subscribe button. Make sure you click that. Subscribe to my channel. There's a little notification bell. If you hit that, you'll get emails and notifications whenever I'll have new videos up. But thank you again and I will see you next time.


Hey, what's up everybody? Ricky Krooth here. Welcome back to my channel, so today I want to give you three tips to cold calling. This is what I believe. I'm sharing that with you for nothing.  I know a lot of you are scared of cold calling or think you don't need cold calling in your business, and maybe you don't. Maybe your business is the type of business that doesn't need cold calling. Okay, I don't know. There's a lot of digital type businesses out there. There's a lot of things out there that you don't need cold calling, but I'm telling you right now, voice to voice is the reason why technology will not completely replace sales people in the industry. And if you're in real estate, if you're in insurance sales, car sales, you know, anything like that, you have to talk to people. Talking to people is the name of the game.  And through that, you make more sales. Okay, when you can create a situation where they feel like they're part of your extended family, okay, then that's when you've really got something. And I call this FE, friend, family effect. When you're giving them that family effect, when they feel like they're your brother, cousin, mother, best friend from high school. Okay, that's the way that you need to approach every prospect that you have. Okay, so next time you're talking to your mom, brother, cousin, best friend from high school, you know, on the phone or in person, I want you to think about what I'm saying.  Okay, and think about how calm you are, how comfortable they are with you. Okay, the tone of your voice, the speed of your voice, everything going on in that moment.  I want you to start to emulate that when you're talking to your prospects and whatever business that you have. Okay, I want you to start doing this. And it doesn't matter if you have a digital business. At some point, you're going to have to talk to people. Okay, and you need to give them the feeling that they're part of your family because they are. Okay, they are an extended part of your family. Before getting into these three cold calling tips, do me a favor and click that like button, hit subscribe if you haven't already. I'm putting out the very best content for real estate people, salespeople, investors, anything I can think of that I can do to bring you value, I'm doing it.  If there's anything that I can do for you, I'm here to help you. I've built two seven figure businesses. I'm a real estate agent, real estate coach, speaker, author, all the above. So anything I could do to help you, that's what I'm here for. Now, my first tip for cold calling is to get over the fear of cold calling because I know that's the biggest part is that you start cold calling, you have all the numbers there, you're ready to dial, and you just can't quite get that finger to hit the button.  Listen, everybody goes through the same exact feeling, the same exact stage. I don't care who you are. I went through it, every single person goes through this. It's not out of the norm. This is completely normal. This is part of the process. This is just something that every single person that's going to be successful is going to get through. So as far as overcoming the fear, a couple of things I want you to think about. Number one, you're doing this, you're calling them to help them. You're calling them to help them. So your intentions are to help them. Stand behind those intentions. That should make you fearless because you're literally there to help them.  Why would they get mad at somebody for helping them or wanting to help them? It doesn't make any sense to me. I think the problem is that you're assuming the outcome of something that hasn't even happened yet. As crazy as that sounds, you are automatically assuming of how each call is going to go and you're thinking it's going to be a negative result when you don't even know it hasn't even happened yet. Most of the calls you make are going to be a positive result. They may not be interested in what you're offering, but they're going to be polite. They're not going to be mean. Yes, some people will get mad. Some people will hang up. That's part of it, but that's a small percentage of the people you're going to call. A majority of the people you're going to call are going to be happy to hear from you. And regardless of if they're interested in what you're offering or not, they're going to be polite. They're going to be nice to you. And then a certain percentage of people are actually going to want whatever you're offering and you're going to actually create business out of this. What's so crazy is that I've seen so many people and I've helped so many people start to make cold calls and they start out just absolutely against it, scared of it, never going to do it. Then they start doing it a little bit. Then before you know it, they're completely addicted to it. I can't get them off the phone now. They're just addicted to talking to people, communicating with people, getting better and better and better as they go along, and it just creates so much business. When you talk to people and they can hear your voice, they feel so much more connected to you than a postcard, an email, social media. They feel so much more connected to you when they hear how you were yet to their asking questions and just the general conversation. They just start to feel so much more comfortable. And remember what I always say, they're stages to cold calling. They're stages to success. Everything is stages. And the top producers, the people that really become highly successful, they know this and they move from stage to stage. They don't let anything get in their way. They just say, okay, I'm going to bust through this stage, go the next stage, next stage, next stage until they just get to the top. And then they keep going. Once they get to the top, they just keep going and they find more levels somehow, okay? But it's all stages. So the first stage is that you're scared. The next stage is you do it and you realize it's not as bad as I thought, right? And you do it more. And then you realize, oh, I can do this, okay? Then you start to realize what you need to say.  Then you go to, okay, now I know what to say, but I'm not getting quite the reaction. So I need to figure out how to say it, okay? Then you start changing your tone, speed of voice, you start tweaking what you're saying, tweaking a little word here and there. Next thing you know, you're at the next stage, which is learning how to read people on the phone.  You're actually listening to them, okay? You're asking questions and you're listening to the feedback. You're listening to the answer and you're using that to help them, right?


So we were just talking about conditional statements, but we actually have a few different kinds of conditional statements The one we were just looking at is something known as the dual alternative conditional and it's exactly what it sounds like I have two different options. I have what will happen if there is a true conditional and what will happen if there is a false conditional and you can think about this just like Two diverging paths if you've rid the Robert Frost the road less traveled One of the funny things about that ending is he talks about how Both routes actually ended up going to the same point in the end So it really did not matter which side you took which is always funny because it's often quoted as saying the you know Pave you know go pay the way, but in the end, you know it all goes to the other end So a little fun fact if you want to be you know fun at parties But one of the other things we can do is we can have what's known as a single alternative conditional now a single alternative Has no else notice how after my if statement I Have no else statement afterwards and what happens is it doesn't matter if it's false in this case I said x equals 75 well x 75 is not less than 50 But nothing happens. I just continue going on with my program and you see this occasionally a lot of times Say for example, if someone is logged in or is not logged in you force them into being logged in But then we also have something a little crazier and this is known as something called the multi Alternative conditional statement now. This is basically the exact same thing that we saw with the dual alternative the Two different roads the only difference in this is now instead of just having one path. I actually have multiple paths I have in this case one two three four five separate paths, and you notice That's why I didn't draw out a diagram for this, but like I said, I've got five separate paths that I can take Before I move on with my code one of these things is going to happen and Then I will move on with my code and this is a little interesting because things get evaluated in Order so instead If we look at this again x is equal to 75 well x is less than 80 But I don't just immediately go to that one. I have to look at these in order So the first thing that happens is I go all right. Well does x is x less than 50 This gets evaluated out as false first. I Immediately move down to the next batch. I go else. There was a false statement else Is it less than 60? So this has to be evaluated next this becomes false else is x less than 70 again, this is false So it gets evaluated only then now I get else is it less than 80? Well, guess what it is in fact less than 80 So what would happen if I change this up a little bit? Let's say for example instead of It's saying 70 Five what happens if again I tacked a little one in front of there and it became 175 So this becomes a little bit different suddenly This we come evaluated this gets false This would be false false false This because it's the else statement this because it's the you could almost think of it as the the end all Everything else evaluated out at to false. So this is what will occur and So we would say that x is greater than 50 Now let's continue on this idea. What happens if Instead of 175 What happens if let's see I changed this expression? right here to I'll just write it out to the side x is less than or greater than 20 greater Than 20 Again, we evaluate things out sequentially so this becomes false this still false But when I get to this next statement x is greater than 20 x is 75 75 is bigger than 20 this gets regarded as True So I don't do any of this stuff I don't get to go to is x less than 80 Because I've already found my true statement So I've gone down my one path and I now move on with the rest of my code