I seek refuge with Allah from the accursed devil. In the name of Allah, the Most Gracious, the Most Merciful. I pray to Allah for our master, our prophet, and our family members. Thank you all dear sisters and brothers for joining us this evening. Often times during the holy month of Ramadan, we talk about concepts like that of the grave and like that about death and like that about the transition from this world to the next. And often times when the first word that we hear is death or grave like is often mentioned within our da'a and supplications and from the pulpit and so on we immediately negatively connotate it with something that is very dark and something that is very distant from us. And the reality of the situation is such that our relationship with Allah subhanahu wa ta'ala is a relationship between a lowly slave and that of an all merciful, all generous, all compassionate creator. And our approach toward understanding about God from a very elementary state when we're very young is often again that of distance.  Instead of the reality that we find within the traditions of Ahlul Baith alayhim wassalaam that rather talk about Allah subhanahu wa ta'ala being someone who cares for us being someone who wants us to attend or reach or kind of get to the heights of human perfection. You see Allah subhanahu wa ta'ala created the human being not to live in this world but rather it's a transitionary state between this world and the next world. The end goal is for us to attain paradise and the company of Muhammed and Wa'ali Muhammad. And you see that the human being, when you take a look at our traditions, that we have been through so much in reality. Allah subhanahu wa ta'ala created seven dimensions of life for us. The first one of these is what is known as alam al-anwa when we're Allah subhanahu wa ta'ala created our lights in the celestial realm. Then thereafter he transitioned us into what is known as the alam al-dur, the world of spirits where Allah subhanahu wa ta'ala put us through certain examinations and tests. Again, according to Hadith, these were 2000 years before the creation of the physical Adam, alaihi sarah, physical Prophet Adam. The third life was what is known as alam al-arham or what is known as the life in the womb of our mothers. Then we made a transition into what is known as alam al-dunya, this world that we are in at this moment which we're going to be living in here for 60, 70, 80, however many years. Then thereafter we live in what is known as alam al-barza, the fifth, the world in this group. Then thereafter we live in what is known as alam al-qiyam, the day of judgment which according to traditions is 50,000 years. Then thereafter we enter into alam al-kulit or eternal life again, inshallah, paradise in the company of the messenger and his family, alaihi sarah. So the big question that you want to reflect upon then at this moment is we go through a lot. Our souls experience so much. Why is it that many a time we feel so scared or we feel so worried or we feel so distant from a reality that there's absolutely no doubt about in this transition to human perfection? I often liken it to this example. I mentioned before the world that we lived in before this dunya is that we lived in the womb of our mothers, alam al-arham. We lived there for nine months, for instance. If we were asked when we were in the womb of our mothers whether we would choose to be in this dunya, naturally, probably because we were so comfortable, we were closest to the person that sustained us and that cared for us, our mothers, that we were warned, we were fed normally, often. There was not a lot of drama that transpires in that space, at least for us, of course, for our parents and others. It's a completely different story. If we fast forward 30, 40, 50 years, however old you are, and I ask you this question today, would you prefer to be exactly where you are right now or would you prefer to be in the womb of your mother? Allah's panah wa ta'ada has created this life to be a life of transition. That life as wonderful and as comfortable as it was, we could not live there forever. We could not be there for 30, 40, 50 years, even though on really difficult bad days we might tell ourselves, oh, you know what, I wish I could go back. Generally speaking, we're able to be exposed to the sun, to the moon, to the stars. We live our own lives. We have families, spouses and children. We get to eat all this delicious food, not just through two, but when we were a fetus. Allah's panah wa ta'ada has created this creation so that we're seeking and attaining affection. And that has to be through the transition of numerous stages that we go through during the course of our life and during the course of our distance and our pathway to traversing and seeking closeness and proximity to Allah's panah wa ta'ada. So I want to focus on a couple of questions very briefly this evening. Again often connotated toward this conversation around death is that we talk about punishment, is that we talk about graves, is that we talk about the response of the angels that we need to give when we enter into the grave. We talk about eternal punishment and so on and so forth. And again, often these things are so negatively connotated in our mind, but if we're believers and we're striving on the path toward getting closer to Allah's panah wa ta'ada, the bigger question is why shouldn't we think about death and why shouldn't we reflect upon it in a way that's very different. And again, this is what we learn from Mahdur Bayt, alayhim sallam. But even before we ask that question of why should I sit here and think and contemplate about death, a prerequisite to that question is to ask why not talk about life? A lot of people, they say, why are we always focusing on death? Let's focus on life right now. In reality, what is life except for death? Again, it is a certainty unlike any other certainty that we can ever experience during the course of our lives.  Again, for the believer, you see there's a transition from this world to the next. Darun ila dar. So then, again, why should we talk about death? Because it's a guarantee and it's something that naturally we are walking toward, we're breathing toward at every step and every moment during the course of our lives. We're getting closer to that than actually the reality or the opposite of our birth, meaning we're closer to death than our birth. And when we want to reflect a little bit upon this notion and upon this subject, we go through it like this, that Allah SWT, like I mentioned before, has created us toward reaching that destination. Naturally, if I'm not planning my future steps during the course of life, I may slip and I may fall and I may not be as successful as traversing this path, knowing exactly where it is that I'm going. Let me give you an example. That if someone decides that they're going to move to a new city, they're going to go move to a new town. I work on a university campus here in the United States. So if someone gets accepted to a new university and they need to travel from their hometown to a completely different part of the world even. Naturally, the smarter thing to do would be to go and visit that place if they have the capacity to do so. Go and find a home, go and find a place, go and see what the best restaurants are, go and see if you have family, friends, so on. You make the necessary preparations to going somewhere where you are absolutely certain that you're going. If you're going to go on vacation, you're not just going to get on a plane, go wherever it is that you're seeking to go to, and then not plan exactly where you're staying, where you're going to eat, what you're going to go and visit, none of that. That would be someone who's not really well prepared in their vacation and not going to make the most of the opportunity that they're seeking. Similarly, when it comes to contemplating about death, contemplating about the afterlife, if we are absolutely certain that we're going there, it's probably good for us to kind of get a good understanding of what it's all about. In other words, get a little bit of a preview of what that's all about. That's number one. The second thing that we gain from contemplating about death is that it allows for us to create a trajectory for our lives. When you're working towards something, there's a lot more opportunity for you to be successful in the midst of that seeking. If I know, for instance, that I am working toward my doctoral degree, toward my bachelor's degree, I am working to this new raise in my job. I am working to this promotion in my place of employment, whatever it is. If you're working towards something and your mind is consistently fixated on it, again, there's just that much more opportunity for you to be successful on this path. But if you're not, and if you don't know what you're working for and you don't set any goals for your life, there's a lot of opportunity to sort of have your life go crooked or have, you know, your trajectory, your pathway just not be as succinct and straightforward as oftentimes we want things to be. It doesn't mean you're going to be completely unsuccessful, but the likelihood of being successful is that much more different. And go ahead and take a look at examples like that of Ali Ibn al-Battala, peace be upon him, versus someone like Muawiyah, for instance. Muawiyah has no idea where he's going. Muawiyah could care less that there's a life beyond this one. So you take a look at the leadership and the courage and the charisma and the beauty of a man like Meir al-Mu'mineen, Ali, alaihi salam, even in the midst of those moments when he was Khalifat al-Muslimeen for those four years and five or six months, he was so careful with the way that he dealt with other people. He was so careful with the way that he spent money that was coming out of the public treasury, for instance. There was such a delicate nature to the way that the Imam, alaihi salam, dealt with others because he knew that this life was not about allowing for it to consume you. And you take a look at the life of the Messenger of God, alaihi salam, the way that he would interact with people who were his enemies, who spoke poorly to him, alaihi salam, and you see that Allah subhanahu wa ta'ala provides us these examples who think about life beyond this life, meaning, again, that Allah subhanahu wa ta'ala recognizes that this pathway, or Ahlul Bayt, alaihi salam, they recognize that this pathway is just a bridge from this world to the next. Just like that one day, the company of some of his companions, the Messenger of God, alaihi salam, he said, I wonder at those who build a bridge, who build a home on a bridge, which they said, oh Messenger of God, who would build a home on a bridge? He said that those who believe that this world is the end all, the ultimate goal, they don't recognize that this life is rather a bridge from again, from the dunya to the akhah. When you go again to take a look, like I mentioned earlier, about the different universes and dimensions that we experience ourselves in, the dunya is only in the middle, alam al-anwa, alam al-darr, alam al-abham, alam al-dunya. After this, we have to go through the barasah. After this, we have to go through the day of judgment. After this, we have to go through eternal life. Why do we fixate our minds, our hearts, our entire beings on something seemingly that's so insignificant? But again, at the same time, Allah ﷻ placed us in this world to live in it. That does not mean that we should not be a people who enjoy from the benefits that Allah ﷻ has given us.   This brings me to this question that I know that many of us may have. Then why is it then, that seemingly we have this innate nature that has a sense of anxiety or nervousness when we talk about or think about or contemplate about death? Meaning what? That regardless of the positive sort of actions and deeds that we often engage in, we're in the holy month of Ramadan. We're fasting during the day. We're supplicating during the night. Why Allah ﷻ still places this perhaps an easiness within us? Again, it's probably not Allah ﷻ placing a sense of nervousness within our hearts. But again, things that are new and things that are of a transitionary nature, oftentimes they are difficult. It takes time to adjust. Again, when we were born into this dunya, when we were born into the island of dunya, the first thing that a child does is cry. Why? Because all of a sudden, before it was in a sense of darkness, it was in a sense of consistently attaining sustenance from its mother. Now all of a sudden you see light, you see people, the world is so much bigger, why should you even cry? And those first initial days, those first initial weeks for the child, it's always crying because again it's in something new, it's in a completely new state of life, in a completely new existence that it's never experienced before. And this transition that takes time, eventually you realize that this child loves to be in the dunya, it loves the space, it loves the light. We don't understand the reality of the life beyond this one because our intellects don't have the capacity to perceive that till date. In the same way that if you would ask the child again in the womb, the mother, are you looking forward to going into the world? They would say, no, we're good over here, we're comfortable, we don't want to experience anything else. And often some of our scholars, they liken it to this example. But how would you explain the color red to someone who was blind? How would you explain the color red to someone who's blind? You could say it's the color of the strawberries, it's the color of the apple, it's the color of the flower, so on and so forth, it's the color of this paper, for instance. But how are they going to be able to understand that if they've never seen it before? And so what Allah swt without it gives us in terms of symbols, in terms of metaphors within the whole of Quran, within traditions about the date, alaihi salam, that speak to a little bit of the reality of the next world, and reality is not completely understood by our limited intellects in the dunya. So that brings me to this question that I know that many people have been asking on the chat. And that is that, why do people really fear death? And then the better question to ask is, does everyone really fear death? Of course, for someone who sees death as Amrun Adam, which they see death as absolute nothingness, they're going to fear death. Because what is life after this? If this is the be all end all, that there is nothing after this, like of course we don't believe, then naturally it's worrisome to think about, you know, what's the next stage or what's the next step, especially if seemingly there's nothing that you're ever going to experience after the pleasure of this dunya. So for someone who's not a believer, naturally they would trade their entire life for what they don't want to experience, meaning that they're going to live it up in this dunya, so to say, because seemingly there's nothing else, and that includes transgressing the boundaries of Allah's fana huwata'ata, perhaps a lack of basic morality and otherwise and so on, they wouldn't see anything beyond their mortality and this corporeal existence. This is number one. The second types of people who may fear death are those who are sinners, those who commit acts of transgression consistently. When we become attached to this world, and the words of Amir al-Mu'mineen, that the climax or the height of all sin and of all transgression to this world, when we fall in love with this world, then it becomes so difficult to leave it because we're getting so attached to it. And he said that one day, there's a man who came to the messenger of God, he says, oh messenger of God, I'm scared of death. He says, Allah kamalum, he says, do you have wealth? He says, yeah, I have a lot of it. He says, start to give it away slowly. And you'll see that your attachment to this world is not as intense as it is right now. When we see life as only about accumulation, when we see life as only about consumption, food, wealth, sex, so on and so forth, what's going to happen is that we're not going to be that contemplative about the world beyond this one because the only thing that we see is our bank accounts. The only thing that we see is our retirement accounts. The only thing that we see is that which is important for me in the junior without any sort of conversation or contemplation or reflection or pondering about that which will happen after this. When in reality, that's just not the quality of the believer. That's not what we're seeking and not what we're ascending to. Once in a while, we go and we visit the graveyard.  We cannot even escape sleeping, let alone escaping something as certain as death. And that brings me to the third type of people. The first again are those who don't believe and of course they're going to fear it. The second are those who are sinners, of course they're going to fear it. And then thirdly, there's the Awliyya of Allah SWT. In that famous hadith in which Allah SWT is speaking to Ibrahim, salamu alayhi. He states, Ibrahim alayhi salam was in a conversation with Allah SWT. He said, oh Allah, I have a sense of anxiety, a sense of nervousness to transition from this world to the next. It's okay, again, it's something new, it's changed. It's okay to feel that way. To which Ibrahim alayhi salam is consoled by the words of Allah SWT. Do you ever see a lover who despises or is worried or scared to meet their beloved? You've been away from your family for a long time. All of a sudden you look forward to that moment when your plane lands and you're getting in the car and you're on your way to your family's house, for instance. If you've missed, for instance, the ziyarat of Imam al-Hussain alayhi salam, you have not been to Medina for many years. You've not been in the house of Allah SWT, especially during these days when we're unable to travel. Many of us perhaps were planning to go for the ziyarat of the Alba'een and maybe we're not sure if we're going to have that opportunity. Just thinking about it, your heart starts to race and hairs start to raise on your body. This bumps because you're looking forward and you're anticipating that moment when your eyes can glance upon that view. Over here, Allah SWT states, your opportunity of ascension in this world and transition from this to the next is like that of you seeing someone you haven't seen in a long time. Yes, there's anxiety. Yes, there's nervousness, but in a positive way. There's something that you're looking forward to. Which is why you take a look at Ahlul Bayt, A.S. This is what the Prophet SAW said. His emotion in terms of demonstration at the time of his passing, he said that he was going to go and meet Rafiq Al-A'la, the best of friends. This is the way that the Prophet SAW, he saw death. At the end of the life of Imam Amir al-Mu'mineena, A.S., two lines. Number one, He said, I've attained victory by the Lord of the Ka'bah. And when one of his companions, the words proximity a man by the name of Asbaq bin Nubata, many of you might be familiar with him. When Asbaq bin Nubata was next to Imam Ali, SAW, he looked at the Imam, A.S. and he started weeping. And Imam Ali, A.S., he states, He states, What are you concerned about? Which Asbaq, of course, others, his famous line, he says, I'm not worried about you and where you're going. I'm worried about me and life without Amir al-Mu'mineena. You see this in the life of Fasayn ibn Ali, SAW. That when he was fighting on the battlefield, the only thing that he saw was the next world. Which is why the enemies, they would respond in, look at Hussain, He's not even thinking about death. He's not concerned about it. He's already living in the world beyond this one. So, by means of our efforts, by means of our supplications, by means of our da'a, by means of our, again, exertion, Whatabattan ilayhi tabteela, Allah SWT, Exert yourself to the, you know, greatest of lands during these days, nights of the holy month of Allah. When we make the necessary effort and prepare ourselves toward recognizing that this world is just a transient thing. But through it, we have the opportunity to attain a world that is far better than this. Allah SWT, in numerous times, mentioned this in the Holy Quran. Waladarul akhara khayrun wa abbaqa, that the next world is better and it's a lot longer lasting. The fruits are taste different. Not only they taste different, they taste better. The experiences are far better. All the moments of enjoyment are a lot longer. You know, for instance, I'll just conclude with this point. Before we open it up for questions and conversation, insha'Allah. It is that every single one of our enjoyments during this dunya, they're limited.  Let me give you an example. Imagine, I don't know, for me personally, I love to eat anything that's sweet.  You start eating it and sometimes you think, oh man, this piece is way too small. And you finish eating it and you wish that there was a little bit more. And the only thing that you think about is eating that cake instead of enjoying it is, oh man, you know, this is going to end soon. Similarly, with really happy and enjoyable moments during the course of our lives, at the, for instance, birth of your child, what brings as happiness as, you know, that moment when you first glance at the birth of your child. How beautiful that is. Really, it's sort of a spiritual moment. And at that particular moment, the first question that comes to our mind is what? Is my child healthy? At a wedding, the first question is going to be like, oh my God, who's going to pay for all of this? When you get a job, you got a job you're about to earn, you realize that sometimes that, you know, you're going to have more expenditure now. When you graduate school, you're stressed out about finding work. Oftentimes, even the moments that are most enjoyable to us, soaks up a little bit of anxiety. That's just the nature of the stimuli. The next one, what about the other? Khayran wa abqa. The food tastes better. The food tastes better. Everything is longer lasting. Why wouldn't we want to experience that eternal joy that Allah subhanahu wa ta'ala will transition us into? Again, provided that we have this positive mindset, that we think about it, that we have a good opinion. But He is the most merciful of those who show mercy, insha'Allah, through our efforts, through our prayers, through our worship, through our service, through our diligence during these days and during these nights of the holy month of Ramadan and beyond, we'll find that Allah subhanahu wa ta'ala will allow for us to be recipients of His mercy and of His compassion and His generosity and make this transition from this world to the next seamless and then raise us on the day of judgment and the company of the Prophet and then hopefully allow us to be admitted into paradise while holding their hand. Before we open it up for some questions and perhaps some conversation, if I can just ask you all to please recite Sibetul Fatihah for the Salat al-Sawab of the following Marhumin. Firstly, Marhumah Fatima by Mahbub Hasan Ali Herji Muhammed Raza Siwani Ali Asghar Khoja Mr. and Mrs. Karam Ali Bandavi and then finally Mr. and Mrs. Ali Hussain Jivraj Sayyani I can ask you all to please recite One Surah in Mubarakat in Fatihah Bismillah We ask Allah subhanahu wa ta'ala to have mercy upon all of us and especially the Marhumin especially on these days of the holy month of Ramadan To answer some of the questions that were coming in the midst of the conversation Firstly, why are there sufferings in the Barzaf when we will suffer for our sins in Qiyamah That's a really good question and I think it's important again to understand that these are not experiences that every single individual will endure What is that mean? That for a believer for a believer we have hadith that tell us that if we go through certain difficulties during the course of the dunya during the course of this life that it could be a means by which Allah subhanahu wa ta'ala is expiating my sins Meaning that if I go through I don't know an illness if I go through a loss of wealth maybe I don't know at the end of the day me individually I don't know my experiences whether they are a trial for me whether they are a sin that Allah is punishing me for or whether there are means to expiate my sins but for the believer Allah subhanahu wa ta'ala will sort of cleanse us of all of our sins in the dunya by means of difficulties and challenges that we endure and if we do not get perfected from our sins in the dunya then Allah subhanahu wa ta'ala will punish us or put us through certain obstacles in alamin barzakh so that by the time we reach the day of judgment Allah subhanahu wa ta'ala will raise us on that day purified of all sin and then enter us into paradise purified of all sin and if we have not gotten our sins purified at the time of death in the barzakh on the day of judgment then in that case obviously we must not be believers but Allah subhanahu wa ta'ala will admit us into the divine punishment and again if we are believers we love ahlul bayt alayhum salam we are striving in the way to get closer toward God and inshallah we ask Allah to eradicate and to purify all of our sins from our souls in this dunya before we enter into the next day because out of His mercy and His compassion out of His grace this is why we supplicate during these days and nights during the holy month of Ramadan this is why we fast during the month of Ramadan we working to sort of hit that reset button on our souls and allowing for it to enter into a state of cultivation inshallah to be able to continue to purify a second question is in regards to how does the punishment transpire in the grave for someone who does not have a body by means of injury for instance at the end of the day the punishment that we go through in the grave inshallah again may Allah subhanahu wa ta'ala save us out of that out of His grace and out of His mercy and out of His intercession the messenger of God and His family alayhum salam it is not necessarily the physical body that is enduring the pain but it is the soul the spiritual dimension so our bodies when we enter into the grave they decay but the soul is that which continues to live and that's what goes through trial and tribulations according to Samara wa hadith and then one other point that I'll throw out there as well is that when we talk about the word grave the word grave that often is pictured into our mind is that a hole in the ground al-qabr according to our Rwayat is not only limited toward that hole in the ground but again it's a completely new spiritual dimension that again probably our intellects don't have the capacity to understand why is there fear and anxiety towards death question number three as I mentioned before Allah subhanahu wa ta'ala won't punish all of us and not everyone has that sense of fear and anxiety perhaps even a believer might again because we see it as a transition is something scary something new something we never experienced before that's okay ask Allah subhanahu wa ta'ala again to make this transition Allahumma inni I ask Allah Allah for me to be at peace at the time of my passing and Allah for me to get forgiveness after my passing and Allah for me to be raised on the day of judgment for instance with your grace and with your compassion and with you accepting my apology why is Allah subhanahu wa ta'ala mentioned adab so many times Allah subhanahu wa ta'ala when you take a look at the whole of Quran whenever he does mention punishment he also mentions rewards and that's something that we don't often focus on it's the style of the way that Allah subhanahu wa ta'ala speaks about in the whole of Quran we often neglect that form we often neglect that reality we forget the fact that Allah subhanahu wa ta'ala when he talks about you know sexual issues like that of divorce he'll also talk about marriage when he talks about hell he talks about heaven as well and we also need to focus on that positive aspect as well as only focusing upon the negative but nonetheless Allah subhanahu wa ta'ala also speaks about punishment and the way to deter us from stepping into that boundary which is why when you're driving on the highway you see all these signs that say speed limit this many miles per hour situation around COVID and so on there are all of these politicians who are going out in the news every single day at least over here in a place like New York City as difficult as the situation is locally we're going and talking about the necessity to wear face masks and if you don't do this you can be fine why? because again they want to create this deterrence for us from us to not step sort of beyond the laws that have been created and similarly Allah subhanahu wa ta'ala does the same within the whole of Quran how do we approach death positively question number five again like we've been mentioning we change our mindset we focus on the mercy and the compassion of Allah subhanahu wa ta'ala rahmatuhu sabaqat ghadabah according to the verse in the whole of Quran according to Ahadith and Ahlul Bayt that Allah subhanahu wa ta'ala's mercy it's actually something that precedes Israel there are a couple of other questions as well that have been coming in in regards to our relationship with those from our family members after we die or in regards to our responsibilities to those who have deceased and those who have passed on what is our individual responsibility please be sure my dear sisters and brother we're going to save those questions for next for this upcoming Thursday upcoming Thursday inshallah we'll kind of continue at the same exact time 12 p.m. for those of you on the east coast for those of you in Dubai for those of you in Pakistan different parts of the world at the same time 7 p.m. 9 p.m. wherever you are please take a look at the flyer we're going to continue this conversation in terms of now our responsibilities now we have this idea of theoretically understanding what is death the transition from this world to the next we need to change our mindset and change our approach from this world to the next inshallah we're going to be seeing that there's a lot of opportunities for our individual growth and cultivation but then secondly what is exactly that what happens when we enter into the grave what are our responsibilities to making sure that that transition is very easy and smooth from this world to the next what can we do in terms of our relationship with members of our families for instance do we have any relationship with our families and then fourthly and finally what are some of those things that we can do for our family members who have already been deceased inshallah we'll reflect upon inshallah we'll reflect upon these questions and we'll take a look at other verses of the Holy Qur'an and traditions of Ahl al-Bait A.S. and utilizing their guidance and utilizing their wisdom inshallah we're able to transform our approach toward recognizing the mortality of our own existence to something that is rather an opportunity for us to be recipients of the mercy and compassion and the generosity and the grace of Allah SWT we ask Allah SWT the ability to inshallah have the Tawfiq to continue this conversation and we ask Allah SWT to bless us with the intercession of Muhammad and Ali Muhammad in Dunya and in the Barsalaf and in the Akhara and praise be to Allah, the Lord of the worlds may He reach them upon our Master and our Prophet Muhammad and upon Ahl al-Bait A.S.


What's up everyone? It's your girl Kenzie here from Layton Sports Cards and I'm ripping up personal here for Namcoo L We've got an order of 2022 Panini National Sports Convention VIP exclusive gold packs again These come in bundles of five. So you've got one two three four and five Best of luck here for you Namcoo got Ricky Henderson and Hyper Ichiro for the Mariners Aaron Rodgers and Cracked Ice Russell Wilson out of 99 Big Russ 23 of 99 back three Tom Brady base and Velocity Cal Ripken Got Larry Bird and Hyper Wander Franco Nice Wander and Last time here for a Namcoo Lattie jr. And we've got pink disco of Cade Cunningham 14 out of 50 nice Cade You go nice way to end that one for you. All right Namcoo that'll do it for your personal Thanks as always for hopping in and we will get these right out to you


lecture in the course design and engineering of computer systems. So far in the previous 5 weeks, we have seen the various building blocks of computer systems. We have seen how hardware works, how the operating system manages the hardware, how computers communicate over the network. So we have seen all the building blocks. So in this week, we are now ready to start putting all the pieces together and designing a system end to end, okay. So we have a couple more building blocks to cover in the first couple of lectures of this week where we understand how the different threads in a process and different processes in a system communicate with each other. And after that, we are going to put together an end to end design of a somewhat realistic computer system. So let us get started. So this week, as I said, we will cover end to end design of computer systems. The one thing to note is that computer systems in real life, they are not monolithic, okay. So they are composed of multiple components that are distributed across several machines. So each of those components will have some hardware, some OS running and managing the hardware and some applications running on top of it and all of these are communicating over the network. You know that is how real life computer systems are composed of multiple such components. And all of these building blocks of, you know, hardware OS, the system call API for user applications, communication over the network, all of that we have seen. So the next thing we are going to see is how to put all of these pieces together. So in a single system also, you do not have just, you know, one process or something. So typically have your application will have multiple threads or multiple processes which are working together with each other. So before we put together an end to end system, these are the two things we need to understand. We need to understand how multiple threads in a process work together and how multiple processes in a system work together. So we will do that in the next two lectures and the lecture after that we will start putting together an end to end system design. So first let us understand how you design applications that have multiple threads in them. So suppose you have a web server or any other application server that is talking to various clients and providing some service, typically a lot of these servers have multiple threads, they are multi-threaded. So why is that? We have seen the reason for this in one of the previous lectures, you know. For example, if you consider a web server, it needs to have multiple threads. Why? Because the server is managing multiple sockets. You know the web server has one listen socket that is listening for new connections and once a connection is established with the client, you have multiple connected sockets each talking to a different client. So the server needs to manage all of these sockets, the listen socket as well as the connected sockets. And one way to do it is you to use a one thread per connection design. So the server will have multiple threads. The main thread of the server can be you know listening to this listen socket and handling new connection request. Then once a new connection is established, you can create multiple threads and give each thread this socket and this thread will handle this client. You know read the request of the client, process the request and reply back whatever is needed for this client C1, C2, for each client you have a thread at the server that is the one thread per connection design. This thread blocks on the accept system call and these threads block on reading from the socket. So this is something that we have seen before that is why most application servers in a client server model need to have multiple threads. So the one subtlety is that instead of you know creating a thread every time a client connects and you know destroying the thread later on instead of having this churn of threads what we can do is we can have a pool of threads. You know the server has a pool of threads. There is a master thread and there is a pool of worker threads. So the master thread is listening for new connections and whenever a new connection comes it will give it to one of the worker threads and say okay you handle this connection. Then when the worker threads handle the connection it will come back to the master and say okay I am done. The master will give more work. In this way this is how real systems use thread pools. These are called thread pools and primarily to avoid the overhead of you know constantly creating and destroying threads. So when you have a thread pool you need some way to coordinate between this main master thread that is you know giving out work to all of these worker threads. And typically the way it is done is there is usually some kind of a queue or you know a shared buffer or something where the master thread will keep putting requests you know hey a new client has come a new request has come and the worker threads will keep taking the request from this queue and servicing them one by one and of course all of these threads if there are any shared data structures we have seen we use locks for mutual exclusion to avoid race conditions all of that we have seen okay. So now you can visualize you know this master worker model you know work coming in being distributed to multiple people to do the work but there is still a complication if you think about it closely how do these worker threads know that you know work has arrived in the queue you know there is a master that is creating work and there are worker threads waiting for work. So now how will the worker know oh request has come I should go check the queue one way is all the workers are constantly reading the queue is there work is there work is there work this is like the polling based model but that is clearly inefficient you know I mean if work comes only once in a while what is the reason for everybody to constantly keep waiting a better way can be the master can somehow wake up the threads the threads can be sleeping in blocked state not running the master can somehow wake up the threads and tell them hey look some work has arrived for you right we need these coordination mechanism between threads where a thread can tell another thread hey you know do this and this thread will say okay I am done with this so that is what we will study in this lecture what is the mechanism available for threads to coordinate in this way with each other and one way to do it is using what are called condition variables okay so threading libraries provide many mechanisms for this thread synchronization in this lecture we would not have time to cover all of them but the simplest and the most useful of them is a mechanism called condition variables and this is useful for threads to do simple coordination between each other for example let us consider a concrete example you know there are two threads in your application thread T1 does some work does some task say you know it accepts a request and puts it in a queue and only after that you want read T2 to take the request from the queue and process it so T1 does something only then T2 does something we do not want T2 to constantly keep waiting running wasting CPU time before T1 has done its share of the work and so we need some mechanism for this for patterns like this condition variables are useful and note that logs alone we have seen logs threading libraries that provide mechanisms for creating threads also provide logs like you know p thread logs but that is not enough we need a different mechanism here okay for this kind of signaling this kind of coordination you need a different mechanism which is condition variables so how do condition variables work condition variables is you know any variable it is like any other variable like a log or something you create in a program and on a condition variable you can call two functions you can call a wait function and a signal function on a condition variable so whenever a thread calls wait on a condition variable it will be blocked and every condition variable internally it maintains some sort of a list or queue of threads that are waiting and a thread can say okay I also want to join the queue you know I do not have work to do now my task my turn has not come my task has not arrived a thread can call wait and another thread that wants this thread the sleeping thread to run can call signal so thread that calls wait will be blocked and added to a list another thread that calls signal will wake up one of these threads okay will make one of these sleeping threads ready to run again that is how wait and signal work so let us revisit this example of you know we want this semantics of t1 does some work only then t2 does something else how do you implement it using condition variables without condition variables you know t2 is always checking is it done is it done is it my turn is it my turn that is inefficient we do not want that a better way will be something like this where t2 will check if the work is not done it will call wait on a condition variable and t1 when it does the work which will unblock t2 it will basically call signal on a condition variable okay so for example if t2 runs before t1 we do not want that right we want t1 to do its work only then t2 to run so if t2 runs first it will check that this variable done or something it will check in the data structures indicating the work is not done it will call wait at this point t2 blocks it is context which doubt it won't be run now when t1 calls signal on a condition variable after doing the work then this thread is marked as ready to run and the CPU scheduler will resume it at a later point of time so now whatever work t2 has to do after t1 that will be done here okay so this is an easy way for threads to synchronize and this wait and signal are of course implemented with the operating system support of you know moving some threads to a block state ready state all of that is done so the wait function will put this thread into a block state the signal function will wake up one of the threads and make them ready to run now what if you know t2 didn't run first and only t1 ran first then t1 does the work at this point t2 is ready to run it doesn't have to wait so it will check that is why there is usually some variable you will check some condition you will check now there is no need to wait this condition is already true okay if this condition was false you call wait but if this condition is already true you know the work is already done then there is no need to wait you will proceed okay so in this way check the condition and only sleep only if the condition you are waiting for is not yet true then you sleep if the condition is already true there is no need to call weight, T2 will proceed. So now there is a slight complication with this weight and signal, there is another scope for race conditions that let us understand carefully, okay. If you do not do this weight and signal carefully, you might end up in a very bad state, you know, you might end up in what are called deadlocks. What is a deadlock where a thread is somehow sleeping not doing any work, okay. So let us check what these conditions are, okay. So I am describing that condition here in this figure where some bad things can happen. So for example we had this code, T2 is checking, if the condition is true, if it is true it would not wait, but if the condition is not yet satisfied, T1 is not yet done, then it has to call weight. Now suppose T2 has checked this condition and figured out that the condition is not yet satisfied, T1 is not yet done. This case T2 has to wait. So now T2 has decided to wait, has moved its program counter to this line, okay. At that point, just before it calls weight, context which has happened, unfortunately, okay. This is always the problem with the threads and processes, you know, at a unfortunate time a context which can happen. Now T2 has decided to sleep, but it has not yet called weight, it has not yet added itself to the list of waiting processes on this condition variable. At this point a context which occurs, T1 runs, it does the work, it calls signal, will this signal wake anybody up? No, because T2 has not yet joined the queue, so the signal won't wake anybody up, T1 is done. Now T2 resumes again, the program counter is here, so T2 will execute this weight statement, it will go to sleep. Now will anybody wake T2 up? No, because T1 already did signaling. So T2 will sleep forever, right, this is a deadlock. Why did this happen? Because all of this should be done atomically, you know, checking a condition and sleeping should be done in one go, we don't want people to interrupt in between, okay. So that is why to protect this atomicity of sleeping, we use a lock along with condition variables. So the way condition variables are used is that the thread that wants to sleep will acquire a lock, check the condition and go to sleep and this lock will be passed to the weight function and after this thread goes to sleep fully, then this lock is released by this P thread or whatever library that is implementing this weight function, okay. After T2 sleeps, then this lock is released. So that the lock is now available for T1, before calling signal also you take the lock, then call signal, then you unlock. Now T2 has slept, now T1 has taken the lock signal, has woken T2 up. Now when T2 returns, once again, the lock is reacquired by this library, T2 returns with the lock and it can unlock it, do whatever it wants with the lock, okay. So we are using a lock to protect this atomicity of checking a condition and going to sleep. Because of this lock, now this situation cannot occur, you know, you cannot have a signal run here. Why? Because the signal also needs a lock and you don't have the lock here, all of this is a critical section, nobody can interrupt you in between or no other critical section can be squeezed in here. Therefore, even if T2 is context switched out, it is okay because T1 does not have the lock, it cannot run the signal, right. So therefore, all of this will happen only then the signal will happen. So therefore, you have to use locks along with condition variables. Of course, the implementation is taken care of by the libraries, but you have to understand that every time you call a sleep on a condition variable, you also have to, you know, acquire a lock and pass that lock.  This will ensure that the wait and the signal will happen either, you know, before or after, but not interleaved in this problematic manner. So what we have seen is an example of a situation that is called a deadlock, okay. When you have multiple threads in a process, sometimes these threads can get stuck in a very bad state where they are all sleeping, they are not doing any work and your system is stuck, okay. That is called a deadlock.  Another problem that can also occur with threads is what is called a live lock, where the threads are running but still not doing any useful work. The difference between deadlock and live lock and in deadlock the threads are blocked and not being woken up. In live lock the threads are running but not making progress, okay. These are related but slightly different problems. So we have seen one example of a deadlock which is a thread sleeps by calling wait on a condition variable but no other thread calls signal. So this thread sleeps forever, you know. You have called wait and nobody else calls signal. Another example is even without condition variables with just locks you can have deadlocks when you have multiple locks in your system and you acquire them in some weird order. So consider this example where there are two threads T1, T2. Both of them need two locks, you know. They acquire two locks, do some work, release two locks. Now T1 acquires them in this order lock A, lock B, T2 acquires lock B, lock A. Then what will happen? If sometimes, you know, all is well, life is good, T1 acquires both locks, does its work, releases the locks, then T2 acquires both locks, does its work, one after the other they work, that is okay. But sometimes, you know, you will have a weird situation like this, you know, with some weird interleavings you will have a situation where T1 has acquired lock A, then there is a context switch, T2 has acquired lock B, then there is again a context switch. Now you are back to T1. T1 is waiting for lock B, will it get it? No, because T2 has it. T2 is waiting for lock A, it also won't get it because T1 has it. Will T1 finish its work and release these locks? No, it won't, similarly with T2. So, both of these have one thing, they are waiting for the second thing, neither will finish. Now if you know T1 gets both locks, it will finish its critical section, release the locks, but we are not there yet, similarly for T2. So, this is a deadlock. Even without condition variables also you can have deadlocks when you have multiple locks and you acquire them in different orders across different threads. So, what are some of the best practices in your user programs to avoid deadlocks is, you know, there are many techniques, two simple ones is whenever you acquire locks, make sure that you acquire them in the same order across all threads.  Don't do this jumbled up order that will cause deadlocks. The other thing is, you know, this acquiring locks in a jumbled up order will cause what is called circular weight, you know, where this guy is waiting for this lock, this guy is waiting for this lock. And the other thing is when you have condition variables and whenever you are, you know, doing any weight or sleep or something ensure that the code that has to wake you up can run. Okay? Whenever you call weight on a condition variable always check that the code path that call signal can also run. For example, if that code path needs some logic, need some lock, need something to run, make sure that that path is open so that whenever you are sleeping, somebody will eventually wake you up. So, now we have seen what are condition variables and a common pattern, a design pattern that is found in computer systems is what is called a producer-consumer situation. You know, you have some threads that are producing somewhere, there are threads that are consuming somewhere and you know, there is a shared buffer of some fixed size of some bounded size and these producer threads are adding items into this buffer and the consumer threads are reading items from this buffer and consuming them. This is a common pattern in which threads in an application interact with each other. So, in such a scenario, let us see how we can write the code for such programs which have this producer-consumer pattern using condition variables. So, here is some simple code for producers and consumer threads. So, what the producer thread will do is it will first check, is there space in this buffer to produce more items, you know. Of course, everywhere you have a lock, any access to any of the shared buffer has to happen with a lock and the producer will check. If there is space in the buffer, it will produce an item. If there is no space in the buffer, then it will wait until the space is freed up in this buffer, it will wait on a condition variable and who is waking up this producer, whenever the consumer consumes an item, it will call signal on this condition variable that will wake up the producer. So, the producers keep on producing at some point, this buffer is full, then the producer threads will wait, then later on the consumer threads will run, they will consume items free up space in the buffer and they will signal the producer threads which will wake up producer again, right. So, you have a nice sort of a tango going on here. Producers are producing, they are waiting, the consumers are consuming telling the producers, hey, produce more, then putting the producers, put them in the buffer, consumers consume. So, you have like a nice coordination happening between the threads in a system where they are both doing their work, okay. Similarly, the consumer also will wait if there are no items in the buffer. If suppose the producers have not yet produced anything, then there is no point for the consumer to run. So, the consumer will check if there are no items in the buffer, the consumer will wait. Just note that this is another queue for the consumers, another condition variable. And when the producer produces an item, the producer will signal the consumer and wake up this consumer thread, okay. So, in this way we are using two condition variables for, you know, roughly there are two types of waiting, two types of queues. One is for producer threads that are waiting for space in the buffer, one is for consumer threads that are waiting for items to consume. Therefore, you use two condition variables. And of course, there is a mutex lock that has to be held while accessing the shared data structures or while waiting, you know, you can use the same lock for all of these multiple purposes. So, this is a simple example of a producer-consumer code, you know, producer will lock, check if there is space to produce, otherwise it will wait, giving this lock as the argument to wait. So, this producer thread will go to sleep, this lock is released. At a later point of time when the producer is woken up, it will produce and signal the consumer. Similarly, the consumer code is also symmetric, okay. So, this is a very common pattern that occurs in multi-threaded applications where some threads do some work, then signal the other threads which will do the rest of the work. So, in a multi-threaded server, you know a TCP server, web server, any application server also, this producer-consumer pattern is seen. For example, when you know you have a thread pool, you have a master thread that is or one or more master threads that are producing work, they will put all these requests in a shared buffer and you have the worker threads that will take request from the shared buffer and handle them. You know a TCP server, as whenever a new client comes, the client socket or something will be put in this queue and the worker threads will take that socket from the queue and service that client, you know, read the client's request and reply back and so on. So, this is a very common pattern with multi-threaded servers that have a thread pool to do some work for them, okay? And now the question comes up, you know, you have one master thread that is producing work and you have multiple worker threads that are doing the work in a thread pool and whenever the worker thread finishes its work, it will come back again to the queue, take the next item, it do that, handle that request, then come back again, right? So, in this scenario, the question comes up, how many such threads should I have in the thread pool? What is this optimum value? Of course, this has to be tuned carefully in your particular system, there are pros and cons. If you have too few threads, what will happen? The producer is putting a lot of requests, they are not enough consumers, enough worker threads to handle these requests. Then your, you know, your queue will build up, your clients may not be served on time or you do not have enough threads to utilize all your CPU cores. So, you cannot have a thread pool with, you know, one or two threads, usually that does not make sense. You need some respectable number of threads to quickly process all the requests, to use all the CPU cores for parallelism and so on.  So, you cannot have like infinite or a very large number of threads in your system, that is also counterproductive. So, this optimum value is usually has to be tuned. So, when we study performance, we will revisit, you know, how to tune all of these things for good performance, we will come back to this question later. Now, the other design aspect you have to consider when building multi threaded servers is, now you have this worker thread, it takes a request, you know, a client has connected to a server, that client is assigned a worker thread, which will handle the client's request. Now, there are again different design choices here. Either you can do a run to completion model, that is, each worker thread can basically fully handle a client, you know, each worker thread is given a connected client socket, it can read from the socket, then handle the request, send a reply back, again the client will say something, whatever the entire work that is needed for a request can be handled by just one thread, that is called run to completion model. The other model is a pipeline model, where you know, you have some worker threads, the master has given some work, put something in a queue and some worker threads do some part of the work, then they will, you know, put it in another queue, then other worker threads will do the other part of the work, right? You can have a pipeline of stages, one worker thread does something, then says, okay, my part is done, it will give it off to another worker thread, another worker thread between different stages, you can keep going back to the queue. And each worker thread is just specialized for all of these of course, can be part of the same thread pool also. Each worker thread is specialized for a particular task, it will do that task, then hand it over to somebody. So, this is called the run to completion or the pipeline model, both of these are valid design choices, okay? So, then you might be thinking after all this discussion, you might be thinking, oh, what if I use an event driven API? We had studied this, if I use something like ePoll, I do not need to block on any socket read or anything, I can have a single threaded server process handle multiple clients. So, then the question might come up, why do I need all this multi-threading worker threads, thread pool and all of that if I use event driven programming. But even with event driven programming in real life, you will need multiple threads because if you have a single threaded ePoll server and you have multiple cores, you know, in real life systems, you have to handle a large amount of traffic and you are running on powerful high end servers that have multiple cores. So, you cannot just do a single threaded ePoll server, it cannot handle, it cannot use multiple cores and it also cannot handle any blocking things like disk IO. If you have a single threaded server, that is in an event loop, you know, ePoll wait, request comes, handle the request, then ePoll wait, if you are doing that, if you have a single threaded server, this thread cannot block for discreet for example, you know, then all the events will be kind of left without anybody to handle them. Therefore, in practice, even with event driven servers, you will have multiple threads. For example, you can have multiple threads on multiple cores, each of them calling ePoll, you know, each thread calls ePoll, handles some requests on this core, handles some events, you know, handles a set of clients on this thread, another thread on another core, handles another set of events and so on. So, you can have multiple threads each doing ePoll in order to use the multiple cores in a system or you can also have a master worker model with ePoll, where there is one thread that is doing ePoll, collecting all the requests, new requests that are coming up and then you have a pool of worker threads that are handling the work that is generated by this ePoll master thread. And these worker threads can handle disk IO, they can block, you know, this thread, this ePoll thread should not block the master thread. Why? Because the events are continuously coming up from the kernel and you have to handle them. But these other threads can block. So, the summary is that whatever APIs you are using, you know, blocking APIs or even driven APIs, typically real life servers on multi-core systems will end up having multiple threads and all of these threads need some mechanism for coordination like condition variables. In this lecture, I have only spoken about condition variables, but different programming languages, different libraries will give you many other such mechanisms where you can build these sort of pipelines, you know, thread pools where one thread does some work, signals some other thread, then some other thread does something else. There are many mechanisms to do all of these. So, when you are building computer systems, when you are building a single server or multi-threaded server, it is important for you to understand what these mechanisms are and how to use them in a real system. So, that is all I have for today's lecture. We have seen how to build multi-threaded servers whether using blocking APIs or even driven APIs. And we have seen how mechanisms like condition variables are useful in such situations. Of course, there are many more such mechanisms in other programming language libraries. We have also studied briefly about, you know, bugs like deadlocks that can occur in multi-threaded programs, where we have to take care that all your threads are running all the time and, you know, are not blocked in some unstable state. So, as a programming exercise, I will request you to try to write a client server program where the server has a thread pool to handle all the requests coming in from multiple clients. You know, you can use condition variables from the pthreads library and this will help you understand the concepts of this lecture better with a practical example. So, thank you all. That is all I have for this lecture and let us continue this discussion in the next lecture.


After hundreds of hours of working on SAT material for you and making all these videos, there's still one problem. There's not enough SAT material. And so I've been on a quest, a quest to find the best SAT material for you. And I've done it. Hello my people, my name is Meacham. I'm your college counselor. I have found 20 practice tests for the SAT that simulate the digital SAT perfectly. These are the best practice tests that I have come across. And I want to share them with you for two reasons. One, because I genuinely think this is good material for you to check out. And two, because the SAT crash course is sponsoring this video. But before I get to that, I want to back up just a little bit. The digital SAT went into effect internationally in 2023. And there was basically no material for students to use. The reason College Board did this is because f***ing international students, we can use them for one year to buy time for our best friends at the book publishing companies like Kaplan and Barons and Pearson. But the problem is the new SAT is not in a book. It's on your computer. And so if you're going to practice for the digital SAT, you need to do so in a digital environment. Like it doesn't make sense for you to sit down and circle answers and write in a book when you're not going to do that anymore on the real test. So I kept looking because honestly, I don't feel like the books were really going to be a good solution for you guys. And then I got an email from Chris over at thesatcrashcourse.com asking about the possibility of sponsoring some content on this channel. But of course, I would not say yes to this until I went in and tested it out for myself. And so I'm going to show you some of my reactions to my first ever practice test on the SAT crash course logged in. And all I got to do is go into classroom and you'll see here that I have two different tests. I have practice test eight and practice test 18. I have not done any of this yet 32 minutes. That is that is correct. Eliminator mode. Yep, right there. Okay, that works just like it should. All right. This feels really legit. This point for my money. I'm going here. I would rather be with SAT crash course at the moment. And I'm saying this before anybody paid me to say it. So far, they're getting like an 8.5 out of 10 module two. Let's see if it steps up the difficulty after my crushing it of module one. It's hard to say this one like one of these focuses on the social one of these focuses on the economics side of it. That was a tricky good question. Oh, now we got more notes. Okay, so there's a little bit of an increase in difficulty on the second module here because they've added some notes. They made a little denser. All right, I like that. I didn't answer number two. I feel like SAT crash course so far is on par with like my level of stuff. The test feels really legit. Now I did notice a couple of questions here and there that I didn't like and you drew a line to it like where they intersect. I mean, this is a really easy question. I don't know. This one I disagree because furthermore, the difference can sometimes come down to a single play or decision. Yeah, that's a fine line. This is the consequence. Success and failure comes down to comes down to implies consequently to me. I don't really see why furthermore would be right. So I'm going to disagree with that one. So what I'm going to do is actually help them out with the quality assurance part of the process, help them make these questions even better so that when you take their practice test, you're getting the closest thing to a real college board test, the quality of the questions, the distribution of the questions, it all felt very real to the digital SAT. The tests are even adaptive with a hard module and an easy module, depending on how you do on the first module, just like the real thing. But there was still one more thing that was bugging me. You know, I went to the SAT crash course dot com site and I saw that they, you know, have one practice test that you can buy for like $20. And I thought it would be nice if you guys could get at least one test for free before you decide to pay. And so we're going to do that by working together. I've given some of my material to these guys here at the SAT crash course so that they can turn it into a real simulated digital SAT test. A lot of you guys were asking me when I was going to be able to like put together my questions to make a full practice test. And I have the questions, but I just don't have the technology. These guys have the technology. So we're going to put our stuff together and you're going to be able to go to the SAT crash course dot com and take a free practice test using my questions. And then if you're interested in, you know, maybe buying some more tests from them so that you can continue to practice, they have different prices available. You can check them out on the website. They have a price for like one test, but you can also buy a pack of several tests or even all of the tests that they have for like a big discount. And if you use the referral code score, you're also going to get a 10% discount on all of the tests on the website. Seriously, if you're looking for SAT practice, I cannot recommend anything else as much as I can recommend the SAT crash course. Like they're the only guys that have 20 tests tested a really similar to the digital SAT with the exact same features as the digital SAT app blue book. I mean, you can use a liminator mode. You can highlight stuff, the calculators built in, you can go back and forth and review your questions like it is a almost perfect copy of what blue book does, which means that you're going to get a really realistic simulation when you take those practice tests. And if you use the referral code score, you help this channel out a little bit because honestly, monetization is nice, but it really only puts a couple dollars in my pocket every day. And it would be really, really cool if I could like, you know, get paid when you guys do stuff. But ultimately, I just wanted to make sure that you guys have access to the best material possible. And that's why I'm going to be helping the SAT crash scores to make their tests better. I'm putting my material up there so you can get a free practice test and you're going to get discounts by going through score use and the referral code score. If you're still not convinced and you want to see what a practice test looks like from start to finish, I'm going to do a live stream before the digital SAT of October so that you can see just what it looks like when I take a practice test on the SAT crash course.com. And you can also laugh at my terrible ability to do math problems. Oh, I know this. I know this. I know how to do this math. This is 70. So it should be 110 because that's triangles. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. You'll probably see a really high English score and a really, really bad math scores. So hey, I'm also planning on doing a live stream where I check people's essays kind of like I did last time when I wrote my own essay. I'm also going to do some live streams to write supplemental essays for a lot of universities in the United States so that you can see how I approach those. So subscribe to the channel and hit those notifications so that you know when I'm about to go live and you can be there and ask questions. And if you've got some essays that you want me to check, send them over because I like looking at your work and I can help you guys make it better. I just want to give a big thank you to the SAT crash course for sponsoring this video and for being willing to be so collaborative and like flexible with me. And you know, they haven't told me what to say or anything at all. They just said, hey, check out our material. And if you think it's worth it, like talk to us about a sponsorship deal. And that's exactly how I want to work here on this channel. I'm not going to just recommend whatever to you guys. If I don't think it's good, you're not going to hear about it here unless I'm trashing it, right? So yeah, thanks for watching. I'll see you next time.