There's pieces of paper, some not enough, but you have them all. Okay, so those have the munchers on them. And there's also a QR code that you can scan with your phone and you can go to a Google Doc that has the munchers if you want. So you can just pass them out and just share them. There's only 15. And before we get too far into the logistics, because I realize I just introduced a job for everyone. Well, I'll just let it happen. The horse has left the barn. So we will be singing some songs in a kind of traditional Kirtan call-and-response way. Sometimes I'll be singing to you from my heart in English and sometimes we'll all sing together. And you don't have to feel like there's a right way or a wrong way or a right time or a wrong time. You can sing. There'll be some things that are structured, but it's okay to just sing. It's okay to harmonize. It's okay to make any kind of sounds. Kirtan is a devotional practice.  It's my conversation with the divine. And somehow there's this communion that happens in the midst of this conversation. So I invite you to... You're not just saying words. You're not just repeating sounds. You're in a conversation. You're calling out to someone that's real. And that one that's real will respond, inevitably. And it's often in the silence at the end that there's this kind of pulse where you can feel that. But not only then. I invite you to close your eyes just for a minute so that we can just sink in together before we start. And there's a luminous silence that is underneath everything. Stillness that's everything that moves from your thoughts to the biggest elephant. Underneath all of that is stillness and silence. Luminous stillness and silence. And your mind doesn't have to be still in order to feel the stillness that's under it. Your mind doesn't have to be silent in order to touch the silence. So when we sing together, we try to touch that silence and sing from that place. Allow the sound to come from the depth of silence. Ready? You can open your eyes. The first song that we sing is Om Namah Shivaya. And it's going to start in a call-and-response format. So I'll sing and then you all sing back. And Raquel will sing with you at the beginning. And then it's going to go into the second mantra, which is not call-and-response. So it's a little bit of a longer mantra and you can just sing along or not. And then the last mantra is very simple and easy and I think it'll be easy for you to sing along. Before the Amrit came, this poison came and came out of the churned ocean.  Just the whole thing done. And Shiva grabbed it and stopped it from going down into his stomach. And so his throat is blue and he's called Nilakanta. And that name, Nilakanta, it's not just blue throat. It's the one who drank the Halahala poison. It's the one who took all the darkness in the universe. All the force of destruction and took it upon himself. There's a story in Paripur, Parvati asked Shiva, Why are you so ugly? Why are you so nasty? I'll ash all over you and nodded hair. And he said, I take everything that no one wants. Everything that's discarded, everything that's thrown away, everything that people reject and refuse, I take it and I embody it and I take it into myself. And people think of Shiva as this kind of like force of destruction. But Shiva drank the Halahala poison. Shiva put his dreadlocks down when the Ganga was pouring towards the earth to prevent the Ganga from destroying the earth. And when Kali was rampaging through the universe, he laid down in front of her. It's like immense compassion and self-giving. That is Shiva. When we were singing that together, I felt that in sonic form. That compassion. Thank you for singing this song that was inspired by something that Prabhupada, the founder of the Hare Krishna movement, he was like 75 when he came to the U.S. on a boat with no money. And he had, I mean I don't know if this is true, you know how they do about spiritual stories, but apparently he had like five heart attacks on the boat. And he pulled into the harbor in New York and he wrote this prayer. He said, I'm like a puppet in your hands. I'm yours completely. He had no money and he had five heart attacks on the way there. And he's in New York City and it's like 1970s. And this is the founder of what is now a worldwide movement, you know, with millions of adherents. That's the beginning, that's when it started. I'm a puppet in your hands. So this is a song to Krishna. And there's going to be parts in English that I sing and there's going to be mantra parts that you can sing along. Om Vishna Ve Nama Ha. It's actually not on the sheet, but that's one of the mantras. Om Vishna Ve Nama Ha. Can you say that? Om Vishna Ve Nama Ha. Om Vishna Ve Nama Ha. And then the Hare Krishna Mantra will come, which many of you may be familiar with. But it's there on the page if you are not. Great Tanya who said, you know, understand all the rituals. Just anybody can say, hey God, J. Ram Hare Krishna. It's this kind of democratization of spirituality that has happened in all the spiritual traditions. When things get too rigid and the priests come and say, you have to pay me if you want to talk to God. And then, you know, this other movement, this counter movement comes that's like, no, God is for everyone. And it's the beauty of Kirtan in a way was through just folk traditions and merged with folk music and connected to people in where they are and offered a direct line to the divine for everyone. The next song that we're going to sing is a prayer that Sri Aurobindo gave to a devotee. The devotee asked Sri Aurobindo for a mantra and it's an English mantra that's a prayer. We're going to sing that and it's on the page there. And also, hey mama, J. J. Ma. Do that too. Hey mama, J. J. Ma. Woman, mind, mind, mind. The words are in English, the kind of just shivoham. For those of you who have the paper, if you don't have a paper, you can maybe find somebody close to you or has one or maybe... This is like proclamation, a declaration that we make life. I am the heartbeat of the universe. I am the love that's holding all. I am the breath within everything and I am the fall. So you can read, but I think there's mixed feelings about it. And thank you to Vidya Mandir, of course, to Devan and Shalini and Aurobindo and those who are holding this space and invited us to be here. Thank you so much.


Oh my gosh, I'm going to be too... I'm going to be too busy, Nyesha. Are you ready? I don't know if you're ready yet. Wifi phone Facebook at Y24 channel onto the hashtag is what in the morning. My name is Valentine or at Color Me That. I'm going to be too busy. BAM! Okay. Yeah, look what to stick preview. So, it's Monday and we have my Crush Monday coming up. We're talking about the festive season and perhaps maybe anybody who feels that it's not really something to be festive about. Please do get on that conversation. Again, Wifi phone Facebook at Y24 channel onto the hashtag is what in the morning. I can smell Christmas from where I'm sitting guys and it smells good. Okay. Yes. Karibusana, welcome to our first segment. We have an artist in the house. Hi. Hi. Thank you. I'm Fabbish. Fabbish? Yeah. Why are you sounding so husky and then suddenly all romantic? No, I'm good. I'm okay. Yeah. I will spell your name first so that they understand. Okay. My name is Fabbish. F-A-B-I-S-E-H. Why do you have so many consonants? Okay. I think maybe when my dad was getting me he loved football so much. So, he named me after the 1995 coach that was Reina Fabbish. Okay. Yeah. Are you going to Wanyamas? I'm a up and down talent here. Actually, one funny thing. I don't love football. Really? I'm not even a fan. That's such a cool. I don't know what that is. That's I already. That's what it is because you're named after a coach but you have no... Okay. But let's get into something that you love to do. I see a lot of things here. I see a picture here of auntie. She looks nice, very nice, smiling. Do you remember the names of all the people you draw by the way? I do. Yeah. What's her name? That's Celestine. She's doing this movie called... How do you call it? It's on Maisha Magik. That girl Celina. If you watch Celina. I clearly do not partake in television but it's right here next to me on my right. It looks very nice. So, how long does she have to sit still? How many pictures do I have to prepare? Okay, fine. Sometimes I do things based on what I say. Like the Celina movie. It's so nice and I love it. So, from there the character who enticed me was in the movie with Celina. So, that's why I did that portrait. I see. It's like paying homage. Alright, we have another lovely lady over here. What's her name? Okay, that's Cindy. See? Cindy. Hi, Cindy. You look nice. Yeah, so when I was doing that portrait, Cindy sort of means a lot to me. She sort of changed some things in my life and she's made me learn a lot of things too. So, that's why I did that portrait. Oh my gosh.  It's making me happy. And there's another one here I would like to know what inspired you. As if, nameless. Baby, you inspire me. Name a queen's father. Okay. There's this thing we call going to the extreme, pushing yourself as an artist. That's Snoop Dogg. Maybe when somebody says that portrait, he just says whatever Snoop Dogg is doing. But for me, when I see it, I see something different. What do you see? I see shades. Okay. It's shades. And one crazy thing about the picture that I loved most was, I wanted to say, could they really draw smoke using a bio-open? So yeah, that's the main reason why I did that portrait. This is a bio-open. That's big. That's big. That's big. I just had to make sure. Crystal. So you, while you hold a big, you can do this. Yeah. And I like the stubble. Like you're so in touch with detail. Wow. Thank you. Okay. All right. There we go. Snoop Dogg Dogg doing his thing. Guys, Snoop. Just add us on White Faithful channel on Twitter. Thanks. Yeah. You look nice. Moving on swiftly. I see two children over there. And I can tell the identity by their hair. Tell us about that one. Okay. This one friend I met once right here through White Faithful. Oh my gosh. Ecuador. This guy is somebody who really promotes fellow artists. He's so inspiring. He's got so much of very nice advices. And I just did that as a souvenir for Echo. And I think I should be delivering that portrait when I get out of this place. Ah, yeah. So it's hot. Like you meant to talk about what's going on. Not really. Now it's quaver. It's been out for. It's been out for. No, I've been frank, but he knows about it. So I should be dropping it to him. Oh wow. Can I sign my name on it so that he knows it passed through White Faithful? It's okay. He will. Look at his face. All right. I see Avril right next to you. Ah, what inspired you there? Okay. For Avril, maybe she gives me flashbacks about somebody. And that's one. And another thing. Another thing in the main reason why I did Avril was because of the movie Two Different Worlds, World's Top 40. Yeah, there's this movie she did.  And it's totally one of the best things that I love about Kenyan movies. The first time I saw Avril acting was in sugar. I have never been impressed like that. I did not know Avril could act. That girl can act. Exactly. So Two Different Worlds showed me something different. About Avril, her health, how she carried out herself. She's humble and at the same time, asked to be somebody she's not. So another good thing when I did this portrait, she really gave me quite a shout out. And thanks to Avril, whatever she is, because I think that month was one of my good months with being at. And it's her baby's first Christmas of really having a good year also you. Alright, so one other picture that caught my eye before we get to your tools of trade is this one. So we have what looks like a, is this a wine glass? Here it is. Yes? The stem is looking like a wine glass stem. And then there is a shark in there. Why is there a shark? What are you trying to tell me here? Okay, I hope KBL won't sue me for this. But the main reason why I did that wine glass and a shark in it was because I was trying to maybe reach out to fellow Kenyans who do too much of drugs and they drink a lot of alcohol. Trust me, any time we are taking in alcohol into our body, it purely eats us from the inside because this is the point where you find somebody suffering from live as a horses. And with that portrait, I think for anybody who sees that portrait and understands it the way I do. Oh, actually. Won't really be an addict of alcohol. Can I burst your bubble a little bit? The first time I saw it I just thought, wow, it looks so cool. I can see the fins on the shark. It has teeth. Oh my gosh. But what does it mean? That's the first reaction I had. Yeah, so art has so many different things. When you see any piece of art, it must always have a clue. It makes me admire Da Vinci's work a lot because any time you follow about Da Vinci's creations, something always pushed him to do it. Yeah. Me, they started the code, Siegfried Da Vinci code, and I gave up on anything and all things Da Vinci. Like I'm tired. But here we are. Okay. So we have a little more goodies of pictures, but we want to focus on what he uses. What am I looking at? Me now have two pencils that I can use. I don't have any pencils. Okay. Walk me through this. What's going on here? Yeah, I got, I think, almost three or four brands of pencils. One, I have Stedda. Two, I have Faber Castel. Point. I want you to point at what you see. This is a Lumograph pencil. Okay. And it's from the Stedda Company, but it's majorly designed for artists. Yeah. Okay. This is a 7B pencil. There we go. Okay. So how many, so many card decks. How many pencils do you use in a day? Really, one pencil could do up to 20 portraits. Okay. You're lying to me because according to, let's just even look for another picture. Okay. The picture of a Coca-Cola can. Okay. So you want to tell me all this shading that you did. All that shading. This pencil could do that piece of art. That small one. Yeah. Yeah. Okay. You can see all the shadings and all the nice looking things and the depth. This is very nice. And then this is the pencil that he said he can use. Yeah. Trust me. You see, graphite is easy to manipulate. Wow. Because the moment I just do a few shades on the paper, I'll always use a tissue paper to smudge it so that I spread it to the other place as you get. Oh. So it doesn't, it's not that much work. It's just. It's not too much work, but technically it is. Because if you're not keen enough, you'd mess up the whole thing. Hey. You really can't do that because that's the reason why I think I carried this portrait. That we have another portrait. He's putting things on the table. Remember Nakaoyu aunty? I'm ready. This one looks nice. Oh. I like her. Her. It's Junipo's. Gotcha. Wait. What's her name? Okay. She's called Agnes. Agnes. I don't know whether she's a model or something, but I did this portrait because. Just for practicality sake. Okay, fine. Let's call her Val. We can call her Val. Yeah, so that's a pencil portrait of an A3. And the reason why I carried it and framed it, because it was already framed, but I unframed it, was because I wanted you to prove if you can really rub that, even with your finger. Rub? Yeah. Aha. You have come to the right place. Do you have a rubber? Obviously when I do something like that, you didn't take a rubber to rub it off because you'd love it too much. Listen. Okay. So let's just take your finger and maybe try rub it, like smudge it off with your finger. Can I try her face? Yeah, it's okay. It's okay. It's no problem. Way. Okay. Guys, let me look for a nail that looks good on TV. There we go. And then we try and smudge it. It's not smudgy, okay? See? Wow. Exactly. So why? What kind of pencil is this? A portrait like that could last in forever. Wow. Okay. Yeah. Sorry. It's because of the quality. Okay. It's the quality of the pencil. Oh. Yeah. Okay. Exactly. Wow. All right. So those are the pencils, man. I see. Is that white out? What? Yeah, this is white out. Why do you mean white out? White out, I can use it to put very minute white details. Oh. Yeah. Maybe like the eyeball when there is sharp light on it, you could just use white out for the detailing. Yeah. Okay. And what's this thing that looks like? These two pencils. We call them mechanical pencils. These ones I actually use them for detailing. In a college school, Fisium too. Not really. Okay. Just enough. Affordable. Yeah. So this one I usually use it for detailing. Maybe the pimples on the faces and stuff. Yeah. And a little bit of the hair strands that hang out. Oh. Like in the back of the neck area. Yeah, exactly. Yeah. I feel so enlightened. Yeah. Okay. What's the box over there? Okay. And yes. What's that? Okay. Yeah. In a Cacabrif case. This is just a rubber. Oh. We call it this is a rubber. Okay. It's not that modeling clay for school children. It's a rubber. Trust me. Guys, wait. Okay. Look. Atini rubber. See. See. See life. See life. Atisus and your rubber. Yeah. It's a rubber. How? Okay. In a tringer man say. It's not. Can you please have me this portrait? That's not true. Let me show you why it's a rubber. Oh ho. We're going to rub something. Yeah. It's okay. Ah. It's falling apart. Literally. Okay. This is so cool. You should try. Look at this. The technically rub. And a bleach. Yeah. Yeah. Wow. It's a detailed rubber. Okay. I'm convinced now it's a rubber. So it is. Okay. Fine. It just gets dirty with time. But you could use it for more than two years. Oh. Before you change it to another one. You can't really do that. You can't really do that. Okay. Yeah. What is the best thing about making your art? Okay. The best thing about making my art. Okay. Many people believe it's all about the money. No. It's not. But there's money. Yeah. There's money in art. I could welcome anybody who is really out there trying to look for a job. But it's not there if you're a talent that is trust me. You should really start investing in art. Is it something you can grow into? Like maybe. Okay. Okay. Like a corner. You know. Four limbs. Yeah. Then now I want to delve into it properly. Is it something I can learn? You know. Yeah. You can learn art. But there is always a difference between somebody who just learns out without the passion. And the person who learns art with the passion. Yeah. There are those people who go to school to take fine arts. And you'll still find somebody like that maybe still looks for fabished arts on social media for mentorship. Trust me. This happens to me a lot.  People give us your handouts on social media too. Okay. On social media, I'm at Fabish Arts. That's on Instagram, Facebook and Twitter. Okay. Yeah. I also have a page called Fabish Arts. Yeah. All right. So you make deliveries. You take orders and things like that. Exactly. So you have like a timeframe. If I wanted my portrait, say tomorrow. Okay. No. If I wanted to tell you I want a portrait today. How many days would it take you to deliver? Okay. Let's say if you give an order for a portrait today, you'll give me five days. Okay. If less, four days because I also have the jobs in line.  And if you have to do that, then you'd pay more. Oh my God. So if you'd be wishing to pay more, then fix in the line faster. Auntie looks nice on the TV. What portrait is that? Is it this one? It's just because that one. Yes. That looks so good. Okay. I like the details in the eyes. Oh really? Yeah. Okay. How much eyelashes? That's an effort portrait, but it took me quite a while to do. How long? This portrait took me roughly around 40 hours because I was trying to learn something new with a different style of shading and also a different kind of pencil that I had just imported then. So I wanted to see what I could really do with something different. Okay. So I was just on my Instagram page, then I met that piece of picture. So when I met it and then I said, this would be good for some detailing that I did. Nah. Fabish, the way you're drawing these things, you can draw better eyebrows than a lot of people I know. Have you ever thought of doing makeup? Okay. I've been thinking and venturing into different types of media art. I've been thinking of being a makeup artist for movies and maybe do something like sculpturing. But yeah, I'm looking forward to that. Sculpturing? Yeah. You should just even just do makeup. Look at her eye. Like that wing is giving me life. She's about to fly out of this thing. Oh really? Yeah. Like he's contoured her face perfectly. This is not a makeup artist, guys. Tell me what to find on Facebook, add what to find for channel on Twitter. Hashtag is white in the morning. All right, Fabish. Yeah. Now, what would you like to tell the people at home? I want you to encourage somebody. Okay. I think I should just address the parents majorly. I won't really talk to the talented artists today because if you have talent, no matter what you face, you will always look up to doing everything so that you can make it in life as an artist. So to every parent who is having a kid, maybe still three years old and still growing. Like my daughter loves pencils a lot. And I would really encourage everybody out there to help their children what they do so that they can also understand much more in whatever talent they have. We have music, we have football, we have pencil artists, we have painters and more sort of other different talents. And for any parent who is trying to force a child into the school system, maybe it's never going to help because personally I did IT but here I am today doing art my whole time. It's not like I really have to struggle so hard for me to get a job but I've implied myself. At least maybe in the near future I'm also going to create employment to other people. And I could also give a shout out to more of my friends whom I know. Majorly Al-Fast Address Nellim Chauraje. Oh my gosh, shout out Nellie. He came to I-254 and he was amazing. Hi Nellie. So I really encourage him to keep on helping other upcoming artists because if he's helped me make it here, then he can also help somebody out there make it here. And so can you. That's my challenge for you today. The next time I see an artist on TV, I want them to give a very, very big shout out to FABISH for being such a good mentor. I've also met people. I think you've interviewed one of my students here at Keopon Chauraje. He's very good with colored pencils right now. And I'm so happy. Anytime I see an artist I met who got the limelight, it's a good feeling. I like that. It's important for everyone to understand that baby you can shine, I can shine. It doesn't matter if we're doing the same thing, exactly. It doesn't really matter. The cake is big out here, ok? Don't need to compete all the time. I've seen DJ Pinyay somewhere. Now it's John Falmi. Ah! At Tume Chuoma. He's John Falmi? Yeah, it's John Falmi. But he used to make coffee on Wednesday, he looks a little bit different. Yeah, you know. Why John Falmi? This job for me at, it was crazy, there's this friend of mine, we used to do art with him like the whole time and we always had this one slogan and we came up with something we called it Art Customs This is a place where we could do a collaboration in art There are some few pieces we did for one, Kidero I'm confused, we didn't do a collaboration with William Kimber Exactly So now he's collaborating with Art Maybe somebody does the head, somebody does the clothing It doesn't look funny No, it doesn't, trust me it doesn't We did a portrait for Kidero, that was late last year He paid well and we also did a portrait for Willis Raburo and his wife and a number of clients So Art there, Karoli is a very good artist, he does miracles, I respect him a lot So to Karoli Art's man, Big Up's Joe, he's also made it a lot in art because this year I think I've been off the limelight like Kidogo because I was away on vacation Welcome back I've been seeing a lot of stuff going on This guy delivered portraits to people like Taras when he came to Kenya Chronicles and all those artists who've been coming in Borok Chora Romain Virgo, he was around Okay, I wasn't in Kenya by then I went to see my favorite sweetest person of all times Yes, that's a way That's my Shoshu So I went to see Shosh, so I wasn't around That's why I didn't do that, but I'm glad Karoli did it Alright, so he promised me previously before we started the interview that he's going to give me a portrait Yeah, I want my makeup on fleek like this, thanks Okay Nakpe Pichama And, okay, this is the last question before he got promised I was very interested, how do I phrase this This is a place I visited before It's called Molflani And then at the... It's not really a basement, but one of the...  I took a picture there and he did it for me, it was fantastic But I've also seen it being done live Yeah Is that something that you offer? Okay I do that, but in most cases, you know The problem with doing live sketches is Like you're seated right now And I'm sure you just can't keep your head that way For the next 30 minutes You'll have to move eventually And when you do that, possibly I will miss a proportion Not really When there's a blink, but the moment you move Obviously there's a change in something Okay Facial expressions and all that So something changes So it's tricky day? Yeah, it's tricky day, but we do it Once in a while, we do it I like how he will not refuse a challenge I really, really like that All right, please take your nice rubber before I finish It's okay Playing with it And go home with it Oh my gosh, thank you so very much for coming for our dish You're welcome Oh man, all this art is just amazing Amazing, amazing, amazing Thank you to all the beautiful people who got their pictures Into portraits Yeah, and I think you should still Stay tuned to Why in the Morning from 7 to 10 In the 8 am with the hottest breakfast show around And we have a surprise for you At 254 on Facebook At 254 channel on Twitter Hashtag is Why in the Morning Please do stay with me And joy as we spice up your week


Yeah, so to say these niggas in Trump And it's a lot of real and I didn't mean though a lot of real one coming home on this new law on it No feminine first year y'all heard about this. Yeah, I heard about it.  It's the last step before I go home to drill the drill program


technology working at Pristhagandra Henrico State Open University and today in this video I'm going to talk about file structure. So in this video I'm going to talk about data, information, record, files and the DBMS. So first of all let us know what is data and information. So for that let me explain by using an example. So for example let me take the temperatures for a particular place say Bwahati for the last 100 years. So now when we observe the temperatures for Bwahati in the last 100 years, simply these are just certain data. But when I put it in the context whether the temperatures are rising over the last 100 years or if they are decreasing over the last 100 years, then we get a particular information that whether global warming has taken place. So that kind of information from the data. So when we analyze it we get the information. So if we look at the definition now, then data refers to a set of facts or just statements like the temperature. Whereas when the data is processed, organized, structured or presented in a given context then it becomes information. So organized or structured data which is useful in some way becomes information. So there is a big difference between data and information. Data is the raw material from which information is produced. Now let us look at what is a record. So the record can be said to be a collection of fields of information. It can be numeric type, character type or alpha-numeric type. So for example if you look at the slide here, so I have taken an example of a record when we have the student name which is one field of information, then I am taking the student role number which is another field of information, then the course name and the percentage. So here in this record we can see that the student name and the course name is will be of the character type. Whereas the student role number it can be under numeric type or alpha-numeric type. Similarly the percentage that the student has got it will be of the type numeric. So our record can have a different or similar data types of information or fields of information. So this together they make a record. Now next we have files. It is collection of related records of information. So the information is stored as records and then the collection of these related records they can be stored as files. So now for example if you look at the slide so we have a collection of four records here. Where we have the student name, role number, course name and percentage that they have obtained. So here what is the percentage that a particular student have gotten then how do I do it? I can find out using the student name but if you look at this example I have used two similar names that is Rahul Sharma is in the first record and again there is another Rahul Sharma in the third record. Now I want to uniquely identify what that one particular Rahul Sharma has got. So for that we use a certain unique identifier for a record which is known as a key. So here in this in this file the student role number can be the unique key because the role number of each of the students are different and it can distinguish each record uniquely. So that is the job of a key. So in this example the student role number will be the key. Let us discuss on the different operations that can be done on a file. So first of all the first operation that comes to our mind will be the creation. So before doing any other operation we need to create a file. So we do that using the creation operation. So now in the creation operation we create a file and then the file has been allowed some space in the computer's memory. Then we have to open operation. So now in the open operation we already have a file that has been created and now we need to open it and for opening it we can open it either in a read mode or in a write mode that is we can open the file for simply reading some information from it or we can open it to write some information to it. So this is the second operation that can be done on files. Now if you look at the third operation that is read. So in the read operation we simply open the file and then we can simply read whatever information is placed in the file. So by default in the read operation the pointer it always points to the first location of the file. Similarly we have the write operation. So in the write operation if you want to write something in a file then we use this operation. Here also by default the pointer will be pointing to the beginning of the file. Now next we have to repositioning within a file. So now repositioning within a file operation it gives us a file pointer say for example fc. So it will use this function to take the pointer to any place where we want to write or from where we want to start reading. So it will just move the file pointer from one point of location to another within the file. Then we have the delete operation. Now the delete operation is used to delete the file completely. So using the delete operation not only the file will be deleted, contents of the file will be deleted but the file itself will also be deleted. So this means that the memory that the file was occupied that memory will also be cleared. Now next we have the truncate operation. So there is a difference between the delete and the truncate operation. Now in the truncate operation what we want is we have a written file and then we want to delete the contents of the file but not the file itself. So suppose for example I have a file where I had the names of the students that passed out in the 2018 bench. Now I want the same file to hold up contents of the students those is passed out at 2019. So whatever details of 2018 students I will truncate it so those details will be deleted and now I can insert new details here for the students of 2019 bench. So to truncate and delete the major differences then truncate the whole file will not be deleted only the contents will be deleted and this saves us time to the seven operations that can be done using on file. So now we are learners let us look at the database approach. So database is a collection of related data and the databases are organized by fields, records and files. Now here field is a single unit of information and a record is a set of fields and a file will be a collection of records. So now the database can be saved to be a collection of related files about anything. So it can be a student information database it can be a library information database so these are some of the examples of databases. Now if we look at the term DBMS which means database management system these are some computer software applications that help the users to store and analyze data. Now it can be saved to be a collection of data software hardware and applications that help to create and manage our database. So some of the common examples of databases are MySQL, Microsoft SQL Server and Oracle. In the slide you can see we have an example of a database. Now this database consists of four files. So the first one is student information then we have the course information then we have the grading information and lastly the four files that library information. So this can be a database for a particular university. So for example it is containing the student information that is the student role number and the student needs in the file for student information then all the course information that has been provided by the university can be stored in the course information file. Then the grading information that is whatever is to what the grade the student has got in a particular semester can be stored in the grade information. Then lastly we have the library information where we have the list of books and we have a list where we know which student has taken which book from the library. So all this together we are a set of files which together is a database example. Let us look at the characteristics of the DBMS. So the first characteristic is concurrent use. So this means that several users will be able to access a database concurrently. Now here the database is able to retrieve the information for different queries for different users using the same data. So the data will be sent to the control and there won't be any redundancy of the data. And now concurrently we can have different users say user one, user two, user three and all of this can use the database simultaneously. So this is our concurrent use. The next is structured and desperate data. So the essential information about database is that it is not only stores and maintains the data but it also maintains the entire description and definition of the data. So for example in the earlier example we had a student information. So database not only contains the student information that is the student name and the student role number but it also contains the definition or description of this information. That is how many letters can be there in a student name say 40. So what kind of description will be for a student role number whether it will be numeric type, whether it will be alphanumeric type. So all this description will also be contained in the database. So the description and details about the structure, the type, the format of all this data and the relationship between this data are also included in the DBMS. Next characteristics if we see is data integrity. Now here data integrity it refers to the reliability and the quality of data in a database system. So it also includes the protection part of the data from unauthorized users. So if we have a database table in the earlier example for tables and if only the university officials are allowed to access those files. So now a student will not be allowed to access those files. So that is the protection of data that only a particular authorized users will be able to access the database. Next we have transaction. So our transaction is a set of actions that are performed within a database to take from one consistent state to another. So here the transaction can be seen as an atomic statement that is it cannot be divided further along and then this whole statement will be either it has to be completed in full or none. Transaction here. Next we have data persistence. So now data persistence means that in a database all the data is maintained as long as it is not deleted explicitly. So until an authorized user deletes that data that I want this to be deleted that data will remain in the database system. Next we have data views. So a database has many users and each of these users depending on their access rights and queries for one day they can have their own individual views. So for example as a student my database access can be limited only to the student table or only to the library table. I may not have an access to the course information table but as an administrator he will have the access to all of the tables. So in that way a query depending on the whoever has asked that query so we will have different views of the database. So these will be the characteristics of the database. Next let us look at the objectives of the database. It is to provide efficient storage management and retrieval of data that is a database should be able to provide efficient storage we should be able to keep all the data and we should be able to manage it and whenever a user has asked for some data we should be able to retrieve that data. Next there should be a reduce of data redundancy. So since the data is centrally located so definitely the data redundancy part will be less. Also the next is providing data independence and then sharing of data. The third next point is providing data security from unauthorized access and use. So only the authorized persons will be able to use the particular Next handling different user views of the same stored data and being adaptable and scalable according to the user requirements. So these will sum up the objectives of a database. Next let us look at the advantages of database. So some of them are it helps in controlling redundancy then the concurrent access is allowed in a database. We also have data integrity which can be imposed then a sharing of data is also possible between different users. We also there is also protection from unauthorized access and users of data. Now in the database data recovery and backup is also possible. Also the time and cost needed will be less in a database. Also there are many different tools that are available for easy access of a particular database and inconsistency that was there in the file systems can be easily avoided in a database since it is centrally located. Now let us look at the disadvantage of database. So now if we have if our system that we have is not very complex in nature then it would be advantages for us to use simply use a file system rather than a database. So that is one of the disadvantage of database that it is more complex than the file systems. Next the performance time that is needed for the simple applications may be more in a database. Also the cost may be high depending on the function and that is provided in the database as compared to the file systems. So with this I come to the end of this video. Thank you for watching this video.


Okay, then I want to welcome you here, everyone, to the tutorial structure, your app introduction to Shiny modules at the USART 2021. Shortly to myself, I'm Jonas, currently doing a PhD, but also do some Shiny programming on the site and yeah, basically got introduced there to Shiny modules and I think it's a very valuable tool and I want to show you today how to get started with this. So basically, yeah, this is about how to write better Shiny code here. I don't know who knows it a few that you start writing an app and then your app.rfi gets longer and longer and gets more confusing and you have to repeat code. Or you want to use one functionality from your app and another app. So these are problems I have, I have and for this modules are a really nice way and I will show you how to solve these problems and it will be structured this way that first, I give a very, very short recap of reactive programming and then I give an introduction into modules, what they look like, how to pass values to the modules, how to return values, also how to do this with reactive values and in the last step how to dynamically generate modules. Yeah, I asked you to always ask questions in between if something is not clear. Either raise your hand if it's, I think we are not so many so you can also just directly, I'm very happy for questions because I want you to understand the material and in between we always have some short exercises and I will tell you how this will be when we come to the exercises. But first I want to know a little bit about your Shiny skills and I want you to rate this, you should be able now to annotate the screen and you can stamp it basically here on the line between beginner to expert and how you would say your Shiny skills are that I have a better idea of who you are in terms of Shiny. I have to see where you, do you find the annotation for it? Exactly, you also have kind of a stamp function where you can leave a star or something like this if you want to. Okay, so most of you are more in the beginner section. So here are a few comments in the chat also saying that most of you are more in the first half. Okay, perfectly fine. So always tell me if I have to click with something that if I explain, should I explain more? Yeah, okay, then I will very now start with a very brief recap of reactive programming. So the usual way to, let me check that I remove the annotations. Here we go. So for reactive programming, I mean the usual way to do it is you are more procedural. So you declare n is one and then you calculate the result by one plus n and then you say, okay, now n should be two and so on. So basically you tell what to do and when. For reactive programming, it's more that you define how to do something but not exactly the steps. Now you have to do this, this, this and this. And one, yeah, one part of this reactive programming is the reactive, which basically define a rule how something is calculated. And maybe, so here you would see the result is an irrect if you say, okay, it's one plus if you have here a shiny input and it always gets updated automatically if the input n changes. And maybe you can picture this a bit like homework assignments because students won't do anything by themselves only when the teacher says, okay, now do it on input page this and then it gets updated automatically but if nothing changes, they won't do anything. And basically the other part we have our observers or experiments which are functions to, yeah, monitor one or several reactive values and they always re-execute the code in them when something changed. And maybe you can think of this of a, yeah, student checking if a teacher is approaching who's on the lookout and this changes then basically the code is executed in the observer. So maybe our students back to the places. And if you make a comparison, basically between reactors and observed events, vectors are callable. So you can use the value returned by the reactors. As I said, that they return a value, observe events are not callable and they don't return a value. So they're basically more for their side effects, vectors are lazy. So they only change when an input in them changes and observe events are eager. So they always check does, has something changed or not. And there's a very good talk about this by Joe Chang and I would recommend watching this if you still want further introduction into this. Okay, there's one thing in the chat. Okay. Okay, this very, very brief introduction. And we have any questions until this point. If not, I would go on. So this is now a very general part how to reduce code complexity a bit in the context of SHINee. So I always recommend using the style guide that your code is consistent. For example, you could use a tidy verse style guide, use meaningful names. And I would say this is an especially important in the context of SHINee. So for example, if you have a variable called NS, it's very meaningless, but your students are already more descriptive and you know what it contains. But for SHINee, I would also say be even a bit more descriptive. So maybe you have a data object which has information about the new students. And then you maybe have an output with a table. So I like to prefixes with table new students that I know, okay, now this is actually the, yeah, the random table and this is the data for the table. Then also use meaning for comments. So rather why you did something and what for example in SHINee, if you use the DT package, you could, for example, specify which columns should be editable and you do this by column number. And then it would be nice for example in the comments to say actually the column names, which you mean by these numbers, because maybe you're underlying data object changes and then this editable function. This doesn't mean anything to you anymore. Then you should reuse code. So you can write functions also in SHINee, but it's mostly interesting if for the non-reactive parts in SHINee, then document your functions. And for this, let you help you buy the Russian package and lastly use SHINee modules to really encapsulate code on the UI and server side. I'm sorry, I forgot this one point is don't put too much functionality into one reactive or render call. For example, if you use a render, render DT, render table thing, it's, I like it to not put all my data wrangling functionality also in this render table call, but use a reactive beforehand where I do the data wrangling and then just call this reactive within the render table call. Okay, I'm sorry, I forgot this now with the modules. What are SHINee modules? So if you would picture this as your SHINee app, so you have some inputs here, some buttons, you have some outputs, and you have some logic in here and a connector in your complete app. And now you basically want to reuse components. For example, you need this input buttons also for other parts. So other circuit boards or then in the analogy that in other SHINee apps or the output in other SHINee apps, you can try to break it down. And basically an app always contains part both of the UI and a server part. And this is really the specialty of this modules. And you can always think of SHINee modules as a mini SHINee app with a few additional nuts and bolts to make these modules work. So basically a bit more schematic. It looks like this. If you have here your main app, you always have this UI part and the server part, right? And the module looks the same. It has a module UI part and the module server part, which are also written separately. And then you can use them in the app, right? So in the UI part of your app here in purple, you can now use or include the module, the UI part from the module. And then in the server part also include the server part of the module. This is basically the high level idea of a module. And now we come to the general structure, how it looks like. So basically this is now our really a scaffold of our SHINee app. And you see here in the UI part of the main app, we call the UI part of the SHINee module. And it's always nice to basically, yeah, here's basically always the name of the module. Here it's just module. And then you notify that this is the UI part. The naming is more or less arbitrary, but it's really nice to have this part saying it's the UI part. And then the important part is to have the ID of the module, ID one, which has to be unique. And then in the server part, you have the, yeah, server function of the module. And then you need to use the same ID, because it's only this ID, this ties, yeah, the UI and the server part of the module together. Okay. And now this looks like when you, how you can already reuse the code of modules. So you can just call the same UI and server function of your module the second time, now with a different ID. And this is really the nice thing with reusing codes or modules. And yeah, in the schematic, this looked like this, you just, yeah, have this a second time here. And IDs for defining the namespacing, which I will come in a second. Is this clear so far? Are there any questions? Is this clear? Okay. See this one. That's perfect. Okay, then let's go on to the module structure itself. And this is really what the scaffold of the module looks like. Okay, there's a question by Matt Jensen. If the module is called MO, it would be MO, MO underscore UI. Yes, so it's basically, you're free to name it what you want. But it's not advisable. So you always use, should use the same name of the module, for example, MO. And then you can use underscore UI and underscore server to distinguish the UI part in the server part. But you can also leave out the underscore, just write uppercase status UI and server. It's really up to you. But I would recommend to use a consistent structure that you always know what is the server part and what is the UI part of your module. Because basically they're just functions, just R functions, and they're just tied together by this ID. So the naming of them is arbitrary. I hope this makes it clear. Less clear. Okay, let's see. I would say I explained the names facing a bit more with the IDs itself. And then I actually will code the module for your life. And I think then it makes it hopefully a bit more clearer how to distinguish the name of the module itself and the IDs. So please hang on for a second. And then I try to explain it a bit in more detail. So here for the module structure, so you see that the UI part of the module, again, this is just how I call it module. And then I use this underscore UI to say, okay, this is the UI part. It's just an usual R function of the ID. Then with this, you define the namespace. This is something I will come to you in a second. Just hang on. And then here you have a tag list. And I'm not sure if you've seen it before. Tag list is used in Chinese to basically structure together different input or output elements, Chinese output elements. And you can think of this a bit of more fancy list. So this makes sure that basically, if you define here in the R code, inputs and outputs, I mean, in the end, they have to translate it into HTML code to make it work. And the way this is defined in Chinese can lead to problems if you just would use a list and put them there. So they have the special tag list, which in the end, just make sure that you get the correct HTML code out of this. So you can basically think of this as a list where you put your UI elements here. And then in the module server part, this is again also just a function of UI. And then now you need a bit, yeah, this more machinery to make it work. So now you have to call a function called module server, which, yeah, sets up that everything works correctly in the module, which is a function again of the ID. And then this I think is, sorry, this is known from the usual main Chinese app that you have an input output session, how you just would define the server part of a normal Chinese app. And yeah, he basically sees a setup for the namespacing. And I will explain this now bit more details. So basically in Chinese, all IDs, so the IDs of the inputs and outputs, which are then put in the, which your reference in the R code, but then, I mean, in the end, also translated into HTML that everything works correctly need to be unique. And now if you reuse the module, you would have the same IDs, right? Because in the, if you write an ID in a module and use it twice, this would lead that, that you have the same ID twice, but this wouldn't work in the code. So you have to somehow have a mechanism to make also these IDs in the end unique. And for this, you use namespacing. And you maybe know namespacing in R from using packages. So there can be functions, right, in different packages, but with the same name. For example, there's a function called filter from the base or base R stats package, and from deep player, right? And if you want to be explicit in the R code, which function to use, you have to use the package name and then to double points that to specify which, which function you mean, and basically the same happens in, in this module code. So you generate namespace. So you use basically this uppercase and S of ID. And this is then a function that is same as science namespace, which depends on the module ID for every module instance. And basically what happens here, for example, your ID of the module is my underscore ID, generate namespacing function. And then you can use this, for example, if, if you make an select input with the ID selected call, then you have to prefix it with this namespacing function. And then you get out basically the ID name, which is prefixed by the ID of this module instance. This is something basically machinery, which, which other module itself, and you don't have to reference always these name, the same pressing before. But you have to keep it in mind when you set up your module. And here you see it in action. So if you define a UI function of a module, you first generate this namespacing function. And then if you make your I element, you need an input ID. And this has to be prefixed with this namespacing function. And then you set up. And the nice part with Shiny modules is that in the server part, you don't have any additional work. So you can just in the server part of the module reference to this input ID as start calculation and not an S start calculation. Okay. I would say that I demonstrate this now by coding this small Shiny module based app live. And afterwards we can discuss the open questions you also had with how to name modules and the difference to the ID. Okay. Just let me make it a little bit bigger for you. And now, so sorry, there's something in the chat. Yeah, Yannetic asks if it's actually as input, dollar start calculation. Exactly. This is the way how you would reference this in the module server. Okay. And now I want to show you a short module based app. How you do this, which just plots uses the empty cast data set and plots a graph. And you can basically select in every module instance, which column you want to have it applauded. So first, we need Shiny and plot two. And now I start, sorry, let's chat. For this, you just please watch and always please ask questions. And for me, it would be easy. Actually, if you unmute yourself to ask the question, because then it's a bit easier for me that I don't have to want to hear the chat by myself. And I can answer your questions how to do this. So this is really just for the long, and then in a second, you also have an exercise to do it by yourself. So now I start actually out with this module function. So I want in this module a selection which column to use, and then the plot output. And so first, I have to think about this module name. Here I call the module plot. So it's my plot module. And then this is the name, right? And then I use underscore UI to define the say that it's a UI function, but plot UI, plot UI, this would work as well. This is really up to you how you would want to name this. And this is just a usual function, which needs an ID, right? For the namespacing. And then first, I have to set up the namespacing function. And then I can start with a tag list. And I said I want to select input. So input ID. And now it's really important that I use here the namespacing. But then the input ID I can use what I want here. Selected call. And then, yeah, just set up the select input choices. And here I just use the call and empty cars. So this is my first input. And then within the tag list, I use the second UI element, then a plot output. This has an output ID. And again, I need to use the namespacing and then can choose an ID just and this is already done with the UI function. And now I need to write the server part of the module. So here again, I call this underscore server, but I could also just call it plot, but I wouldn't regret this. I could call it something like this. It's really up to you. And again, this is function of ID. And now I have to set up this module server function, which first takes ID as an input argument, and then the function with input output session. And now I can here code the logic I want. And here I don't have to take care of the namespacing. Okay. And here to make a chart. So you see I can just refer to plot and don't need the namespacing. Okay. And now plot. And here I do what I set before. If you have more extensive data, don't do it in the random plot stuff. I just do it here for brevity. Basically, do a GZ plot. We use empty cars. And then say, basically, you can choose the x column. This is the wrong. I don't know if you've seen this before. This is basically the new way to do it in GZ plot, but also dplyr to access. Basically, not if you want to have access to the column names, and you don't have it as a symbol, but as a string, you can use the stop beta argument because all the inputs from shiny with the column names are characters or strings. And then just say that we use mpg as our outcome, and then use point plot. And this basically already the functionality we need in our module server. Okay. And this is now that we set up the module. And now I called the main app part page. And now I don't need any extra UI. I just call the ID we just generated with our module. And for this, I call our plot UI function from the module. And I have to give the ID. And now this has nothing to do with how the module itself named, right? The module is plot either underscore UI underscore server. Now we have to give every module instance an ID. For example, this is the first instance of this plot UI. I'm calling so I could, for example, say this is module one. And this is already done what I need to do in the server part in the UI part. And now I can define the server part. And here, this, I also just need to call the module function and use the same ID for the instance as I used here for the UI. Right. So it's module one. And with this, I'm also done in the server. And I can call the app. And this is now our main app. And basically the UI is rendered from our module. And here I can use the different columns. Okay. Also, you find the code for this in the example section of the GitHub repo. So if you don't have to follow along all this, you can just look the code up. Okay. Let me check. Is there something in the chat? No, I hope this made it a little bit clear about how you call the, how to name the UI in server part of your modules and then use IDs for instances of the modules. Are there any questions left for this? Are you on us? Could you just help me or us understand what the tag list does and why it's necessary? Yes. And basically the tag list makes sure that the R code, which defines your eyes, is stored in such way that later on it can be correctly translated into HTML code. Because like my experience are how they basically, if you don't use a tag list, can lead to problems because I think there's, I'm not sure how the Internet is correctly worked. Some parts are to go from the R code to the HTML code and there can be hiccups if basically these UI elements are not separated in the correct way and basically tag list makes sure that they are separated in the correct way and then the correct HTML code can be generated when you start the app. Okay. Thanks. That was helpful. Thank you. Yes. The question, can you ask other arguments to modules than ID? Yes. And this is exactly what we will cover now in the next section. Okay. And basically here you already see this. Now if you have a function not only of UI, but we can use a different input. For example, here a button label to customize the label of our action button, for example. This is no problem. And this also works for the server function. And you just have to do this in the, basically the high-level function and don't have to change the server itself. And then just can use it here in your logic code, how you would use it in the main app. How to do this with reactive objects? I will show you a bit later now just with basically normal objects. Now a short word when to use modules. Modules are very good when you use both UI and the server part. If you only have your I part you want to repeat the only server part, then you can also use just normal functions. Modules are also good because you can basically test their activity within a module with test server. And yeah, as I said, if you want to have function that's only on the UI on the server side, you can just use normal functions. Okay. And now I want to come to your first exercise that you write your first module. And for this, I have prepared a short shiny app. I will show you. As you can see here, it's again empty cars. You can show the summary and for the summary choose different columns on which to base the summary on, right? And this is in the code just in a normal shiny app. And now I want you to encapsulate this functionality within a module. So basically that in your module, you have all this. You have a button show summary. You have a select input where you can choose the column name and then data table where you either see the complete data set or the summary. And speak then when you have this module, you have to make this module so that you can input different data sets so that you can use your model with the empty cars data set, but you can also use it with what did I say here? With the diamonds data set and the CO2 data set so that you call your module several times. So you have to keep in mind that you need input arguments in your module that can take the data set input because what you do in the module depends on your data set you put into there, right? Because the selected columns need to be depend on the data set. And for this, I will have breakout rooms for you. Let me check how many people we are now. 18 minus me, I would say then that we have four breakout rooms. And I think the easiest one is if one person in the breakout group can share their screen and that you all code together and try to find a solution. And I, of course, will hop between the breakout rooms, help you, you can ask for help. I think there's a button. If you have a question that I come to you, yeah, and see that you code your first shiny app and you find the overview also in the GitHub repo under exercises. Okay, let me see, breakout rooms. And I would say first, I give you 10 minutes and if you see if it's not enough, you can have a bit longer. And in the end, we will also discuss the solution here with all so that you know how to do it. And then I open the rooms, if there are not any questions before. Hey, welcome back to the main room. Let's see if everyone's back. No, we are eight so far. Okay, perfect. Yeah, I kind of bit through the breakout rooms and it seems that most of you can, yeah, we're pretty, pretty good at the solutions. So I just want to shortly go through my solution with you to make, have everyone on the same page and then continue. And if there are any questions in between, feel free to ask. Okay. So basically here with the modules, I first start to define the module UI again. And besides ID, now I also have this data set argument, right, because I want to be able to input different data sets. Then I need the namespace generation. Then I have the take list. And for the take list, I just basically copy and paste what I've before had in the main app. And now here, again, with the namespacing. And then basically the only other thing you had to change is that for the choices, you basically use the data set argument and not hard code the empty cars anymore. And then also for the server part, what you had to change was that you don't use hard code empty cars here, but that you use again a data set argument with, which you would output, right? This is what you had to change. And then in the UI part of the main app, you can just call the UI part of the module several times with different, with different data sets, and then also different IDs. So here I would have the ID empty cars when I call empty cars and so on. And then the same also in the server function that I use the same ID, when I use the same data set, right? And then I can execute this and now have this one after another with my modules. And so this is really nice reuse of the code we had to write both for the server part and for the UI part. And now you can just call your module. Okay, this was basically what I wanted to say about the solution under any questions left. If not, I go on to another very important part, which I call a bit module communications. So now we want to look at how to pass reactive as inputs to modules and return reactors as the output of modules. So, sorry, there's one thing in the chat. Okay, perfect. So how to pass reactive inputs into modules. If you look at this code, do you have an idea of what could be wrong with this code? Right, I again have here, so I just have the server part of the module and again have an input result, but now this should be result, which I then use here in the render text and I pass basically in reactive valve from the main server function to my module server. And do you have an idea what could be problematic with this code or not work as intended? It's about the context. Some of the viable code in the test test reactive function can't be found in the module server. And this is actually not the problem. So this would be found, but the problem here is basically, if you look test as a reactive, right? And module server is not how do you call it? You can pass reactive values to non reactive function. Exactly. This is a bit of a problem. And basically, if you would execute this code, it works, but it works because if you have a look here, here I evaluate me reactive, right? Test is reactive. And when I first basically when this code here is executed, so this module server set up, it evaluates test, directive value test, it just would return one, right? Because this is how test is set up. And then I call my module with result with a value one. So no matter how often then in the main server function, I change this reactive value test in the module, it always stays one. Because when you set up the module, it was set up with the value one. So it's not reactive. And this is really the main problem when you start out with passing reactive values to modules. You always have to pass un-evaluated values, un-evaluated reactive to modules. And what I mean with this is what we'll see in a minute. And this is really, if you just take one thing from this workshop, it's the sentence. Always input un-evaluated reactive values into modules. This is really key. So let's have a look here. Again, I have this test reactive file set up with one. With this, by using the brackets here, I evaluate it to the value one and call my module with a value one. No reactivity. But if I just pass the un-evaluated reactive without the brackets, then this works. And you will see in a second how to make it work within the module server. Because the reactors itself are basically just functions. And they are just functions. And if you use the brackets here, you evaluate the function. And the function will return the value at the current moment. And there's some shiny magic in the background, which set up these functions in a way that they are reactive and always return a different value when their value was changed through to reactivity. So this is why it works if you just pass the un-evaluated function to the module and then only within the module evaluate the reactive. Then you also have this reactivity within the modules. This is really key. And here, I show you this for reactive value. If you're reactive values, then it's a bit different. For example, if you have reactive values, it's a bit more like a list. And you can have different data objects within your list, different entries. For example, here, I have the test entry. And if you directly pass a test entry through your module server, it won't work because it's already evaluated the value. But if you just pass a complete reactive values element through the module server, it works. If you have inputs that are defined through your main app UI, right? So this is now in the main app, these inputs. And if you just use the input dollar test, this won't work because at this point, it gets evaluated, you just get the value back and not a reactive. Because this input is only reactive within the main server function or later on in the module server functions. So for this, it looks a bit more complicated.  Then this works. And this is really, this is key to understand how reactivity works modules. And you can see here how this thing gets evaluated. So I have my reactive value, right? I pass it un-evaluated into my module. And then within my module, now result is the reactive. Basically, right here, I give it to this argument result, because I pass an un-evaluated reactive value to result. Result is now my reactive in the module server. And I can evaluate it with the brackets. And then I also have reactivity within my module server. And here, I show this for the reactive value object. Here, this is what it looks like for reactive values object. I just input the reactive values object completely. And then, basically, I assign it to my result variable called result. And then I can here access one entry in this result, reactive object called test. And then it's reactive also here. And if I have my input here and it's wrapped in reactive, again, pass to this argument called result, then within the module server, use the brackets, evaluate it, and you have your reactivity. This is really key for this using reactive inputs. So this was a bit like, yeah, the quick version. Aren't there any questions to this? I know it was, yeah, a bit loud. I have a question. Yes. So in the bottom part, you see a result equals reactive. You wrap the input test inside the reactive, right? Can you wrap it in the module server function straight away? For example, result equals reactive bracket inside the module so you don't have to call it as a reactive in the server function? No, this won't work because this code is only executed once, right? Because this is only executed when you set up, when you here in the server function, this is only set up once in the beginning to set up the module server, right? And only then it is executed. And at the point of the execution, basically, you would only pass input dollar test to the result. And at the execution, this is evaluated to just one value and not to reactive. So you would always pass just one value to the result and therefore it is not reactive in the module server anymore. This is really key to do this on the main app side. There's nothing then you could do in the module part. Okay, thanks. Jonas, I have a very basic question. Yes. And that is regarding this curly brackets. When are they actually used and what are they standing for? Yes, basically, you pass basically the reactive takes code as an input. And here it would work without the curly brackets. The curly brackets basically just enclose the complete code you pass within in reactive, right? Because the reactive then evaluate this code and updates if the code within the reactive is updated. And the curly brackets are, for example, especially helpful if you have multiple lines. So if you just put an input dollar test here, you wouldn't need them. But like for me, I decided that I always use this curly brackets because then I won't forget them if I needed them. And for me, it's also a bit, to be honest, like when I look at Chinese code and see the curly brackets for me, it's always like, okay, there should be something reactive going on. This is why I stick to this pattern of writing it. Yes, makes a lot of sense. Because I've seen them sometimes and sometimes not. Yes. Yes, that's why I get a little confused. Yeah, no, I get it. And because you don't always need them, I would say it's always better to just use them. Then this is not in the source of bugs. Okay. If there are not any more questions, I have again an exercise for you. And this time with reactive inputs. So basically now, let me check here. What you should do now is that you rewrite the code from exercise one and yeah, just feel free to use my solution for this. And that for now, you have this checkbox input right for every module and say if it should be in, should be sure the complete data set or the summary. And now I want you to remove this from the module and just have one checkbox input for the complete app. And then if you check this checkbox input in the complete app, all instances of the module should change to the summary or back to the, yeah, just showing the complete data. I hope this is clear the exercise, if not, yeah, please, please ask if something is not clear what you should do now. And for this, I again sent you to the breakout rooms and would say roughly 10 minutes and I hop around and see if it works or if you need some help. Okay. Yeah, I was quite good what I've seen on the breakout rooms, very good. So I will quickly go through the solution. And again, if you have any questions, feel free to ask. And I think best is just unmute yourself. So basically, here in the UI part of the module, I removed the checkbox input, checkbox input, we don't need it anymore. Now it's in the main app, I will come to this in a second. You see here now in the main app, I have the checkbox input. And this is basically all I had to do on the UI part and a bit more trickier part was on the server side part. So now on the module part, module server part, I pass my input, which is now here the input now from the main app as a reactive. And I chose to call it the summary argument, but you can call it what you want. And then in the table server party of the there's additional input argument, the summary. And, you know, before here, we had the input slash, I think, summary, which came from the module UI part, which I now removed. Now I remove this additional argument. And here's important that you don't forget the brackets, right, to evaluate the reactive here, because here now you want always an actual value and not an un-evaluated reactive. And the rest actually works as before. And then if you execute it, now you see I only have once here this show summary, and I've clicked it, then all modules at once behave according to this reactivity. Okay, this was very short. The solution. Are there any questions to this? I'm really happy to take any questions. If not, I would go out in the interest of time go on. I think we also don't have time to do all the exercises, but I think the next one is okay. Because so far we've only used input values, right? But you can also return reactive values from modules. And here's the same as for the input. If you're here, you really need un-evaluated reactives to return to the main app, because otherwise you wouldn't have the reactivity then in the main app. And how you do it is that you put a return statement at the end of your function of this input output session function in your module server and have the return and then return the un-evaluated reactive. So here I feel reactive file, so I just return and just the function name and basically not with the brackets. And then on the server side of the main function, you can just assign basically the output of your server call to a variable, which you then can use in your main app. And now this is again, here also an un-evaluated reactive. So you can use this un-evaluated reactive in a reactive context in the server part. They are evaluated with the brackets. And then you're good to go. If you want to return several reactives from a module, you can do it with a list. And then basically have named arguments, named entries in your list. And here I return input or basically reactives from inputs and UI elements from your module UI. And they have to do the same to wrap it again in a reactive. Otherwise it won't be reactive in the main app. And you can see it here. I again assign the output from my module to a variable. And then here basically, because it's a list, I can call the elements of the list and evaluate it. Okay, see, there's one question. How about returning reactive values? I guess if you have not reactive values, but you have active values, then you would return the complete reactive values object without explicitly naming one specific entry in the list. Yeah, this works. Okay, so we have roughly 25 minutes left. So I have to see, I would say that just in the interest of time, just try out exercise 3a or if you are 3a to get one feeling for this. And then unfortunately, we have to go on that I can at least cover shortly the other part, which I think are important when starting with modules. So yeah, basically just use exercise 3a. And basically what you now should do is that you take the code from exercise 2. Again, you can use the solution from the solution folders and return the mod from the module return this selected column name reactivity reactivity and then show this in the main app in a text output.  Yeah, so I would ask you now to try this out again in the breakout rooms. Are there any questions for this? Otherwise, I sent you again to the breakout rooms. How to store the outputs of dynamically generated modules. Also not super perfect. So yeah, something to look when you're more familiar with these concepts. Then I want to say something about nesting of modules. I had this question already before. It's perfectly fine that you can nest modules and you can of course do this because you can do code reuse and I like to do something for example to set up one module for like one page you have in your app or if you have like really big, I was like tap different tabs and I have one module for one tap. And then I can use other different modules within this tab module. And this is one way I like to structure, for example, apps. And basically calling a module within the module is not different than you would call it from the main UI, the only thing you have to keep in mind. So this is now here the module UI in which you call another module. So the outer module. And we've learned that within module UIs we have the namespacing functions, right? And so you have to just keep this in mind if you call in our module UI that you also namespace this. This is really the only thing you have to keep in mind. But this is the same pattern as you would do with any other IDs in the module UI function as well. And there's also an example app in the example folders in the repo that you can have a look and see how you can use nesting of modules in practice. Then, where does the module live?  You can have it in an extra folder and then source the scripts before calling the main app. Or if you actually have an R folder within your project, this is now sourced automatically. So RStudio actually recommends to put your scripts in this R folder and then the sourcing is done automatically. And if you have really big, tiny apps, you can also put them in a different package.  Then also one thing to keep in mind, because sometimes you see this code set out in the wild, there was an API change with shiny 1.5, which was not just one year ago. So you maybe find all our code module code, which looks a bit different, right? This is a current way to write code where you can basically this only is about the server part. So right now, the server part of the module needs this module server here, right? But then you can just call your server function in the main server, in the main app. Before, it looked a bit different. Basically, when you set up your server, you just had this function of input output sessions. It's super easy. But you had to actually use a different function called call module in the main app server function. And you sometimes see this still out there. So don't be confused when you see it. It's just an older way to write modules. But you don't have to actively write code in this way. Okay, let's skip this. What should be a module? Something you should you repeat often and where you need a UI in the server part, where you want to test your activity maybe separately. Then, as I said before, large self-contained parts of an app, for example, a complete app of an app. But you don't have to wrap single UI elements within a module. This is, yeah, I mean, there you have more work than actually benefit from it. Then you can directly use a UI element. Okay. And basically, the summary, I would say, don't forget the name spacing in the UI for all the IDs. Really, keep it in mind, always input and output un-evaluated reactive if something should be reactive from the app to the module or from the module to the server. Otherwise, it won't work. And then, yeah, I'm very sorry that we didn't have too much time to go this. If you want to dynamically add modules, use insert and remove your eyes. And I think with this, it's also time was completely done now. I'm not sure if you have time to answer questions here, but always feel free to reach out and write in the Slack channel if you have any more questions, I'm happy to answer. And I was very happy that you participated here. And I had a good workshop with you. Yeah, so thank you. I just, so hi. I just want to say quickly, if you want to stay for another 10 minutes, actually it's fine because for this tutorial, we don't have another one starting right afterwards. So if you need 10 minutes for questions, it's all right. I just... Okay, okay. Yeah, sorry. Now the last one was very quick. So I'm super happy if you have any questions and try to go a bit more into detail. Yes, I have a question. Thank you. Thank you very much for the tutorial. And do you know if there is a bank or a database or a website with a lot of modules, examples on the web? Hey, I don't really know to be honest. I mean, there's a packet called, I think, shiny widgets and I'm not sure if they actually have some used a bit of modules there. But I haven't come across really like a database based on modules or something like the Shiny Gallery with a lot of examples to reuse. Because I think there are a lot of interactions, interactivities with the input so that looks like and perhaps someone has the idea to do this. Yeah, maybe there's maybe there are epic samples of modules within this Shiny Gallery to be honest, I haven't looked so I really don't know. Yeah, probably the best starting point. Yeah, if there are not any more questions also, I'm super happy if you also just can do it via Slack or so give some feedback because it was the first time I heard this workshop. And yeah, I'm happy to see if you think we would want to know more details or bit different stuff. So I can adapt it for the future. Jonas, maybe you can elaborate a little on where you use the modules and when. So yeah. Yeah, for example, right now I'm working on an app which really has, I forget where it's like tabs or tabsets, but basically you can have yeah, really like different pages, different pages that you click on in the Shiny app and basically run as a different page and I'd like to have one module for every kind of page for this because then it's really easy that I don't get I don't know like 3000 lines of code scripts or something like this. But it's a bit more structured that I know, okay, this is responsible for this, this is responsible for this, this is responsible for this. And so this is one thing where I use like really this bigger modules. Then, for example, if you use a module with some functionality, for example, with a feedback button within an app, which is written as a module, so you can just call this module in every app you use. And then basically like how the feedback is passed on to the app developers is abstracted in this, in this module and you don't have to write it every time you for every app you develop. So this is something where I use modules. Yeah, so so far I've used more for high level stuff. But I would say especially with this, sorry, I was a bit quick, if you have these, sometimes you want to, I don't know, dynamically show plots and want to allow people to say, okay, in the data set, I want to have, I don't know, some elaborated plots or set of plots for this column or so. So you can also try to basically then group the functionality for generating these plots and I don't know, select a different size within a module and then dynamically call and also maybe remove these plotting modules. I think it always really depends a bit on the context, but I would also always try to think, do I have in the app some part of code which has an UI output and a server function with it, which I need several times. And I mean, in the beginning, it may be also a bit difficult because maybe it's always basically you need the same functionality, but always a bit different. So you maybe can also think about, can I abstract it a little bit so that I don't know, use my input arguments to the modules to make it always a little bit different. I don't know if you're, let's see if I have a concrete example for this. Yeah, again maybe for this plotting module, it's more again a toy example, right? But for example, you sometimes need a point plot, sometimes you need a line plot, something like this, but then the user should, I don't know, adjust all the colors or the line size by themselves. So you could make a plotting module where you have then as an argument the plot type issue, I don't know, defined when you call the module, but then you have this functionality too, that the user can adjust their, just the style of the plot by themselves within the module, which is the same for, I don't know, for all plot types, right? So that you can think of like, what can I extract away that I put this into a module and then, yeah, don't have to write all the code again, just slightly different just because I need another plot type or something like this. And then, yeah, I would say also stuff you use in several modules, I don't know if you, I don't know, have a, also, I don't know, user validation stuff or something like this. So what you want to use across modules, I think this is also super handy to have in modules. Great. Thanks a lot. Okay, I need more questions. So just in the chat there was also the recommendation to look at this fantastic golden package, which I think is a really good tip also, which has a bit more, yeah, I would say it's a bit more opinionated package and how to structure your app, but which can really provide you a good scaffold to start and also, yeah, works natively with modules. Yeah, and as I said, also feel free to reach out after the tutorial. Okay, if there are not any more questions, I would say that we can close the tutorial and again, thank you for all the attendees.


Microbiology is the study of microorganisms, those being unicellular single-cell multicellular cell colony or acellular lacking cells. Microbiology encompasses numerous sub-disciplines including virology, parasitology, mycology and bacteriology. Eukaryotic microorganisms possess membrane-bound cell organ-hells and include fungi and protists, rasprocariotic organisms all of which are microorganisms are conventionally classified as lacking membrane-bound organ-hells and include bacteria and archaea. Microbiologists traditionally relied on culture, staining, and microscopy. However, less than one percent of the microorganisms present in common environments can be cultured in isolation using current means. Microbiologists often rely on molecular biology tools such as DNA sequence-based identification, for example 16S-au-Ren-A gene sequence used for bacteria identification. Viruses have been variably classified as organisms, as they have been considered either as very simple microorganisms or very complex molecules. Microbions, never considered as microorganisms, have been investigated by virologists, however, as the clinical effects traced to them were originally presumed due to chronic viral infections, and virologists took search discovering infectious proteins. The existence of microorganisms was predicted many centuries before they were first observed, for example by the Jains in India and by Marcus Tarendi Eusebara in ancient Rome. The first recorded microscope observation was of the fruiting bodies of molds, by Robert Hook in 1666, but the Jesuit priest Abinatius Kircher was likely the first to see microbes, which he mentioned observing the milk and putrid material in 1658. Anton Yevan-Levin Hook is considered a father of microbiology as he observed and experimented with microscopic organisms in 1676, using simple microscopes of his own design. Scientific microbiology developed in the 19th century through the work of Louis Pasteur and in medical microbiology Robert Koch.