Good afternoon. I'm Floris. I've been a Python developer for quite a while now. In my spare time, I'm quite often... Sorry, can everyone hear me properly? Should I stand closer? Is that better? Okay. Sorry. Okay. So, yeah, I've been involved in Python for quite a while. I work on open source as well, kind of usually around PyTest, et cetera. I have very recently changed jobs and I'm now a site reliability engineer at Google. While Kubernetes is a Google originally came out of Google, this is not actually a Google project, Google Talk, sorry. This is largely based on my experience from my previous job where I was working with microservices in Python that we ran on Kubernetes. A little note about the title. So, Kubernetes is part of the Cloud Native Computing Foundation, CNCF, and that's kind of where the title kind of came from, so Cloud Native Python. Okay. So, we'll be... This is kind of the contents that we'll be covering. So, I'll start with a very, really, really brief introduction about Kubernetes. Probably the shortest introduction you can ever have, but hopefully that should be, if you're not familiar with it yet, that should be enough to kind of follow the rest of the slides really. Then I'll kind of introduce a little example. It's just a kind of traditional echo server, so it's a network server. You send a message, you get the same message back. And then we'll kind of take that example throughout the rest of the talk to sort of start modifying it a little bit. So, introduction to Kubernetes. This is kind of Kubernetes in one slide, which is a tricky thing to do, I guess. But the idea of Kubernetes is that it's a cluster or orchestrator, really. So, the idea is that you give it a bunch of machines, and it creates a cluster out of it, and then when you want to run your application, you just say, run my application somewhere in this cluster. And Kubernetes itself will decide where the right place in that cluster is for your application to run. And the kind of the aim that you're aiming for is the reason we want to build a system like this, especially with multiple microservices, and you have multiple instances of every service it tries to make a really resilient application. If one of the machines in the cluster is unhealthy or something, you can just take it down, you can fix it, replace it, and your application just keeps running. So, if something crashes, request will just be rooted somewhere else, and it's really resilient and always a kind of application. That's the end goal of what you're trying to do. We're trying to run in Kubernetes. So, the core concept of Kubernetes is like, you want to run your application, and your application, in our case, is just going to be a part of an application. And Kubernetes runs kind of containers, essentially. So, you need to containerize your application. So, right now, that basically means docker. In the future, hopefully that will be also like a rocket and the like.  I'll skip over that part today. And Kubernetes runs this inside of a pod. So, pod is kind of the smallest unit that Kubernetes will run for you. Essentially, it's just another app for your container. You don't really have to worry why they decided to create a pod. It's kind of the idea is to treat multiple... You can potentially put multiple containers inside one pod and treat it as one unit. Why you want to do that doesn't really matter for today. So, pod, you then tell Kubernetes, please run this pod for me, which is your application. Kubernetes will kind of just find a server in its cluster and start to run it for you. But the problem with pods is that they're kind of ephemeral.  So, that's a far cry from our resilient application. So, the next concept that Kubernetes introduces is kind of this idea of a replica set. And a replica set is essentially will kind of continuously look at what's running inside of Kubernetes. And the idea is that in your replica set, you say, I want to run this many instances of my application. Whenever the replica set sees that your application isn't running that many times, it will try and make sure that that happens. So, if there's not enough instances of your application, then it will create more runs.  So, that means that machine gets taken down, the replica set will notice this and will create a new pod instead. So, this starts to create your application to be always there, especially if you request multiple instances. The problem then is, of course, again, these pods, they just run on a random machine somewhere in your cluster. You don't know anything about them. You don't know how to contact them. So, that's where the concept of the service comes in. So, service is essentially some sort of a fixed IP address. It's the easiest way to think of inside your cluster. And if you need to contact your application, you can contact it via the service. And the service will essentially load balance between all the instances of your pod and it will make sure if you send traffic to the service, it will go to one of the instances of your application that's running somewhere in the cluster. And these are really the basic things about Kubernetes that's kind of enough to follow. Anyway, I'm now going to say like everything else is bells and whistles. There is lots of other layers. They don't actually even recommend you use replicats sets directly at the moment. So, there's obviously lots more going on. But that's the core concept and that's a core concept that allows you to create resilient applications. So, that should be enough for today, hopefully. So, this is my little example application that I'll work with to address. It's basically an echo server. So, on the network, I've implemented it using 0MQ because any time you think of creating a TCP socket and you want to send and receive data, you should really use 0MQ instead because it takes care of a lot of the integrity networking details and you get whole messages automatically delivered to your application and you don't have to worry about everything else really. Other than that, this is fairly standard. I should point out that all the code I show is kind of slideware. So, I use globals. I don't show all the imports. You shouldn't write application like this, obviously. So, yeah, this application basically, the main loop essentially is like, I create my socket that I want to listen on. I then use this polar thing which is basically if you've done normal TCP programming select. So, essentially, it's asking the operating system like, can I sleep until the next message is available and then when the next message is available that will kind of come as an event and then I basically pass the server socket, the echo server socket to the event handler for that. The event handler will then basically receive the message and send it back to me. So, that's all this is. This is basically an infinite loop receiving and sending the messages. So, here are the few little helper functions to make it fit on the slide. So, create and bind really nothing, just some plumbing. So, create a socket, bind it so that we actually can receive connections and we register it also into the polar, again, using global. So, try this, it's not nice code. And the handler is where the actual work happens. So, we receive the message. Again, there's a little bit of 0MQ bookkeeping to split off the way 0MQ passes you the peer address. And then log the message and then send it back to whoever sent it to us. So, that's kind of the very simple application. And the first thing to kind of notice is that that's actually kind of sufficient. So, we can just take that application, put like, you know, the ifname equals main thing in there and etc. And we can just containerize that and run it in our Kubernetes cluster and that will just work. So, the first thing to sort of rely on when you're in Kubernetes is sort of just rely on the fact that you are running in an environment so you don't have to put complexity in your application. And it allows you to really have a very simple logical flow which is kind of what we just saw was like a super simple straightforward internal architecture. And that's kind of true for larger applications as well, you can't sort of skip through all the boilerplate, etc. And the first thing in that is like, I didn't write any exception handlers in that code and show it fits on a slide, but that's actually generally quite true. You don't really have to worry about exceptions because your application runs in multiple instances. And if you do get something unexpected, like I don't know, maybe the bind that could fail sort of the socket whatever goes wrong on the machine. Like, I don't really mind. My process will die and Kubernetes will just make sure that a new one gets created somewhere else instead and it will probably work. So, yeah, so you don't have to worry about that especially. You can even go as far as kind of doing that for when you're receiving a request from someone or the service. If this other service is completely internal to yourself, or your team or whatever is the author of the other service, then essentially you can treat that failed request as a bug. Sorry, invalid kind of schema of the request as a bug and you can basically crash again. If you're doing this for external applications, so if you're actually receiving user requests, then that is probably a bit too eager, like too brittle. So in that case you probably do want to catch the exception for request validation. Because there is depending on application, I mean in this case not very much, but there is some overhead in starting up your application again. And the other thing that kind of happens when you just crash and that you should take into account is that if you have network connection, so you're receiving messages from clients, those network connections, they will have buffers in them. So basically there will be requests queued up already in your local process. So your queue makes that really obvious because there is explicitly a queue with your socket. But even if you use raw TCP, there will always be internal kernel buffers. The kernel may even have accepted new requests already and just queued them up even though your application has no idea yet. There might be data still on the wire just coming over. And if you just crash, then you kind of lose that data. So those requests and whoever created those requests will have to then kind of wait and time out and retry. So that's not very good. So you want to take that kind of into account. And that kind of brings you to the more like how do I organize my messaging et cetera and you can kind of start playing. If you really don't want to suffer from that, you can start playing with message brokers like RabbitMQ or different systems like Kafka et cetera. But these all come with trade-offs expenses. The only thing I would say in here is basically be aware of when you crash, you may lose requests and make sure that's okay in the system you're designing. So in this slide, this actually shows how you actually would create your... This is the recommended way that they want you to create your pods. Deployment is essentially just a wrapper around this replica setting. The reason they have it is because it creates updating your application slightly easier. But as far as from our point of view, the two important things here is this line that says replica 3. That means we are requesting three replicas, so Kubernetes will always ensure that there's three of us running. And the other really important thing is the very last line that says restart policy always. That line will basically... That tells Kubernetes that if we're crashing, just start us again, please. So that's kind of the first step. The second thing is the script had no concurrency. And while it was a very simple example, this is generally true. You can rely on... You can keep your internal code really simple because the idea is to scale via the process model. Some sort of, if you've ever heard of 12-factor apps, kind of methodology. That's kind of the idea of, like, you just create more... You scale horizontally by creating more instances of application. As we just saw, that's kind of what you already did. We just create more replicas and they will handle the traffic. And that means that internally we can have really easy debugging, et cetera, because our control flow just gets really simple and we don't worry about any of the other stuff.  So this is kind of the service definition that we would have. One thing, again, that I've got you to look out for with the sort of load... The service that you create, which load balancers your traffic between your pods, is if your protocol that you're using uses long-standing connections, which again, like 0MQ in our example, points this out very well because 0MQ creates long-standing connections. You connect and then it tries to reuse that connection for lots of requests and responses. So our echo service will accept lots of echo requests from the client on one connection. So this means that, essentially, we don't get the load balancing. So one client will permanently be connected to one of the pods or one of our applications, essentially. So that's not very load balancers, like... On the other hand, if you're using HTTP, then a new TSP connection gets created for each request and that would distribute automatically. The trick to use there is that Kubernetes actually allows you to see the layer below services and it has endpoints. I think objects it calls endpoints there. And that actually allows you to see which endpoints, basically IP addresses that are part of your service. And using that information so we could update our application to sort of query the Kubernetes API to ask what endpoints do I actually want to connect to? You can tell on 0MQ, connect to all these endpoints. The downside is that you have to kind of work with the Kubernetes API. You need to be constantly aware that this can change. So when an endpoint disappears, you need to tell 0MQ to disconnect from the endpoint, et cetera. But that's just generally, you know, the sort of thing you need to be aware of when you have long protocols that use long-standing connections, basically. Next on, talking a little bit about logging, so you may have seen in the very first example and cringed at this print statement. So by default, Docker kind of takes standard output of your container as log data and Kubernetes will again take that log data from the Docker containers and they'll make that available to use. And generally, the idea is that at operation time, you sort of hook that up to a log aggregation of some sort, something like Elasticsearch or Fluendee or something like that. But using simple print statements is not very nice. In general, you want to be able to control log levels at command line level. That's sort of a 12-hectare app kind of thing. So you really want to use logging libraries. So logging libraries are sort of common, there's quite a few variations, and they all kind of try to wrap a horrible amount of global state into a nice API, and global state is always quite horrible, so they all kind of are ugly in one way or another. I quite like logbook. It's not kind of like the way it tries to handle the global state, but there's nothing inherently better about logbook than standard library logging, if you like standard library logging. One nice thing about logbook is that you can use the normal curly braces for new style formatting instead of percent formatting for standard library logging. But the main thing here is to notice that once you start using a logging library, you can actually start... You can hook up your logging library instead of printing out to standard out, which is kind of the first thing you probably do, because if you don't have all the infrastructure yet. But you can hook it up to send the log records directly to the aggregator. This allows you to... If you have tracebacks or something, you can send them as a single big block. So the next thing that you really want to do as soon as you start using logging libraries, wrap your main application into... into basically this exception logging. Our logging libraries will support some variation of this. But the idea here is that by doing this, I make sure that any unhandled exception, as I was advertising earlier, will be captured by the logging library and will be sent as one single log record back to your logging aggregator. So next on is kind of this concept that the community is called health endpoints. And the idea here is that... The central idea here is that when your application starts up, the community has said, start this container, and as soon as that container is kind of running from a process point of view, it's available so the service object that you created for your application will start sending traffic to you. But there is a finite amount of time that your application is running and you haven't opened your socket yet and you're not listening for connections yet. In this case, obviously, it will be very small, but if you have a lot of setup and things you have to do before you start accepting connections from clients, that delay might be bigger as well. And the problem is if at that point community is sending traffic to your application, then you're basically saying refused connection and all these clients are like, well, the service is down. So you don't want to do that. What community does is it introduces these readiness probes. And the idea here is basically that community is like, after starting your application, it will wait until the probe succeeds, and once the probe succeeds, only then it will start sending traffic to your application. This is kind of how you configure that in the community's model configuration. In our case, so there are several different probes you can use. In our case, it's just a simple echo server. So all we care about really from the probe's point of view is that the socket is open and listening. So this TCP socket probe essentially says as soon as this socket accepts connections, send me traffic. Kubernetes will literally just try and connect to the socket and as soon as the connection closes and say, yeah, okay, I'll send the traffic. So that means there is still kind of a tiny delay in which we might actually have bound our socket, but not yet in the main loop of processes and messages. But because we know the buffering and the queuing in our sockets to care of this, that's basically perfectly fine. That will be a short amount of time. There are some requests to get queued up, but we'll start serving them very shortly. If your service is actually using HTTPS and transported, it kind of has built-in support for that. And there is this convention of using this health and Z route. And basically, this is really nice in a way, because you can basically tell your, the readiness probe is kind of completely in line with, or can be if you create a search, to be completely in line with your normal request processing. So if that actually returns, so basically Kubernetes only looks for the 200 okay on there. So as soon as that returns 200 okay, it will start sending you traffic. And because you can do this completely in line, you actually have quite high assurance that, yes, my application is fully running and can start serving traffic. So the same concept of kind of readiness, also the same concept also happens for during the pod's lifetime really. So when your application is running, especially when you're running your application at a large scale and it handles lots of requests, sometimes things will just go wrong and one of the many instances will start misbehaving. This might be because of external things, like there's another container on that box that even though things should be isolated, they're not always as isolated as you would imagine and things go terribly wrong or someone decided to run a backup on that machine and things go really slow, all sorts of things happen really. So the idea of liveness probes is that you don't want to be sending requests to an application that's slow to respond or is just completely stuck or something like that. It does this in essentially a very similar way, so it just has this liveness probes thing and this shows kind of the third type of probe that you can use. So we've already seen TCP socket and HTTP GET and here I decided to use the exact one. Exact is kind of the most work, but it's also the most flexible. So the problem is the TCP one that we used for readiness and it was very suitable there. It's not very useful for the liveness probe and what we really want is kind of the same as you can use with HTTP GET. It's like we want to know in line if things are working correctly. So the trick you do there is this exact command basically says it gives you the command line that you want to execute inside of your container. So you have to provide an extra binary inside of your container which will ideally tell how healthy or not healthy that pod is and ideally you want to aim for this in line checking. That's exactly what I've done here I've added an extra script in my application and I just invoke it with Python. So this is kind of how simple the script can be. Again obviously I have a very simple application but literally it just creates a socket connected to the public endpoint in this case because I'm running on the same container it's actually on local host but we still made the TCP connection so it still gives us a very high kind of idea of what the public behaviour is of our application and we just send a message and we wait for like 500 milliseconds and if you haven't got a message back yet at that time then we fail and then Kubernetes will start taking our pod out of basically stop sending traffic to our pod and send it to the healthy ones instead. You may notice I'm not actually even receiving my response I just check hey there is a response in this case I think that is sufficient. So it depends on the protocol you have or what sort of messaging you use sometimes you might want to introduce slightly more and often it is nice to build in something like that what the hell said kind of route to that in the HDP convention just something that you know it is working yes just something that you know it is working and everything is fine so that's the idea of lightness so next on is like termination and again this is like very similar if you thought about how we at start up time we didn't want to refuse any connections at termination time we don't want to drop any connections that exist so any requests that are currently queued up on our process if we just say oh we've been asked if we don't do anything basically our application will just receive termination signal and it will just die and all the requests that are queued up will basically be lost and all the clients will be waiting again so that's not very good so instead we should handle the termination signal which is done in Kubernetes just like it's always been done in Unix systems you basically get wise via Docker but you get sick terms hand to you and the signal handler here that we created is just a very simple internal socket it's essentially I think of it as a pipe and all we want to do is like send this signal like I'm sending a single byte to my main loop and then my main loop knows it has to shut down and yeah and it can shut down while trying to handle the connections I'm using the same signal handler here it's called sigterm and sigint sigint is the signal that you get when you press control C normally when you're running on a terminal so in Python that normally gets automatically translated to keyboard interrupt exception because you want the application to kind of behave in the same way when you're running when you're running on the tester to try it's usually best practice to just bind both the signal handlers the modifications for my main loop are maybe a little bit more messy now but essentially it's not that much I just again create instead of creating just one socket in my main loop I create two sockets so I add this termination socket I add it to the polar and when I now receive the important thing here is when I receive this new this single byte basically I don't even care what that byte is by the way again I just know I receive the message from my termination socket so I need to shut down and here I I first unbind so this means that I will stop receiving new connections and then I basically keep processing while there are still events in the queues I keep processing and I have also I set a time out actually to like five seconds something which may be fairly high but the idea here is that some requests might actually already be on the wire and I want to give those a chance to be processed well and once there are no longer any messages in my queue the wire loop will finish and I return so the last thing that I would like to add is kind of monitoring so Prometheus is another cloud native computing foundation project actually which is kind of why I mentioned it and the idea here is like to start you always want to know kind of what's going on Prometheus is kind of offers you this option of doing wide box monitoring in a way so you can add counters and you can add metrics inside your application and you can start enriching your metrics collection basically so Prometheus works in a very in a pool based fashion so you have the central infrastructure and it will go around to all your services and it will do an HTTP request and get back your metrics basically and it's a little bit like SNMP over HTTP if you remember the SNMP pool of metal but at least we learned that monitoring data is probably even more important than production traffic so we actually use a reliable TCP transport instead of something like UDP anyway Prometheus is obviously a very difficult and big project but the idea here that I really want to show is just how easy it is to get started with it and you can just add very little things there is a last year that was a talk about from Hinnig I think at Europe Python which goes in a lot more detail about Prometheus so this is kind of the recap like the idea is basically none of this is actually strictly required to be able to run on Kubernetes you can add up this gradually as you need and yeah to keep your architecture simple think about when you lose requests and you don't want to go blind basically so you always want to have some instrumentation and monitoring thank you very much I think I'm about out of time so unfortunately there probably won't be any questions but you can find me outside if you like


Welcome back to the Wizards Forum 2023. I'm delighted now to be joined by Catarina Burbeni-Hulhem. Hello. Hello.  Tell me about that. We brought into the discussion an additional dimension that is required by all stakeholders beyond the technology, which is the human-centric approach. How to help the users increasing trust, accepting technology with the guarantee that there is no misuse and no manipulation in what the users from what the users' perspective are expecting. And what were the kind of questions that came up? There was no time for real questions, but there was the expression of the need to go away only from a technology-centric approach, because AI, and it was dealing with AI, is a formula. And formulas do not, is a machine. And here there is now the need to bring the human dimension, the psychology, cognitive science, the feelings of human, respecting it, not making the machine human, but leaving machine and men, respecting each other, accepting each other, trusting each other. And you also moderated and organized a panel on ethics and AI with the World Health Organization and looking at health issues, but not only. How did that go? This was, from what we heard, very, very interesting. And the panelists were very interdisciplinary. Different countries, World Health Organization, Dr. Rice, started with the experience and the need of training in the AI sector for health. And then the panelists went through the experience from Nigeria, from Bangladesh, from Switzerland, and so on, coming up at the end with the philosophical understanding of ethics in order. And this was done by Monsignor de la Vite, who brought the concept of ethics into the picture. And this was seen as very, very interesting and going away from an only technology-oriented way of developing digital technologies or of decreasing the digital divide. We could go on forever. Katrina, thanks very much for your insight into those sessions. Thank you very much for your time and good afternoon.


This lecture is part of an online course on commutative algebra and will be about the art in re-slammer. So we will be stating and proving the art in re-slammer and then using it to prove that if M is a maximal ideal of a notary in local ring and you take the intersection of all powers of M then this is equal to zero. So before stating the art in re-slammer, we first need to define filtrations of modules. So a decreasing filtration on a module is a series of sub-modules of M decreasing like this. A typical example is where you take module MN to be I to the N times M where I is an ideal of R. So this filtration is called the I-addict filtration. The name I-addict comes from the special case when you take the module M and the ring R to be the integer Z and you take the I to be the set of all multiples of a prime P. Then the I-addict filtration is given by putting MN equals P to the NZ. And this is the usual P-addict filtration on the integers used to construct the P-addict numbers. If you know about completions, then the P-addict numbers are just the completion of the integers with respect to this filtration. We'll be covering that a bit later in the course. So the name I-addict just comes because it's a generalization of the P-addict filtration on the integers to an arbitrary ring. Any filtration gives rise to a topology on the ideal. Here, the topology is just given by taking the filtration and saying that's equal to a basis of the neighborhoods of nought in N. So, for example, a basis of the open sets in M will be the set of all sets of the form X plus MN where X is some element of M. And there's a basic question. Suppose M is a sub-module of N. Then we can put the I-addict topology on N N, which is the set of things of the form I to the N times M. And we can put the I-addict topology on M, which is the set of things of the form IN times M. And if we restrict the I-addict topology on N to M, then we get the sets M into section I to the N times N. So we seem to have two different topologies on M and we can ask, do these give the same topology? And the answer is, in general, no. To see an example where these topologies are different, let's just take R to be the integers, M to be the integers and N to be the rational numbers and I to be the ideal of all multiples of two. So M contains N is just Z contained in Q. And now we can look at the two-addict topology on Q and we notice that two Q is equal to Q. So in fact, the only open sets are the empty set in the whole of Q and the topology here is indiscreet. So the open sets are zero in the whole of Q. So if we restrict this to Z, we will get the indiscreet topology on Z. On the other hand, the two-addict topology on Z is Hausdorff, as you can easily check. So it's certainly not the indiscreet topology. So here, the two-addict topology on the rational is restricted to Z is not the two-addict topology on Z. In fact, even when the topologies are the same, the filtrations may be different. For an example of this, let's just take R to be the integers and N to be the integers and N to be four Z and I to be the ideal two. So M is contained in N. And now let's look at the two-addict topology on N.  And these are just Z, two Z, four Z, eight Z and so on. If we take M intersection with these sets here, we now get Z, sorry, four Z, four Z, four Z, eight Z, 16 Z and so on. On the other hand, if we take I to the N, M, we get four Z, eight Z, 16 Z, 32 Z and so on. So these two filtrations are obviously not the same. They're different filtrations. On the other hand, you can see that they're the same topology because every set in one filtration actually does occur in the other filtration. It just might be shifted a bit. So these are different filtrations, but the same topology. And this is the sort of phenomenon that the Arten-Ries theorem, allows us to control. So what we need to do for that is to find stable filtration. So a filtration M, N of M is called stable.  So for example, if we take M, N equals I to the N, M, this is stable. And it's also obviously the smallest stable filtration because any stable filtration must be at least as big as this by this condition here. And furthermore, any two stable filtrations give the same topology. For example, we have M naught contained in M one contained in M two. Suppose this is stable. We can compare it with the filtration M contains I M, which contains I squared M and so on. And now we know that I to the K M is contained in M K for all K by what we just said up there. On the other hand, if N is sufficiently large so that M N plus one equals I M N. So suppose we choose some big number N such that this holds then M N plus K is equal to I to the K M N, which is contained in I to the K M. So while these submodules may be bigger than these submodules, they're all bounded by these modules shifted by a finite amount. So in particular, these two, every module here is contained in one of the modules here and every module here is contained in one of the modules here. So they give us the same topology. Well, having discussed to find stable filtrations, we can now state the art and Reese lemma. This says suppose that M contained in N are two finitely generated modules over a notarian ring are with some ideal I. Then there are two forms of this. We can have a strong form, which says that any stable filtration on N restricts to a stable filtration on M. There's a weak form of the art and Reese theorem, which says that the I addict topology on N restricts to the I addict topology on M. So the weak form obviously follows from the strong form because as we said, any stable filtration gives you the I addict topology. In order to prove the art and Reese lemma, we need the following key step. So the key point is that a filtration M0 contained M1 and so on with I times MN contained in MN plus one is stable if and only if the module M0 plus M1 plus M2 so on is finitely generated over the ring R plus I plus I squared and so on. So these are graded rings and modules so that the degree is zero, one, two, three, and so on. And it's very easy to check that this is a ring and this is a module over this ring because of this condition here. And to see that stability is equivalent to this thing being finitely generated is quite easy. So for example, if this module is stable, then at some point you have MN plus I, MN plus one plus I squared MN plus two and so on. And you can see that if the filtration is stable from this point onwards like this, then this module is finitely generated because you just take a finite set of generators of all the modules M0 up to M1 which exists because the ring is notary and M is finitely generated. And you can see these former finite set of generators of this entire module. So stable implies finitely generated. On the other hand, if this module is finitely generated, then you can take some N here such that all generators are in M0 up to MN and it's then easy to check that these generators form M0 up to MN. A set of generators for the entire module. So finite generation of this module here is equivalent to the filtration being stable. Okay, with that, it's now really easy to prove the art and race theorem. So we just say suppose the filtration N0 contained in N1 and so on is stable. Well, this implies that the module N0 plus N1 plus N2 and so on is finitely generated over the ring R plus I, plus I squared and so on. And now we notice that this ring is actually notarian because it's a finitely generated algebra over the notarian ring R. And it's a finitely generated algebra because you can easily see the set of generators for this ideal I form a set of generators for this algebra over R. So since this ring is notarian, any submodule of a finitely generated module is finitely generated. So M0 plus M1 plus M2 and so on is a finitely generated module. And finally, this immediately implies that the filtration M0 contained in N1 and so on is stable where I should have mentioned that MN is of course just equal to M intersection NN. So that proves the art and race lemma. The proof looks kind of simple, but it's actually really tricky to find. You've got to have this idea that stability of a filtration is equivalent to this module being generated over this algebra. This algebra, by the way, is sometimes called the blow-up algebra. And I'll probably say a bit more about it in the next lecture. So to finish the lecture, we will now show the theorem I mentioned earlier so we're going to have this application. Suppose R is a notarian local ring with maximal ideal M. Then the intersection of all powers of M is equal to zero. So in the previous lecture, I gave some examples of non-notarian local rings where this equality failed. And this follows really easily from the art and race lemma together with Nakayama's lemma. All we do is we put J to be the intersection of all powers of M. And we notice that M to the N intersection J is equal to J for all N, completely obviously. So the M addict topology on R restricted to J is indiscreet. However, J is a finitely generated module because R is notarian. So by the art and race lemma, we see that the M addict topology on J is indiscreet because it's the restriction of the M addict topology on R. So this means that M J is equal to J because that's what the M addict topology being indiscreet means. And now we notice that this output from the art and race lemma is exactly the input required by Nakayama's lemma. So J is finitely generated and M J is equal to J. So we just apply Nakayama and we find J is equal to zero. So the intersection of all powers of M is equal to zero because that's what J was defined as. Okay, next lecture will probably be about the blow-up algebra and various other algebras you can construct from filtrations.


We'll start where it all starts. As you know, I'm only playing three of the four songs on the EGVDR. Skipping was third one. I'm nearer to copyright. I'm nearer to copyright. That's true. Two minutes. Two minutes. In any point. Thank you. Thank you. I would just like to... Thank you. Thank you. Could we have a photo? Sure. We're on the other side, so we can go to the other side. We're on the other side, so we can go to the other side. We're on the other side, so we can go to the other side. We're on the other side, so we can go to the other side. We're on the other side, so we can go to the other side. We're on the other side, so we can go to the other side. We're on the other side, so we can go to the other side. We're on the other side, so we can go to the other side. We're on the other side, so we can go to the other side. We're on the other side, so we can go to the other side. We're on the other side, so we can go to the other side. We're on the other side, so we can go to the other side. We're on the other side, so we can go to the other side. We're on the other side, so we can go to the other side. We're on the other side, so we can go to the other side. We're on the other side, so we can go to the other side. We're on the other side, so we can go to the other side. We're on the other side, so we can go to the other side. We're on the other side, so we can go to the other side. We're on the other side, so we can go to the other side. We're on the other side, so we can go to the other side. It's my enormous pleasure and honor to introduce to you my boss also and my inspiration and our leader in the Sustainable Development Goals, a most remarkable person, U.N. Secretary General Antonio Gutierrez oversees this complex world and United Nations. He has asked the Deputy Secretary General of the United Nations, Amina Muhammad, who is known to all of us to lead the effort on the sustainable development goals. She is a force of nature and has played a role that is absolutely unique in bringing about the goals. She was the special advisor to Secretary General Ban Ki-moon on the negotiations of the Sustainable Development Goals, so she brilliantly managed the global diplomacy to bring them to reality. She went back to Nigeria to become the Minister of the Environment of the federal government of Nigeria and, of course, was helping to lead in that country as she has for many, many years. She was also the Director of the Millennium Development Goals Office for the President of Nigeria for many years, a decade ago before she came to the U.N. Well, as soon as she went home she was called by our new Secretary General, Secretary General Gutierrez. Come back to New York, we need you, and indeed she has come back to lead wonderfully and with enormous energy and creativity and constantly asking and pushing and controlling for more. This marvelous and unique effort that all of us are on, so it's a tremendous honor and pleasure to introduce to you the Deputy Secretary General of the United Nations, Amina Muhammad. Sister of another mother and not a boss. But good evening and it is such an absolute privilege and honor to share an evening with all of you this afternoon, Amina. Thank you, Jeff, and all the supporters here for having us. Celebrating the Sustainable Development Goals through music is a wonderful expression of our commitment to our human family. Getting cheese for born out of a truly historic process four years of it where the global village came together and gave birth to 17 goals. The music tonight I hope will unveil the depth and their beauty to the notes that we will hear that should move our hearts and minds and unite us for just a moment. At the end of the evening I'd like to think that you take that moment and bring it into your lives for professional or a voice and take it out there to make a difference in the world. And really to bring the opportunities of each one of those goals as an entry point to make a difference. To bring solidarity, to bring respect, to bring dignity, to bring tolerance to a world that really is full of such tragedy, such atrocities. We've almost lost our way, where is our humanity? And this evening I want to bring us just a little closer. We have a crazy week at the UN and we'll bring together leaders and we hope that some of those speeches will move hearts and minds. But I hope that it is in this hall that we can do that and that we can show them the change that we really need to be. So I look forward to enjoying this evening with you and hope that we will definitely move hearts and minds because she has 17 goals. Thank you. The world we became is the longest growing piece that has quality education. We're 14, life below work, offering quality education. Is there interest in quality education below work? In classrooms, to rehearsal studios, we connect it to professional musicians and in this way we bring their voices to the stage of professional music. We make recordings of that and these recordings we send back to the original, very old composer, who's then stimulated to continue the work and to spread their personal message. If we think of the world of 2030, it's very abstract. It's very far away. It's not clear what needs to be done today. The musical postcard project invites very young to express their dreams and their hopes in music.  These compositions travel the world. We record songs and pieces of music, sometimes in fairly remote places, in refugee camps, in children's prisons, or just in a music school somewhere. And in this way we amplify the real story of the generation of 2077. Tonight we present the composition of Shazamana. She composed it herself and her composition then was again by young people of her age built into compositions for the musicians that she did here. I'm Shazamana and I'm 30 years old. I am from Syria and now it's our Turkish instrument and I started playing when I was 7 years old, I guess. Loved up and it is above me, Loved up. It was cool to just imagine how it could be. I don't wish that the scholarship comes that was of the world because I just want it to stay like that. I just want humans to stay in connection with each other. I think music can play connecting with each other. Is it going like a film or is that just a one-year? Yeah, it's good to see it. I see it. It's awesome. I'm going to take it. Half the first. I have a different view of that. Yeah, I was just going to talk to you. It is a standard of a confidence piece which will be heard before the break and will continue to hear shortly. It was inspired by it. But for any addition and a more direct, even blatant musical response to the Sustainable Development Goals, my daughter, which is somewhere in the back there, says that it's crazy. I'm not sure. I think it's bitter and sweet. It's extreme. A little bit crazy. Maybe. But I will do my best to convey Ronan's response to the Sustainable Development Goals musical response. There is just one problem. This piece does not fit with the jacket. So there will be one. But in a different way. The words were written in the 14th century by Hafiz, Iran's greatest poet in Shiraz. They were translated to German by Hans Betke in Berlin. They were composed by Viktor Gullmann. We rehearsed the song in our home near Jerusalem. You should know that the Nazis did not like it at all, Viktor Gullmann. First, his grandparents were Jewish. And second, he composed atonal music. The Nazis avoided atonal music. In fact, they glummed together Afro-American jazz music and Jewish avant-garde music and art and labeled both as degenerate.  For the Jewish grandparents, the Nazis have sent Gullmann to the concentration camp in Dresdenstadt and then to Auschwitz where they gasped. But his music lives on with us. So let's enjoy some degenerate music to the words of 14th century Hafiz. Support, transformations to sustainability. You know, science and arts are very much in common. They are both creative, imaginative, exciting, looking for the future. Science and arts, they are both universal. Mathematics, physics, biology. Painting, music dancing. They speak all languages. But why do we need arts to help us, science to communicate this complex, difficult message to develop and cause sustainable future? You know, many of us scientists believe that hard facts, which science is producing, a lot of technology, a lot of new innovations will bring us to the question of future. But it's not terrible. We also need to understand how these institutions, which humans created, how the humans themselves, our behavior, will change. Behavior of you and I, that's emotion. That's what we feel. That's how we move ourselves ahead, deep inside ourselves. And this is where the arts is coming into the point. So imagine, coming back to Mahler from the first part of this evening, you are on this fish in the ocean, and you are listening to me here, giving your lecture with photographs about how to change the energy systems or whatever. I think the chance that you will be untouched by this fish is a big one. As opposed to having me here and others and these fantastic artists, musicians and dancers who may help you to your motion when you close your eyes and listen to music or look how they dance.  If that is touching you in your heart, it's an issue that you will be fish leaving this place very much changed. And consumption. Can we have it all? This is the essence of the wisdom of nature. The environment supplies us with essential goods and services. The environment supplies us with essential goods and services. Development depends on interdependent co-development, economic development, social inclusion, environmental sustainability are hard to achieve by themselves. They can be accomplished at the same time. They can be accomplished at the same time. Negotiations lie at the point. They are connections. Strategic choice is matter. Strategic choice is matter. Strategic choice is matter. Context matters. Context matters. How can meet the needs of a growing World population within planetary boundaries of the population. How can make sure that they achieve This will require respect between different cultures and individuals. This will require fresh solutions and willingness to take intelligent risks. This will require a new perspective on how we got out of ourselves, others in the world. Are we ready to leave no one behind?


quick and easy way to display interactive content to users. To add a lesson, turn editing on, add an activity, lesson. Give a lesson a name, perhaps a time limit. We can attach a file to be viewed by the student. Save and display. Let's add some content pages. Give the page a title and some content that can be formatted, including text, hypertext, media and so forth. Then we include navigation from this page to subsequent pages or elements within the lesson. So we'll have three topic pages that's add those subsequent pages. The important thing here is to be certain that the jumps take you to the desired page or element in the lesson. And it might be a case of user interacting with the content in a very structured and linear fashion or a random and non-linear unit to decide that. Okay, now that we've all in fact added a question as well, then we'll come back and tidy up those jumps. We'll add a question toward the end of the lesson after the three topic pages. You can see there's a variety of question types. Choose multiple choice. Add a question page. Okay, and if the user in fact chooses the correct answer, answer one in this case, we will end the lesson. And they get a score of one. The other answers are incorrect. All right, let's now tidy up the navigation. So we revisit each of these content pages. Okay, so let's see this from, we could certainly preview it here, but to get the full effect, let's preview it from the student perspective. We can see the linked media there. That would be the downloadable file and topic page, topic one, topic two, topic three. You can see that the timer has elapsed. And lastly, the question. That's a lesson.


وأقول في القرآن ما جاءت به آياته فهو الكاريم المنزاله وأقول قال الله جل جلاله والمصطف الهدي ولا أتأواله الحمد لله رب العالمين له الحمد الحسن والثناء الجميل واشدوا الله إلا الله وحده لا شريك له واشدوا أن سيدنا ونبينا محمد صلى الله عليه وعلى آله وأصحابه والتابعين لهم بحسان إلى يوم الدين أما بعد إن شاء الله تعالى this is our third episode and our second lesson we've previously taken lesson number one and before that we did the introduction so this will be our third episode but our second lesson إن شاء الله تعالى in this lesson إن شاء الله تعالى I hope to cover five points there are five things I hope to cover إن شاء الله تعالى in this episode the first thing إن شاء الله تعالى is ما هو الأصل في وجوب الصوم what is the evidence in the Qur'an or the sunnah that show the obligation of fasting what is the evidence for fasting the scholars they say when they have discussions in books of iq they say ما هو الأصل في وجوب كده وكده and what they mean by that is ما هو الدليد the word أصل is sometimes used as a deal so you say ما هو الأصل في وجوب كده وكده or saying ما هو الدليل في وجوب كده وكده is the same because the word الأصل and the deal are sometimes used as a synonym they used one and the other the same way that the word الأصل can mean the strongest opinion you can call الراجح the strongest you could call it an أصل as صاحب المراقي said ويطلقوا الأصل على ما قد رجح that the word أصل is sometimes used as that which is the strongest that's a side benefit إن شاء الله تعالى for the students of knowledge to take down so here the question is what is the evidence to show fasting is obligatory the evidence to show that fasting is obligatory is قوله تعالى the statement of Allah يا أيها الذين آمنوا كتب عليكم الصيام كما كتب على الذين من قبلكم لعلكم تكتقون this ayah is evidence for the obligation of Ramadan الله سبحانه وتعالى he says يا أيها الذين آمنوا those of you who believe Allah is talking to the believers كتب عليكم الصيام fasting has been made obligatory onto you as it was made obligatory on those who came before you لعلكم تتقون so you can attain Taqwa and piety from the fasting so Allah is talking to the believers and he is telling them that the fasting is obligatory upon them so fasting is what? obligatory because the word كتبا means for iqba it was made obligatory on you also the other evidence is if anyone from amongst you who sees the entering of the month of Ramadan فاليا صمه he should fast فاليا صمه means fast it's a command and the قاعدة the principle according to the scholars is that if Allah and his messenger command you to do something that command shows obligation if Allah tells you do this it's an obligation you have to do it if the prophet صلى الله عليه وسلم tells you to do something you have to do it it's an obligation and that's what we have in the ayah here فمن شهد منكم الشهرة فاليا صمه anyone who sees the month فاليا صمه it's an obligation it's a command you have been told to do it والأمرو يقتض الوجب and the command shows obligation it shows obligation based on those two ayahs it's obligatory also the prophet صلى الله عليه وسلم he mentioned to us that fasting is one of the five pillars of Islam بوني الإسلامه على خمسن Islam is built upon five pillars and from the five pillars that is built upon one of it is what صمه رمضان the fasting in the month of Ramadan and there's consensus amongst the أعولان the people of knowledge that fasting is obligatory not two scholars differed whether Ramadan fasting it is obligatory or not no two scholars differed upon it scholars have differed on many things but from the things they differed upon it's not whether fasting is obligatory or not they unanimously all of the scholars accept that fasting is obligatory and that one must fast the month of Ramadan ابنو تيمير transmitted a consensus ابنو قييم transmitted a consensus الإمام النوير transmitted a consensus ابنو قدامة transmitted a consensus ابنو المدر transmitted a consensus ابنو حزم رحمة الله transmitted a consensus يعني all of these علامة have mentioned that it's an obligation by unanimous decision that it's something a person must do what about if a person rejects fasting if a person rejects fasting يعني says that Ramadan is not obligatory on me or Ramadan is not obligatory that person is a disbeliever they leave the fold of al-Islam they are no longer considered a Muslim what about if a person leaves Ramadan out of laziness that person does not fast out of laziness but they believe it's obligatory but they left it out of laziness or they left it because of desires not because they are rejecting the obligation of fasting the scholars they are the overwhelming majority of scholars are of the opinion that a person is a sinner who is falling into a major sin there is a view transmitted from that the person who leaves fasting is a disbeliever يعني if he leaves it he is a disbeliever there is a view transmitted from that says that but the strongest opinion is rather than the Salah every other action if the person leaves it he is a sinner يعني he is doing major sin or he is doing a sin the second point that I want Insha'Allah in today's class the condition the prerequisite of fasting being obligatory what is the prerequisite for Ramadan to be obligatory يعني what does what must be in place before Ramadan can be obligatory upon a person when does fasting become obligatory on an individual so this is called what it's called شرطو الوجوب شرطو الوجوب is different from what the أصوليين call شرطو الصحة okay we're not talking about شرطو الصحة and we're not going to go into what that is we're now just going to talk about شرطو الوجوب means what is a condition for fasting to be obligatory on you the first thing is there are five and the first one is الإسلام the person must be a Muslim fasting is obligatory upon a Muslim that's what Allah سبحانه وتعالى يا إيه الذين أمن كتب عليكم الصيامة all those of you who believe fasting was made obligatory on to you يا إيه الذين أمن الإسلام is a prerequisite for the fasting to be obligatory on you number two العقل the person has to have sanity فلا يصحر صوم مجنوني fasting is not right and it's not accepted and it's not obligatory on an insane person the reason is because sanity takes the mind and the mind is needed for the intention of fasting as we're going to touch on later one of the pillars of fasting is امية intention and if the person loses their sanity they lose the intention and if they lose the intention their fasting is so because of that the person who is insane the fasting is not accepted from them even if they fast and it's not obligatory on them and the evidence for that is the hadith of Imam Abu Dawud narrated in his Sunan that the Prophet ﷺ he said رفع القلم وعن ثلاثة the pen is lifted from three عن الصبي حتى يبلغى the child until he reaches age of puberty وعن نائم حتى يستيقظى the third one who is sleeping until he wakes up وعن المجنون حتى يفقى and the insane one until he regains consciousness so the insane fasting is not accepted from him nor is it obligatory on him or her the third one is البلوخ reaching age of puberty فلا يجيب الصوم على الصغيري fasting is not obligatory on the child حتى يبلغى until he reaches age of puberty لكن إذا كان الصبي يموم يزن if the child has reached سن التمييز and he can distinguish one thing from another he's smart, he's clever he's eight, he's seven, eight, nine and he fasts صح صومه he's fast he's correct and he's taken into consideration but it's not obligatory on him if the child has reached age of puberty fasting is not obligatory on him but if he fasts and he's reached سن التمييز he's a مميز then his fasting is correct إن شاء الله number four القدرة على صومه that the person has the ability to fast فلا يجيب الصوم هو not obligatory it is not obligatory upon من لا يقدروا عليه the one who hasn't got the ability to do it there's some type, some people who are unable to fast they don't have the ability like the sick person whose illness is chronic and this is an illness we're not hoping or the doctors are saying that this is going to be forever this person is one who doesn't have the ability to fast he hasn't got the ability to fast so the fasting is not obligatory on him anymore in order for you to fast you have to have the ability to fast and the fifth prerequisite that makes fasting obligatory on you is عدم المانية there should not be a preventative factor preventing you from fasting such as الحائضة ونفساء فلا يجيب الصوم على الحائضة ونفساء the women who are on their menstruation or on their postnatal bleeding fasting is not obligatory on them why because حيب menstruation and nifas are preventative factors that prevent a person from fasting so because of that a person or a woman who is on her menstruation fasting is not obligatory on her fasting is not obligatory on a woman who is on her menstruation or a woman who is on her postnatal bleeding she's just given birth she's on her 40 days 40 days of bleeding after giving birth that woman also must not fast fasting is not obligatory on her and she shouldn't even try to fast because she will be going against what Allah and His Messenger have set for her so we've done الحمد لله 2 points so far the first point I spoke about the ruling or the evidence to prove that fasting is obligatory the second point what I spoke about is the prerequisite for fasting to be obligatory on someone I'm going to swiftly move on to the third one which is what are the pillars of fasting now we have to know the difference between شرط and رقن شرط is a prerequisite and رقن is a pillar the شرط and the رقن have something in common and they also differ on something as well what they both have in common if a شرط is missing then the act is null and void so if the prerequisite is missing then the act of عبادة is null and void the same way with the pillar if the pillar is missing then the act that you're doing is null and void for example the prerequisites we mentioned 5 prerequisites 5 prerequisites for fasting if any of those 5 if one of it is missing then the fasting is null and void the same with the pillar the 2 pillars that I'm going to mention for fasting if any one of them is missing then the act is null and void so they have that in common the difference between the 2 is that the prerequisite is before the action whereas the pillar is part of the action it's in the action and both of them also have something else in common which is if the person deliberately goes against any one of those 2 they could be a sinner for it or they are a sinner for it I hope you understand this point now I'm going to go on to the 3rd point in our today's lesson or today's episode which is the pillars of fasting the pillars of fasting the pillars of fasting are 2 and they are number 1 annya intention intention is a pillar it's a pillar that every single one of us has to come with we have to have the intention of fasting and the evidence for this is the Hadith of Imam Uddara narrated in his Sunan حديث عائش رضي الله تعالى عنها the Prophet ﷺ he said ملم يبيت الصيامة قبل طروع الفجري فلا صيام له رواه الدار قطني anyone who doesn't come with an intention before the sun rises before the sun rises okay فلا صيام له that person hasn't got any fast يعني before sunrise you have to come with the intention if you do not come with it then don't consider that day a fasting that's the first pillar the second pillar is المفطرات with holding and avoiding and abstaining from the things that break your fasting which we will talk about in today's session in today's episode you have to stay away from the مفطرات the things that break your fasting are we going to mention that they are 10 things you have to abstain from those 10 things you need to stay away from those 10 things or else your fasting will break and the evidence for that is الله سبحانه وتعالى what he said complete your fasting until night يعني until مغرب you have to complete it completed here means to stay away from the things that break your fasting so those are the two pillars that you have to come with the first one is منية intention الحديث عائشة عن النبي صلى الله عليه وسلم قال من لم يبيت الصيام قبل طلوع الفجري فلا صيام له the prophet صلى الله عليه وسلم he said anyone who doesn't come with an intention before the sun rises for fajر فلا صيام له that person doesn't have no fasting رواه الدارة قطري ودارة قطري narrated and the second one is الامساك عن المفطلات staying away from the things that break your fasting and the evidence for that is قوله تعالى complete your fasting until night الله سبحانه وتعالى now we're gonna go into the fourth point that I want to insha'Allah cover in today's episode which is مبطلات الصوم the things that nullify your fasting what are the things that nullify a person's fasting the things that nullify a person's fasting are 10 and we're gonna go through those 10 the first one is الأكل عمدن to eat deliberately the second one is it is to drink deliberately the third one is الجماعة to have sexual intercourse if a person eats or drinks deliberately or has sexual course their fasting is broken as for if the person he drinks or he eats and he has forgotten فلا يبطلو صومه his fasting is not the nullavoid and if a person forgot they went and they just drank 8 and they forgot that they are fasting then this insha'Allah it does not nullify your fasting based on the حديث لمام البخاري and muslim both narrated من نسيا وهو صائم فأكلأوا شريبة فاليوتم صومه فإنما أطعمه الله وصقا anyone who forgets and then goes and eats or drinks and he's in a state of fasting فاليوتم صومه complete your fasting فإنما أطعمه الله وصقا الله is the one who gave you this risk it's Allah who is providing for you it is Allah who is nourishing you carrying your fasting you're not held account for it the fourth is تعمد القيب to deliberately vomit the prophet SAW he said وانستقاء فاليقضي sorry he makes himself deliberately vomit then he needs to bring back that fasting رواه أبو داود والترميدي الإمام أبو داود and ترميدي both narrated this so deliberately making yourself vomit breaks your fasting like some people do some people whenever they eat they like to bring out whatever they eat انزالوا عن مباشرة أول استمناء انزال means إجاكلة هذه إجاكلة يمكن أن يأتي من مباشرة أن يأتي يأتي إلى الوصول مع your spouse or your partner and then that results to some إجاكلة or it coming from masturbation whichever way it comes that the person ejaculates of course it's deliberate and the person is doing deliberately then this person's fasting is نالانبويد whether it comes from kissing or touching or it comes from it doesn't matter this breaks your fasting but if the person has a wet dream while they are sleeping then you're not held account for it if it happens to you whilst you're sleeping then this is not what you held account to it's when you make yourself reach ejaculation number 6 and number 7 which is حيض ونفاس حيض ونفاس both of them have the same ruling which is they break your fasting the prophet SAW أليس إذا حاضت لم تصلي ولم تصوم isn't the woman when she's on her menstruation she doesn't pray nor does she fast so the نفاس takes the ruling of the حيضة the نفاس and the حيض take the same ruling number 8 is الجنون insanity if the person جن في نهاري رمضان he becomes insane whilst fasting يضطل صوم his fasting becomes مالانبويد because he loses what he loses the intention the intention is a رقن it's a pillar and once you become insane you are no longer conscious so you lose the intention which makes the fasting نلنبويد number 9 is الريده apostasy فمن يرتد عن الإسلام فقد أفضل ولا خلافا في دالي anyone who apostates from Islam leaves the religion of Islam and fasting becomes نلنبويد and there's no dispute amongst the scholars regarding it الله سبحانه وتعالى سنة القرآن ومن يرتد منكم عن ديلي فيمت وهو كافر فأولئك حبطت أعمالهم في الدنيا والآخرة وأولئك أصحاب النالن فيها خالدون anyone who apostates from their religion and they die in that state state of kufr فأولئك حبطت أعمالهم وننلنبويد في هذا العالم ومن hereafter and they are from the people of the health fire and they will stay there for it number 10 which is the last type is حقن الغذائية if a person takes insulin or if a person takes nutritional substance that are plugged into his body which takes the place of the food he takes an injection and this injection gives him glucose and it gives him nutrition this breaks your fast because it is a substitute for food but if what you are taking does not give you nutrition nor does it is not a substitution for food then this does not break your fast okay this does not break your fast but if it is a supplement that go into your body that you inject yourself into or even you take droplets into your mouth or all of this they break your fasting because they do exactly what food it does those 10 are the 10 things that break your fasting they are considered and they are seen as the nullifiers of fasting now now we are going to the last part of today's episode which is يباح الفطر في رمضان who are the people who are allowed who are permitted to insha'Allah تعالى not fast in Ramadan they are excused they don't have to fast the obligation does not apply to them and they are five asnaf five types of people يباح الفطر في رمضان لخمسة أصناف in وهم to break your fast they are only permitted for five types of people they don't have to fast in the month of Ramadan the first one is المريض والمسافر والحامل والمرض والعاجز عن الصوميلي كيبرين and the fifth one is الحيض والنفساء those are the five those five they don't have to fast let's start with the first one the first one is المسافر they have the same evidence the مريض is the sick one and the one who is a traveler الله says in the ayah ومن كان مريضا أو على سفر فعدة من أيام الأخر the one who is sick and the one who is a traveler they have to bring it back another time so they don't have to fast that's the evidence for the sick one and the traveler الحامل والمرضع the one who is pregnant or the one who is breastfeeding she doesn't have to fast والعاجز عن الصوميلي كيبرين and the one who is unable to fast because of an old age the evidence for number three and number four number three is what الحامل والمرضع the one who is pregnant or breastfeeding that's number three the one who is unable to fast because of an old age so three and four the evidence for that is دعوة الامام أبو داود نريت لنستنن لحديث سعيد من وجبير عن ابن عباسل رضي الله تعالى عنهما لك عبد الله ابن عباسل when he came to the ayah وعلى الذين يطيقون وفيدية طعام ومسكين he said كل يوم من مسكينة والحبلة والمرضع إذا خافتها إذا خافتها أفطارتها وأطعمتها he said عبد الله ابن عباسل this is الرخصة for the old man وعلى الذين يطيقون وفيدية طعام مسكين the ayah is talking about those who are unable to fast they are going to give فيديا فيديا every day they are going to take care of a مسكين every day one مسكين every day so عبد الله ابن عباس tells us who are these people he said كانت رخصة للشيخ الكبير so the old man or the old woman who is unable to do it وهم يطيقان الصيامة أن يفطر ويطعم مكان كل يوم مسكينة والحبلة the one woman who is pregnant he said والمرضع the one who is breastfeeding إذا خافتها if they are both scared افطرتها واطعمتها if both of them are scared the pregnant woman and the breastfeeding woman are scared they both have to break their fast and each day they give food to a مسكين the last one which is the fifth is الحائل ضوان نفسا the women who are on their menstruation or postnatal bleeding which is the fifth one this is based on the حديثة which I mentioned before that the prophet صلى الله عليه وسلم said الحديث إذا حاضت لم تصلي ولم تصم فذلك فذلك نقصان دينها that the woman who is on her menstruation or her on her postnatal bleeding that woman she doesn't pray nor does she fast and that is what reduces from her religion and that is why her religion is reduced as the prophet صلى الله عليه وسلم said so those five those five quickly are what المريض والمسافر والحامل والمرضع والعاجز عن صوم الكيبارين والحائل ضوان نفسا these five the first one is the sick individual the second one is the traveler the third one is the pregnant or the breastfeeding mother the fourth is the elderly individual the male or female doesn't matter and the fifth one is the woman who is on her menstruation or her postnatal bleeding those they don't have to fast fasting is not obligatory on them they are excused today's class إن شاء الله that was the plan I wanted to cover those five Jewish Spooner rulings I hope I've given the topic justice anything I might have said that was wrong or incorrect is from me الشيطان and his messenger are free from it سبحانك اللهم أشهد أن لا إله إلا الله أستغفروك وأتوب إلي السلام عليكم if you're enjoying these videos and you'd like to keep up to date with all of the courses we're going to be running make sure you head over to amauathome.com


Hey everybody, welcome back to the channel today I'm going to be talking about the top five terminal apps that I use every day So these are just five really cool apps that I've just decided to work into my workflow and I thought I would share them So let's go ahead and jump right in but first First of all hit the subscribe button if you haven't subscribed We just hit 2,000 subscribers and I'm super excited about that So thanks everybody who has subscribed if you haven't subscribed yet Make sure you hit the subscribe button and we're also on odyssey So you can check on our odyssey and library and all that stuff The links will be in the show notes below if you'd rather not deal with YouTube nonsense So let's you go ahead and jump right into the topic for the day. Shall we? Okay, so the first one that I want to talk about is NC spot so NC spot is a terminal Spotify client and Really that's exactly all it is and that's all you really should have to say about it So if you use Spotify premium, you can use this in your terminal And you can play all the songs that you've saved to your library or playlists The only thing it doesn't really do as far as I know is Stations so it will actually show you similar tracks and stuff But it won't show you like a radio station But it will it will go through and it will show you all of your Playlists and it'll show you your podcast that you've subscribed to I believe it will actually show you the most recent podcast in there Yeah, I'll show you all the most recent podcasts actually so that's kind of really cool I don't actually use this for podcasts, but you could use it for podcasts if you're Subscribed to all your podcasts on Spotify speaking of which the Linux cast is on Spotify So if you want to subscribe there you definitely can so It also has like if you wanted to add stuff to your library you can search by hitting f2 So you can you do f2 and then you can search for I don't know And it will show you everything you you need to know about breaking Benjamin all their tracks Albums artists stuff and you just press oh in order to get into the artists and Just go like that and then backspace to get to the where you were before what I like about it Is that it's fast it doesn't take up a lot of resources like the Spotify client does Because it doesn't deal with electron and all that kind of container e-bull crap So NC spot is the first one that I want to show you the next one is Ranger now Ranger is a terminal file application file manager and I use this pretty much every day so much so that I have it bound to a key binding that will actually open up in a scratch pad so If you don't know what a scratch pad is I have a video that I did on scratch pad, which I'll link in the cards above But basically Ranger just allows you to browse your files now In theory you can go through and have like It does have image previews by default so you can turn those on and it will work That's Ranger the only thing I really wish there was like drag and drop capabilities in this now There is like supposedly like a plug-in or something that you can go through and Put in there and it will actually allow you to drag stuff out of Ranger and put it into like Firefox or something But I've never been able to get it to work I still have to have a visual file manager on hand in order to do all that kind of stuff and unfortunately that means that I always have Nemo open up opened up so sometimes I just use that but when I just need to find a file Or I need to edit like a text a text file or something like to go to a documents. I'm sure I have something here I Got I have a couple strips that I could just go through you know and just open it up just like that That's what Ranger is good for for me. So that is Ranger. The next one. I wanted to talk about was neomutt now Neomutt is an email client and I have two email accounts attached to it and basically just allows you to Access your email through the terminal and there's a lot of stuff you can do with it You can send Encrypted emails and stuff like that with different plugins that you can add I'd also have a video on how to set this up with Gmail if you want to check that out And this is my email client now with all the HTML stuff that comes through It's not the greatest. So I do have links installed. So it will actually show me some of the HTML content But it's still not pretty. So if you're Mostly get HTML stuff into your email inbox. This may not be the best for you But if you're looking for something that's not so heavy like Thunderbird Neomutt is a good option Now the next one I want to talk about is be pie top if I can spell yeah, and this is be pie top This is a system resource monitor It's awesome. It's pretty it has a whole bunch of different modes so that you can make you can kind of change What it you know how it looks like it has different themes so you can do a Different themes you can do a Dracula Adapta great scale Solarize dark white out matcha Monokai flat Remix light, you know, just a whole bunch other ones and it's just really cool I mean it shows you your system temperatures which mine's running pretty hot right now because I have audacity and OBS running in the background I almost always had this on a You know either a scratch pad or On on a tag somewhere so that can just kind of keep an eye on my system monitor Or on my system status and stuff further So that is be pie tops. So that was for the fifth one is an app called Pulse mixer now If you know anything about my Linux story, you'll know that I Have problems with Linux audio all the time and just today I had another situation where I plugged in a new camera and For whatever reasons reason Linux has decided to make that camera the default audio input source And I had to change that so and I changed that using Pulse mixer so basically it allows you to see your inputs Here's your outputs inputs and the cards you have attached your computer and then you can scroll through them You can change the volume by hitting enter you can go through and hit you can set new things as default change What's being used by the system by default that's Pulse mixer very simple I should probably not close that so fast, but I use this all the time because I have my Dac hooked up all the time my headphones hooked into the deck all the time But sometimes I don't want to listen to my headphones I actually want to listen through the speakers that are up there in my you know on my shelf So I have to go through and change the source. I Can't just unplug my DAC.  I went through and I showed you NC spot I showed you Ranger. I showed you Neo mutt. I showed you be pie top and I showed you Pulse mixer. I think that's five Neo mutt Neo NC spot Ranger be pie top pulse mixer. Yep, that's five. So That was just a real quick video those are five of my favorite terminal applications I Tend to always try to find a terminal alternative to whatever I'm doing if I can't so Especially things that are gonna be kind of something that I use all the time So if it's like email or if it's music or whatever, I want to use that in the terminal if I can just because I Like terminal applications. It's not necessarily because they're always better because they're not always better there's usually there situations where you want a obviously a Graphical file manager or you want a graphical term Graphical email client So, I mean there are situations where the terminal stuff isn't the greatest but for me it just I like having that stuff and I like The ability to put them on scratch pads or close them or bind them to keys or run them in scripts or whatever and It's just for me. That's the way it works So in the comments below if you have a terminal application that you particularly enjoy or two or three Shot them out. I'd love to I'm always loving to try new stuff. So And I really highly enjoy our conversations down there. So thanks everybody for Participating in the in the community that seems to be growing pretty good. Thanks DT Make sure you subscribe to us on Twitter at the Linux cast at the Linux cast on Facebook And you can support us on patreon at patreon.com slash the Linux cast I would like to also thank our current patrons Devon Marcus Merrick Camp 514 Thanks for your support. Thanks everybody for watching. I'll see you next time


Kim has since maintained the monastery vibe of this Hidden Hills family home, considering she bought out her ex-husband after they separated. She has continued to put her touches on the property, and she posted a handful of interior shots in late 2022. For Halloween 2023, Kim even shared the creepy vibes she decorated at her mansion for the holidays, and she went all out. She even added another haunted house to the back of her house. Despite how minimalistic the mansion might look now, also noticing a lack of stuff or belongings, before Kim and Kanye got their hands on the place, it did in fact look like your average, wealthy mansion with plenty of furnishings.


What's good everybody Chris from jassescasebreaks.com doing twenty twenty two twenty twenty three pinny select basketball six box half case break PYT number five number five will be the first six boxes from a fresh case We're all good to go. The only thing we'll have to do is randomize which half of this case. We are doing So the other half of this case on the side right now PYT number six on the site number five all good to go Thanks again to everyone for grabbing a spot Jackson with the Knicks and Rock It's the last spot mojo's grabbed a lot of teams at the end there to get the ball Rolling and going for sure. So thanks everyone. Jackson big. Thanks to you as well Case right here So this top row will be the row on the left bottom row the row on the right We'll roll this blue dice and randomize which half we're doing so one two and three Will be the side on the left four five and six side on the right. Good luck y'all It is a four. So I'm gonna grab a marker See you this side Put the X's on them For PYT century problems do Six that six right there. We came from the same case five Like I said on the side right now jasses case breaks calm The last two this one and number four. We didn't have to have a filler for it. So Appreciate that all the time But let's get it going right here and right now NBA season officially over. So now we just get to talk about offseason stuff Free agency window opens tomorrow, but the big news that came up about half an hour ago James Harden Ops into the last year of his deal that ops into his player option with the Sixers So they can work out a trade to get him out of here So James Harden for the fourth time in his career We'll be treated somewhere It'll be interesting to see I think the Rockwoods are linked to him Obviously, it wouldn't be suppressive the quippers kind of go all in and grab him For one last from a PG in Kauai would here we go number five. Good luck y'all First Paul Bank era Joan Brunson on the try color the tricolor is a non numbered always sharp though First Paul Bank era Sean Traumatic grab the magic all these teams grab straight up. So thanks again y'all Let's get some color on the cover boy though our rookie of the year first hit CJ McCollum Portland Trail Blazers edition on the throwback memorabilia I think all these throwbacks are game used. So nice CJ McCollum non numbered game used right there at the bottom Go to Portland Jackson and nice Blue Scopes a little color match on the Jade and Ivy rookie for Detroit. It's going to Edward Nice one here 88 out of 249 nice start for our rookie color Jane Williams Like runner-up and give the air going to okc and Jackson Jabari Smith future Go to some of the tricolor We're in Ingram scopes. These are non numbered as well and one more Jabari Smith, Jr All going to Jackson in the Rockets the out of some of going to the Bulls and Jackson or marketing scopes White on the Tyrese Maxi for the Sixers and Jackson. We're making it a personal so far 106 out of 149 Shaden Sharp Christian Brown NBA champion for the Nuggets Shaden Sharp going to the Blazers and Jackson first next auto coming up here is Is Jalen Brunson nice 45 out of 99 on the X factor purple patch and auto Could have been a real case for him being a third team all NBA. He was so good this year Jalen Brunson 45 out of 99 going to Jackson and the Knicks So it takes Jackson for the last spot mojo one one-quarters all it takes One more a to some room tricolor next up Paul George throwback patch Oh, what a nice one coming up to Paul George's Pacers edition Paul George. It's going to David Non-numbered and how about a tie-dye LeBron James? I had a sharp right there for my Lakers Ryan Got the Lakers very very nice the King 8 out of 25 nice man. Congrats That's what the stack here when our zebra already first box in behind the Paul Bank hero Gonna be Shaden Sharp. Wow Shaden sharp on the zebra for Jackson and the Blazers. Congrats, man whoo That is a sharp card nice one man Congrats I'm so funny. I really am Nothing funny about that one though Jackson congrats again That last six box break that we did number four full of Shaden Sharps, too For Jackson's sake it's more We will see that with that Blazers team. I do think that team is still pretty solid. Obviously Dame Lillard atop 15 player in the league maybe a little higher maybe 10 We'll see what they do with Shane Sharps or Anthony Simons. Maybe even Packaging together with Nurkitsch for trade, but obviously land scoot Henderson at three kind of the perfect situation Shaden sharp who is already like Kind of a psycho when it comes to basketball like he is so Passionate about the game and being better. He couldn't have got a better mentor in Damian Lillard. What about What about Anthony Simons and pieces for James Harden might be a potential landing spot box to Cat on the tricolor jade and ivy Jeremy so hand First hit is a car. We have any towns Select swatches a little neon green patch there for the T Wolves and Steve Amused the show hand rookie going to ed p in the spurs One more J. Nivey for Ed and the pistons Edward excuse me and the cat And one more piston nice red die cut Jalen Dern have a nice rookie for the pistons. It's going to go to Edward 55 out of 175 J. Nivey tricolor is a nice one Tricolor Levine Who may be on the move as well Malachi Brannum draft selections blue It's going to ed p in the spurs 45 out of 75 little color match on the Dijonté Murray for the Hawks and Marcy 57 out of 199 Another zebra nice for Marcus smarts his last Celtics card Potentially here Boston addition going to Matt Hey, congrats again Jackson Marcus smart on the zebra Two zebras first two boxes Doesn't bane tricolor and a purple die cut so you give the devil he shall appear James Hardin Filly addition not for much longer Still going to Jackson the 51 out of 99 As a first Chet Holmgren next auto second year in-flight Alperin sangoon for Jackson and the Rockets Nice second season for sangoon 22 out of 99 Oh, there's so hand for the spurs in our first Chet Holmgren Jackson got the thunder big one there on the concourse Chet Holmgren Tony Kent must have heard me uh Talking trash here. He'll be up next.  All right box three. We got Thickey right there. See if we can get something nice and low number or someone Second Chet Holmgren for Jackson Got the jet Jason Terry x-factor patch and auto This is Mavericks edition On the jet it's going to go to Francis 101 out of 199 for the NBA champ And an orange die cut Jason Tatum Jason dude Jalen Brown, excuse me wrong J 39 out of 65 on the JB One more for Matt and the Celtics so ham Caleb Houston on the tricolor Not the magics rookie that we're looking for nice That's a silver looking for the Apollo Bank here a nice silver rookie here For shamanic and the magic Concourse level on the polo silver One more for the Rockets 11 out of 25 on the rookie tie tie washington jr tie-dye tie-dye die or die tie-dye or that's not a little bad. Let's go tie-dye-dye Tie-dye Washington 11 out of 25 on the tie-dye rookie signatures, and there's a Jason Tatum Some more rookie color nice purple die cut for jaden hardy Mavericks edition nice Mavericks rookie for Francis 79 out of 99 That's a moment in the second half of that season.  All right second half of the sixth box here Pretty a nice color though A couple tie-dyes. Let's keep it going. Let's see if we can get a little lower. Yeah They were thicky like that at the bottom would be something nice for someone box four here Let's get something nice. Shall we first up we got ryan rollets Silver rookie signatures for the golden state warriors and shon Very active this deadline so far to 20 out of 249 between this off season Got a white jam orance for menfess and jerry 19 out of 149 First keegan murray never remember seeing Keegan Murray for the kings ben gets all the keegan murray is in a tricolor scottie barns for the raptors and jackson michael brogdon tricolor Are thicky here. Good luck y'all for rj barrett On the gold Patch and auto for the new york nickerbockers That's a jackson last spot mojo two color patch there seven out of 10 On the rj nice Damian louis select swatch silver not numbered for the blazers and jackson blue die cut yannis Onto to kumpo milwaukee bucks and bryan The two-time mvp 117 out of 249 shade sharp rookie usman jeng lime green benedict mathrin nice nice rookie color here so far david david batterina with the benedict mathrin 60 out of 75 lime green concourse rookie Very nice Josh's also had a 472 foot home run earlier this game All right box five second to last box here folks Let's keep it going a couple tie dyes got our first gold finally See if we can keep getting lower 48 out of 99 on the patch auto second year evan mobley Cleveland catalyzer and ryan nice patch auto scottie barns one more tricolor One more shade and sharp for jackson Next auto gonna be jaylin rose nice throwback there Pacers addition on the jaylin rose one more for david b Got to give the people Give the people what they want 44 out of 249 red andrew wiggins For the warriors 82 out of 199 next paulo had a And flago tray young tricolor christian wood christian christian what she's Going to the maves and francis the tray young going to marcie and the hawks one more paulo bank carol for Sean and the magic the more shade and sharp for the blazers and jackson scopes tar eason jaylin durin on the draft selections patch for edward and the pistons blue die cut desmond bain One more for the grizzlies and jerry joe levin out of 249 bain ivy tricolor andrew nemhardt other Bigger rookie for the pacers he can write tricolor for the kings Blue kaleb houston don't color match there on the blue scopes One more for shawna the magic 137 out of 249 Greetings. What's up, joe? How's it going? It's going going well It's my uh my friday happy friday joe Your thursday It's actually my wednesday your wednesday I'm i'm going to be cooking in the lab here. Whatever day it is It's a good one. It's a good day today. Today is a good day. It's gonna be worse What are we? Where do we break in here? First six boxes a fresh case of select basketball five That's a nice look in this case so far With our last box our sixth and final box here and then joe will be taking care of you Finally lovely people so take your time. You take care of him. They'll take even better care of you It's my time to go. I am hungry.  I got some mint leaves I got some lettuce for some lettuce wraps. I got a uh Little kimchi salad for on top of that Some red bean paste to go with it too Just a lot of different textures a lot of different flavors And the pork belly, you know a little fatty, which is how I like it like a little fatty pork belly I mean Look at me, you know, so I'm saying a little fatty pork belly over here. You know what I'm saying Yeah Here's so we are so back. We are so back. Maybe I grab a Have you been watching the bear I agree this isn't a spoiler, but one of the episodes mentions a sprite And I've really actually been craving a sprite since then so yeah Little what the crispity or freshity flavor of lemon and lime This break sponsored by sprite. Wow Got a thickie here too. One more thickie here for someone.  So I was a tough one Better than math or in the future found of a Mitchell on the scopes J. A. Y. When Williams on the tricolor Halley on these silver Sensations all in all I feel like you know since the season's over Pretty good rookie class Like all of these kids are going to be at the very least pretty solid, which is what you want a Deep class between of rookies rookie auto. Johnny Davis silver for the Wizards and Matthew 123 out of 249 part of a very very new core Those washington wizards going to be a brand new team next year Jordan pool added in there Some suns some new picks We'll have to see about them Clay Thompson tricolor SGA tricolor And another die cut.  He is not in the uh, he had tell him basketball federation Uh, not too pleased about it. He apparently who is he playing for that? He's playing for america. He's playing for us Believe so. Wow There we go One more great parallel to end it.  Nice stuff. There we go Pretty great six boxes First six boxes from this case pyt six the last half of this case on the side right now I think down to double digits That should be a little bit closer. Let me double check before we call this one. Yeah 10 teams left straight up Grab your teams up before we throw those into a team random though. We have been filling these out without one so Pretty great six boxes though that polo so nice. Congrats to sean Some nice tie-dye some gold is keeping murray on the tricolor Wine green benedict matherin the gold rj baird patch auto two zebra stripes Tie-dye jammal murray patch to tie tie tie die brookie auto there we go How to think about it Marcus smart on the zebra Jalen during red dye cuts The shaded sharp zebra how sharp is that get it? That's a good one right there. The brawn james on the tie-dye Nice jayden ivy blue scopes and all the way back to our first very first pulp and cure a great break Thanks again y'all jassescase breaks.com for pyt six and more. Thanks again. Have a good one. Bye


So thank you everyone Georgius I do product for Sigma and I'm gonna talk to you about how bridges can improve well to composability So let's look at some numbers about the L2 growth. So at the moment, there are more than 20 roll-ups on top of Ethereum and All the total value locked which is a good proxy for user adoption is like around 6 billion which is Around one-fifth of what minute is So that shows like that is going quite well And two of the most important roll-ups like Abritum and Optimus respectively they have more than a hundred and sixty dApps on top, right? However, there are some side effects. So All these protocols and dApps are silos across all these roll-ups. So so the liquidity is fragmented and The end user experience across using all these roll-ups is not so optimal. So it looks like there is a trade-off between low fees and high transaction throughput Overcomposability. So what is composability? it's yeah, in other words is the money Legos like it's what fuel the theorem growth all these years and Yes, we can simply see here is on L1 how our yield aggregator and can use a DEX or how Lending protocol can use a standings protocol I can build on top, right? And as you can see here L1 is yeah There is composability on L1 and all these optimistic or zk roll-ups different ones The there's also composability inside them, but not across them, right? So that's The issue just described Yeah, so as an example these are four of the most popular Protocols and we see that they are developed. They are deployed on Ethereum and the roll-ups and yeah, at least two of the roll-ups But all these deployments are separate from each other, right? They cannot communicate with each other. There is no connection between them so you can see the the L2 ecosystem is Quite huge quite thriving and with all these kind of apps like DEX is yield aggregators NFT marketplace synthetics, but it's fragmented And here's an example use case from from a user perspective, right? So a user has some liquidity on curve, let's say on Arbitrally when a movie to optimism to do that they need at least the 13 transactions like wallet confirmations And they need to wait seven days for extender roll-up And of course they need to pay the exit and the interface right on main net What has been the the role of the bridges so far Apart from the canonical bridges that are at least 10 bridges for roll-up hoping or this So we solved two of the problems So you don't have to wait seven days anymore, and you don't have to pay the enter and exit fees But all these 10 13 separate transactions still exist So what we propose is you know that the bridges should move away from just this year C20 token bridging and Focus more on message passing right so how do you pass messages from an L2 to another L2 or to L1 and Yeah, the end game of that is yeah, you can call them the cross roll up money Legos, right? So it's this is the same Diagram we saw before but now You can basically use a dex on L1 to communicate with derivatives protocol on an L2 right and and all these kind of Seniors over there So yeah, the the benefits of these cross roll up composability from for the end user would be the they don't have to manually breeds anymore for any kind of cross roll up transaction like a token swap or moving the liquidity or any kind of governance actions like voting or market-making or Money market transactions like lending or borrowing not having to move the collateral Or NFT marketplace is they can market the market the NFTs wherever they want in wherever and L2 they want So how this could look like? So this is yeah our proposal like a cross roll up composability layer and you can see on top is one Imagine like one roll up on top and another roll up Below and in the middle is the relay. So it's basically off-chain Relay a network and the main concept here is that you have generic message passing smart contracts developed on both deployed on both roll-ups and You have the so-called Adapter contract which will prepare and parse the necessary messages, right? So this The setup will help any smart contracts from from one open from one roll up to communicate with another roll up or even with layer one Yeah, so That was basically it Lightning talk. Yeah, we can have some question. I don't know how much we have one. Just one question. Yeah. Yeah in case There's a question. How does the relayer maintain? L1 level of security like you mentioned. I didn't mention that it maintains L1 security But yeah, there's several kind of setups, right? So you can you can have a fully trusted setup You can have a trust minimized setup with you know kind of optimistic model Or a zk model. So yeah, I mean if you refer talking for this specific Proposal we're doing, you know, we're starting with a kind of controlled setup and we are exploring Like optimistically, you know Putting the state back on L1 or you know using zk. So this is something they still work in progress Thank you so much big round of applause for your guys in sigma