Okay, welcome welcome everybody Okay, so let's start I Put up this picture It's actually not advertising I would have brought it much more to the point. This is our legacy system They are about I don't know exactly. I think six or seven years old. They are arm 5 they have This particular has one gigabyte of RAM and 64 megabyte of flash so they're rather limited devices We have a kernel that was Never changed since these devices have been produced so it's probably not a surprise that they have security issues and Nowadays we want to put them 24 seven to the internet. So this is definitely a problem to us so we had to come up with solution to provide a kernel quickly and Extend also think about how we could upgrade in a safe way Yeah, one more thing is as you can see this is a fuse box that you have in your room and These devices are not easy accessible. So as an end user it's not easy to actually swap devices one for the other and If one of the devices fail, we cannot just ask end users to do this on themselves This is kind of a it's an illustration for a physical physical barrier We have so and some of the decisions that we present are actually based on that we don't want to lose a device Okay, so this is not like Prior work. I just realized that there are a lot of tasks a lot of talks also about Software upgrading and think there will be other tasks also concerned with it, but this is like basically what I think how Software update has been done and a little bit also based on real events so the the first thing is You have an image and the image contains a kernel and an init rum of desk and At the end you have the actual root FS So you download it within your application image and then you just kx act on to The update and then within the update You don't need your actual root FS anymore. It's it's unmounted You just running from rum and the init rd Then just takes the payload the new image and flashes over the old one Which is quite elegant way to do it But of course you have to risk that if you lose power Then you're all root FS is gone and because to your run this gun as well. You're basically have Break your device. So there is a Fallback mechanism you either push a button or in case there is no root FS available It will automatically look for one of your USB stick Second solution The first one is what we actually use till today. It's rolling update. It's what you know from regular desktop distributions like Deviant testing or unstable where you actually never really reinstall you just keep going and It has the advantage that You don't have to you raise the root FS and write it from scratch. You only ever Switch small parts of it like if you compare it to car It's like you change the oil or change tires change fuel pump There is a problem if you go for a long time and you ever do some kind of a legacy like you move location of files You have to carry this along with you all the time Because you never know where you and uses and users really start off and this also means there are a lot of upgrade buffs that you have to consider and In fact, you probably cannot ever test them all and if you do more underlying changes then And This is very hard to do if you go with package-based updates Like if you do for instance O package It's probably not used in that way as we use it and we had lots of troubles with it So the package might be the better option, but to switch from O package to the package in the rolling system is like I wouldn't do that The next one is What I've seen maybe an hundred it's done that way that you have a special you boot you download your image into a spare part Edition and then through some mechanism from May locks You tell the U boot that there is a router fast and it should actually upgrade it So this is a pretty elegant one You might end up that you have to while you're dependent on you would actually So you might be able to do this with boot scripts if you're familiar with boot scripts So that this is not actually part of the you boot Itself, but it's outside, but it might be that the end you have to change it and One more thing. Yes, it happened that the root of acid you downloaded into partition gets corrupted Through well, it's rather extreme case, but Nowadays you have a flash translation layers and it might be that when you write the root of s It might be that a few blocks get reshuffled They might corrupt your root of s it might be remote, but it's not under your control and We actually have device that just returned to us and it came back with like the kernel corrupted And nobody's ever touching the kernel as I said, we we are very conservative in that. So either some of the users Corrupted the kernel.  It's not a standard one so So what is danger when you actually update it? Well for us it's Power fail so if in the process of writing you lose power and you don't complete it But you already have destroyed it. That's the dangerous part and We cannot control this it's something That we can't aware but even even the user if he takes care It might happen at some times for instance where I live they never announced like service windows They may be announced it for hot water But they never announced it for phone or for electricity. So if they actually have to do it that should do it and That might just happen from the outside and of course the risk is bigger if you update takes longer Good example is a you boot like you boot is very small and it takes only a split second to actually write it so the chance that you that you actually Break your device through you boot upgrade. I would think it's it's rather small Although people are typically very afraid of it. It's probably something that never ever fails really On the opposite if you root a fast it contains like megabytes or tens of megabytes Then it takes seconds So the risk is just longer because linearly increases and the same thing is if you do very lot of updates And if you update your reboot on every every system upgrade well then of course it might happen as well because yeah So so what we present here is Yeah It's not revolutionary is we take any drum of s and we want to use kx at the top of it So why kx we come to this later? but we want to have an in a tremendous disc because We don't want to work on you boot. We don't have one to have our modifications We don't want to modify the you boot underlying it For several reasons one of them is if you want to change something we need to change you boot as well So which is all with like a single point of failure the second thing is we have different platforms and None of them have the same you boot and it would be it is early from us to believe that we can have Ever the chance to when we get a new platform to actually rebase you boot So that they are all in sync or actually change it So we rather try to abstract the you boot and add a layer on top so we don't have to actually work for it Next step is the logic to perform upgrades. So we come next we come to you to the to our platforms and Some of them are very limited to do an upgrade so the logic to do the upgrade is is It's beyond score what you'd like to do in you boot and would take a long time to implement in it So we rather go into a POSIX environment where we have all the tools of your know-of and The left thing yeah, it's self-sabely of gradable Yeah, that that will also be topic later. So these are our platforms that we have they are like 10 years back was like arm 5 64 of ram The the first one used to have an SD card, but that didn't turn out to be such a good decision The SD cards start failing on us So we're basically assumed that these devices only have to you under the 56 megabyte of internal flash then there was the second try which was like Improvement of it. We went back to a bigger internal flash And the last one is the IMX6 where basically you don't have any limit by today's standard I mean these are just PCs without keyboard and And summary of it is because of the partition we cannot we don't have a partition that we can download it in advance we do have to repentition it and So we have to come up with something else Yes so We go with the smallest Nominator, which is the first one the first one is 256 megabyte We are not able to download the root of s at all so we have to download it on the fly and flash it on the fly and It's not even able to hold it in the RAM because even the RAM is too small so we came up with this Kind of pipeline which is like shell scripting on steroids But it actually works. It's It proves that this concept of Small modules like like at the very beginning of UNIX still works today I suppose it's rather easy to implement this in a short time So I guess I don't have to go through this. I think you can you're familiar with pipelines and I think I can demo it Although the network just broke down on me before so let's hope so If you want to go reflash request We just place this kind of file onto a root FS in the special folder And the folder is just send the UNIX path. It's one little rescue system So we just move it down there and reboot Should keep talking something just that it's not silent so Yeah, we're missing spot path. We turned off the busy box Now we will get this is a boot script that you see and now there should be the prompt to enter the rescue system Which yeah, I still interrupted the normal boot up so to give more More output so now we try to network because that was the problem before I just I don't know Like the demo effect waiting to get in and in the figures and I start to get nervous What's not? Okay, okay So and then I restart this is the normal thing if you get in this will be to come on to this run And if I enter it Then it will mount the root FS and it says that it found the root FS the request and It's seen the two links and it will download these images The first one was the signature as you see and now we start in the first in the in the first stream where we Or we do the verification. Well, why do we verify? Well, we haven't seen the image before it might be that the server broke down or that the signature is not valid So we don't we cannot just start flashing immediately Another issue is that for UBI update volume You actually need to know the size of the image because if you pass the burn command UBI update volume You already need to know the size of it. So let's be do the word count in the pipe before and Then well, yeah, we see a progress bar and it's probably doing something So I think we leave it there and we just go back to to the demo and then check back later so We're to the boot order so we decided to be always boot into the rescue system first and That was done for a simple reason that our devices are running like for days weeks. We don't turn them off. So They might run for long long time. So if you would only ever enable it when you do an upgrade We should not not be on every reboot Then it might not be well tested So we actually force people to use it all the time that means we force it on ourselves on our testers and even on customers So if there is a problem, we will see it. It's it's merely a design decision but You could very well just disable it by removing the boot script and then the u-bit will just Mount the first partition will not find the boot script and roll over to the second one So you could enable it just on Whenever needed Okay, but here we enable it all the time It also comes back later when we do an upgrade So if you want to upgrade the rescue system, we just remove the boot script first then we replace all the files I want to assure all the files are good and in place. We put it back so that way we can actually Make a safe upgrade of the rescue system itself if you later come and want to add more features and we do want It can always boot just with the root of s itself because it was used from the first day it was used that way And this is the the logic that you've seen and Yes, it was resizing so it's coming up So what you've seen when they come in it master root of s it checks for the special folder if there is a really flesh request If it's a story it goes reflashing. There is none. It will select the kernel. This is the the second way we use it we use it as a Yeah, as a u-boot as a boot loader itself to actually do kernel upgrades without doing root of s upgrades And if there is no kernel present well, then we have a default link that is built into the rescue system And it will just reflash the root of s from there And if anything of that fails it will reboot and that thing starts over and over and over again until eventually We fix the server and the link becomes valid So that way we hope this will be Not breakable in this way So this is the upgrade way that I wanted to To say There is not much to say other than that you would is able to start either way So if you have currently no rescue system They can go into the root of s and then fix rescue from the root of s If you don't have the root of s you can go into the rescue system and rescue will download another root of s So it's enough to have just one. So he lost one. I still have the other one the system is not lost so Within the root of s when you download the root of s the first thing it did it updated the rescue system So rescue system and root of s are back in the same At the same point. So did you know that they both have the latest version that we ship? Okay, I Probably will not demo that I could still do you have time but It might not be that interesting But let's do it later if there is still time left Why KXack? As I told we had the problem that our kernel was too old and we needed to update it as soon as possible We're still up in rolling updates. So we cannot do it in one step. So we did an intermediate step We just shipped the new kernel using a package So for those interested we have packages for Yachto and we tried once to actually upstream it So if there is still interest even from from other people and maybe from Yachto itself, we'll try again to actually provide those so What it does it will mount the root of s and we go to a special folder called slash boot slash entries and Figure out if there are some kernels that and pick the one which the highest priority We did not want to use it as a standard in it already we actually do a switch or their people route and Keep the kernel that you have in the rescue system. We wanted to keep those like separate So it's like it's artificially you could still do it and maybe for some systems It makes sense But to the point now we try to keep this as separate as possible actually Shrink the kernel in the rescue even more and just make it dedicated to this single purpose Even though it is Linux and even though it could also run the root of s. It's just something we decided for now And Okay The the kernel upgrades that's again something we have taken from somewhere else This is we're taking this from the bootloader specification where they use dropping files to do kernel upgrades So that you Well, you don't want to have a big file where you just enter and modify it with set an arc You wanted this to be generated So there is such the folder you know what I just so The form is a very simplified to the original bootloader specification is much more complicated But we don't need that not all that flexibility So we just went with two simplifications first one priority is actually kernel version higher is better We always want the highest one the second one is what you need to know is where is the kernel and where is the DTB and both is checksum so If it in a drama fast it just lists that it checks if the file so there it compares to checksum If any of these things actually go wrong It will just roll over to the next one and hopefully there will always be a next one if there is none Then we reflash it. That's actually the same thing that already showed Okay, I Thought it will take much more time Well, maybe it's a good time to for somebody to ask questions or I still have 28 minutes So is anybody does anybody have a question? Yes, there is a question. Yes, that's that's the hard part like yeah Hard areas are easy if you know, yes, it doesn't know it doesn't that's easy the hard problems are like This intermediate thing. Oh, sorry. The question was like What are you doing if your root of s actually is it's a valid x3? You can actually mount it But when you try, you know, you hand it over to kx hack you start booting during the boot up process Some of the init scripts actually hang fail for some reason you cannot then SSH into it and fix the problem from remote Are you doing that? Yeah, so We have been thinking about this and There is a roadmap and yes, it might be good that When you actually select a kernel or if you on the overall should try to boot the root of s that you Maybe touch a file in our lip rescue system that you actually tried this already once before and then during the init process You should actually say okay This this boot is confirmed so that you don't are trapped in a little very ever-and-ever try the same thing to boot again and Also the same thing about kernels because this is completely like extreme You don't need this if you do root of s upgrades with one kernel in it because then you know the root of s with The kernel is good. It's hardly ever the case that you will add a new kernel without also changing the whole root of s This is exactly this part is exactly great if you do Small changes like if you want to add a new feature You add a new kernel to it and you do a little mistake and then Kernel can actually boot, you know And he did this remote and you don't have access to the console Then this would be great that you actually verify that you tried this boot configuration It didn't it didn't boot so you will not try to discuss and modification for a second time Does this answer your question? Yes, please. Okay. Sorry. I didn't hear you. Okay Yeah, yeah, that's that's the weak spot and I never talk about the root of s and the configuration That's something I and that's actually the reason why we didn't switch to root of s Okay, did the question here was like where do you store it device specific configuration like user configuration all the important data Did you have like statistics? We collect a lot of statistics about How noisy is your power line so that we know if you have to switch in different modulation modes? So there's a lot of data, but I don't do this in here. I treat this as part of the root of s so the root of s has to make like periodic updates and It is the root of s that actually triggers a reflash so it is in full control so the fact is there is this partition that we have and Yeah, we store it there and then during boot up of the first time you restore that all configuration Okay Any other yes back there? So repeat the question What if between verification and actual burning the something on the server has changed so for instance somebody changed your root of s or What we did do well I ask back. What would you do in that case? There is little you can do I mean if somebody takes over the server what you definitely will not do is will we'll abort flashing We will like corrupt the root of s and now it's a it's a brick device And whenever you apply power it will continue to try if the server now has valid update or not And if an attacker is able to actually fake the signature. Well, then you lost anyway Yes Yes, the first one might download a completely different image. That's correct. Okay Yes, and for the second it gives another one. Yes, but the download the signature only one Yes, that's right But you see that the GPG runs also in the second run and the download the signature only once and the same for the checksum So at the second run has to to match a GPG in the shot some So if this happens something extra to be over the server, we will detect it and we invalidate the root of s So in that that's the safer thing you can do and then you just keep trying trying trying Eventually, we will figure it out and fix the server so Okay, any other question? Otherwise, I continue with the unit tests Because although most people think these are the least important. They actually are In this project It's very annoying to do it because you have to build the in the drum of s you have to copy down the system Then you have to have to boot and it's only in the drum of s any change you do is lost on the next boot So it is very time-consuming and having good unit tests really speeds up to the programming I Can I can show you just the I will show them Where is my mouse? so, yeah So it's a lot of unit tests. I just want to show we really take this serious. So I think it's like, I don't know and We test actually we start by my writing the test and then we start to add the functionality Because it's too cumbersome to develop in on the target itself So the way that the testing works or that we do the testing Is since it only shell script and it's not really a C program even if C program it might be difficult to do We actually use a root of a root to trail and that we mock up So that the boot the boot program itself does very little it does everything underneath of standard Unix commands The most important of them is like we get and mount and If you're able to kind of mock up those then your actual boot logic can run on top of those it will not notice it so Yeah, and then you what you actually do is all of these mocked up versions Just emit all the commands including all the flags and then you capture those and keep it in a safe place It's what you expect a good run should look like and Every test that you've seen before it just exactly this it just creates This kind of fake fake sister it goes into this folder and then runs our boot system command that you've seen before It produces a run. We take that run and compare it to you if it's the same thing. It probably Nothing has changed. You didn't break anything serious and for the most time. Well, actually I Can't remember a case where we actually failed on it on the system What you still have to do is you're using busy box So it might be that you need to enable special Special commands and not all the flags are supported as you expect on a desktop But other than that, this was very convenient to do I Could go on with that That's I still have 20 minutes. Well, okay It's funny to tab over we don't here we go So and then I will just continue and of course it should produce an error There it is And then I can go in and fix it That's actually how development happens and it's very it's very convenient. It's that's what you know You know it like the right side of your pocket. It's just shell scripting That's what it would you do all the time and as of the mind It's more comfortable to do this than actually extend you boot. You're much faster. Also. It's just shell script Is there any question to this? No more question. Yeah, and the second run you destroy the root of s So if the signature doesn't match, it's better to find it out in the first one because then you didn't destroy the root of s And the minor reason is that something like you be update volume needs to know the size of the image So you need to download it to actually know how big it is so you can pass it to the UBI update volume So I think the first one is very much needed Also, because you just want to rule out to take an image that is corrupted because that way you could exactly do what you Expected you could to make you know, I will you could destroy a device just somehow just Tricking the servers with even if they if the thing is wrong You could just take away the server from the service from the user, which is an attack itself. Okay? So we'll be short break Okay, so that was the demo Yeah These are the resources so currently there is not much documentation. So it's probably mostly this demo and we have some wiki about how to use it and of course there is The repository that we have and there are also Yachto recipes how we use it like how we wrap up the whole thing And you might want to look also in the root of s there is also for the rescue system where you can just generate those tools easily Yeah, okay, so this is what we like to have for next time The first thing that we try to avoid is having two runs So well, this is for the smallest system that we have that doesn't even have enough RAM to to keep it in memory Already the second one, which is ubi Already is like on the brink that it can keep it in run So we want to extend the pipeline so it also keeps it in in a RAM disk And if that still verifies at the end of the first run We rather take that than moving the second one and that one that can later extend it that If the root of s already is big enough that it can hold the update Then we take it and copy it into round this can start from there so there is no streaming necessary at all and there is like a Dynamics all over between the between the different platforms Then there is the handshake that has been asked before So this is exactly for things that only half broken not fully broken But it's also question how you won't actually define that something really worked Well, is it if the SSH is working or if you have a HTTP what what defines that it really works? And yes, there is space optimization. I Haven't shown it, but I Think it's about two or three megabytes. Well, the most the biggest part is actually ellipsey and then it's GPT Yeah, okay Yes, so it's three megabytes is the It's the in drum of s and the kernel we didn't tune the kernel The kernel is actually much bigger than the inner drum of the south and now we can go into the rescue Then I can just show the biggest biggest issue there. So Any more questions? Yeah Let me just hit the front No, so I will not work. Okay. Are you a question? What do you mean? Okay? That's a very good point Yes, you got me there No, we don't that's that's true. It's a good question. Are you having a talk later on? No Okay Yes, it's true So if you go back to this here You see that we do the GPT We we take it from the we get but if down here in the UV updates something goes wrong if it goes wrong That's perfect because then we have the error code with a little something went wrong But what we don't do is we run like read it back through Maybe cat it and then like cut it off So do you have to write size and then feed that back to GPT to actually verify that what you wrote this what you want No, we don't do that. That's yeah, good catch Which come back actually when do we verify that the boot actually works if that actually works We would drop back into the shelf for the next time and try again Well, that makes sense to try again This very little you can do Well, if you expand it at some point you end up with the halting problem, which is unsolvable. Oh Check sums over the whole device. Yes. I know trip wire and embedded it will probably delay the boot process Okay You mean you have a list of good checksum of every binary you have on the root of fs and actually compare if those really match Hmm and how would that be different if I just take the raw device read back to raw device and check some there? It's probably the same. Okay We actually we have we expanded later, but we already go into development. Is there anybody else want to have a question? So I will finish just a roadmap Yeah, roadmap. Yes, we still have patches to Yachto. Is anybody from Yachto in here? Nobody okay We try to add multi kernel support into Yachto and it seems like Yachto at Well, not at the core, but maybe it's just an assumption. There is only ever one kernel inside So a lot of cup a lot of paths for the kernel source are actually hard coded And I had a hard time to to expand it to compile two kernels in Yachta and I have dispatches And I tried to mainline it but it seems like there is not really that much interest in having two kernels Produce with Yachto, maybe because it's such a remote feature. Yes, please Yeah, oh You wouldn't be interested. Okay What's what's else? Yeah, I communicate or it's black So if the GPG failed or if the checks and failed you probably want to give back through the fast some kind of Feedback so that they can make a nice use user interface out of it. We working on that, but well It could definitely be better and now that it's still have 10 minutes time. I thought there was something more But Pardon, I get closer. So, okay, you go for the unit tests Yes, I looked at the rocket which is using Which is using a KVM and KU net as fallbacks for it. Yes, it's something Something nice to have but How would you actually make a fake mount or a failed we get? At some points you have to force it into errors. It's nice to have it like a KVM or Kimu like It's definitely better than that. Well, this is just change Change route. It's even worse than that. We're not even using change route because we don't copy all the desktop over it We just prepend every path of like this or we over at the path that we take our utilities first and then use the system utilities So that one would make it like more real like more close to what you actually have But I was thinking about how I could force it into all these error cases Like we got fails on the first fails on the second fails on the third so that actually go through all the thing It doesn't help me in that thing One second for those who don't hear the question was like Have you ever planned to extend the unit tests so that you use a real key? KVM or KVM so that you really run an in a relation and yeah my answer you heard it. Okay, so your next question. Okay Yes, so Question like so I could also inject areas on the KVM layer, but I'm not sure how I could do that I it sounds to me like I would start to write kernel modules just to make the testing So there is some support in Q me that they could automate this or there is already mechanism in place that I can Yes, so you're familiar with it So maybe kind of a chaff later on I was thinking about going to Q me and KVM But then I felt like well It's it's something that's a lot of effort to do in the end I didn't really see the benefit of doing it because this is just shell script and I created very very crazy crazy top line but other than that it's it's not It doesn't give me any any advantage So I rather stick with which it's really simple and this is really simple and it's easy for everybody to understand and work and Set up because you don't have to set up. You just go in there. It's a brand scripts. There you go. Yeah Okay, and more questions Yeah, like there. Okay. So can you repeat the question? Oh, do I also encrypt the root FS? who I Think I know where you're heading like about key management so question was like do you also encrypt the root FS and no we don't the root FS is unencrypted on it and Yes encryption the root FS Well, it is signed while the image is signed Yes, well if an attacker ever gets route he can do what he wants anyway But you mean that he can modify the root FS so that he even survives a reboot Yeah Well, no, we don't do it I haven't done a really security Like estimate and I'm not sure that this is the most probable attack to do it Because if you are able to actually modify Do you modification the root of s as you've seen it's very easy also to modify the rescue system so you can actually hide yourself inside of the rescue system and Actually do some things on top of there. So even if you verified it or you can turn off the verification so How you want to protect it you would you have to start actually from the chip Then you'd have a secure a secure bootloader and they have to go into secure root FS So that you can actually just rule out that anybody who ever had to root FS will not modify anything in the past Yeah, but that means okay So every component needs to be signed so that you can actually trust you can pass the trust from the first to the second component Well, what do you have to start with the chip so when the chip comes out They have to start in secure mode and then you you would have to be secure and then rescue has to be secure. So It's not something we expect or is another goal to really close it down as much But yeah, that will be a lot of effort to actually do that and especially since we have several platforms We'd have to do it on each of them individually Yes, we actually do GPG upgrades. Oh question. Okay, you mean on the fly transparently? Okay, there was a note. What was the name of it? Okay. It's just a not a question, but the remark so there is a integrity measurement Infrastructure in Linux, which does it on the fly so it seems like it whenever it sees the first file It continues it computes a checksum and then whenever that changes it will Kind of raise a flag something went wrong or something changed. So if one of your executables changed Okay, okay. Okay. It's so advertising for you talk. When is your talk tomorrow? It's 1400. So there is a talk about transparent security measurements, okay And I think we can close it here unless somebody else want to ask something. Yes And no file system. That's probably the independent fight No other reason that we used to it. It's not really what would you suppose not with not with x3 But as I told you we before had the problem with the rocker on the flash. So we have problems with it But not with x3, but we're not using the platform so long So that might be another topic, but with this it's actually easy to to swap file systems You've seen the first platform still uses chase us to which is to get with the limited the ROM It should that's very bad We should actually switch over to UBI and with this we can do so if you have today x3 tomorrow We can have riser not riser, but by the refs probably or what would you suppose? By the refs any other question? No, I have I could go into our security. So we we have The the key that is inside of the rescue system there is a key rotation you you need to think about how to do a key rotation and It's actually a tricky thing if you if you go back in this kind of trust model It's a dangerous thing to do and we actually sidestep that and we're using I don't have it with me So we just using a secure token card and then we we plan to we don't actually have it yet, but we Put it in place so do you actually sign it with a secure card that should avoid to have too many key rotations? Or you're still able to do a key rotation because we can switch to rescue system Okay, so thanks for your attention


Nanopatterning of solid surfaces by low-energy ion bombardment has received considerable interest in recent years. This interest was partially motivated by promising applications of nanopattern substrates in the production of functional surfaces. Especially in nanoscale ripple patterns on sea surfaces have attracted attention both from a fundamental and an application-related point of view. This paper summarizes the theoretical basics of ion-induced pattern formation and compares the predictions of various continuum models to experimental observations with special emphasis on the morphology development of sea surfaces during sub-cov-ion sputtering. This article was authored by Stefan Faksko and Adrian Keller.


Alright, so we're going to study the Bible a little bit this morning. We're going to look at this story in the Bible. Now the interesting thing, this of course is a story about some tribes in the Bible when they're about to possess the promised land. They're about to go into the promised land. An interesting situation happens before they're to go and possess the land across on the west side of the Jordan. So God had given the children of Israel all the land on the west side of the Jordan. And here you see an interesting twist to that story. But the interesting thing before we even get started, the interesting thing about the Bible is that there's so many different things that we can learn from the stories in the Bible, not only down to the individual people and the things that those people go through, but you can look at the nations. You look at the study of the nation of Israel, people and the way nations acted. But then you can also, and things that we can learn and apply to our lives today. But then you can actually pull back even further than that and look at situations between nations and learn something there. We're going to do that this morning. We're just going to do some Bible study and then I'll show you what we're going to apply from this story. But we're just basically going to look at the situation with how these nations settled the land and see what we can take from that and learn from that this morning. So in Numbers chapter 32 you see the story about the tribes that decided to settle on the east side of the Jordan River. And of course this is the tribe of Gad, the tribe of Reuben, and the half-tribe of Manasseh. So half of the tribe of Manasseh settled on the east and half of that tribe settled on the west. But you see in Numbers chapter 32, if you look down at verse number one, let's just look at what the reason that these tribes decided to settle on the east side. When everybody else went to fight for the land on the west side of the Jordan. Look at verse number one. The Bible says that the children of Reuben and the children of Gad had a very great multitude of cattle. And when they saw the land of Jizer and the land of Gilead that behold the place was for cattle, the children of Gad and the children of Reuben came and spake unto Moses and to Eleazar the priest. And under the princes of the congregation saying Beth and Dibon and Jizer and Nimrah and Heshbon and Elia Lea and Shabem and Nebo and Bion even the country which the Lord smoked before the congregation of Israel is a land for cattle and thy servants have cattle. So of course they've been fighting already. Okay, they've already been fighting to get to the Jordan River and we see some of those people that they fought there. Wherefore said they, if we have found grace in thy sight, let this land be given unto thy servants for a possession and bring us not over the Jordan. And Moses said unto the children of Gad, unto the children of Reuben, shall your brethren go to war and shall ye sit here. And wherefore discourage ye the heart of the children of Israel from going over into the land that the Lord hath given them. So of course Moses' first comment is hey, you know, we're going to fight this huge war to go into the promised land and you guys are just saying hey, we're good right here. He's like, that's not going to be good for everybody else. That's not going to be good for people to think that.  Are you guys just wanting to just take the easy road and take this land that's here? I mean that was Moses' first suspicion. But he says, are we supposed to go fight and just give you this land right here? So it's going to be extra hard for us and you get the easy way out. But then skip down to verse number 29 and Moses basically tells them that if the children of Gad and the children of Reuben will pass over you with you over Jordan, every man armed to battle before the Lord and the land shall be subdued before you, then ye shall give them the land of Gilead for a possession. But if they will not pass over you with you armed, they shall have possessions among you in the land of Canaan. So this is God basically saying through Moses saying hey, if they will go fight with you it's okay that they have this land on the east of the Jordan. If not, they should just take what was meant for them in the first place and fight with everybody else and that's the bottom line. There's no easy way out. And then verse 31 we see the answer. And the children of Gad and the children of Reuben answered saying, as the Lord hath said unto thy servants, so will we do. We will pass over armed before the Lord into the land of Canaan that the possession of the inheritance on this side of the Jordan may be ours. So of course they build cattle fences and all these things and they leave the women and children. Their plan is they're going to leave the women and children on the east side of the Jordan. And these men will go over with the other tribes of Israel and they will fight through the promised land and then when that is done they will go back to the east side of the Jordan and possess their land. So you know it was a deal made basically. They were allowed to do it. They could take that land if they helped fight the battles on the other side. And look at the land because they had a lot of cattle. They were ranchers and they saw great pasture land. So they're thinking hey this is good for business and you know this is just good for us. So they're like this is going to be our land. They decided that they got permission and that was the caveat that they helped fight. Turn to Joshua chapter 22. So now we see there's a situation where you have these two tribes or these three tribes, two and a half tribes on the east side and everybody else is on the west side. Now right away in Joshua 22 we're going to see that trouble begins right away. In Joshua 22 look at verse number 10. The Bible basically says here is they went over look in Joshua 22 and verse number 10. They did something as soon as they got back and they went over to the east side. And the Bible says they came onto the borders of Jordan that are in the land of Canaan. The children of Reuben and the children of Gad and the half tribe of Manasseh built there an altar by Jordan. A great altar to see to. So they built this great altar that everybody could see. And the children of Israel heard say behold the children of Reuben and the children of Gad and the half tribe of Manasseh have built an altar over against the land of Canaan in the borders of Jordan at the passage of the children of Israel. So in the place where they all came over to Jordan these guys got done fighting. They went back home and they built this big altar on their side. And everybody could see it. And the children of Israel on the west side of the Jordan saw this altar that they built and they basically were greatly offended that they built another altar. They took offense to it. They're going over there. They're starting their own church basically. They're going to do their own thing over there. So Israel gathers together to go fight. They just fought together. And they went over there. They built this altar. And Israel the tribes on the west side gathers together to go fight the two and a half tribes on the east. But look at verse 26. The children of Gad and Reuben and the half tribe of Manasseh explained their way out of this in verse 26 and they said therefore we said now let us now prepare to build us an altar not for burnt offering nor for sacrifice but that it may be a witness between us and you and our generations after us that we might do the service of the Lord before him with our burnt offerings and with our sacrifices and with our peace offerings that your children may not say to our children in time to come we have no part in the Lord therefore said we that it shall be them when they shall go they should say so say to us or to our generations in time to come that we may say again behold the pattern of the altar of the Lord which our father made not for burnt offerings nor for sacrifices but it is a witness between us and you so it's like they got themselves out of it right there there's going to be no war they said look it's just a symbol it's just a symbol for our children to see that we're connected between us and you because they're separated right they're separated on the east side of the border alright so they just wanted to get connected and that was their way of doing it turn to Judges chapter 6 so let's look at the fate of the eastern tribes and all throughout I'm just going to give you two or three examples of what the eastern tribes dealt with in the book of Judges but all throughout the book of Judges you see this type of thing happening to the eastern tribes look at Judges chapter 6 we're going to read basically the story of the call of Gideon now Gideon was of you know the tribe of Manasseh so he was on the east side of this settlement and in Judges chapter 6 look down at verse number 6 we see the call of Gideon here and the Bible says and Israel was greatly impoverished because of the Midianites so here they were being overrun already and the children of Israel cried unto the Lord and it came to pass when the children of Israel cried unto the Lord because of the Midianites that the Lord sent a prophet to the children of Israel which said unto them thus say the Lord God of Israel I brought you up from Egypt and brought you forth out of the house of bondage and I delivered you out of the hand of the Egyptians and out of the hand of all that oppress you and draped them out from before you and gave you their land and I said unto you I am the Lord your God fear not the gods lowercase g of the Amorites and whose land ye dwell but ye have not obeyed my voice and there came an angel of the Lord that sat under an oak which was in Ophrah and that pertained to Joash the Abazurite and his son Gideon threshed wheat by the wine press to hide it from the Midianites so they were being oppressed by the Midianites they had no food they were starving so basically Gideon was he was farming and he was hiding he was storing food he was stashing food away and the angel of the Lord appeared unto him and said the Lord is with thee thou mighty man of valor and Gideon said unto him oh my Lord if the Lord be with us why then is all this befalling us and where be all his miracles which our fathers told of us saying did not the Lord bring us up from Egypt but now the Lord hath forsaken us and delivered us into the hands of the Midianites so he's asking why has this happened to us and the Lord looked upon him and said go in this thy might that thou shalt save Israel from the land of the Midianites have not I sent thee and he said Gideon said oh my Lord wherewith shall I save Israel behold my family is poor in Manasseh so here he is on the east side of the settlements and I am the least in my father's house so basically Gideon is risen up he's raised up he is called from Manasseh so the pushback against the Midianites starts in Manasseh look at verse 25 for sake of time and it came to pass the same night that the Lord said unto him take thy father's young bullock and even the second bullock of seven years old and throw down the altar of Baal that thy father hath and cut down the grove that is by it so Gideon's from Manasseh and there's an altar to Baal there I mean didn't Gideon just say why has this all happened to us God have you forsaken us did God forsake them first no they forsook the Lord they have altars of Baal look dressed by the Midianites but they have they have literally adopted the gods of these heathen people to the east side of them alright so Gideon is great I mean and God is not unmerciful so he raises up judges that's the point of the book of judges is to show that God has mercy again and again and again with his people so this is the point of him raising up Gideon who's on the east side he's in this tribe in Manasseh but there's an altar of Baal there so they've adopted these wicked gods alright I mean he cuts down the grove you know we see then the judgment starts right look down at verse number 33 but they're clearly being influenced by these eastern nations verse 33 then all the Midianites so after they cut the grove down what happens after Gideon cuts the grove down then all the Midianites and the Amiculites and the children of the east were gathered together and went over and pitched in the valley of Jezreel, skip down to verse 35 and he sent messengers through all Manasseh who also was gathered after him and he sent messengers unto Asher unto Zebulun and unto Naftali that they came up to meet him so look they reunite look they start the war in Manasseh in that eastern country and then they call all the other tribes for help but it all begins there okay now this whole thing concludes in chapter 7 in verse 24 where the Bible says you know and Gideon sent messengers through all Mount Ephraim saying come down against the Midianites and take before them the waters unto Bethbara and Jordan then all the men of Ephraim gathered themselves together and took the waters unto Bethbara and Jordan look they pushed them back across all these tribes they pushed them back across that natural protective barrier which was the Jordan River okay look at Judges chapter 10 look the physical waters that God put there was I mean it was for a reason I mean the physical Jordan River itself was there for a reason and they pushed them back when Gideon rose up to judge the people pushed them back across those waters right but when they were back across those waters were those two and a half tribes safe at that point no they had to push them further from there okay so it wasn't just getting them across the Jordan that they had to do in order for the two and a half tribes on the east side to be safe they had to push them further than that okay keep that in mind turn to Judges chapter 10 look at another example Judges chapter 10 look at verse number 6 in Judges chapter 10 of verse 6 the Bible says and the children of Israel did evil again in the sight of the Lord and served Balaam and Ashtaroth and the gods of Syria and the gods of Zidane and the gods of Moab and the gods of the children and Ammon so Moab and Ammon are east so if you're looking at a map you got the Jordan River you've got the west side tribes here you got the two and a half tribes here and then Moab and Ammon are east of the eastern tribes now the gods so they started serving all these gods again and the anger of the Lord was hot against Israel and sold them into the hands of the Philistines and into the hands of the children of Ammon and that year they vexed and oppressed the children of Israel 18 years and the children of Israel that were on the other side of the Jordan in the land of the Amorites which is in Gilead Gilead is Gad so here we see that they're taken over again but it was the east tribes that got hit first look at verse number nine moreover the children of Ammon passed over the Jordan to fight also against Judah and against Benjamin against the house of Ephraim so that Israel was sore distressed and the children of Israel cried under the Lord saying we have sinned against thee both because we have forsaken our God and also served Balaam so once again we see that the trouble started in the east but you see that it eventually caused trouble for the entire nation because it started in Gad but then they pushed across the Jordan to the west you see and Baal spread you know the worship of Baal also spread so the physical danger started on the east the false god danger started on the east and it all pushed across the Jordan eventually alright so look there's many more stories like this in the book of Judges that we could look at but look here's the one I'm trying to get at this is all just a point of introduction alright this is why they had trouble this is why these two and a half tribes had trouble because they were separated they were physically separated from the other tribes of Israel and they were doctrinally separated as they accepted they were influenced by the tribes on the east side of them so they had good godly people on this side and they had the wicked people on this side and they were the ones that were influenced first so there was a physical separation there but a doctrinal separation as well so look they were the ones that were threatened and invaded first period both doctrinally and then physically because the doctrinal stuff always came first because look God's not going to throw the first punch he never does we always turn against him and then the judgment comes the chastisement comes so all that is point of introduction the title the sermon this morning is in the midst is that there is protection in being part of the main settlement period alright there's protection in being part of the main settlement so what kind of protection are we talking about here first of all the eastern tribes were constantly the first to be attacked alright we could go and just study judges for another two hours and see that that's going on they were on the other side of the Jordan river I mean think about it they were on the border they were on the border my wife brought up when we were talking about this sermon my wife brought up this story of I don't know if you all remember back in 2009 these Iranian these hikers they were hiking along they were on the Iraq side they were like three kids from Berkeley three Americans and they were they were hiking along the Iraq Iran border I mean what a great place to hike right and what happens is these guys or these two guys in this gal they get beckoned they see a soldier beckoning them right but they're walking along the Iranian Iraqi border and they think they're on the Iraqi side they're pretty sure they're on the Iraqi side and they get beckoned by this soldier and they don't really know where the border is apparently but this is an Iranian soldier he beckons them over to them and then you know the story goes that they cross over into Iran at that point and to you know you see this armed guy beckoning you they went over to him they didn't know who he was they get captured charged with espionage or whatever Iran charges them with and they spent like two years in prison before the United States was actually able to get them back right but I mean I remember even thinking at the time that this was going on what were they doing hiking along the Iranian border right I mean look you probably shouldn't just be walking right down that physical line so close where you don't know you know maybe I'm in this country maybe I'm in that look maybe they should have been in the midst of the camp maybe they should have been closer to home closer to safety right because look when the lion hunts his prey he never goes to the center of the pack he goes after the alpha male that's not how it works everybody knows you've all seen you know the nature programs or whatever they're looking for the weak one that falls behind that stays at the water hole when they don't know you know they're like oh you know they're always left and they didn't realize it well that's who the lion gets every time right so I mean look it's the one that's fallen behind it's the small one right so the one that's not in the midst you say well lion you know well the analogy is interesting and it's actually in the Bible look at your bulletin right first Peter 5 first Peter 5 8 says be sober be diligent because be vigilant because your adversary the devil as a roaring lion walketh about seeking whom he may devour so let's look at the river itself okay think about the river I mean so why did God choose to put these people on the west side of the Jordan because there's protection in the actual physical river itself that's why even sun sue I don't know if you've ever heard of the art of war he talks about river warfare I mean he talks specifically about you know prosecuting war using a river I mean it's there's several points in the book about specifically rivers one of them is this when an invading force crosses a river on its onward march do not advance to meet it midstream it will be best to let half the army get across and then deliver your attack so it's saying when you're on that say we're on the west side of the Jordan and there's an army coming to invade us he's literally telling us here how to attack that army what you're supposed to do is let the army get halfway out of the river onto your land and then attack the army when half of them is still in the river and half is out of the river that way you push the other half into the river and now you've got all of them stuck in the river basically but now that doesn't apply at all when you think about being on the east side of the Jordan you are literally at this point you are between the river you're the one that's going to be pushed into the river as you get invaded from the east side so it was strategically a horrible horrible position for them to be in basically it shows you why God's plan was perfect for the children of Israel for their physical protection going on the east side of the river actually worked against them but guess what turn to Acts chapter 2 God has given us a Jordan river today a physical Jordan river and I'll show you that now turn to Acts chapter 2 and just look at verse number one so we see you know God has got to leave us with all of our enemies surrounding us with no protection right so God has provided that for us today he provided that physically for the children of Israel with the Jordan river look at Acts chapter 2 in verse number one and the Bible says when the day of Pentecost was fully come they were all with one accord in one place you know look some weren't logged in from other states they were all together in one place in the church right here look at verse number 41 so of course they're all together in one place and this great miracle happens this speaking in tongues speaking in other languages happens they get all these people saved it's this great wonderful thing that happens look at verse number 41 and the Bible says then they that glad to receive his word were baptized in the same day they were added unto them about 3,000 souls and they continued steadfastly in the apostles doctrine and fellowship and breaking of bread and in prayers and fear came upon every soul and many wonders and signs were done by the apostles and all that believed were together and had all things in common sold their possessions and goods and part of them to all men as every man had need and they continuing daily with one accord in the temple and breaking of bread from house to house did eat their meat with gladness and singleness of heart so here we see that being physically together led these people to be of the same heart of the same mind of the same doctrine they were all in one accord they were all together in one accord but they were physically together they were physically literally in one place I mean this is super important for the believer today to understand this that you need to be physically together with other believers period it's not you know we live in a day where you can be you know connected to so many different people but the Bible teaches that you are to be physically together and then you will be in singleness of heart right look Paul look at Paul's letters throughout the Bible look at Paul's letters he's constantly he's visiting a place while he's writing letters to another place remember Wednesday night we talked about the Galatians right I mean he visited them and then he left for a while and then he had to write letters to them because he's like hey you know if I'm not there you know things went awry right so I mean we need to be physically together in one place I mean there's strength in the gathering of believers period and protection it's your Jordan remember turn to Deuteronomy chapter 31 you think this is a new concept you think that oh we're in the church age now you think this is a new concept it's not a new concept it's the same concept look at Deuteronomy 31 look at verse number 12 the Bible says in Deuteronomy 31 12 we see the same concept of this protection in the gathering of believers in the Old Testament all the people together men and women and children and by stranger that is within thy gates that they may hear and that they may learn and fear the Lord your God and observe to do all the words of his law so what is the result of us all being together even the children by the way it doesn't say accept the children go to Sunday school all the people are together and it says men women and children and it says the result of that is that you will fear the Lord your God what was the problem with all these different things that happened in judges when they got overtaken whether it was from the east or wherever is they stopped fearing the Lord they first stopped fearing the Lord then they started bringing in the false gods so look they're saying you have to gather together gather the people together that is the command look at verse 13 and that their children which have not known anything may hear and learn to fear the Lord your God so the children are supposed to be part of the gathering too so they will what they'll learn to fear the Lord your God that's what's happening in a family integrated church when the children are hearing the Bible preach they're learning to fear the Lord period and as long as you live look and this is interesting as long as you live in the land whether you go over Jordan to possess it so basically it even makes a little shot at you know you're supposed to live over the Jordan here you're not supposed to be you know it makes a reference to the Jordan here of that protection that's why the Lord chose the west side for that protection he has the local church for you for a reason for your protection if you never come to it or you don't visit it very much it's not gonna protect you you know if you live on the other side of the Jordan river the Jordan river is of no value to you it's the same thing so the local church is your Jordan river turn to Ephesians chapter 5 verse 25 we make another real quick application just for the ladies just for the ladies so listen up ladies Ephesians chapter 5 in verse 25 so we see that the Jordan river that the local church is our protection that God has given us look at Ephesians chapter 5 verse 25 husbands love your wives even as Christ loved the church and gave himself for it ladies did you know that your husband is your Jordan river your husband is there for your protection he is there to love you and protect you as Christ gave I mean he's there to give himself for you if necessary so are you on board are you living on the other side of the Jordan with your husband or are you this you know are you rebelling against your husband because if you're rebelling against the person that God has given you to protect you you're living on the east side of the Jordan the protection will be of none effect so don't so live on the west side live in that protection that the Lord has provided you look the bible says that the woman is the weaker vessel that's why he gave you your husband to give you that protection to give you that comfort in your life as Christ loved the church Christ loved the church with everything that he had and that's what you have in your husband use it live on the west side use that protection it's there for you God provided it for you the second point is this turn to Joshua chapter 22 so we see that God gives us protection God gave us protection our church is our Jordan river ladies your husband is your Jordan river look at Joshua first 22 Joshua chapter 22 I want to show you with my second point here the importance of sticking with God's plan the importance of sticking with God's plan look at Joshua 22 in verse number one the bible says then Joshua called the Reubenites and the Gadites and the half tribe of Manasseh and said unto them so this is after they fought this is after they did what they were supposed to do you have kept all that Moses the servant of the Lord commanded you and have obeyed my voice and all that I commanded you and you have not left your brethren these many days under this day but have kept the charge of the commandment of the Lord your God and now the Lord your God have given rest under your brethren as he promised them now therefore now return ye and get under your tents and under the land of your possession with Moses which Moses the servant of the Lord gave you on the other side of Jordan he releases them he said hey because look Moses didn't go right Joshua went and fought the battles Joshua commanded these men that said they would come across and fight they fought on the west side they did a good job they fulfilled what they promised to do Joshua releases them he said you did it go home go to your land go back to your families look at verse number 10 and this is what we just we we saw this earlier and they came under the borders of Jordan that are in the land of Canaan in the children of Rubin and children of Gad and the half-tribe of Manasseh built their an altar by the Jordan a great altar to see to and the children of Israel said behold the children of Rubin and the children of Gad and the half-tribe of Manasseh had built an altar over against the land of Canaan in the borders of Jordan in the passage of the children of Israel and when the children of Israel heard it the whole congregation of the children of Israel gathered themselves together at Shiloh, to go up to war against them. For the Lord hath made, skip down to verse 25. So they go to war because they gather at Shiloh. You know why they gather at Shiloh? Because in Joshua 18, that's where the actual altar is. That's where the tabernacle is. That's where the real altar is. So they're jealous for their God. This is actually a good thing that they're doing here. They're upset. They think, hey, they're going to make their own nation. They're going to make their own God. We're going to take care of this problem right now. And of course, in verse 25, they explain it away. And they say, for the Lord hath made Jordan a border between us and you, ye children of Reuben, the children of Gad, ye have no part in the Lord. So your children make our children cease from fearing the Lord. Therefore, we said, now let us prepare to build an altar, not for burnt offering, nor for sacrifice. So they came to war. And they're like, hey, it's not, we're not trying to sacrifice over here. That's still at Shiloh. That's still there. It's just for a witness that it may be a witness between us and you and our generations after us. So look, it was just a witness, a monument of sorts, right? But think of this new altar. Think of this thing that they built. Because of their separation, they built this, right? Because of their separation. And just everyone freaked out. They thought they were building another altar. And even though it wasn't necessarily unto a false God, it was not an altar that the Lord commanded to be built. It was not God's plan that they live on the East side. It was not God's plan A that they build this altar, basically. So they went out and their intentions were, it's not that their intentions were bad, right? It was still pretty brazen to set up this witness altar. They kind of just made it up. They kind of just thought it would be a good idea themselves, but it wasn't God's plan. Same thing with the land that they settled, all right? They were not amongst the people. They felt separated immediately. So they go and they build this fake altar, basically, right? That almost gets them, you know, killed. So look, when you're, the point is this, when you're not amongst the congregation, you'll be easier to remove from the doctrines that you've been taught. And it'll be easier to separate you. Hebrews 10, 25, you don't have to turn though. Just read if you're not forsaking the assembly of ourselves together, as the manner of some is, but exhorting one another.  Someone's gonna say, hey, hey, don't go build some weird altar. That's not in the Bible, right? Someone will tell you that if you're amongst the people. But if you're all by yourself, turn to Malachi chapter three. If you're all by yourself, all bets are off. Malachi chapter three. Being in the midst of the people also strengthens your faith. Look at Malachi chapter three. Look at Malachi chapter three. And look at verse number 16. The Bible says in Malachi 3, 16, then they that feared the Lord spake often to one another. And the Lord hearkened and heard it, and the Book of Remembrance was written before him for them that feared the Lord, and for them that thought upon his name. So here we see that in Malachi 3 that they're strengthened because they speak often to one another. They're fellowshiping together. They're together speaking to each other.  I mean, think about soul winning. I mean, how many times have you heard people that don't come to church, that aren't in a good church say, oh, well, we're just gonna start our own soul winning thing where we're at or whatever. Look, it's just never gonna work well because you don't have that congregation strengthening you.  I mean, I remember when we first got to Sacramento, I specifically remember this time. We pulled up, it was like the first time we had gone soul winning in Sacramento in a really nice neighborhoods. You say, what worries you? What kind of neighborhoods worry you when you're out soul winning? The kind of neighborhoods that worry me are where there's like $500,000 homes and up. Those scare me.  Is the first thing that comes into your head. But then guess what? Your soul winning partner in his family pulls up next to you and you're like, oh, well, at least I'll get to talk to brother Vladi or brother David or whatever. We'll get, you know, in neighborhoods like that, you just start to learn that look, it's just better fellowship time. You guys, no one else wants to talk to you, so you get to talk to each other. Brother Joe Jones one time went to a neighbor. Pastor Joe Jones and I went through a neighborhood and I can't even remember knocking a door. It was a neighborhood like that. We just talked the whole time. We're just like, knock, knock, knock. Everyone's like, get out of here. We're like, okay, and we're just talking the whole conversation the whole time. I was like, it felt more like fellowship than soul winning, I told them when we were done. He's like, hey, whatever, either way. But look, that is where the congregation strengthens you in times like that. You know, I mean, sometimes, look, sometimes God's service is rough. Sometimes God's service is tough. Like, I mean, we kind of had a tough week, you know, with some of the things that happened around the church here. Yesterday, I'm with Garrett and Jacob and we're building something outside the church to keep some of these bums out of here. And we're coming to the church. We're going to Home Depot. We're coming to the church. And we're almost done and we forget a drill bit. And we're like, ah, we gotta go all the way back to the house to, you know, Garrett's like, I'm gonna out Garrett. He's like, ah, we gotta go all the way back to the house to get a drill bit. I'm like, hey, I was like, going back to the house and getting a drill bit is God's service. That's serving God. You know, we're driving back to the house. It's just God's service. And you know what? Thank God that I had these two guys with me yesterday because it built me up, it strengthened me. So, I mean, together, you know, the Bible says being together, talking together, being congregated will strengthen your faith. It's your protection. It's your Jordan River. Just keep, look, just keep serving together.  If I was by myself this week, I'd have been like, depressed. Okay? Seriously.  I would have been depressed if I was by myself this week. But I'm not by myself. I got you guys. I got, you know, Sunday always to look forward to. Wednesday, soul winning. I mean, look, this is what keeps us going in this life, no matter what.  As long as we're together. As long as we have our Jordan River that God has provided us. Right? Conclusion. Look, the tribes, think of these tribes, these two and a half tribes, Gad, Reuben, the half tribe of Manasseh, they didn't have, they weren't, they didn't have bad intentions. Just remember this for a second, okay? They didn't have bad intentions when they settled on the east side. But they should have stayed with God's program. Their decision to separate themselves from the nations, it had consequences for generations, if you read the Bible. Whenever you separate yourself from God's plan, the same will be true for you. Think about that for a minute. When you separate yourself from God's plan, it will have generational consequences for you. You say, that sounds scary. It should. Let's learn from the Bible. Look, now here's something else. Are you recognizing a little bit of theme here when it comes to like intentions? When you, there's a lot of good intentions in the Bible. There's a lot of people who are like, hey, I'm gonna try this and this is gonna happen. Have you started to notice when you read the Bible, when you listen to Bible preaching, have you started to notice this theme in the Bible that intentions don't really matter much? Have you started to notice that you should? As you read the Bible more, you should understand that look, your intentions don't mean much. What matters is your methods. That's what matters. What matters is results. What matters is your actions. That's what matters. Look, the whole Bible. Look, the Bible is God has given you methods. I mean, think about this. God has given you methods and then he shows you proven results that come from those methods. Intentions, what, where are intentions at?  You still hurt those people. Oh, but I didn't mean like that. It doesn't matter. When you veer from God's methods, you will not get the same results. So you sit here and you read the Bible, right? You read the Bible and you see that God gives you these methods and he says if you do it this way, here's an example, this will happen.  And here's a bunch of examples of how it didn't happen for people.   For you, for your family, for the church, for everything. If we veer from God's plan, we're just kind of like entering into a random number generator or something. I don't wanna do that. I know the results I want in my life. I think you probably do too. If you know anything about the Bible, I mean, most people, most Christians know the results they wanna have in your life. So follow God's methods, because your intentions mean nothing. If your methods don't match the Bible, it's that simple. You don't know more than God. You haven't figured something. Look, that pastor, that pastor looked great to them. Look at all this green grass. I'm sure they were doing their numbers. I've done this. Hey, if I rent another 100 acres next year, I can increase my flock this much. They're sitting there doing the numbers and they're like, well, our business is gonna thrive in all this and look at this land. Look at all the water holes in this pasture. This is great. Moses, give us this land. But they didn't see the invasions. They didn't pencil that in. They didn't see the influence of these nations on their children, on their wives. Pretty soon, hey, they're increasing that flock. They're increasing that flock. They're moving their business forward and their children are literally worshiping the devil. Intentions mean nothing. It's the methods that matter. I mean, that's the Bible. That's the Bible.  You stick to the methods that God has given you in the Bible. You stick to his way.  The people gathered together, talking together. You stick to your family.  Stick to God's plan because your intentions mean nothing but the methods mean everything. And God, look, God promises you those results. It's that simple. Let's bow our heads and have a word of prayer. Dear Heavenly Father, we thank you for just these huge lessons in the Bible, God. I mean, I thank you for these just the infinite lessons that we can learn from the Bible, from the nations, from the people, from the world that we're reading about in the Bible. We thank you for the methods that you've laid forward. Just please help us to understand that we need to stick to what you're saying. And it doesn't matter that we just, we want things to go a certain way. We have to stick to the way that you said it. We thank you for all this wisdom. Lord, I ask that you bless soul winning this afternoon. Bless this church, bless all the people in it and bless church this evening. In Jesus' name we pray, amen.


Unveiling the magic, visual storytelling and brand authenticity. Storytelling and design play an important role in brand creation. They help a brand stand out authentically, not just by being loud or bold. Design breathes life into a brand's story, making it clearer and more potent. Integrating design principles into storytelling elevates the work, blurring the lines between stories and visual identities. Visual storytelling uses visual media like photos, illustrations, and videos to convey a narrative. It elicits emotions, communicates messages and creates powerful connections with an audience. Visuals evoke empathy, excitement and curiosity, allowing brands to build authentic connections. Brand authenticity is crucial in today's highly competitive digital landscape. It encapsulates the genuine portrayal of a brand's values, mission and overall identity. Brands foster stronger relationships with their audience, especially among younger generations who prefer authenticity and transparency. The strongest brands emerge at the intersection of story and design. The two elements reinforce each other, helping the brand stand out. Without visual support, a story lacks wonder, and without a solid story, a visual identity struggles to stand out. Brands can effectively communicate their message using compelling imagery, infographics and video content. Well-crafted images and illustrations can enhance the clarity of the brand's story and ensure the audience comprehends the narrative. Visual transitions, animation, and content layout create rhythm and maintain the audience's interest. Visual elements are crucial in making a brand's big idea stick. They impact memory and recognition. Strong visual metaphors can create powerful associations and resonate deeply with an audience. Visual metaphors can convey complex ideas and emotions in a simple and accessible way. Before visual storytelling can represent a brand authentically, the collaboration between the writer and designer is crucial. This collaboration sets the stage for visually bringing the brand's narrative to life. Clear communication and alignment on the brand's core values and storytelling elements are essential to transfer the brand's essence seamlessly. The visual elements derived from the brand's narrative serve as the building blocks of a distinctive and genuine visual identity. Authenticity and diversity in storytelling have proven to be potent tools for fostering strong consumer connections.


Okay, guys, so today I'm going to show you this awesome library called Numba. Numba fixes the problem of having very simple operations in Python take a very long time to do. So, for example, this is a function I wrote as an example. All it does is it iterates over x, y, and z, and then does some conditional check, and then it appends to the list l, some value if that conditional check ends up being true. Now, it's going to take me a long time to execute this, so I'm going to really show you, like, what the problem is here. So, if I run this script, you can see that it's taking forever to execute something that should relatively not be so long. Like, it should not take Python this long to execute something so simple, but it does. So, as you can see here, it took 12 seconds to iterate over these three loops. Now, that's unacceptable, and I think that a lot of people who write Python code also agree with me because there's a library called Numba that really helps you out in these situations. So, what Numba does is it takes a function and it compiles that function for you so that when you execute it, it's a lot faster than it would be if it wasn't compiled. Now, to show you how that works, I'm just going to import from Numba. I am going to import ngit. And ngit is a decorator that you are supposed to stick on top of functions that you want to optimize. So, for example, if I want to ngit this f function, all I'm doing is I'm going to add ngit on top of this function. And when I run this, it is going to be a lot faster than it used to be. So, as you can see, even though it's still one second, I mean, it's not perfect, but it's a lot better than 12 seconds. Like, something like this executing in one second is much better than a 12-second execution. But there are problems with ngit too, so it's not really for free. You do have to keep in mind that you can't do a lot of things that you could do in regular functions if you use ngit. So, one of the limitations is that if you use ngit, you are not allowed to use a lot of functions that you would otherwise be allowed to use. So, for example, if you are using a dependency, if you're using some library that ngit doesn't really know about, you may have problems if you add functions from that library into this function. And another thing that you really need to keep in mind when you're looking at optimizing your functions with ngit is that if you have a low execution, if you don't have a lot of executions in your functions, so, for example, if I reduce all of my ranges from like 100,000 to 101010, if I execute this, if I execute this, you'll see that it's going to take me 0.27 seconds to execute and you may be asking me, well, what's the big deal? Well, the big deal is that if I remove ngit up here and I execute the same function, you'll see that it's going to take me 0 seconds. So, in this case, Python is actually faster than ngit is. And the reason for that is because when you compile a function, it takes time to compile it. So, the first time that function runs, it's going to take it a very long time to compile. But you can also reduce the execution time here by doing this. So, if I do ngit, and let's say I don't care about the first time that I run this function. So, the first time, I don't care about timing, first time running. Okay, so I don't care about the timing, first time running. So, the first time I execute this function, it's going to get compiled and it's going to run. But the second time I execute this, it's already compiled. So, it's not going to recompile. So, the timing is going to be much faster. So, if I run this again, we'll see that the timing is actually, the timing of the function itself is actually pretty quick. But it's pretty quick because the compilation already happened, right? So, the time needed to compile this function already happened up here. And because of that, this function down here is a lot faster at executing. Now, here's another thing. If you are doing a loop and you're executing this function down here in a loop, so let's say for x in range. I'm going to execute this, let's see, 1,000 times, I would say, or 10,000 times. So, I'm going to execute this 10,000 times. And we'll see that if I run this, we are running this in half a second. Or about half a second. But if I remove the engine and we run this, yeah, it's going to take a long longer. So, it took almost three times longer to execute without engine than it did with engine. So, yeah, it's really interesting to try to optimize your Python scripts using engine because engine is one of those things that you don't really need to remember a lot. All you need to do is remember engine. Now, you do have other things with number. So, for example, you have parallelization. You can do parallelization with number. But I don't really want to touch that because the more you get into the weeds with optimization, the more time you're wasting just optimizing your code instead of getting things done. So, for example, for me, if I can get my script to run in a couple of seconds, that's good enough. I don't need to have a script that runs sub a second or sub millisecond. I don't care about that. So, all I use at number four is the engine. And I recommend everyone installs number and uses engine just in cases like this where you need to optimize a fairly simple function.


What's going on everyone Sam here with late in sports cards in one box to 2122 Top scrum you wait for champions league soccer hobby for Alexander N. So good luck here Alexander 2122 Top scrum champions league.  You just got bop a dingle Here we go We did to the fullest extent Curtis Jones refractor Hava is Pedri nice one there for Barca future stars Harvey Elliott skos Nico Gonzalez Vice skos Manuel Garte for sporting to 1.99 Nuno Mendez PSG Refractor rookie. There's a purple mini diamonds Ibrahima Conate for Liverpool to 250 Brendan Aaronson mini diamonds Really Minidiamonds Stefan Teague I know Christiana refractor rookie for Shreve Erling Holland go lasso Go lasso or future stars Jude Bellingham for Dortmund. No auto yet still interesting That is Francisco Konachow for Porto Fractor rookie auto is Frederico Valverde for Real Madrid nice one there. That's on that Alexander. Nice one there, buddy This is a wolf web horse Wolfsburg Future stars parents or as and last pack here there's a gold mini diamonds Luis Maria for Atlanta to 50 That'll do it for your break there Alexander. Thanks again for your support buddy get him right out to you


Hi everyone, Sean with jaspyscasebreaks.com here doing 1617 spectra two box break random team addition number one Where we're giving away an early bird spot to one of the first 18 spots sold 30 spots and we'll get to random team an NBA early bird by one of the first 18 spots in the break It entered to win a free spot in the break all card ship There you go So here is our customer lists From Nathan with the first spot purchased down to Dylan with the last spot mojo times two remember top first 18 spots sold Qualify for the early bird spot. So we're gonna highlight Down to 18 and Travis Moss We're gonna copy that list Into a randomizer name on top after six and one seven times gets the early bird spot Seventh and final time Adam Kelly guts. You just got yourself an extra spot seven times on the randomizer Seven times on the dice all for just getting in on the break early. There you go So now we're gonna copy the full list Into a randomizer So Adam with the early bird spot back up to Nathan and List of the teams from the Hawks down to the Wizards dice for to randomize both lists and combine them five and a three eight times eighth and final time from Nelson down to Nelson So eight times on the randomizer down on the bottom eight times on the dice now eight times on the teams Eighth and final time from the Bolts down to the Cavaliers Okay, so trade window is open.  While you guys are taking a look at that and potentially thinking about some possible trades We got to figure out which two boxes we're gonna do. This is from a fresh case of six boxes So we can do this two more times You can see 1617 Spectre Sealed case some of Joe already Dylan is asking Kyle if he wants to switch the Nets for the Bucks Dylan in that has the Nets Kyle You have the Bucks Okay, so since it's a two box break, we're just gonna flip them up on top and do Across so top two middle two bottom two. Let's throw a dice Figure out which two we're gonna do one two for the top two three four for the middle five six for the bottom Dylan saying anybody want Nets Nelson's asking anybody for cats Good luck Five so we're gonna go with the bottom two boxes The top four will set aside mark them with an X and keep those four spectra logo For number two and number three Okay, we'll give it 20 more seconds on trades if not trade window will close okay Mavs for calves Nelson Kyle I'll close trade window, but I'll accept that trade or Nets for magic So I'll accept either of those two trades. So trade window closed, but if if Jay wants to trade the magic for the Nets or Nelson wants to trade the calves for the Mavs I'll accept those two trades Nelson said no, thank you. I don't think Jay has been in the chat, but if Jay's listening If not, I'm gonna go five more seconds three two One Okay, trade window closed. I'm not sure Nelson.  It's like whatever jerseys wearing on the card. That's what team it goes to We only go checklist when it's like college jersey non non team jerseys stuff like that I'm guessing that yellowing means there's a redemption in there We'll see one left in five star. There you go. Cool. Good luck guys box one Beautiful cards starting off with Jimmy Butler Silver Chicago Bulls These are 120 maybe 130 No numbering on the Jimmy Butler Jimmy buckets but very nice one for the Chicago Bulls And Nelson Lin shake the toner. It's getting low Die-cut Randy Foy For the Brooklyn Nets Dylan Rick road 24 out of 25 Marcus smart relic For the Celtics and Adam Levy 108 out of 149 Brandon Jennings relic for the Wizards and Eddie Romero Keras Lever Two-color patch auto also for the Brooklyn Nets and Dylan Rick road last spot mojo Four out of five very low number there Keras Lever Just I think he's recovering from a mass they found on his kidney if I remember correctly After the trade he's now on the Pacers, but Said everything I think well, there's a redemption And I've seen this pattern before recently. I think it's really low-numbered Brandon Knight two-color patch Three colors with the white on the bottom or they just short cut the patch Phoenix Suns J. Gohans Recently pulled one of these out of 15 this one's out of ten six out of ten or actually no is out of five So nice Brandon Knight Georgia's Papa Giannis three-color patch and auto rookie for the Sacramento Kings Adam Kelly big cat Carl Anthony Towns Jersey and auto for the Timberwolves Josh proofs There you go Daryl, thank you very much, man Nice one there two out of 49 on that 11 out of 49 on the Papa Giannis and our final hit for box one Dennis Scott Little white pinstripes there for the Orlando magic J. Gohans Six out of 99 nice pinstripe Jersey and redemption Rookie Jersey autographs neon blue card 108 a J Hammons Anybody know Should be Dallas Mavericks. There you go. That'll be for Dallas Mavericks and Kyle McLean expired obviously on the date of Here, but hopefully you should be able to give you something in return for that Maybe something better than a AJ Hammons Rookie Jersey auto at this point in AJ Hammons career, maybe A little bit yellowing on another one, so probably another redemption there. I'm just gonna have the same date, so it'll end up being expired hopefully We'll be able to redeem that for you anyways though Need to move anything first up Russell Westbrook Oklahoma City Thunder Eddie Romero non-numbered silver Joelle and bead it's gonna be out of 10 also 76ers Robert Mancini Yeah, four out of ten Very nice You got Robert spectacular swatches Tony Parker for the Spurs Robert Honig Or sorry Ruben Honig 44 out of 99 another one for the Spurs Lamarcus Aldridge And Ruben Honig we have another out of ten Yeah, Joe Johnson Utah Jazz Ryan Kasin box here one out of ten on that one Cool patches there our first auto is all Farouk Aminu for the Trail Blazers and Kevin DeRosier 124 out of 149 Cedric Maxwell for the Clippers Eddie Romero 106 out of 149 on that one We got two more hits in our redemption Chris Dunn rookie Jersey and auto Minnesota Timberwolves He was at Providence, I think Josh proofs 295 out of 300 and Spectacular swatches Bradley Beal for the Wizards Eddie Romero 13 out of 49 last thing redemption Rookie Jersey Autograph neon blue card 102 a RIO Dario Sarek, which is 76ers Robert Mancini So same thing as the other redemption this is expired But you should be able to turn that into Panini have them hopefully either fulfill that for you or Replace it with something else as well There you go guys Those were the first two boxes from the case That was 2016 2017 spectra two box break random team number one from jaspy's case breaks calm Number two and number three from the same case will be in the store later on jaspy's case breaks calm Thanks for hanging out. I'll see you next time