Welcome, everyone. Next, we have talk on building GraphQL APIs with Ariadne, a schema-first approach by Rashmi and Prajalesh. Please welcome Rashmi and Prajalesh, stages all yours. Hi, everyone. I'm Rashmi. With me here is Prajalesh. We're so excited to be here. Our topic is talking on building GraphQL APIs with Ariadne, a schema-first approach. So let's get started. A little bit about us. I have a couple of years of work experience. I've worked at Intuit as a software engineer. And now I'm currently pursuing a graduate program at Carnegie Mellon in the US. Prajalesh here is a senior software engineer at Intuit. He has over six years of experience with a variety of tools and technologies. Let's get started with our talk. The agenda that we have for today is we're going to walk you through what GraphQL is. And then we're going to show you the difference between GraphQL versus REST, how you do it conventionally. Then we're going to talk about two integral components of GraphQL, which is schema and resolvers. And then we're going to go on to the core of our topic, which is Ariadne. Ariadne is a Python library that helps you build GraphQL servers. So they're going to talk about that. And then we're going to talk about how you can get an application up and running using Ariadne by writing schemas with it and by writing resolvers with it. So let's get started. I'll hand over the stage to Prajalesh to start his presentation. Thanks, Reshmi. So hi, everyone. So it feels good to be here at PyCon. So let's get started. So you have probably heard of GraphQL. So it was developed by Facebook in 2012 and it was then known as Supergraph. So it has had huge rising popularity across all major tech companies over the last few years. And of course, now it is known as GraphQL. So what is GraphQL? So this is the definition that you're probably going to come across in the GraphQL website and anywhere else. So what it means is GraphQL is a query language and it's a runtime. So it tells the client how to make queries and it tells the server how to resolve these queries. So we are going to break down this definition as we go on. So let's get started. So before we get started, I just want to clarify that GraphQL is a specification. It's not tied up to any particular language nor a framework or specific to a particular data storage mechanism. So we can use GraphQL specification with language of our choice. If the data storage could be a flat file, it could be a SQL database, it could be a non-SQL database. So to understand GraphQL even more, so let's look how GraphQL compares to REST. So for this comparison, let's take a scenario, let's say we have a library service which exposes a couple of APIs and we have a client who is trying to figure out what are the most popular books for each order. So let's say these are the two APIs available. So we have an order and point which gives the list of orders available in the library service. So we get the ID, name and nationality of the order and we have a book and endpoint where we have to pass the author ID.  So we get the rating information of the books, that is what interested us. So now that we know how we are going to get the data, so let's see the scenario, how we will get the most popular book for each of these orders. So first we will make a call to the orders endpoints to get the list of all the orders. So we'll be using ID of the order. So let's say like we take the first ID of the order, then we will go to the next API call where we will hit the books API with the orders ID where we'll get the list of all the books for that particular order. So here we got the information about all the books related to that particular order. So what we will do once we have the list of all the books, we will do some sort of computation our client side to sort it based on the rating, then we get the most popular book for that particular order. So we will do the same operation for all other authors as well so that we get the popular books for all the others in the library service. So let's see what we have done so far, right? So we actually made a total of n plus one calls. The first call to get the list of others, then each of the orders, we have to make a call to the books end point with the orders ID to get the details of the books. That's this total of n plus one calls. And when we, if we look back to our response, we had a bunch of additional information which we are really not using. Like here we have the nationality of the author and in the books response, we had a bunch of other information which we didn't use. All we used was rating and name of the books. So how does GraphQL handle the same scenario? So that's what we are going to compare here. So with GraphQL, we would make only one call. So authors and books are interrelated and GraphQL preserves these in its schema. So we can get all the interrelated data in one request. So we have to make only one call and we get exactly the data that we have requested. We won't be getting any extra information. So we will delve deeper into each of these points. So these points tie back to the definition of GraphQL that we looked at in the start of the slides. So we will see how it tied back in the later slides. So let's look at the first point where we said we will hit only one endpoint. So on the left side, we have the bunch of endpoints which are exposed by the rest. On the right side, we have the single endpoint used which we will be using on the GraphQL specification. So how a user will be able to get the data hitting one endpoint. So how the user know what all data is available to query from this endpoint. To solve this problem, GraphQL uses something called a schemas. So every GraphQL server exposes a schema that can be used by the client to understand what data is being exposed. So schemas are nothing but which defines the kind of data that can be queried from a service and how we define it. We use something called schema definition language. So if we go ahead and look at a sample schema, how our library service will look like. So this is how it will look like. So it is pretty intuitive to understand. So we have a bunch of types here. Like we have an other type. And we have data related to other within it. So similarly, we have the book type here and we have bunch of data related to books underneath that. So these type represents the data that is of interest to our system. And within these types, we have fields. So the book type has bunch of field called name, other ratings and so on. So if you look at that, at the end we have a special type called query type. So we will talk about it in the coming slides. So what are root types in a schema? So GraphQL has like a couple of root types. So these types defines the operations. So we said types actually represents data, but root types actually represents the operations. The query root type, which we have seen in the previous slide specifies how we can query a data from the GraphQL schema. Whereas the mutation type, in mutation type we will specify what or update or create operations we can perform. So query is for getting the information and mutation is for updating the information using the GraphQL endpoint. We have a special root type called subscription, which is more like instead of querying the server will notify the client upon whenever there is an update in the data. So now we will look at what are object types and field types. So when we looked at our schema, we saw the other type and the book type. So these types are called object types. So they represents object that are of interest to us. The object has fields, which as if we look back to our book type here, it has field called ID, name, rating, which are of scalar types. These are like integer, floats, those kind of fields. So we call them as scalar types. And we also have another type within book, which is of type objects. A type can have scalar type, scalar field as well as object field within it. So this is how a graphical representation of our schema looks. So we have query, other and book type and bunch of field associated with it. So now let's look at how the schema breakdown here. So we know that query is the root type and author and books are the object type and we have multiple fields. So we have color coded, the scalar field in yellow and object field in green in color here. So now that we looked at the first point, like how GraphQL was able to get us everything in one call, GraphQL is something called schema. Schema put our data together so that we can get all the interrelated data in one request. So this tied back to our definition, which is GraphQL is a query language for our APIs. Now let's look at the second point where it says we can retrieve just the data we need. So how we are doing that? So let's look at example query. So here we can see a query which we used to pass to the GraphQL endpoint and we need some data. So we are requesting for the author's information and we need the name of the author and the books related with the author. So we are requesting for name and rating of the books. On the right side, we have the response from the GraphQL endpoint. So we got exactly what we have requested for. So one interesting thing to note here, so we got only what we have requested and we got in the exact same order that we have requested for. No extra data and we got exactly what we have requested. So like the second point says, the data you need in the way you want, no more, no less. So how is GraphQL able to do this? So GraphQL uses something called as resolvers to fetch these informations. So whenever resolvers are functions that is responsible for populating data for single field in your schema. So if you look back to our books type, so we have a bunch of fields there. So each of the field, there will be a resolvers associated with this. So whenever a client called for a particular query with a bunch of fields, what GraphQL does beneath this, it calls the resolvers associated with each of the fields, which internally pull the data from the source. So here we show like each of the type and we have the fields and corresponding resolvers there. So the query type, we have resolvers for authors and book by name and we have the authors and books and it's field and it's resolvers here. So then do we have to write all these resolvers to get the GraphQL up and running? So in fact, many GraphQL libraries will let us omit writing resolvers for scalar types and it automatically resolves it based on the object it belongs to. So if you look at our case here, most of the libraries that we use, we just have to write resolvers for the authors and resolve book by name. So all other scalar types are handled automatically by the library itself. Now let's take a look at what happens when we make the call to the GraphQL endpoint. So we know we have the schema, we have the query from the client and we have the resolvers for each of the field in the schema. So let's see like how GraphQL gets exactly what we want, right? So when the client makes a call to the GraphQL server, it will be either a query operation or a mutation operation. So resolvers for the query or mutation is where it all starts. So in our case, we are doing a query operation and we are requesting for the list of authors. So the query resolves the authors and it internally called the resolvers for the authors and authors call the resolvers for name and the books. So since name is a scalar types, the names get resolved there and since books inside books, we are requesting for name and the rating of the books. So it calls the resolvers for rating and name and we get those data as part of the response. So whatever we highlighted here in green are the resolvers that are being called from this query and this query is getting executed. So we can see it's or not all the resolvers are getting executed. So only the resolvers that are part of the query we actually requested in are getting executed and if you look at the leaf nodes, all the leaf nodes are of scalar type here. So now we know how GraphQL is able to fetch us the information in one API call and how we were getting the exactly the data that we have requested. So now let's look at the libraries and tools for GraphQL that are available in Python. So these are some of the mostly used libraries. So we have area, we have Graphene and we have Strawberry and so on. So if we go to the graphql.org slash code, we can see a bunch of other libraries that are available for Python and other languages as well. So in this talk, we will be covering more about Ariadne library. So Reshmi will walk you through the Ariadne library. So over to you. Hi everyone. So let me get started with Ariadne. So Ariadne is a Python library. What it does is it helps you bring built GraphQL servers. It's very simple. It's super easy to use and it has a bunch of great features. But the most essential thing that you need to know about Ariadne is that it is a schema-first library.  So that's what I'm gonna talk about now. So historically there have been two ways that you go about in building GraphQL servers. You can either go down this code first approach or you can take the schema first approach. Different libraries do it differently. Ariadne does it with schema first.  This has its own pros and cons. The other way around is code first, which means you write your resolvers first and then you register all your resolvers and from your resolvers, you get the schema generated automatically by your Python library or any other library. There's a popular library known as Griffin in Python. That does it the code first way. Both of these have their own advantages and disadvantages. Like in schema first advantage is that your schema is a file. So anybody goes and looks at your code. The first thing, they can look at the schema and they'll have an understanding of the entire system. The other way around in code first, the advantage is that it's gonna be, there are gonna be less bugs because your schema has been pretty valid. It's automatically generated. You don't have to spend time debugging it. You don't have to spend time looking at the schema and checking for inconsistencies just because it was written by a human being and not a system. I can go on talking about the differences between code first and schema first, but it's a huge debate in the GraphQL world. Something that probably a simple Google search would get you through. But what I wanna put across in this slide is that Ariadne follows the schema first approach. So we first need to write the schema, then we write the resolvers, then we tie them together.  Right, how do you write schemas with Ariadne? So I'm gonna take you back to the library service that we've been talking about all this while. This is the schema for the library service. We have the author type, we have the book type, we have the things that you can query on, which is authors and books by the name. And Ariadne, for two ways, you can register your schema. The first is that you have your schema as a string. So you can literally pass your entire schema, all of this just as a string and it would work. It makes sense. But I would probably not suggest that because most of the time your systems are gonna be complicated, they're gonna have a lot of interrelations. So the more standard way of doing it is to write your schema in a separate file by convention known as schema.graphql and you load it into your system, into your program at runtime. And that's schema as a separate file. But whichever way you do this, you have to make sure that your schema is correct because you have written the schema written by a human being that are bound to be inconsistencies and something that's invalid. So there are functions that Ariadne provides you with that you can use to validate your schema. If you have your schema as a string, there's a function called gql. What gql does is it parses your schema, it checks if everything is valid and if it's not valid, it's gonna raise the GraphQL syntax error. Now, this is pretty descriptive. You don't have to go hunt around. If it finds a syntax error, it's probably gonna tell you which line of your schema the error is. It's pretty descriptive. And it's optional, but I recommend that you use it otherwise later down the lane, when you're building the application, you're gonna have trouble because you won't know where the error is coming up. So the first step you do is that you always validate your schema. And like I said, because doing it as a string is not really industry standard, you should probably go with schema as a separate file. And for that, Ariadne provides a function called load schema from path. The load schema from path function basically can get the .graphql extension file and it can parse it. You don't necessarily need to have it in one file.  Whichever way it is, load schema from path will read it. It will validate it and it will raise a GraphQL file syntax error with the name of the file and the line in the file where the error is. So what I have right here is the entire code that we needed to get our library service up and running. So I'm gonna break this down for you. So right now we're looking at schema, right? So I have my schema, which is the para right here and I have a file called schema.graphql and I just loaded it into the system, right? So now you have your schema. What next?  So what resolvers do as a recap to tell you is that resolvers are gonna get the data associated with each field you have in your query. So you have a resolver for authors, you have a resolver for name of the author, you have a resolver for books of the author. Within books you have the resolver for name and rating, right? So when you call these resolvers, these are probably gonna be data sources that you have. You're gonna have a database with a table that has a list of all your authors and you have another table with a list of all the books or maybe you have a flat file, it's fine. Whichever way it is, you're probably gonna write a function that's gonna get you the data, right? That function is conventionally, it starts with resolve underscore and then the name of the field that you're trying to resolve. But to be honest, it can be anything. So what I have here is a function that's called resolve authors where I'm gonna try and get the list of authors that we have in our database, right? Once you have the list of authors, how are you gonna tie it with this field, this particular field in your schema? How you do it is you have something called object type. Object type is a special class that's provided by Adyarni. And if you want to resolve a field, you first have to create an object, an instance of object type for the object itself, for the type itself. So authors is a field within query. So you create an object type of query. So if I go back, if you look at this, we also have books, right, books is an object type. You don't actually have to resolve any of the scalar types, books is an object type, authors is an object type. So you need to resolve both of this. So probably in your system, you're gonna have three different instances of the class object type, one for query, which is because it's an object type, one for authors because it's an object type and one for books because it's an object type. And so once you have these instances, you have to bind the field with the function, right? So I'm gonna say within query, within the type query, there's a field called authors. And I'm gonna annotate this function with this so that it binds the function to the field. And it's gonna look something like this. So in my database, I have a fetch authors call and I'm gonna write the resolve authors function here. And I have a query object type query here. And I'm gonna say within query, there's a field called authors. This is the function that resolves that field. And similarly for books, I'm gonna create, I'm gonna say, see, book is within author. So I'm gonna say, I have an object type of author and within author, there's a field called books and this is how I'm gonna resolve it. And that's about it. Most of the time, this is gonna be as simple as it gets. It kind of can be complicated initially to try to figure out the interrelations between your system because in a REST system, we're probably not gonna model the interrelations, but here we have to. So you kind of have some trouble trying to interlink two different things, but it gets easy as it goes on. So we looked at loading the schema. We looked at the resolvers. We have two sets of resolvers here. And then now we're gonna go to the final step, right? We have, we had an initial query. We have resolved authors, we've resolved books and we should probably get all of this inside. So tie all of this together. You have one final call to make. Let's call the make executable schema call. The make executable schema kind of puts together everything in your runtime, your schema and all of the object type instances that you just created. In our system, we have a query type and we have an author type, right? We have an object type for these, both of these. So you pass the schema and then you pass the query and the author. If you probably wrote a, you know, if you create an object type for books, you probably need to add that in this list too. Otherwise, it's not gonna work.  And that's it. Because what Ariane does is it provides a couple of servers out of the box, like you have an ASGI server, you have a WSGI server, whichever one you prefer, you can just kickstart the application and get it running. As soon as it starts running in your local, you have something called a playground that pops up. A playground is something that almost every GraphQL server will expose. It kind of, you know, it encourages developers to explore the data. So you can actually look at the schema here. You can look at what each field in the schema means using the docs tab here. And but here, as you see, I have the query. I had run this code and I have written the query here, which was the query that we've been looking at for quite a while now. And it's authors, name, books, and the name and rating of the books. This is what we've been trying to get out from the start, right? And on the right side here, you can actually see the data that's being returned by the system. This is super cool. Everything is being resolved by Ariane. Like we said, scalar types do not need resolvers. We didn't actually write too many resolvers. We just wrote two, one for authors, one for books. And it kind of automatically resolves all of the fields, which are scalar. So this will just get you a very basic system, right? But Ariane does provide integration with a lot of these libraries that you probably are using in your system already, like Django, Flask, and a ton of others. So you should be able to build a large-scale application with what you just have going on right now. So taking a recap back, right? We looked at what GraphQL is. We looked at the difference between GraphQL and the REST API. And then we looked at schemas and resolvers, which are integral components. And then we looked at Ariane, which was the library which we used to build a GraphQL application up and running. Then we looked at writing schemas with Ariane, and then we looked at writing resolvers with Ariane. That's all we have for our talk. If you have any questions, please feel free to email us. I hope this helped you, you know, take a basic understanding of GraphQL and how you can use Ariane to build GraphQL service. Thank you, Rashmi, thank you, Prasilesh, for a wonderful talk. Yeah, it was much informative. And I'll encourage all the attendees to post their questions to Q&A session. And we have one question from Gautam. Let me just show it up. So yep, the question is, how to create a relationship between two table IDs in GraphQL? Okay, I'm not sure if I understand the question correctly. I'm assuming that you have two different tables that have two different things, like authors and books. And you're kind of trying to link both of that. So if you probably have a foreign key in your system, right? If you just look at the database layer, you probably have a foreign key, like the books is going to be linked to the author or the other way around. That works because if you go back to our slide here, that's all you need to do, right? Right here, I'm just making a MySQL call passing the author ID. And within books table, you have the author ID as a field, right? You have it as a foreign key. You can actually MySQL will automatically do all the filtering for you. That's all it needs. Most of the time, all of the functionality, like the core functionality are already provided by the database layer. MySQL is probably going to have all of that for you.  And you just make sure that you call it under the resolver. That's all you need to do. It's going to be automatically tied. Great. I hope, Gautam, that answers your query. We have one more question. So the question is, can I know major advantage of GraphQL over rest? Any real-world selection? So we have, I'm not sure about real-world, but in companies and so forth, you, when you write a model in the real-world, right? You have so many interrelations, right? Like, Prajilesh talked about books and authors and reviews. And it's common in a library service that you have three different things. You have three different APIs that talk about three different things. But books and authors are tied together, right? So you probably have to hit two endpoints in rest. And if you're trying to get books and reviews, it's the same thing because it's two different objects. They have two different endpoints. And you have to hit both the endpoints to get the common data, no data that needs one of this and end of this. And that's what GraphQL tries to solve. That's what Facebook tried to solve when they came up with GraphQL. They tried to make sure that you can model interrelations because that's what Facebook is about, right?  You have different comments within it by each person. They're trying to tie all of the information, different information, different real-world objects together. And GraphQL can do that, but since rest can't, because in rest, you'll have a harder time trying to model real-world interconnections. Cool. We have one more question. Just to base it. So how is the performance compared to rest? Performance, I'm assuming. Well, rest is, it's a protocol, right? You really can't say performance. Like, you know, I've seen rest APIs are really bad and all the way to like, extremely powerful for highly performing rest APIs. So I wouldn't bring performance into this, but if the question you're trying to answer is that, am I going to get any performance degradation just because they switched to a different specification, which is GraphQL for my APIs? You probably aren't. In fact, it's probably going to be faster. One advantage that I can tell you is that in a rest API, if you're not able to fetch something, it's just going to fail. It's going to return, hey, I don't have it. I'm just going to return 400 to you. But in a GraphQL, if it's not able to resolve one of the fields, it just omits that field. It gives you an error, but all of the remaining field, it actually returns to you. So you don't actually have a lot of trouble. So in that way, I would argue a bit more towards GraphQL, but you know, it depends on scenario, but it's a specification. So I wouldn't link performance with spec. Okay, cool. So we have couple of more questions. So I'll just quickly get it to you. So there was one question that was, if I would like to access the books and restrict anonymous access to authors, how should I do this on the resolver level or is there a better way to do that? Give access to books and restrict anonymous access to the authors. I'm not sure if I understand the question. Perhaps, feel free to email me. I'm emailing my emails right here. I'll put it up. And probably we can chat about it because I think I don't really understand the question. Rajesh, if you have any thoughts about this. Yeah, I think it's not about anonymous access. So we are giving a specifications, right? So it's how you can access the data. So I even, I don't know how, I don't think like restricting any of that layer. Yeah, that's the question here. Yeah, so anonymous. I'm assuming that you're saying that you wouldn't want people to read authors data. I'm assuming that's the question. That's probably gonna be taken care of by a different layer in your system. It's not gonna be GraphQL that's gonna do it because GraphQL has nothing to do with it. It's not gonna do it. You probably, you kind of have an integration with Django or Flask going on that will kind of restrict their access. Again, feel free to email us. We'll try to help you answer the question. I think we'll probably need more understanding of the question to answer this. If it is more related to access, like Rashmi said, we might have to add another layer with controls, authentication and authorization, which we can integrate with that. But if you look at just GraphQL, so we are just writing the specification how to expose the data and the client can query like the way the client wants. So we don't have to build like multiple end points or like multiple surveys for different clients. So client can determine what they want. Okay.


For this week's Circuit Python Parsec, I want to show how you can use the Circuit Python audio mixer in order to crossfade between two audio files as they are playing. Here you can see I'm importing audio core as well as audio mixer and then the audio I owe I'm getting audio out so that I can send audio over one of the pins on this board. I'm setting up the number of voices here is two and then my mixer has a in this case a two-voice count. It sets the sample rate, the channel count, bits per sample and then we set up the audio mixer and play that object. Then we're setting up two voices, voice 0 and voice 1 and setting their levels. So this is the kind of key to using the mixer. Mixer.voice 0 level and I'm setting that at 1. So the first voice or first wave file will be at full volume. Voice 1, that's the second one, that'll be off. So here I have these two samples. One is a drum loop and one is a synthesizer loop. So we start them playing and they they're told to loop forever but we're only going to hear the first one because of the mixer. Then throughout the code what we do is gradually fade one up while we fade the other one down and then reverse it. So we'll hear those come in and out. So what I'm going to do is set this to playing and you should hear and see in my serial output what's going on. There's the synths. I'm going to play for a second at full volume and then the drums. So you can see that's a really cool way to have some synced up loops that are playing and just bring in the ones you want without having to worry about resetting them or timing them to start at an exact moment. And that is how you can use the audio mixer inside of Circuit Python. That's your Circuit Python. Parsec.


in its fullness. Wherever the king is there is the kingdom. The Lord the kingdom is never going to be fully seen and realized until you return. The bride and the spirit both say come. We say Lord come. Maranatha, Lord Jesus, come. I need you. We long that you're long suffering. We know that you're merciful. Lord we know that in your patience, that you're waiting for the hour to return because there's so many that are lost and because there's so many who've not heard. Lord would you motivate your church, would you motivate us to be people that just don't want to leave but we want to see your mission accomplished. We want to see every nation, every tribe, every kindred, every person in our city, in our nation and in the nations of the earth. Hear the gospel and Lord may that maranatha cry and that maranatha longing in our heart to see you may it motivate us and may it be fuel that sends us into the highways and the byways and the nations of the earth to proclaim the gospel to demonstrate the kingdom so that you will return Jesus you said this gospel of the kingdom shall be proclaimed throughout all the earth to every ethnic group and then the end will come. We don't know that day or the hour but we know that in your heart the only thing that's withholding you is your desire to see the lost saved. Lord would you burn that into our hearts as part of this maranatha. Lord Jesus come cry and longing of our hearts that what you long for we would long for. What moves you would move us open our eyes send us and Lord hear the prayers of your people hear the prayers of your church that's longing for your return that's longing for a visitation Lord Jesus we say come we want you to come we want you to come and be glorified in your people we want you to come and sit on the throne we want you to come and make your enemies your footstool we want you to come and dispel all sickness all disease wipe away every tear make death a thing of the past establish your kingdom of righteousness peace Lord that your scepter would be extended over the nations that the enemy would be bound that hell would not have the final word but that the mountain of the house of the Lord would be established above all the other mountains of the earth Lord we long for that it's why we say come Lord Jesus it's why we hunger it's why we thirst for you but let's sing that one more time come


So my task is that within the next 10 minutes I'm going to give you an overview of the religion of Islam. Yeah, 20. So a little bit of breathing. So what I'd like to do is hopefully give you an overview on a conceptual level, not getting down into specifics, but more giving you a bird's eye view to sort of look at what the box of the puzzle shows you that image, because sometimes we can look at individual pieces and lose sight of what the whole thing is. So that's my hope here today. So first I'd like to start with some definitions. So first two, what is the term Islam? So Islam is the proper name of the religion itself. Yeah, I am. I'm going to stand just because I kind of need to see this line back. With your permission. It's the proper name of the religion itself. So it's a word that means literally to turn oneself over to. It is to surrender over to. And it means obviously to surrender oneself over to God. So Islam is therefore one who has surrendered himself or herself over to God. It's one who achieves and the word Islam also comes from a root word that means peace. So you sometimes might have heard that phrase where some people say Islam actually means peace. Yeah, the word Salam and even the Hebrew Shalom and Semitic languages means peace. And so what it means is that when a person surrenders him or herself over to God, they attain peace within themselves and are able to emanate that peace throughout the world, hopefully. But a Muslim is not a person of any specific race or ethnicity. They're people from all walks of life. There's Muslims of every ethnicity on earth. And I've got some pictures up here to sort of illustrate that. Some sort of more famous and well-known people. But there's anybody... The first one I think is probably one of the most recognizable faces in modern history. But Muhammad Ali, who we all know of, an American Muslim who just passed away just a few years ago. Cat Stevens, who converted and took on the name Yusuf Islam. And then Dr. Azir. Many famous athletes and many people that we know that we may not know are Muslim. But it doesn't necessitate any particular race or ethnicity. It's just one who surrenders himself over to God. Another definition I think is important to consider is the word Allah. Who is Allah? What does that mean? Is that a deity that Muslims worship? Muslims, it is simply the Arabic name for God, the God of Abraham. In the Qur'an, you will see that the returning point for all conversations, particularly with Jews and Christians, is Abraham. Abraham is considered the father of monotheism as we know it, sort of spread around the world. And if you go back to Arabic translations of the Bible, that right there is Genesis in Arabic. And if anyone here could read Arabic, you'd see the fourth word says That in the beginning, Allah created the heavens and the earth. So Christians will call upon Allah. So it's simply the Arabic term, it's not a different God. It's the same God that sent Abraham, Noah, Isaac, Ishmael, Moses, Jesus, Muhammad. We believe that it's the same God. So Muslims often are framed as worshiping another God, which is false. So how does Islam view itself vis-à-vis other religions is an important question. Like I've already mentioned, Muslims see the returning point of all theological conversations to be Abraham. So they see themselves as continuing and not replacing. It's interesting there's actually a verse in the Qur'an where God says to the Prophet Muhammad, You are not anything new amongst the prophets. You're not bringing anything new per se. This isn't anything different. But that he is a culmination of the previous messages. So there's one way that some Muslim academics and actually non-Muslim academics frame this, that Muslims believe in Islam with a capital I. And that's the religion that we follow here, here in the mosque. But they also believe in Islam with a lower case I. That all of these other traditions and previous revelations were manifestations of a surrendering to God of that time. So that if you were a follower of Noah on the Ark, that you were in a state of Islam, surrendering to God and following his commandments. And you were therefore a Muslim with a lower case I. One who was living in surrender to God. If you were with Moses standing against Pharaoh, then you were in a state of Islam, surrendering to God, etc. So that's an important concept that's not seen as something foreign or different. Now there's an interesting parable that the Prophet Muhammad gives. Peace be upon him. He says that the parable of my coming is like a beautiful building. And everyone is walking around this beautiful edifice and they're saying what a wondrous building, what beautiful architecture. Except it's just missing that last break. And he says I'm that final break. And so his message to us in that is that this is all a culmination of what previous prophets have fought. The Prophet Muhammad could have said everything is corrupt. My parable is like a bulldozer that comes and removes everything. But he didn't. He said I am just that final break. And so that helps us to understand how Islam views other faith traditions as part of God's plan that were an indispensable part of his mission in his coming. There's another interesting tradition in which the Prophet Muhammad, peace be upon him, talks about the fact that there was no community on earth in the history of humanity to which God did not send guidance. Even if we don't know who they are or in what form it took. And he says that the over 124,000 prophets were sent. So the Aboriginal peoples of Australia must have had a prophet that was sent to them. Someone that told them simply about God, the creator of the universe. All of these were different levels of completion. Sometimes it was very basic. Like for example, the Noah Hiddock laws are much simpler than what Moses brings. The rabbinical legal code is far more complex. But they all include one God, don't kill, don't steal, don't set up idols alongside God. The Ten Commandments are almost something universal to all of the Abrahamic faiths. And in some form exists even in other faith traditions. So in order to understand Islam, and I mean with a capital I now, the religion you came to learn about today, there are three main dimensions to learn about the religion. So the quiz at the end of today will be based on these three. So faith, conduct and character. So I'm going to start talking about conduct. So if you've heard of the five, who here has heard of the five pillars of Islam? So the five pillars of Islam are about half of you. The five pillars actually only summarize conduct. So these are actions that a Muslim must perform. These are the five basic rights and rituals that every Muslim has to perform in order to be minimally performed. So the first are the two testimonies of faith. These are the two statements that if a person believes and proclaims, that enters them into Islam. There's no baptism, there's no formal ceremony or anything like that. If a person says, I believe that there's nothing worthy of worship, say God, and I believe that Muhammad is his last and final messenger, that alone would qualify someone to be able to. So the first pillar is to make that testimony. Thereafter we have five daily prayers based on the position of the sun in relation to where we are.  And these are five points throughout the day that we spiritually realign ourselves with our purpose, not with Creator. One of the amazing things about human beings, there's a British Muslim scholar who has a great proverb, he would say, how easy it is to forget, how easy it is to forget. We're just forgetful beings. We realign, we wake up in the morning, okay God, I'm just, oh what's my to-do list for today? So we have five points at the day in which we realign, we remind ourselves, we recenter, and these things are there for us to guide us throughout the rest of the day, what it's called. And this is that every Muslim gives two and a half percent of their savings, not their income. They're leftover savings, excess wealth, that sits around in a bank account to be given to the needy and the less fortunate. The fourth is fasting the month of Ramadan. So there's a lunar calendar, and there's a month, it's the ninth month called Ramadan, and how many people have heard of Ramadan? I get curious to know what people have. Okay, that's good. So it's to fast, no water, drink, no food, water, or intimacy from dawn until sunset. And that's currently in about June, May-June right now. So there are relatively long days. And then the last is the pilgrimage to the holy city of Mecca. So Mecca is a city, it was alluded to by our sister Hina, that it's in modern day Saudi Arabia. Anybody know who found in the city of Mecca? And he guesses. His name has already been said in Abraham. So Abraham, it's actually in the Bible, it's called Mecca with the B. He goes to the holy city of Mecca, and that's where he lives, Ishmael, and Haver, right? And there's a famous story of the well that Ishmael finds, etc., that's all there in the Old Testament, but that's where we make pilgrimage to, to the house that was erected by Abraham for the worship of the one God. And that's the holiest site of Islam. So that's conduct. Those are five ritual devotions that every Muslim must practice and be committed to as a minimum. Then there are faith, then there's faith. Not things that we do, but things that we believe. Okay? These are things, this is surrendering to God with our body, but then also with our mind, right? Things that we believe are mental conceptions. If you believe the earth is flat or you believe the earth is a sphere, it has to correlate to truth and reality. Those are conceptualizations. So these are five realities that every Muslim must believe. You must believe that there's God. You must believe that he's a reality, that he created the world, that he precedes time, he's outside of time and space. He created time and space and the heavens and the earth, etc. We believe in angels, that these aren't metaphorical beings, that there are really beings that exist in another dimension, right? Beyond our own, but that interact in our dimension by God's command. We also believe in divine scripture, that God communicates with his creation, that he created us for a divine wisdom and purpose to know him and to serve him. But then he communicates this purpose to us through a succession of prophets, okay? And that they all essentially came with the same message, right? When I say essentially, the particulars might differ because that differs with time and place, but their message was essentially the same.  And lived in accordance with morality, okay? So we believe, every Muslim has to believe that the Torah was divinely revealed, that the Psalms were divinely revealed, that the Gospels divinely revealed, and lastly, the Qur'an. Where Muslims may differ from their sisterfates is that the accuracy and authenticity can sometimes fall into question. One of the things that the Qur'an says is that men, we know that religion is great, but sometimes institutions of religion aren't always perfect, right? And that men alter things with their hands, and then so God says, well, we're going to send another revelation to set the record straight. That's not what I said, et cetera. But with the final revelation, God promises a divine protection from alteration. And we can talk more about that perhaps afterwards. Some of the historical evidence of that that's come up recently, that's pretty interesting. The fourth reality I have to believe in are messengers, that God has sent messengers. We've talked about that already. One thing that's worth noting is that for Muslims, our conception of Jesus, our Christology, is closer to a unitary understanding that God sent Jesus as the Messiah. He was born to a virgin birth, and he performed these miracles, and he resurrected the dead and all of these things. But he came as a prophet and not as part of a trinity. He was not God incarnated. He was the Son of God metaphorically, not God the Son, but the Son of God the way that phrase was used by the Hebrews of the time to refer to a godly person. So we hold it to be a mortal prophet who will return at the end of times. He is the awaited Messiah. So for example, if Orthodox Jews don't believe that Jesus was the Messiah, he was still awaiting the Messiah. The Muslims would differ and say, no, he was the Messiah, and those who were present at the time had to follow him in order to be Muslims, right? No more case than that. But that he was a mortal prophet. And then the fifth reality is to believe that we are all going to meet our maker and to be held accountable for our actions. Some people can get away with things here in this world, but nobody ultimately gets away with them. But we pray for God's mercy on that day. Sorry, the last one, this is quickly about participating, is divine decree. One of the things that Muslims believe is that nothing in creation happens without God's willing it and allowing it to be so. Nothing is outside of this power. Good things and bad things happen with God's permission. Because this world was created before a mixture of good and evil. It's a testing ground of our morality and of our free will. And bad things happening isn't separable from free will, but that doesn't indicate that God has gotten out of control over the world outside of his control. So, how many dimensions did we talk about so far? Two, there's a third one coming, but I wanted just a little bit of background here. Keep me on time. So the first is, what is our understanding of humanity? In order to understand this third dimension, you have to understand what is the Islamic conception of what a human being is? What is our nature as human beings? So we have a primary nature. This is our essential nature that we're all born with. Each one of us is healthy and nurtured properly. We have an innate knowledge of right and wrong. Each of us feels guilt. This isn't a socially constructed thing. Each of us knows inside of ourselves that we do something wrong and we feel a sense of remorse against it. We also have this inclination towards something that is good and true and beautiful. That our primary nature finds the beautiful attractive and that the ugly is repulsive. And the same applies to actions. There's a reason that in almost all of human history you have until very recently you have these stories in which the hero gets the bad guy at the end and everybody, now we have the anti-hero. The bad guy gets away at the end. That's a recent modern phenomenon. But everybody knows that that is resonant with human nature. We want to see those things. We want to see good victories over evil. So that's our primary nature. But there is also another aspect of ourselves. We have a selfish ego as well. So while we incline to that which is good and beautiful and true, we also have a capacity perhaps even I'd use the word a tendency towards being vengeful and preoccupied with our bodily pleasures. Now, so we have these two aspects working at the same time. We then have a third which is not endowed with evil. We then have a third which is not endowed with reason.  That what distinguishes us from the rest of creation is that we have the faculty of reason. And so reason is supposed to help us to listen to our primary nature and to be in control of our selfish ego. So you can even think of a basic encounter with a cheesecake. The mind tells you don't touch, don't go there. Right? But the appetite is there. Now if your faculty of reason is stronger than your appetite then you have to say, oh well, you've got a lot of discipline. You're disciplined. But those are training grounds for moral discipline. That's why I'm a Swiss fast. It's one of the reasons we fast. They're all related. The seven deadly sins gluttony is one of them for a reason. If you're gluttonous with food, what does that mean with everything else? One deadly sin.  Nobody just has one because they're interrelated. Now, to get to the third dimension, it's character. It's building this character. So there's a process that is termed in Islamic literature as a purification of the soul. It's a process by which a Muslim struggles and strives, this is the greater jihad that might refer to, against the lower desires of their soul to purge these tendencies of the ego that I resist and I fight against my temper and my jealousy and my selfishness. And I work to endow myself with more beautiful virtues. I try to be more generous and more forgiving and more kind and more altruistic. And this process is the way in which I purify my soul. Now, part of this also entails an understanding of how we engage the world itself. When it comes to the world, religion obviously has a lot to say. The Muslim understanding would be that we are in the world but we're not of the world. Right? That we engage the world as one of the great sages of Islam said, it's to have the money in your hand but not in your heart.  We don't go and live in monasteries. We're here in Pleasanton, California, working jobs and we have houses. But we're not here to enjoy this place. That's not at the very purpose. The place is a bridge. It's a means to an end. This is a spiritual laboratory if you will, in which we're supposed to exercise and work at the training ground for the afterlife. And so we go between the two extremes of indulgence on the one hand and rejection. So again just to recap, Islam views itself as a culmination of previous religious traditions. The final brick as it were in God's long successive revelation. If one surrenders to God we believe it will bring peace and harmony to the individual and to society as a whole. And it sees itself as a middle road of bringing together the great virtues of previous tradition. So for example the Jewish tradition is known to have a great, rich, legal tradition but Jesus came to remind us that the spirit of the law is greater than the letter of the law as well. So the Prophet Muhammad peace be upon him we believe merges these two and brings each in its right place that there is a, as Hina talked about we have Sharia, we believe in a letter of the law but the spirit of the law, those six objectives the preservation of life and religion and intellect and family and property and honor all of those things, that stays at the center of their all. And so we balance ourselves as surrendered to God with our minds in terms of what we believe with our bodies in terms of the fact that we pray and we refrain from doing anything that harms another person or stealing and then with our souls because we work on purifying ourselves curging ourselves of our egos tendencies and adorning the virtues of the heart. I thank you for attention to this sort of just a summary slide thank you for your time and thank you for just being here today.


It's day 3 of Moodle Mood Global and I'm here with Chris Nelson who's a senior product development manager with the Open University and Chris alongside his colleague Tim Hunt did a really interesting presentation on the first day of the Mood about quiz related improvements in Moodle 4 which I found really interesting but before we talk about that the Open University have been using Moodle for some time is that right? Yes since well we started looking at it in 2005 and started using it properly I think from 2007 we then had a rapid acceleration project to onboard and move everything across to the new learning management system and I think it pretty much became our central delivery from 2012. Wow that must have been a huge project because how many students do you have? Currently just over 265,000 I want to say. Huge! Huge! For the UK yes, I mean it's a completely online learning experience so although there is the big Milton Keynes campus we don't have students there they all study from the home on the computers and mobile devices etc. Yeah so you need a very robust system I'm sure that's been extremely scalable do you host with AWS? We do yes. Interesting and I was really curious about your presentation because it just seemed so learner-centric really the improvements you've done to quiz and obviously improved how you deliver for educators can you tell me a bit about some of the work you've been doing with quiz? Sure okay well actually I just want to say first that although internally our customers are the business, the faculty is the schools etc. everyone at the Open University is very conscious about how important it is to serve our students so therefore the feedback that I get from the business is essentially from the students themselves. Some of the more recent stuff that we're doing to improve the student experience in particular is to do with our diagnostic quizzes so this is to make it so that there could be sectional scoring so students can take a single quiz evaluate its reading writing and possibly speak in Spanish for example and that can be graded by the system and that gives them a much better idea of where to start with which module or course indeed and where they need to begin the student journey not all students come to us ready to start maybe at level one for example we do have a lot of access modules. Sure and so educators can then deliver content that's suited to that student or cohort of students? Absolutely absolutely sometimes knowledge changes over the decades so someone who hasn't been a student for 20 years needs to start perhaps a lower level than they might have thought. Sure and do you work very closely with your educators so the you know faculty who are actually delivering courses to think about improvements? We try to I mean given the scale of the Open University is very difficult to do that so we do have representation on groups I do try to get out to all the schools and talk to as many people as possible and also the production teams. Generally we use a lot of data to give us an insight into what are the worst blockers in our systems so we rely on that student feedback to come through from the surveys etc. So it's multifaceted you're getting input from learners, educators, representative groups. So much data. So much data and so you obviously see something that you want to achieve do you have a big team of Moodle developers who are working? Yes both onshore and offshore support. Okay great. Yeah it just becomes a problem to work out how to prioritise what is the most important and then we have our quarterly releases and of course Moodle releases big versions every six months as well so we have to work within that time frame. Yeah heavy pressure I think. Yes it's always go go go. Yeah and I know that Open University have contributed to Moodle a lot over the years would you agree what kind of things do you do in terms of community contribution? Well certainly in terms of the development team a lot of them have produced large features of core. Tim Hunt who I work with on quiz developments he also spends his weekends and evenings also developing Moodle as a volunteer etc. So there's quite a lot of overlap I'd say between what the Open University has done and does and Moodle itself. But that's the great thing about Open Source you know if we don't have it in Moodle and we want something we can build it and what's there if it's not quite doing what we want we can improve it.


The faith intervention used peer leadership to decrease HIV stigma and promote testing in African American and Latino congregations. A pilot study found more consistent effects among Latino churches, with facilitators spending more time addressing community-based misconceptions about HIV. The peer leader model was well received, especially among Latinos, and most said they felt comfortable speaking with others about HIV-related topics. Peer leaders reported speaking with up to 20 people within their social networks, particularly with family members. The peer motivator model was found feasible and acceptable across diverse faith settings, but differences in HIV knowledge, social network characteristics, and church preferences may influence overall effectiveness.


Hello people and welcome to the One Army Monthly News where we are reporting from our projects tackling global problems. And this month is actually a very special month for us because a lot of our core team members from the One Army projects are meeting here in Portugal. So as a start I will just give you a little tour of the project camp land, how it is right now, and give you a little introduction into the people who are here at the moment. So let's go! So at the moment we are here, this is the entrance of where you come up from on the land and this is the future working space or a future working space on the project camp which we have been clearing up the last couple of days with all the people who are here. So now maybe you want to have a quick look inside, inside it still looks pretty rough but we started on the outside to even access it. So here you can see the space from the front, looking quite clean already. Here you see Dave, you all know that guy, he started the project and is the reason why most of us even found our way here, trying to cut the trees from, yeah, and clear up the space. It's a little bit tricky because there is a lot of thorns, not very nice. So here we have Julie, trying to fight with the thorns. Julie joined for the plastic version 4 and is still tackling the plastic pollution problem with workshops and all sorts of stuff in Spain mainly and right now, yeah, trying to get rid of all the thorns. So yeah, here workspace. Here we have Joseph coming, you probably also know that guy, joined in pressure plastic version 4 and is still driving the precious plastic project forward, doing some business I guess. What are you doing now? Clearing up bushes. Clearing the wall of thorns, yeah, that's a big, big issue here. But we are tackling it. Okay, so let's go to the other corners of the land. Here it goes up to the base camp, but I will actually take you up here first because this is a big open field, still not doing anything with this because there is other things to do, but here's the kitchen, which was cleared up recently. Some dark spaces in there. We also like to meet here or eat sometimes because it can get very hot and this is a shady place. So we had some meetings and food here. Now we go to the base camp, all right. So here's the base camp. Here we are parking all our houses, so luckily a lot of our team members slowly started converting into a tiny house on wheels, which comes in very handy now because we all could just take our houses here and have something to live because there's nothing else. And this is also the new compost toilet with, I'll quickly show you, built by the first project camp helper Ian with a precious plastic toilet seat. So here we have the workspace container and what's happening here is Michael who actually developed the version for sheet press, but now he's jumping on hay and clay, hay and clay to produce material for the pizza oven. And this is Malte who is leading the pizza oven development. And you can also see here Carolina and Adriano who are at the moment building the frame for the pizza oven, right. And Carolina both actually joined in version four and are now still involved in precious plastic and fair enough, their own precious plastic workspace, so that'll be the frame of the pizza oven. Here's you, I'm Nico, a little bit loud, I'm sorry for that, how are you guys doing Mixing the clay for the pizza oven and Q is actually joined for version four, was involved in precious plastic monash before and is now leading our precious plastic communication team. So and here we have our clay production, this will be the material for the pizza oven too. Yeah, this is Yama, our doble, hello Yama, here we have Jan who is also joined for a precious plastic version four, did a lot of precious plastic stuff before that and is now head of engineering, something like that, but also very much involved in the precious plastic team and then let's see, we have Alicia, the main person in fixing fashion and the project tackling fixing or trying to fix fashion and yeah, now she's actually probably preparing for dinner, right, and still very much involved and here we have Rita, you've seen Rita and some of the project come update videos, so she's together with Dave, one of the main people living here in Project Cump, trying to make this space a livable space for every future helper to come and yeah, the ladies are making beautiful food for beautiful people and who else do we have, welcome to my house, yeah, so internally I would say this was the main thing that happened this month, our team coming together and reflecting and planning ahead for the projects and with Corona we hadn't seen each other for a long time and a lot of things happened in the meantime and even though we were connected online, there was a lot of topics which had to be discussed more in depth, so besides using all the people power and getting a lot of things done on the land like cleaning up the big workspace, building the big pizza oven, but also the compost toilet with precious plastic toilet seats, which is pretty cool, making a new night's path to the creek and building a shower for more privacy. We spent about one week from morning to evening talking and brainstorming until our brains were smoking about all the topics around the One Army organization and its projects, Fixing Fashion, Project Cump and Precious Plastic. The main outcome of these meetings was to focus. We tend to try to do a lot of things at the same time which often results in a lot of open construction sites and that way we also push a lot of things forward, but it often results into an outcome which is more sketchy and basic with a lot of space for improvement and often we are not really satisfied with the quality we are actually delivering to the world and to the community. So here a little forecast. Precious Plastic will continue full steam with a dedicated team of six aiming to establish an engine to run the projects, the platforms, the communications and also the work with and for the community. And with this will come a new structure and also strengthening the strategy with the focus on making it financially sustainable and then grow the team and being able to reinvest the profit into the precious plastic universe. There's still some things to figure out for the structure but what we can definitely say already is that these will be the core people pushing it forward and this guy, Joseph, took on the slightly crazy task to take the lead and steer the ship. Dave together with Rita will really focus on Project Cump, probably working in seasons so that summer will be the time for big developments and pushing the bigger projects while in winter there will be time for maintaining and documenting everything and planning for the next season. For fixing fashion we'll give it the time it needs and let it grow organically. And Alicia is also working on a new set of videos so let us know in the Discord channel if there is any specific clothing repair techniques or upgrades you would like to have documented or have the tutorial for. So now to the last major outcome of this meetup and probably seen it in the title but this is the last monthly news for now. So why is that? You might have noticed in previous monthly news that the question of whether or how to continue the monthly news has been on our minds for quite a while now. They started as a way to update the patrons you guys. So one video each month about what's been going on easy but it does take quite some resources especially with growing projects to do these videos each month plus in the meantime we actually added a couple more channels where updates can be shared so there's new websites there's the social media there's discord a very active patron now and not to forget also whole new YouTube channel with weekly updates about project comp. So a bit overkill maybe and especially as we saw views and engagement reducing quite a lot. Yeah it became kind of a wait for us to do those videos especially between all the other things we are working on. That being said we do like to have this channel to talk to you guys the community and yeah so we honestly don't know if it makes sense and what's the best thing here. So we figured let's pause it see how we all feel with it if maybe the other channels are enough or if you guys will miss it a lot and then after some time we can reflect and see what makes sense to continue or and how to continue or if this was actually the last last monthly news. So to make sure that you know where to find your updates here a little overview. So there's a one-army patron and this is probably the coolest and closest way to get your updates with regular updates about all projects and early access content interactive posts and behind-the-scenes content as well and with only one year a month or more if you want you can really become part of this global army and really help pushing those projects further. Then there's a one army website here we'll share the major updates about all projects in form of video and articles. Then there's also the one army newsletter we are sending out every three months with a really good really good overview of all the things which have been going on in the projects major but also smaller things so this is really to give a good summary of the period of three months. So now if you're more into a specific project and precious plastic has the online platforms like website community platform and bazaar and the social media with Instagram and Facebook and the YouTube channel of one army where we for now this is the place where also the precious plastic videos go it might change but this is the place where you will get the updates for sure. Project Kump also has the website and link to it the academy and Instagram but the main place to get your updates here I would say is the YouTube channel of Project Kump and Fixing Fashion has also the website and Instagram and videos for now will also go on the YouTube channel also here it might maybe get its own channel but for now it will be on the one army channel so on the one army YouTube channel you will find the updates for the other projects too and then bringing all these projects together again we have the one army discord so there's where the community meets for each of the projects you can exchange and meet the people who are into those projects ask questions and also get announcements of new videos or other updates that are happening. We'll put all the links and an overview here in the description I hope I didn't forget anything but I guess you're clever and you'll find your ways so yeah that's it for now I guess see you around especially on patreon and discord and again thank you so much for all the wonderful people who support and drive the projects further we would not be much without you so thank you and ciao