All right. Good morning, everyone. Welcome to a new spring semester, 2023. Wishing each one of you a blessed and a prosperous new year. May the Lord bless each of you and trust you had a wonderful, refreshing break. So it's wonderful. Let's begin this time with a word of prayer. Maybe one of us can please lead in prayer. Yes, any one of us can please lead. Our Grace is heavenly Father, we thank you for this beautiful day, beautiful time, beautiful season of our life, Lord Jesus. This morning we choose to praise you, worship you, Lord, bringing all the glory and honor to your Lord. As we're starting this new semester, Lord Jesus, we ask you that you lead us, guide us, and teach us, Father God. Give us more grace to understand your word so that Lord Jesus, we will be equipped. Thank you, Lord. We submit Pastor Paul to your mighty hand and all the students to your mighty hand, Jesus. Amen. Amen. Right. Thank you, Abinas. All right. Okay. So the course that we will be doing this semester is, we're going to be talking about discipleship and small groups. Now, I'm sure each one of us has heard these words, discipleship and also small groups. And we're going to look at, in this course, we're going to look at the importance of small groups and how small groups can be an essential tool for discipleship. Right. So our main focus as believers, what did the Lord Jesus tell, exalt us before he left? He said, go and make disciples. And that's what we want to do, right? We grow into maturity, into Christlikeness. And then we disciple others to grow into that same maturity and Christlikeness, right? So this is what we'll be doing through the entirety of this course, talking more about small groups and how you and I, you know, just being part of small groups or even leading small groups can help us in disciple making, right? The notes are available on the stream. So feel free to download them and track along, given as we continue this course. So my sessions will be on Tuesdays, that is today, first hour and the second hour. So let's begin this time. Let me just post the notes. And all right. Everyone can see the page, right? Okay. So this course has three sections, as mentioned here. We look at some general information and guidelines on how to start a small group. Let me look at preparing to become a cell group or a small group leader. And then the third section, which is raising up disciples, reproducing leaders, right? So we'll move into section one. That is general information and guidelines, right? Now, how many of us have been part of a life, of a cell group or you're leading a cell group? Are there people here? You're part of a life group or you're leading a cell group? Anyone? Maybe in your church, you've been attending a cell group or yes, Tarun says yes. Anyone else? You've been part of a cell group or you've also been leading a cell group? Okay. Laisha says, Laisha, you want to say something? Yes. Okay, great. So I think most of us have a generic idea of what a cell group is, right? And of course the cell groups are all across globally. Cell groups, almost every church or every ministry will have a cell group. And we'll talk about, you know, why they have a cell group. Well, let's get into some general guidelines in terms of cell groups. Now, every now and then I may call it life groups, right? Because at ABC, we call it life groups. What I mean is basically the cell group, right? And so many churches choose to transition from a program or an event-based church to becoming a cell church, right? Now, here's something very important. We must understand this. There is a difference between a cell church and a cell group, right? Now, what is that difference? Every church has cell groups, right? Now, apart from the cell groups, they have different kinds of ministries, like, you know, women's ministry, men's ministry, children's ministry, Sunday services, teens' church, you know, they have different other ministries. And among all those ministries, the cell groups is part of the ministry. Now, what is that? That's a church that has cell groups. And there is something called as a cell church, which means a cell church has its life and its ministry. Everything is carried out through the cell groups, right? So I hope we're getting that difference, right? It's very important to understand this. There are churches which have cell groups in different areas of the city, but that's not the only ministry that they have, right? Now, cell church is everything, every other ministry flows out of this cell church, right? Now, let's look at what cell groups is all about, right? I know a lot of this may be familiar to us, but it's very important to, you know, understand this with better clarity, right? So what is a cell group? It's a group of people and we have at APC, something that we follow is 12 people. And we have different kinds of cell groups.  And under that, you will see we have about 28 life groups right now. But there are different kinds of life groups. For example, there are youth life groups, cell groups. There are family groups. There are only girls, only boys. There's an open life group, which means everyone can attend. And so we have 28. Now, the reason we've kept it to 12 is because in a smaller setting, it is easier to build relationships, to build community, to build each other up, to make disciples, right? So it's not just like, okay, you know, I have 30 people in my cell group, so mine is the best cell group. It doesn't work that way. The whole point of a cell group is to build relationships, edify each other, be there for each other, supporting each other, strengthening each other in the Lord. And so at APC, we've made it 12 people. But if you are planning to start one in your own church, you can choose. You can probably have 10, 12, even 15. But make sure that the group is not too big, that as a leader, you're not bogged down with too much of responsibilities. So it should be free while ministering to people. Right?  The same way, even in a cell group, it is, you know, it is a microcosm of the kingdom of God. So things of the Holy Spirit, things of God can happen even in a small group. It is a small unit of the local church. Now here, this is very important. A cell group is not just like a Bible study, not just a prayer meeting, or not just another church service. Right? So it's very easy to, you know, have like, for example, second and fourth Saturdays, right? We have cell group example, right? So it's not just a time where, okay, the cell group leader opens the Bible, starts preaching, teaching, or you only have prayer points, you pray, or it's not just, okay, there's a flow of, of course, there needs to be an agenda, a flow. But it's not just another church service. What is it? It is a place where you and I are called to make disciples. Right? It's a place for disciple making. Now, for example, you, we go to church, we have, you know, probably a five-part series and, you know, at APC, we've been covering the mind as well, and previous to that, we were covering faith and science. Now, these are complicated topics. These are topics that many of them may have questions. Now, in a church service, I can put up my hand and say, okay, I have a question. Can I please know what the, you know, what the answer to this question is? Very unlikely. You can't do that. But if you're part of a cell group or you're a cell group leader, this is the place where everyone are free to ask questions, right, free to, you know, share their thoughts, open up for discussions, right? So for example, you feel, hey, I didn't understand this about the body, the mind and the soul, you know, the soul, the body and the spirit. I don't understand. I need to get more clarity on that. Our cell groups is a beautiful place where we can ask questions, open up for discussion. So that is why it's not just a Bible study. It's not just a prayer meeting, but it's a place where there is heart-to-heart relationships, right? I'm going to keep teaching. So if you have any questions, you can interrupt me or just raise your hand and we'll be available to, you know, take questions as well, right? So don't stop yourself. Feel free to stop me anytime and ask questions, right? So in every cell group, people can be evangelized. People receive prayer, healing, deliverance. There's fellowship, there's disciple making, there's Bible teaching, edification, there's follow-up, there is discipleship. There's so much that can happen in a small group, right? And anything needed in the body of Christ ought to be found in the cell group, right? So as a cell group leader, it's very important to keep this in mind, you know, because sometimes we may think, oh, it's only 12 people. What can I do with 12 people? I want to, you know, lead in a church where there are 500 people or 1000 people. That's great. That's good to have a vision that way. But remember, Jesus started with the 12, right? 12 disciples. He chose them. He prepared them. He taught them. He taught them to learn from their mistakes. He gave them opportunities, and you see what those 12 disciples did. They turned the whole world upside down, right? They went out, and the very fact that we are speaking about the Lord Jesus, it's because they began a work, right? So you never know who you're ministering to, right? Never look at something and say, okay, this is too small. I love what the book of Zechariah says. It says, never despise meager beginnings, small beginnings, right? So, you know, even if it's people, 10 people who are coming, they are coming with a heart to learn. They're coming with a heart to receive from God. So as a life group leaders or cell group leaders and maybe even attending, be available for them, right? Expect God to move, right? Expect God for healing, for deliverance, for, you know, for the gifts of the Holy Spirit to manifest. Let me give you this example. Somewhere after I became a believer, I always thought, you know, I enjoyed flowing in the prophetic, in the word of knowledge. But sometimes I would think to myself, oh, is this my own thinking, or is it God? And I'm sure all of us have gone through that, right? Is this God telling me, or is it because I am thinking that? So many times I stopped myself. I wouldn't give a prophetic word. I wouldn't give a word of knowledge. And many times even, you know, I felt that, you know, if I pray for this person, this person can get healed. But many, many times I've stopped myself. What if that person doesn't get healed? What is my response to that? Right, so I remember as a young boy, I began to go to a small life group. And when I went to that life group, I realized that, hey, here is a place where I can step out. Nobody's going to be judgmental, nobody's going to criticize you, but I can step out of my comfort zone. And it was there in the cell groups where I began to pray for people. I used to say, if people were sick, I would say, hey, can I pray for you? It was difficult, but it helped me to step out of my comfort zone. What I couldn't do in church, I was able to do it in a cell group. Many times I got a prophetic word and I've shared it. And when I shared it, they said, hey, yes, this is something that I was praying for, or a word of knowledge. Many times they said, no, not really. That's all right. But it's a place where you exercise your gifts, the gifts of the Holy Spirit, exercise the talents that God has given us. Now, why are we talking about cell groups? Is it something that's just random that we're doing? We don't know what to do. We meet on Sundays, so let's meet in the middle of the week. Now, if you look at it, it is a biblical pattern. In the New Testament, we see a lot of ministry, a lot of ministry happen in small groups and in house settings. Jesus did a lot of miracles, a lot of his teachings to thousands of people, but he also ministered in people's homes and in smaller settings. Now, if you tally these two, if you look at it, Jesus was more found in people's homes and in smaller group settings. Apart from the 5,000 and then the 3,000, apart from that, the crowds followed him, but he preferred ministering in smaller settings. The early believers, the early church in the book of Acts, you see that a lot of ministry happened in homes and in small groups. So let's look at a few verses here. I've underlined them here, highlighted them yellow. Acts 2, 46. Now, Acts 2 is the church is just birth, right? So the church in Jerusalem, there are about 10,000 people added into the church. Now, the church is big. What did they do? It's not like they had the Pentecost, they had that one moment, then everyone went and then they would meet every Sunday. No, that's not how it was. What does it say here? And they continuing daily with one accord in the temple and breaking bread from house to house. They'd eat their meat with gladness and singleness of heart. Now, just picture this. There are about 10,000 people in the church. Okay, let's say that many of them went back to their hometowns or from Jerusalem. They were all believers, right? Now, what did they do? They all met daily in one accord in the temple, right? In the temple where we know that it was near Solomon's colony that they would meet and breaking bread from house to house. So probably they had a small group in one house here and maybe 10 minutes away or 20 minutes away. I'm just painting a picture for you. They had another cell group there. They had another cell group there and they were meeting every day, breaking bread, celebrating the Lord's table with gladness and singleness of heart in small groups as well. Right? So we see that it is a biblical approach. Look at Acts 542. And daily in the temple and in every house they seized not to teach and preach Jesus Christ. Right? And in every house, right? Probably they met in 15s or 20 people. We don't know the number but they met in smaller groups. Right? Now, these were not churches. See, the church happened. They met daily in the temple. See, the church basically the once in a week meeting probably happened. But apart from that, they met in every house teaching and preaching Jesus Christ. Look at Acts 20. Now Acts 20 already the church in Antioch is also you know, growing and the church in Antioch also. So you got church in Jerusalem. You got the church in Antioch as well. Let's see what happens there. Acts 20. And when they were and when they were come to him, he said unto them you know from the first day that I came into Asia after what manner I have been with you all at all seasons, serving the Lord with all humility and mind and with many tears and temptations which befell me, mother lying in the weight of the Jews and how I kept back nothing that was profitable unto you but I've showed you and have taught you publicly and from house to house. So we see that as leaders they went house to house also teaching and preaching. So you see publicly and from house to house. Acts 28 and Paul 30 and 31 and Paul dwelt two whole years in his own hired house and received all that came unto him, preaching the kingdom of God and teaching those things which concern the Lord Jesus Christ with all confidence no man forbidding him. Now this was, if you see Acts 28, it was towards the end of his ministry. What does Paul do? He takes a hired room he stays there for two years and there he met with people preaching and teaching the kingdom of God and likewise Romans 16 the church, greet the church that meets in their house first Corinthians the first fruits I beseech you brethren in the house of Stefanus that is the first fruits of Akhaya and that they have addicted themselves to the ministry of the saints right so this is after the first missionary second missionary journey the first fruits of Akhaya then again the churches of Asia solute you Aquila and Priscilla solute you much in the Lord with the church that meets in their house solute the brethren in Colosse and the church that meets in their house Philemon and to our beloved Apia our fellow soldier and the church in the house so we see that lot of the churches were already meeting in houses and apart from that they also had the the cell groups as much so probably we must understand that during those days they would meet especially the Gentile churches they would meet on probably Saturdays or Sundays once a week but during the week they would also meet for fellowship and edification right now the cell church movement emphasizes that the cell is just as important as the Sunday celebration right both are equally important and look at the early church they celebrated together in large places and then they also celebrated from house to house but if we read on later on especially in the book of Acts what happens is because of the persecution many of the churches became house churches itself they couldn't go out and openly preach and teach the gospel so but what we do see is that cell groups and the church have one thing in common they both see they both are the same in the sense they have to have the celebration the Lord's table and all of that the gifts of the Holy Spirit the ministering of the Holy Spirit but in a smaller setting we have a lot more advantages right you can build people up and if you look at the great apostle Paul how is he able to raise up so many leaders he was able to go to places to these small churches and raise up leaders Aquila and Priscilla, Timothy Titus, Philemon who is a leader in the church in the Lossae Stefanus so many people he raised up right now what do we notice here wonderful, wonderful method or way of raising up disciples all through the small groups right so so we need to establish this fact that cell groups life groups, cell groups and the Sunday church both are equally important right because I think now nowadays we live in a day and age where we look at the big and we get excited or we get very happy now it's wonderful that the Lord adds many people to church it's good to have a church with 500,000, 5000, 10,000 people it's wonderful the Lord is building his church he's building, he promised that he will add to the church but it is also important that we grow in maturity and Christlikeness we talked about the church in Corinth last semester we saw the challenges that they were facing they were a famous church well known church probably growing very fast but they were not growing in maturity they were not growing in Christlikeness so cell churches cell groups are very important right alright let's get to the next portion why cells we have about 9 points here but why cell why life groups why can't we just do with the Sunday service and have all the other ministries like children's church, dean church women's ministry, men's ministry family ministry why can't we just have those ministry but what is the cell group going to do right let's look at these points right first one cells provide the most efficient means for pasturing evangelism right is the most efficient means for pasturing and evangelism now what do we mean by that in a cell group for example there are 12 people right it is the most effective place where as a leader you are pasturing or shepherding those 12 people right it's a place where you know those 12 now I just keep using 12 because that's something that we follow you can change the number according to your own you know your own convenience but for example 12 people right those 12 people are under your care you will be pasturing these believers when I say pasturing it simply means shepherding them leading them giving them opportunities guiding them, praying for them right the opportunity to provide personal ministry to all believers now imagine there's a church of 500 people there are two of them in church right who are depressed or they are suicidal and they don't know who to go to because it's a big church 100 people the pastors are busy they can't give their time always and so sometimes they may feel lost even though they are part of the family they are not part of the family but the cell church imagine right this person goes into a cell group and you know first few weeks he just doesn't share anything much but then later he goes to the cell group leader and he shares this is my problem I've been facing thoughts of depression thoughts of suicide what must I do now as a cell group leader here's your wonderful opportunity so you minister minister to the word now I'm not saying that you minister once and the person is alright no over time it's a great opportunity to keep ministering to keep following up with them to keep spending time with them now I know that we all work Monday to Friday but it could just be a call it could just be an additional maybe half an hour with them spending some time maybe just having a cup of tea with them these are things that can really touch a person's life actually I used to think oh man these people who are suicidal or depressed going through challenges in life all they want to do is just talk and there was a time when I was ministering to this young man early 20s he was also suicidal and I would say why don't we just go out for a tea let's go out and have something to eat and he began to open himself up he began to say in the entire week I wait for Wednesdays for life group he doesn't wait for Sunday I wait for Wednesday and when Wednesday come I'm so excited I'd like to come and this person young man young boy he used to keep telling me why do I feel this way life is good I don't have too many challenges but I keep getting these thoughts of suicide why do I want to do this so I just began to casually talk to him this is what the word of God says just simple talks why don't you do something that you like what is it that you are interested in so he was saying I couldn't learn so you choose keep your mind occupied it was just practical things but just being there for this person now I understand that we can't do it always but in a cell group if you are leading a church or a ministry and you have to appoint cell group leaders teach them these things it's a wonderful place for even evangelism there are many times people who come in to church they don't really believe in God they have many questions many many of them that I have spoken to they don't really believe in God but they come why they find some kind of peace or they have friends in church and so when they come it's a wonderful opportunity for evangelism it helps us become more effective leaders so now I want to be very careful we must be wise when we are leading people and we look at some of the pitfalls to avoid in terms of leadership as well cell group leadership we look at that later two is recapturing families right so in church especially believers don't really get involved in ministry many times they may just come to church attend and go back but when we move from a receiving mode just receive every Sunday or every cell group and then they move from that receiving mode into the giving mode more from instead of out of the distribution line into the contribution line right so we keep receiving it's been two years in church five years eight years ten years and many times we feel oh man when can I give something and can I minister to people life groups is a wonderful place I remember recently I was speaking to one of our church folks beautiful very very wonderful man of God he had his own business now he's a consultant and he was always very wise in the decisions that he would make so I remember just talking to him I think it was December early first week of December I said brother why don't you think of starting a cell group your children are all grown up now they're all going to college and working so you have free time and he wasn't working full time so he was more of a consultant he said he said do you think it's a good idea I said yes definitely I'll get people who are young people just starting up their professional life or probably starting up in their careers and you can you can help them you tell them places where you succeeded places where you failed how God helped you through these seasons and I'm sure they'll be able to really be blessed with what you share but he didn't think of it I told him this he said okay I'll think about it he came back he said okay we'll start and now many youth go to his life group and he shares of course he talks about the Sunday sermon but they all also ask him how did you start the business how did you do the challenges you faced and so it's life to life you know it's no more okay I know this person in church no so when they see each other it's like they really you know know each other well there's a relationship right and what happens there's life to life there's discipleship and this brother in church he called me he said thank you so much for giving me this opportunity I never thought at this age I would be able to you know speak into these youth I always thought you know they will have their own way but no it's not true many youth are looking for answers looking for mentors who can lead them right this time so it's a wonderful way of recapturing families touching hearts and lives you know especially within the church community right next one increasing the church now please remember that without a harvest our church can't grow right all our future leaders are out there in the harvest so the more effective if we want the church we must have greater better powerful leaders right now no church can function with one person we may be the pioneer of a church pioneer of a ministry he may have even if he has two or three people under him it's not going to last for long why even if it does the leaders are going to get a burnout it's very important as a church even as we're growing to have many many leaders many many volunteer leaders too now for example we have a church of 100 people I'm just giving you this example 100 people you must have at least 35 to 40 volunteers and leaders 35 to 40 what are we doing we're looking at raising up leaders we're looking at ahead we're looking what it's going to be what if we suddenly in one year become 200 people so what do we do no leaders no volunteers always prepare look at the harvest the harvest is plenty the laborers are few always when you as leaders as people in ministry when you look at people look at what they can do so recently here are some of the things we did in church I said okay let us have all the volunteer leaders meet all the volunteer leaders will grow your own teams so in three months you should have at least three to four new people in your team and of course as a leader I will recommend people I will lead people to your teams but what are we doing we are finding prospective leaders what's going to happen the church is going to grow the church is going to be stronger and then we are also starting new life groups we're getting people to who are just joining church if they committed to church they have decided to continue a church we're getting them to be part of life groups be part of cell groups they are in the cell groups they are learning they are getting opportunities they are probably learning how to pray how to minister healings exercising spiritual gifts doing all of this what's happening future leaders are being raised up it's a wonderful place to do that next one making disciples discipleship of believers is most effective in small groups right so you mentor life to life right you're you're sharing your life with the other person look at the beautiful example the Lord Jesus said for us right thousands of people would follow him but he had that 12 people and what did he do to them he showed them his life right Jesus didn't say okay you come when you come come home at 9 o'clock in the morning and I want you to leave by 5 p.m. 9 to 5 you are with me no he went with them he showed them he showed his life imagine he's walking through Samaria he's going there you think it's easy walking around in the hot sun through those deserts wasn't easy he saw his life they saw him they saw his humanity but they also saw his divinity they saw he's tired he's resting he's sleeping but they also saw that he calmed the storm in his hands they saw that he was probably tired and weary they saw that he was they didn't see him being tempted but they got to know the temptation came to him but they also saw him overcoming those temptations he shared his life he told them people are respecting him so much and here he is washing the disciples feet people are you know pouring out perfume and wiping their feet and wiping Jesus' feet and people are willing to do anything for Jesus and here Jesus is in a smaller setting he's washing his disciples feet do you want to be great be the least right he began to show them his life he didn't act super spiritual he didn't act super great or don't touch me don't come here no no wherever they went he probably had the simple food that they all had slept on those hard surfaces showed them his life mentored them taught them to pray taught them how to overcome taught them how to overcome the temptations and the works of the enemy made strong disciples and you and I as believers if we want to make disciples we need to show it in our lives there's a saying you know we can preach a thousand sermons sometimes people are not going to remember any of those sermons but they will remember our life they will remember oh this is what he did more than what he said they will remember what he did the Lord Jesus even when we read the scriptures we remember what he did of course he said a lot of powerful things but he did such powerful things right so let our life speak to others right now that's not easy right it's not easy but that's that's where making disciples we get an opportunity to speak into other people's lives only if we are taking the effort to be Christ like if we are walking in obedience with God's word people will come and listen I always remember I always had this feeling inside me at a very young age I got into ministry I always used to think you know why people may not come and share their problems or challenges with me because I was too young hey what is this person he doesn't know he's just so young he hasn't seen life yet he hasn't seen the challenges in life and so I was okay with people not coming and especially after church I was okay people don't come and share that's okay let them choose somebody who's maybe especially families who have gone through challenges let them choose them but this really struck me right the Lord Jesus he showed people his life his disciples so I began to just walk in obedience with God's word just being available and suddenly I realized over time people started coming they started sharing I'm going through this problem my children are like this my family is like this what happened they watch our lives and God begins to minister God begins to speak to them and God will give you and I an opportunity God is not looking for people who who know everything from Genesis to revelations you must be able to quote scriptures no he's just looking for lives that are surrendered and dedicated to him and he will use it right so I want to encourage each one of us if you ever thought of becoming a leader but maybe there are things that have stopped you right just overcome that just look at God and say God let me a life speak to people right and I'm sure that God can use each one of us in the ministry let's do the next one and then we'll take a break cell groups is a wonderful place for having true fellowship and edification so we look at that build meaningful relationships it's hard to do it in large gatherings but in small gatherings there's a bond there's a loving relationship that is you know just built over time and what happens it becomes so strong that that bonding spreads it goes from one person to another to another and all of a sudden you see the church is so close knit why because there was true fellowship there's true edification right so let's take a break we'll come back in 10 minutes and we'll start again any questions anybody have any questions questions okay let's take a break we'll come back at 10 o'clock


So first of all, we're going to do the PvE disc base list And we're going to do the previous and the raid bus. Then we're going to do PvP bus previous and raid bus and I'm also going to link a Sort of an easy pre-bus to get that so it doesn't contain anything that requires a lot of I would say anything beyond Revealed from war song it won't include it won't include anything from a wrathy rep or rank 5 and it won't include Anything from BFD So it'll be something you can just easily get on a fresh character With the exception maybe the war song pieces, but I would assume most people are war song revered on anything that isn't fresh so for PvE the previous is going to be Papal fairs you also have the option of I guess the Holy Shred is gonna have more healing but less overall stats But I kind of like the overall stats. We don't really know how long these fights are gonna be or how much mana we're gonna have so Papal is pretty nice here try an amulet just from SM nice and easy to get Then we've got the berry line pads Battle healers cloak this one's from war song revered. I see I believe it's from from war song on it Actually, yeah war song on it then the dream we vest tailoring crafted Then we've got the war song Exalted braces obviously this is the bis or the harder to get pre-bis also Then we've got the epic stuff from BFD We have dream weave gloves urban silk belt stone weaver leggings Then we have the extra planer spider silk boots advisors ring Signet of the twilight lord Acolytes void pearl if you did choose the healing pearl from BFD If not, you can use the spell damage one here and then the shifting scale talisman as well And then necrotic wand which is going to be from SM graveyard and then the easy this has a few adjustments here obviously with the rings and the Helm obviously is not the non-boe version the white main chapeau and The braces are adjusted Answers that shows the weapon so as you can see there's no BFD pieces here and there's no high rep pieces I would say other than the cloak But there are other options for the cloak if you can't get that if it's a fresh character and then for the bis It's probably the most interesting one. We have the tailoring helm Gonna require some maps from the raid ocean. We've got pendant homecoming Synthetic mantle and we don't know what all the bosses that drop these are yet But we have got some data-mined loops that we're going through the cloak invention Hyper conductive Shimasha and this is gonna be a token that you can get from the raid where you can choose a piece So choose wisely. I believe you're gonna have to be able to have more than one You're gonna be able to get more than one token But obviously the first piece you pick is gonna depend on whether you care more about PvE or solo PvP I would say We'll get more into that later the braces gonna be tinkers wrist wraps and then the healing epic stuff Dreamweave gloves remain And we've got mech mender sash hyperconductive pantaloons hyperconductive sandals for that nice three-set juicy bit of region This is the thing We don't know if you want to want to just have more throughput or whether the region is actually gonna be needed Obviously, we're gonna have fiend. We're gonna have potentially dispersion So mana regen is gonna be quite nice blood blood Covenant seal from the STV event hypercharged gear Acolytes void pearl remains and then the miniaturized combustion chamber as it has damage and healing on it and Then finally the Meccano strider gear shifter So that's gonna be the PvE disc as always guys remember that these lists are subject to change Obviously, I can't change the recording on YouTube But I will try my best to keep the actual this list links as updated as possible If you want the most updated version then I always update them first in the sub channel on my discord So if you're in there you get priority. Let's start with Disc pre-biss. This is for PvP. So we've got the augural shroud shroud. Sorry With the triune amulet Very very strong piece actually Barrel in pads again, then we've got the battle healers cloak quite a nice piece easy to pick up obviously if you're Already well all the way up to exalted with the war song Then we've got robes of the lich really really high stamina on this piece. So this is a nice pickup With the dryads wrist bindings from war song The rod of the ancient sleepwalker again Then we've got the black fingerless gloves. I said these at the time These are absolutely insane these gloves and yeah, they're still going to be pre-biss for us We've got shadowy belt stone weaver leggings Then the extra planar spider silk boots which honestly, I think if they don't provide an upgraded version of these These are still going to be best at 60 with the minus 30% damage taken Which is absolutely insane and the 1% hit on them obviously is an added bonus that just scales up all the way up, right? So even though the other stats will be low the perks of that is just so high We've got advisers ring and lone trees circle and then we've got the acolytes void pearl All this damage version if you have that one Greater insignia of the horde this will be from rank 5 If you do not have rank 5 then just obviously your normal insignia until you do and then necrotic wand And then we've got the easy version of the pre-biss which just removes a few pieces from the BFD raid I'm not going to fully go through this. There will be a link in the description as well Then we have the PVP disc Bits for group play so this will be things like war song and larger scale PVP combat And the reason for that is it has a little bit less stamina and damage and more healing and region So we've got the tailoring helm again and pendant of homecoming again Just because of the high amount of stats on this bad boy, and we've got synthetic mantle Cape of homeostasis With a hyper conductive shimasha and as you'll see we're using the healer version of the set here Dryads wrist bindings again, and then glimmering gizma blade with the 960 repair manual and the reason for that rather than the epic staff is this is gonna allow us to swap on skull of impending doom We've got the fighter ace gloves really nice armor on this piece with good stamina intellect and Damaging healing as well, and then we've got the mech mender sash This is another piece with no stamina on but really good stats so it's worth the risk Make sure you're spacing well in these group fights, and you won't need to be as tanky and Then we've got the hyper conductive pantaloons for the the three set with the boots Now you can actually swap these out if you feel like you're not tanky enough if you want to go with the The crafted tailoring boots then you can swap those on and I know I'd switch these legs out for the Stone we've stone weaver leggings again, and that's gonna make you a little bit more tanky For the rings we've got the hypercharged gear of innovation really nice stats on this one blood covenant seal of course, and then we've got the niodyne pill bottle and This is providing a freedom. It's a very long cool down and there's a few trinkets in there with a long cool And so I imagine you're gonna be swapping trinkets around quite a lot I've just put this one on here as an example, but this is this is gonna be very nice for giving people freedom Obviously your greater insignia is gonna be removing everything rather than just specific things and then the mccarno strider gear shifter So that's a group play for duels and world pupae some things are gonna be changing up a little bit So we still have the tailoring helm, but now we have the damage neck Synthetic mantle remains, but now we're running the bloodrock cloak and You'll notice we're running the two or two parts of the damage set now and We're gonna continue to run the same Braces and weapon however, we will be switching the offhand to the umbral crystal and obviously skull as needed And this is gonna provide a nice bit of damage actually the B. O. E. Here by two ace gloves remain and Then the belt is gonna be the arathi basin belt which has a decent amount of armor on stamina int and then damage the damage Legs come in here, and then we're not gonna run the three set While it is nice and you can run it when the boots are on cooldown I would say so make sure you're starting out with the extra planer boots and then switching them off as they're on cooldown to the set for that potential Damage and healing boost Rings is just gonna be advisors ring and then the sanguine shadow band So this as you'll notice will we've got a little bit more shadow shadow damage in this set but also stamina While taking that region hit We're gonna be running the combustion chamber trinket But again, you most likely will be able to rotate around through different trinkets The on-use of this one is not quite as useful But it's the intellect and damage and healing is nice and then the standard trinket and wand remain So that's that's disc. That's all of the business I've got for disc as I said It will take a little bit of time for you to go through them If you have any specific slots that you disagree with or if anything changes do let me know in the comments I will adjust things in the description. Obviously the video cannot be changed in retrospect


Welcome folks to the 4 p.m. Market Update. My name is Jacob. Let's take a look at everything. We're closed in sideways today. We also did close down 2%. The NQ's up marginally at 0.12 or sideways on that. The Dow futures sideways at 0.55. The gold contract finishing almost down a percent at 19.51. That's a big pull down from the beginning of September and that's because of the dollar skyrocketing earlier. Silver been lagging a little bit behind but that got hit substantially today about 2.76%. That's a silver contract. The copper contract sideways at 3.83. This will be super interesting. Again, I love on the long term looking at copper as we move towards these green technologies particularly lithium and copper are going to be in such massive demand. There's a finite amount of, especially copper. We'll see on the long term how that looks. There's some large private equity firms who are looking at investing in copper on the long term, especially during some fears of recession and stuff like that. DXY finishing at 104.80 and then we didn't talk about this but United Airlines, all their flights were grounded due to I guess a glitch in their computer system they say but large volume down just about 2.5% Southwest suffered a similar thing earlier this year. IHARP constantly on cybersecurity. They're saying this is computer glitch and you have to kind of take the company at face value on it but you know it's important to look at a lot of this stuff can happen certainly and I know this is kind of a random factoid but it happened in Kazakhstan I think about six months ago and their major airline got dozed essentially and they had to ground all their flights as well. Meta closing just below 300 for the day but still up 1.21%. I know we had some issues with the charts earlier so I didn't get to get to everything I wanted to talk about but I love talking about some kind of scientific discoveries that are being published about 30 seconds left. This is pretty fascinating. This is from Duke Health. It's antibodies that they developed in lab show promise for preventing organ rejection after transplantation. This is a man made antibody successfully prevented an organ being rejected when tested and this is in primates and they did it with a kidney transplant. So we'll see if it covers over for humans but if that's the case that is a massive leap in science achievement folks. Thank you so much for joining me and maybe with you tomorrow. I'm not sure we'll see how that pans out but I'll let you know early about that. Have a great evening folks.


Welcome to this training describing the embedded software architecture and the software distribution, primarily targeting the STM32MP1 microprocessor series. Microcontroller units, so-called MCU, are built around MMU-less cores such as ARM Cortex-M that are very efficient for deterministic operations in a bare-metal or real-time operating system context. STM32MCUs embed enough static RAM and flash memory for many applications and can be completed with external memories. Microprocessor units, so-called MPU, rely on cores such as ARM Cortex-A with a memory management unit to manage virtual memory spaces, opening the door to an efficient support of a rich operating system like Linux. A fast interconnect makes the bridge between the processing unit, high-bandwidth peripherals, external memories, and an optional graphical processing unit or GPU. This first MPU platform, referenced as STM32MP1, is built around dual-core ARM Cortex-A7 and an ARM Cortex-M4 core. This platform aims at addressing multiple market segments such as industrial, consumer, healthcare, home and building automation. STMicroelectronics' approach for a smooth transition to the MPU world consists of putting both worlds in a device, seeing the MCU as a subsystem of the MCU. Some new concepts need to be introduced for a good understanding of multiple-core architecture such as the STM32MP1 one. First of all, a hardware execution context is defined by a core and a security mode. On the STM32MP1 microprocessor, there are three hardware execution contexts. ARM Cortex-A is secure, also called trust zone, ARM Cortex-A non-secure, and ARM Cortex-M supporting only the non-secure mode. Each hardware execution context may support a part of the boot chain execution at boot time and supports the execution of a firmware at runtime. On the STM32MP1 microprocessor, there are also three runtime contexts. ARM Cortex-A is secure, executes opti-secure OS. ARM Cortex-A non-secure executes Linux OS. And ARM Cortex-M executes STM32 cube. The term peripheral assignment is used to identify the action of assigning a set of peripherals to a runtime context. Each peripheral can be assigned to a runtime context or shared across several contexts. Shared peripherals are typically system resources like RCC for the reset and clock control. In line with the concepts introduced on the previous slide, the legend of this diagram distinguishes two possible states for each peripheral. Assigned means that only one hardware execution context is using the peripheral at runtime. A single color box means that the assignment is static, whereas a double or triple color box with vertical separator means that a user choice is needed to assign the peripheral to a given context, depending on its application needs. This assignment can either be done with STM32 cube MX tool or manually, and it is reinforced by hardware isolation for the Cortex-A7 secure and for the Cortex-M4. Shared means that the peripheral can be concurrently used by two or even three different execution contexts. This mode implies registers banking or other mechanisms that ensure there is no contention between the given context when they access a common resource. For instance, TIM instances on the left can be assigned to one runtime context and will only be used by this one. RCC, just below, is a system peripheral that can be concurrently accessed by the three runtime contexts. This screenshot shows an example of the assignment as it can be done with STM32 cube MX tool. USART-1 is assigned to the Cortex-A7 secure for opt-in. USART-2 is assigned to the Cortex-A7 non-secure for linux. USART-3 is assigned to the Cortex-M4 for distribution. Additional possibilities might be described in STM32 MP15 reference manual and may be considered later on in our distribution. Note the two columns that were never mentioned up to now on the left used for USART-6. The boot ROM column allows the ROM code to be able to boot from this instance. This choice limits the TIM's possibilities to the one supported by the ROM code since it is connected to the ML-AHV interconnected peripheral for the boot loader. Listed below and shown in this figure is to limit the size of the device to be generated for the boot loader in the 0x0000 to 0x1FFFFFF address range. D-Bus is used to read or write data in the 0x000000 to 0x1FFFFFF address range. And S-Bus is used for all accesses in the 0x20000000 to 0xFFFFFFFF address range. All STM32 MP15 internal peripherals registers are mapped in this range. Balancing the Cortex-M4 firmware accesses among these ports enables the tuning of the system performances. This is why the MCUS RAM is defined in the first address range from 0x100000000 but it is also visible in the second range from 0x300000000. For the sake of simplicity, this second range is not shown in the next slides but keep in mind that it exists. The diagram maps the various RAM and ROM regions on the different execution contexts that use them in STM32-MPU embedded distribution. It is important to notice that the RET RAM appears twice here. One time on the Cortex-A7 non-secure side for coprocessor firmware loading and one time on the Cortex-M4 side for coprocessor firmware execution that starts to boot from the 0x0000000000 address. This diagram is available on the same STWiki article as the previous one, STM32 MP1 RAM mapping. The Wiki also gives information on the way each one of those regions is used. This slide shows the RAM banks available on STM32 MP1 microprocessors and the typical mapping applied to STM32-MPU embedded software distribution. RET RAM is used by the Cortex-M4 to put its vector table plus some code and data. MCU SRAM1 and SRAM2 can be used to put the remaining Cortex-M4 firmware code and data. MCU SRAM3 is typically used to map the inter-process communication buffers that are further described in the coprocessor management training. And MCU SRAM4 can be used to put DMA buffers for the Cortex-A7 core when high bandwidth is needed when using DMA1 or DMA2 instances. It is not mandatory to align this mapping on regions' borders, but this can be of interest since hardware isolation for Cortex-M4 memory is supported with a per-mpu embedded software distribution. This diagram explains the terminology used to define the main components of the STM32-MPU embedded software. The OpenST Linux distribution running on the ARM Cortex-A includes the OpenST Linux BSP with the boot chain based on TFA and U-boot, the Opti Secure OS running on the ARM Cortex-A in secure mode, and the Linux kernel running on the ARM Cortex-A in non-secure mode. The application frameworks are the middleware relying on the BSP and providing APIs. On the Opti side to run the trusted applications that allow manipulation of secrets, not visible from the Linux and STM32-Cube-MPU package, and on the Linux side to run applications that typically interact with the user via a display, a touchscreen, etc. The STM32-Cube-MPU package is running on the ARM Cortex-M. It is based on HAL drivers and the middleware, like other STM32 microcontrollers, completed with co-processor management. This slide aims at giving a very high-level overview of how a Linux system is organized allowing you to easily jump into the end to explore and get more details about it. On the user side, we have applications that usually rely on middleware to invoke the Linux kernel. Linux drivers are not directly exposing their API to the user space. Instead of that, they are registered to frameworks that themselves expose unified APIs to the user space. The framework concept is very important because it ensures that an application working on a stable framework API will also work on a future Linux kernel version, and that it can as well work on other platforms implementing other drivers. On the left, you can see that some frameworks may even have some sub-frameworks. This is, for instance, the case with SD card support that is a sub-part of the MMC framework. This slide shows the STM32-MP1 peripheral drivers and their respective Linux frameworks. The framework's names are written in lower case. The peripheral driver names are written in upper case. The color code indicates the origin of the source code for each component, third-party, community, or ST microelectronics. This view is also available in the ST Wiki. The STM32-MPU embedded software distribution is built thanks to the open embedded build framework for embedded Linux platforms. This diagram shows the usual components that are embedded in our distribution. Feel free to explore the ST Wiki and open embedded online distribution to customize this setup for your needs.


Hello and warm welcome to everyone joining this session today. We have Neon, Dr. Christopher and Curtis, which we are hoping would join soon. Yeah, they're with us to talk about building and solving some type safe optimization models and Pascal, which in short is going to be an interesting session for us all. So without further delay with you, Neon and Dr. Christopher. Thanks. Thanks again for having us today. So today we're going to talk about building and solve of decision models with functional programming and high school, of course. In this case, Haskell. So first, optimizations, what is it? Well, like, we have some functions and then with a given constraint and then we need to minimize it, right? And that and it has sort of every sort of application you naming resource allocation in computer. You have machine learning also opposition, you have like image processing and reconstruction problem, etc, etc. And we're going to talk about applications of application of opposition if we are usually revolves around a algebraic modern language. I am on this case. And in this case, so first of all, we have the input models, right, is the optimization problems that we want to solve. It can be in image processing machine learning, or if you have this model, you need to optimize. And then on one on the other hand, you have this algebraic modeling language where you will, you know, describe your model in. And then there's also another part, the optimization solvers, like someone wrote a very good optimization solver that can take your it like a compound decision and then try to optimize it. So, my principle method, etc. Anyway, so with the current, current state of algebraic modeling range. So we identified that there are some problems, like, for example, there's for gams and ampoules, they are like a dedicated like language. They're not embedded a in the general purpose programming language, which makes sometimes makes processing data and then describe model. It's hard because it's niche. Another problem is type safety, some like some algebraic modern language in Python, in Python or Matlab or Julia are like type safety so sometimes we try to run our model, and then it turned out that we have some like type error. We didn't know about, and then we wasted our time. And another thing is that like in, sometimes in those like in pyomo in Python or something, or in jumping in in Julia's models are kept like a capture as programs like they are instruction so sometimes it's really hard to analyze and optimize those models like what if we want to identify common computations, what if we want to use math properties to optimize the competitions. How do we do that with like, it's, it will be a privilege to static analysis of a program which is not going to be easy. And so, so what are our goals. We're going to make this, this step type safe. So, we want to make that like translating the model to the algebraic model language that have that step we're going to make it safe type safe. And in the algebraic modeling language itself, we want to capture the models, we're going to capture all the computations, and then somehow eliminate redundancy and optimize competitions with math properties. And then go three, we want to generate high performance code so we can, like, solve it, shove it to the optimizations, optimization solvers, and then it can operate real quick. So, these are goals. So, how we do that, we, so our solution is like, right, hash expressions. It's a library in Haskell, it's an algebraic modeling language is embedded in Haskell has type safety where like, if you have the idea is like, you can construct invalid expressions and models in general, like, otherwise, the compiler will throw in type error, like, this is not a valid model. It captures optimization models in symbolic form, like all the expressions as capturing symbolic and then we use hash consigns, which we use a hash mechanism to identify all the common sub expressions, and we have terms rewriting to simplify and rewrite computations to like our design form. And we generate C code and C code and then that can be embedded in anything, not just optimization solver, but yep. Okay, so let's get started with the first example of using hash expression to solve a real world problem. So we're going to talk about magnetic resonance imaging reconstruction. Basically, like, this is example when you go to a clinic. And then you want to cap, like, take a picture of your brains. Anyway, what you have after the MRI machine take, like, take operation is like, you have a full signal of your brain.  So which is indicating this mask to the mask. So these, these black spots are where you got the data, these white spot are where you don't. And then there's also some noise, you capture, and then what you need, you need to fight the image of the brain itself. So, why don't I ask, like, why don't we take the, just take the inverse we transform. I mean, we can, but the result is not going to be good. It's going to be a blurry brain image like this. So what do we do. Instead, we set up an optimization problems. We say, we let's minimize, let's find an X, let's find an X that minimize this expression, which is mean say like a free transform X, like, subtract to the signal we receive. And then we ignore the, we ignore the spot we where we don't get the data. And then we add a regularization. And then we also add a, a bowed condition that say that we only care about the fix like pixel inside the brain. So outside, we, outside should only be between, like, the noise boundary, which is very, with the very small value of negative and positives, one, two or something. Anyway, so we set up an optimization problems. We input it into hash expression. So, as you can see that there is the way we input it into hash expression is very similar to the mathematical formula that we have in the first place. You can see the correspondence here that there's objective, there's constrain, and there's a regularization. Everything looks very similar to the formula. And then you put into hash expression is going to does all the calculation optimizing computations and generate C code and then that C code you put into optimization station server. And what you, and then you get the results is the image on the right side here, like, it looks much better and has details and then then the doctor can, you know, do the diagnosis. All right. So that example of hash using hash expression. And then, okay, so now let's get back to how do we do it. So first is let's go back to go to the goal. The second goal is remember the second ago we want to capture the models in capture the model ends, then be able to optimize and then we do redundancy right so how we do it. Of course we have to deal with expressions which is the basic building block here. We represent it, we capture it in direct as a single a single graph like them. And then we have a map of where we store all the intermediate expressions, each entry, where each expression, some expression is a note in the graph and index by that map, and they're indexed by their hash, and therefore allow us to identify expression like common expression will always be indexing the same map. Anyway, this is an example of how we store the expressions. So here's an example, you have variable X variable Y, and then you have all these index in a map by their hash. And like the arguments will be will be the argument of each operators will be the hash of the previous note. As you can see in this example. All right. So this is the Haskell data type that we used to represent that we have an op data type with various constructor, we can have either variable or you can have parameters or it can be a constant. It can be a sum of a list of notes, it can be a product, it can be a scale of a note with another note, with an expression, it can be a complex number constructed from two other real numbers. And a note contains of an operation and element type, either if the real complex or shape. And, and there's a note ID which is just the index of each of the note in the expression map. In this case. Okay, so the question is like, how are we going to like representing expressions and how to combine them. Like, should we use the trivial way would be to use like the map itself, and the note ID as a tuple to represent expressions and use that as a base to build called expression combinators right. Well, then if we're going to go with that. And let's see like how are we going to implement a function to act to expressions. Well, trivial, like, like the natural way would be to okay, if there are two expressions, each with different map, right. The natural way would be to just merge these two maps and then create a new note out of two, out of two existing note, and then we're going to find a hash. We're going to find a hash of that new note by, you know, you know, hashing that note, or if there's a collision rehashing that. And then, finally, insert the note into their union, the merged map and then produce a new tuple, right. It sounds like simple enough and then it should work. But actually the answer is, it's not quite. So, the problem is that if we're going to use merge to map, then there's no, we sometimes there will be a case where hash collisions like in this map, what if what happened if two expressions are hashed. And like, because we, we know that this could be a hash collision and then there'll be a rehash, right. So, what if two expressions are hashed indexed by the same ID. And if we use, if we simply merge these two map and then there'll be hash collision we don't deal with that. And then another another problem is that it'll be slow because every time you combine two expressions. It'll be the complexity would be like oh and plus and where and plus and is the number of notes in each map, right. So, if, if we build expression and note from the ground up from zero to and all the way to end of the n square algorithm so not going to be that fast as we want. So the solution is do like. So we want to build a combination of expression right the solution. Do not build combinators out of data simple data, but build combination is the data's of computations. We want to use this type signature instead, because we want to have a notion of underlying expression map like some bills expression should be on the existing map and then we build on top of that so we don't have to deal with merging and therefore could be to hash collision error. So, if you're familiar with Haskell type signatures you know that this is the case of the state monad. Here is it. And it's basically what we're basically here is like we have some modified version of the state monad we call it monad expression that only allow us to modify the underlying expression map like in by introducing new note, we don't allow arbitrarily modifying the underlying expression map. And what happens is combining two expression, which is going to follow this method like we build the first opera opera and we built the first second expression, we create new note and we introduce the new note. These are the company like what happened here is is in fact, we're combining two computations to build two expressions. So, which result in a computation to build the result expression. So, what happened, the result we handle has collision because the notes, because first notes are introduced sequentially, and there's no merge like we control all their process of like rehashing and if there's hash collision by indexing note like anyway, it's we So, so what happened is like this will happen in note in and law and because in like, we only need to retrieve index note from the map and then insert to the map which only take a lot and so building an expression of and notes from the grow up will only take an analog and so that is how we capture expression and build a combinator of expression so if you want to make in like in fix operators out of that we just make a operator and then then we didn't use that to combine expressions. Okay, so that is how we capture expression, and then let's now let's go back to the first goal and how do we make it type safe because it's we already have type but the problem is now the type does not have enough information, we only have the expression builder right, but we want more. We want to capture the shape of the expression when the capture element type real complex on the type level, not just on the term level, the value level right so what happens we introduce a new type. We call type expression and have and make it have to found type parameters, one shape on the element type that. So, what happened here is that if we have something like this type expression 15 and 1515 and see it means this is an expression of type of complex and it has shape of team times 15 times team. So, from that, we can build a combinators out of the type, we can have a primitive constructor for variables. Here is an example of how we create a new variables. So we say variable 2D of shape 20 times 15. And this will have time expression of this will be a real variable with the shape corresponding. And from that, we can define like all the operators that we can operate on expression but because of the info on the type level, we can provide specification to each operations. Right. For example, you can only add two expressions of the same shape and the same element type, or you can construct a to expression real expression of the same shape from real part and imaginary part in and construct a complex expression of the same shape. For example, here you can say a Fourier transform, it must be a complex expression, and it has, it is going to produce a another complex expression of the same shape. And here is an example, if you try to add to expression of the like different, different shape, compiler will yell like, hey, you can do that, like we expect this type of you providing an instance type. Or another example is, is scale like scaling operator in, in vector space so we can use type family to like defy a more complex constraint. For example, here, like you can, for example, you can use real scalar to scale both real and complex vectors, but you are in complex real can only scale complex vector, but if you try to scale a complex scalar to a real vectors, it will, it will you a type error, which we, which we can express that in a, in a type family and using this is like type level programming in high school.  Another example is projection operators. This is simply the, the similar at a pie item slicing notations, but only that we have type safety. So that is an example, try to it's a project project that but you get the index out of range, the type, the type system will tell you. And so, so with that, we are made the expressions construction type safe. And because of that we can catch the errors early. We can ensure that okay we have this model, we input it, it must be correct because otherwise the type of the if we would get a compiler and another advantage is, we can use typo and, for example using BS code Haskell plug in like, we can just put in a hole and then the editor will tell you like okay you need to put in a value of this type. So that would like assist with development in general. Okay. So let's go back to go to right. As I mentioned, like we already has a ways of hashing expressions and therefore, we identify common expression in index them in same notes of notificate expressions and what, what else we can do. So let's go to the next step, because we have the symbolic capture like symbolic representation of expressions, we can then perform rewriting and simple simplifying expressions. So, this can mean that we can obtain equivalent but simply expression. And therefore reduce evaluation time. And also we can share competition more than that like for example with these two expression x plus y plus z, and XBZ plus Y, they're both we written to the sum of X and Y and Z, then boom, they get indexed to the same note and competition is shared. In rewriting and simplification, we develop a rewriting system. We added a built in domain specific DSL domain specific language for rewriting based on matching and replacing in our library, we can write code like we can write code like this. To say like, if you get a real part of like, of a expression that was constructed from real part in an imaginary part, simply rewrite it to the just a real part, or if you use multiplies to a complex number of zero part zero real part and zero negative imaginary part just simply rewrite it to zero. No need to evaluate it. And under the hood. This is also we use also the monad expression we introduced earlier. And, but not only and also like not only we can simplify expressions, we can also identify special patterns, for example in neural networks. We know that this is a sigmoid function, right. What happened is, we can identify this pattern and then we can rewrite it to a special note called log sigmoid. And then, when we generate code, which we'll talk about later, we can have special instruction or hardware accelerators to evaluate that note, a lot of sigmoids, for example. What next. So, the one, another important piece of algebraic modeling language is to compute derivatives, because to solve optimization problems you need to a way to evaluate derivative right and what happened is we use reverse accumulation method. And, but we produce like this is actually the common method using automatic differentiation, but instead of producing numerical value of derivatives we produce symbolic derivative expressions. And these expression will be index in the same note and added to the same expression map with the original function. And under third how do we implement it still more net expression that we talked earlier. So here's an example, if you have this expressions here is the graph here is the expression graph right using the reverse method, you familiar with it which is traverse the graph in the reverse order. And then we into and we then like calculate all their partial derivatives with the chain rules. And what happened here in hash expression is all these intermediate expressions will be added to the original expression map, and they're get simplified and they get index and they get hash and what happened is what and then what happened next and what happened in the end. So, as you know, as we all know right like computing derivatives with chain rule. Well, we often end up with this multiplies with one right so like trivial competitions like that will be simplified away by the rewriting and simplification system. And since, and then what happened is like the derivatives derivative and the objective function will be index in the same map, and then there will be competition share between them here is the example of that. So we have multiple notes share between the objective and the derivatives. So here is the expression graph that they combine of derivatives and the function and the objective function of the of the MRI problems that we mentioned earlier. So, I think it's look kind of nice. Another point I want to mention is that like, when we talk about symbolic expression, computing, computing symbolic expression derivatives with us producing symbolic expressions. There's often time associated with the problem expression swelling because it's like for each expression, there will be many other expressions of this derivative. And, but that's not the case of hash expression because we work on a single single single expression lookup table and because we have a hash content. So, expressions will be in like index in the same note and we avoid this problem expression swellings. And so that is, first, the go one and go three, go on go to and now is the third goal, generate fast code for optimization software. So what happened here is when we have captured the computation of the problems. So we have a single map of all their objective, the constraint, the derivative of the objective, the derivative of the constraint all share in the same graph. We can then generate the code to evaluate them like, it can be a function to evaluate everything it can be a function to evaluate just the objective it can be a function to evaluate just the objective and gradient. And that code can be used by optimization servers. Like, you think about gradient descent or fps or IP off. And in this version we, we generate a, we implemented go generation that generate c and c++ code. And that we use simple memory allocation where we allocate allocate memory for each every note in the graph. And then we then we simply evaluate everything in the top logical order. In this version, we only, we only use simple follow up, and also we use FFTW3 for Fourier transform to evaluate Fourier transform, Fourier transform. And how do, and then with the generation generated codes. It looks like this. So it has automated data of the each variables. Where is the offset of the objective where it's like to look up the objective where you look at, and there's a function to evaluate each target we want to evaluate, evaluate. And we have that problem that C file. And then what happens next is whether we're going to write adapter that's connect the C code with optimization software code. And we have implemented adapters for these server gradient descent, lfbfgs, lfbfgsp, and IP up.  So for future work, because, because we have captured the expressions, and then we allow multi dimensional variable. I, we have a lot of opportunity to for parallelization, like, because of each expression has a like each expression is sometimes it can be treated as a grid of number so we can use for point wise operation like addition or multiplication we can just use. We can use like embarrassing parallel like SIMB or GPU. So the up parallelization opportunity is we can analyze the graph, and then from that we can generate code that spawn multiple thread each generate a independent path of the graph and then merge them together, for example here. To summarize, so there it is so we have built a language that help us build and solve optimization models. We have made it type safe with type level programming. We have made it. We have captured the models and then be able to eliminate redundancies and then simplify computations. And we have implemented the C code generated to make the whole thing, performance and pluckable to optimization software. And the library is open so in this GitHub address. So, that concludes my introduction of passion expression. Yeah, thank you for listening. I guess, question time. Yes. Thanks a lot, Neon and Dr Christopher for this wonderful session and what type of applications have we tested this for you mentioned a number of applications so far. So, this is a very generic framework right so we can use it any, any application that you can model it as optimization so problems, you can use hash expression, like, it's very generic. It's not tailored specific to any application. So, for example, a, if you want to train your network, you can express it in hash expression, and you can fit it into optimization software and train it. So, we, we have code, we have we, if you check out the GitHub we have several examples of how to use that for simple as logistic regression or neural network or MRI reconstruction. We have all the examples. So, in another project, we're currently using this to do instruction scheduling. So, that's a pretty experimental application. If it works out, then you'll probably hear more about it. But it's, you know, it's, it's good to have the type safety in that application. And this is where the embeddability is really important because so we've got a, you know, got an existing compiler. It's does a lot of work in order to figure out, you know, what the, what the dependencies anti dependencies are for code for instructions that need to get scheduled into a loop or even into a basic block. There's constraints on low constraints as well. And so, you know, most of the code is about figuring out what the optimization problem is. And then the optimization problem is relatively straightforward. I mean, it could be big, but it's got a simple structure. And then we want to be able to read the result back and do something with it, right. So it's not an example where you want to know, I don't know, what's the best portfolio and then you get the numbers and buy your stocks or bonds or whatever. We have to do significant pro post processing with that result. So, in the case of instruction scheduling, you may have an instruction schedule but then you can't do register allocation. So then you'd want to set up a new optimization problem. And try to come up with a solution that would be that you could register allocate. So the other thing that we had on a pre in a previous library that didn't. The code was messier we didn't have the features that Haskell has now, but we did have physical units. And we also had exterior differential forms. So, you know, this code is much, it's much more readable it's the performance is much better. It's got property based testing and things that the old code didn't, but we need to keep putting some we would like to put those other features in there. There are no more questions here. So we can end this webinar here.