Hey everyone, welcome back to Six Sister Stuff. Today I am making a delicious chicken and dumplings in the Instant Pot. So my name is Kristen and every Monday I share an Instant Pot recipe with you. So if you're new to the Instant Pot, make sure that you subscribe and you push the little bell. The little bell is important. Push the little bell so you won't miss any notifications when I make a new video for you. So today I am making chicken and dumplings. Now this is one of the most requested videos that I have from you guys. You've wanted me to make it for a few months now and I am so excited to share it with you. My husband introduced it to me and I have loved it ever since. So if you guys are ready, let's go to the kitchen and get cooking.  This recipe actually comes together really quickly and it is delicious. So stick with me here. Okay, we're going to start with our Instant Pot. We're going to push the saute button. Good, so it's going to take about a minute or two to heat up and get hot. So while it's heating, we're going to throw in our stuff. So we're going to put in one tablespoon of butter and then one teaspoon of olive oil. He does eyeball that. All right, then we're just going to wait for these for the butter to melt and for the oil to get hot. While we're waiting for this to get hot, I'm going to just go ahead and chop up my chickens. I have two large chicken breasts. You can do anywhere from one to two, but I like chicken in my chicken and dumplings, so we're going to go with two. Now I'm cutting these into bite-sized pieces just because you don't want a big chunk of chicken. It's better to have small pieces. So cut up all my chicken. We're good to go. And so our oil and butter are all ready to go too. Okay, so right now I chopped up an onion and then about three stalks of celery. So I'm just going to take this and just put it right into the pot. Okay, then you're just going to stir that around a little bit. So you just want these cooked until the onion is fragrant and the celery is cooked just a little bit through. I love the smell of onion. Cooked onion is my favorite. Okay, so next we're going to add a few more vegetables. Now it calls for one cup of carrots and so you can have whole carrots and chop them up small, but I'm going to cheat today and just use just baby carrots and throw in about a cup or so. And then it also calls for one potato, but I love using the mini baby potatoes because you can just throw them in there like that or you can cut them in half and it just makes it really quick and easy. So I don't know, I do about 10 potatoes or so and just throw them in. Just want them so they're bite-sized. So if they are too big, you want to cut them, but if they're pretty small, then you'd be fine just to throw in the whole potato. And if you don't want to use the baby ones, you can just use just a normal russet potato or a few red potatoes, just cut them up and throw them in. So once our potatoes are in, I'm just going to stir it around a little bit. Okay, so then I'm going to add just a little bit of garlic. I like to use the canned garlic, but you can use whatever garlic you want. So I did about a half teaspoon or so of garlic. Mix that in too and then it's time to start cooking everything. So we're going to put our chicken in right now, dump that in and then we're going to add two cups of chicken broth because you're going to need liquid in order for your Instant Pot to Pressurize. Just kind of eyeball it there. I like to use these containers because I know there's four cups in there, so I use about half of it or so. You don't have to be exact with this recipe. That is looking good. So then we're going to just add a little bit of seasoning, so just salt and pepper, just however much you want. I did about a half teaspoon of each and then we have about a half teaspoon of poultry seasoning that you can put in there and then about a half teaspoon of sage. If you want to put other spices in here, go ahead and do that because I love spices, but these together are some of my most favorite. All right, mix it all around a little bit and we're ready to cook. So because it's on sauté right now, we want to push the cancel button first, so we're going to push cancel and then put our lid on. Make sure that your little knob is turned to sealing, not venting. Then you're going to push either the pressure cook button or the manual button. Now because our chicken is cut up, we don't have to cook it as long, so I'm going to cook it for about 15 minutes. Now, while this is cooking and pressurizing, I'm going to go ahead and take my biscuits and start cutting those up. So I already popped it, so you wouldn't have to see my face as it exploded, but so this is the jumbo biscuits. It comes with eight, but you only need about six of them. So I'm going to take a biscuit and then pull it out carefully and just kind of flatten it out a little bit. Now you want to do it into strips, so I like to do it into six pieces. So I split it in two first and then just two more. They don't have to be even, it's fine because once they cook, they'll all look the same anyway. So you're going to do this to six of your biscuits and then just set them to the side. They can sit there while the rest of your food will cook. So we've chopped up our chicken, we put in our vegetables, we put in our spices, and we just chopped up all the dumplings and you're going to put in the dumplings in your pot right now. All right, so we're going to add two more cups of chicken broth. So we're going to have four cups total in there. And then we're just going to carefully place your biscuits on top. Now there's going to be a lot of liquid in there. You just kind of want to place them right on top of the liquid and spread them out because if they're all mushed together, it's not going to cook very well. So you want individual biscuits and so you're just going to spread them out the best you can. So once all your biscuits are in, carefully take out your spoon. So you're not going to mix it or anything, you're going to leave your biscuits right there floating on top. So before you put your lid on, make sure that you push the cancel button. Then you can put your lid on. Okay, lid goes on. Make sure this little knob is turned to ceiling, not venting. Then you're going to push the pressure cook or manual button. And we're going to go to 10 minutes.  So we're going to let that cook and then we'll come back. All right, so it's all done cooking. You can see that the little L is starting to count up. That means that it's done. So you can either let it release on its own for a little while or you can turn the knob to venting and I'm going to turn it to venting today. Okay, so once all the pressure's out that little button will go down and then you can take the lid off safely. All right, oh you can see the biscuits, they look good. Now they look obviously a little soggy because they're sitting in liquid but they are cooked all the way through. So we're just going to mix them around just a little bit. You don't want to mix too much because then you'll break up the biscuit.  So we're just mixing carefully. All right, once we've mixed we're going to add half a cup of heavy cream. Just dump that right in so it makes it good. And then we're going to add about a cup of peas. Now you could add other vegetables if you want but I just like peas and my chicken and dumplings. So about a cup or so. There we go. Then you're just going to carefully mix everything in. Now you can cook your food just like this or you can make it go a little bit faster.  It will just make everything heat up quicker. Looks good. So we're just going to let this sit for a minute or two. Let it saute and just keep stirring. So cook nice and even. All right so when it's all done I like to serve it in a bowl because it's almost like a soup but you know it's chicken and dumplings. It's so good. All right you can see that. Oh it smells so good. All right now for the taste test. If you already want a dumpling in there. That's I think my favorite part of the whole thing. I shouldn't talk while I do that. That is so good. All right you guys if you want more simple and easy recipes just like this one you can check out my five instant pot recipes perfect for beginners just right over there and I will see you next time. Bye.


What's going on everyone Sam here with late in sports cards, and I am ripping one box of 2022 tops tier one Bundesliga soccer For Jeremy S. So good luck Jeremy See we got in here for you See a Holland we've got Jamie Luling for group their first 17 out of 25 on the two color and one color patch Nice one there Nice one here That is six out of a hundred for Hoppenheim Florian grill itch Heck yeah, I'll take that one there you go Jeremy nice hit for you there and lastly for Frankfurt We've got Martin Hinter Hinteregger that is 90 out of 106 Nice hit for you there Jeremy there you go that'll do it for your break there Jeremy congrats on the hits buddy. We'll get them right out to you appreciate it


Our pre-season went great. We have only six returning athletes and 13 new athletes who have never competed or pretty much done any kind of acrobatics and tumbling before, so, but I think it was really rewarding to every practice get something new, every day get something new, every day accomplish something new. Our word for the pre-season and kind of our theme that we tried to apply to everything that we did in the pre-season was resilience and being resilient and always being prepared, rolling with the punches, rolling with the changes, never letting these little things get in your way of what your end goal is. We had a pretty sad season ending injury in the pre-season, actually was my first ever commit to Stevenson acrobatics and tumbling suffered an injury in our pre-season. You know, having to adjust and put people in her spot and change things around her. The resilience and the perseverance that we practiced and that we showed in the pre-season I think is a really good, really good value and a really good trait to carry into our competition season. Always having that in the back of your mind that we're ready and we're prepared for anything and we know that we can overcome injuries, changes, anything kind of at the drop of a hat. That's a good value to be instilled in our program, especially being so new. That's gonna be one of our core values and I think it's a good one to have. We are really excited to have our home meets over here at the Owings Mills Gymnasium. I'm hoping to get a better turnout for students since we're a little closer to where everybody is. I know that our sports marketing and communications and everybody's gonna put on a great show for us and we get the videos and we get the lights and all those things, so I'm really excited about that. Out of our six returning athletes are two of our pretty elite tumblers, Megan and Chrissy. We can expect them to contribute a lot in the tumbling event this year. Our other returners, they have held it down for us across all of the events. We have Paige, who's a great bottom in Pyramid. She is a solid base. Chandler, who is one of our best tops. A lot of the new girls have learned a lot. Even though they're small in numbers, they're big in impact of what they can do and what they bring to this team. I am really excited about all of our newcomers, so we have 13 girls who are brand new to acrobatics and tumbling. Our schedule this year is a couple familiar faces from last year, so we're going against East Stroudsburg University and Kutztown University again. We're also competing against Caldwell University. That's our first home meet. It's going to be their first meet ever, so it's kind of cool that we get to be on the other end of what Frostburg State did for us last year at our first meet. If you're watching this and you're not really familiar with acrobatics and tumbling, or you've never even heard of it before, I recommend that you come out and take a look at one of our meets. It's kind of hard to explain, but once you see it, I can promise you, you're gonna like it.


I thought it wasn't that bad. I thought there were some redeeming qualities. But I was wrong. I was so, so wrong. Hey guys, finishing off my review of the Sam Rimi Spider-Man trilogy, we now come to the dreaded Spider-Man 3. Now a lot of fans of the original two films were quite excited to see the inclusion of Venom. However, just leading up to it, I started to notice that there was a lot of villains in this. There was Harry as Green Goblin too. There was the Sandman as well as Venom. Also, seeing Tofer Grace cast as Eddie Brock pretty much put my hopes for that character being done well into the ground. Eddie Brock is supposed to be a big intimidating dude. Tofer Grace is smaller than Tobey Maguire. I don't know what the studios were thinking when they thought that Eric Foreman would be a formidable opponent to Tobey Maguire. Tobey Maguire already has a pretty kind of nerdy bitchy little side. It doesn't help that the person who's supposed to be this big bully, this intelligent bully as well though, is played by Tofer Grace who plays the character as a hack, a loser, no means of sympathizing with him at all. Now that was something that the previous film had done very well. Dr Octavius was a villain you could feel for. You had some sort of investment with the character. While he was doing evil deeds, you knew that there was something good inside him and that there was something to kind of make you care about the character rather than just wanting him to die.  He's just like, oh cool, I'll take a photo with a terrible camera.  But let's start with the film. We see that Peter Parker and Mary Jezebel Watson are happy together. They're having a good life. Except that Mary Jane is constantly getting upmift about Peter's popularity as being Spider-Man and while she's failing in all these different directions she's still being a selfish Jezebel and she doesn't care that what Peter is doing, what Peter is doing as Spider-Man is completely selfless. While, yeah, he gets attention and he gets fame, he's throwing his life on the line all the time whereas you're putting yourself up on stage but apparently that's more important than saving people's lives. Again, the terrible, terrible work done with Mary Jane Watson just comes to a full frickin' head in this film.  Harry Osborn go through so many character changes in this film it must have hurt his head. I know that James Franco was going to university while these films were being made so I can only imagine how much it hurt to do a character who starts out evil, has his memory erased, becomes evil again, has a redemption and then dies. That is so much to pan into for one character along with Sandman.  The biggest problem with this film is that there's too many villains. There is three separate storylines here. There's three separate storylines that could have been developed into full films. However, Raimi kind of wanted the Sandman in. He really wanted Sandman and I think he also wanted Harry because he had been setting up that arc and then he throws in Venom because Sony told him to. Him and his brother Ivan try so hard to make a film coherent but it just doesn't work. The fact that these guys had to shove in so many aspects of the film and then on top of that everything is campy. You remember how I said the first film was campy but had a funny edge to it? It's not. It's not funny. And I'm not just talking about the whole emo hair thing or the weird dance sequence. I mean every bit of dialogue. The fact that Peter tells Mary Jane, hey, I'm gonna come in, swing in for the key and he knows Mary Jane's there yet he tells Gwen Stacy to kiss him.         And for a film that's under two and a half hours I'm amazed he's in the film as it is. He gets maybe one or two good jokes but otherwise it's not that great of a time for him and that relegates just into all the other problems of this film. Now obviously everyone rags on this movie for different reasons but I want to talk a little bit about the good parts and that's the visual effects in most scenes. The Sandman creation scene as well is almost everything involving Venom has aged very well. These effects are 11 years old now and yet when you see the webbing of the Venom symbiote attached onto Peter or attached onto clothing on anything it moves with a way that is horrifying and intriguing and it looks good. Same for the Sandman scene when he first forms himself. Apparently this was the most expensive visual effect of the entire year and you can see why. There's so much character into this scene. There's not a word is said but we can see the emotion and the character of a CG entity sans castle and you can actually have some kind of emotion with the scene because Danny Elfman's music is once again really good. The action for the most part is shot pretty cool. There's some good parts to some parts that are really kind of bring you into it in terms of the intensity but then it constantly throws in something bullshit.  It's a cool fight admittedly but every time they bring up this ring it just it it kind of throws off the whole feeling of the fight scene. Now it's known that Sam Raimi Rinson repeated basically the same story three times. He even recycles action sequences when Doc Ock and Peter Parker or Spider-Man are falling down the building and they're fighting as they're falling. He does that three times in this movie.  So there's so many problems that are with this film not just in terms of just the cheesy scenes or the bad writing or the over stuffing of storylines. No one really tries to give much of an effort in terms of really establishing new elements of the characters or trying to be a better character. Spider-Man 3 is definitely worthy of all of its problems and it's got even more that most people don't know about and of course there's no wonder why that there was never a fourth film made. This is basically the Batman and Robin of the Sam Raimi trilogy. Had there been a fourth one I don't know. Had Sam Raimi actually had the ability to make the movie that he wanted I don't know. The fact that it was just him and his brother on top of it there wasn't anyone else involved. It kind of makes me feel that Sam was just kind of tired. He's even commented on saying that he wasn't really fond of making these movies. He liked the idea of it but because he had to change his camera style, his directing style, so much to fit this norm that he felt that he was just making something that wasn't his own. So in the end I'm gonna give Spider-Man 3 a 2 out of 7.  Anyways guys that is my long-winded review for Spider-Man 3. I hope you guys enjoyed it. If you did leave a like and if you're interested in more maybe subscribe. Hey guys once again doing a shout out for Camp Death 3 in 2D which comes out on Amazon Prime on February 15th. This is an indie horror film that's purposely made in the style of really bad horror films. They let me watch it a little bit earlier on and give a shout out to it. So I'm continuing to do shout outs about it before it comes out on Amazon Prime. You guys should definitely check it out. It's purposely a bad movie but it is a funny fun bad movie. It's kind of like Thanks Killing. So definitely check these guys out. I've left a link to their Facebook page in the description below. Anyways guys hope you enjoyed this review. I'll see you guys next time.


OK. So I will be talking about monitoring applications and evolving from text logs to extensive automatic monitoring. My name is Sven Finke. I'm working at Shopware in Germany. I'm one of the developers for Shopware Connect. Yeah, you can follow me on Twitter, maybe. One of my main project is Shopware Connect. I will be using this as an example because I'm mainly responsible for DevOps in this project and taking care of the servers, keeping them running. And if anything bad happens, I'm the person who will be asked and I should at least give them some intel of what exactly is happening right now. Yeah, so just a little bit about what Shopware Connect is. Connect is an application where suppliers and merchants is an e-commerce application where suppliers and merchants can connect to each other. Suppliers can supply products to the platform and merchants can subscribe to the products. The order is then if somebody orders something in a merchant's shop, the order is directly submitted to the supplier. For me, that means that I have to synchronize product data, including prices, descriptions, availability, everything, images. I have to synchronize orders. I have to make sure that if an order is being placed, both supplier and merchant are on equal terms on this order so that the prices are right, availability is right, and everything is fine. So the system really needs to run at all the time. And if anything, fails, that can become pretty bad. One of the things we are using, and that is all the images are cropped, damn. One of the things we're using to make sure that we are finishing all our tasks in time is beanstalk. I'll be talking about this throughout the application a few times because it's hard to analyze and find out what's going on if something crashes with some beanstalk jobs. Beanstalk is a message queue for everyone who does not know that. A message queue can be used to make tasks run asynchronously. So you put them into the message queue, and some task handlers pull them from the message queue so they will be handled. That way, you don't have to wait for long-running processes inside your request or if you start a command. You can just create the tasks, push them to the beanstalk, and the responsible handlers will take care of it. In Connect, we have seven individual components, indexer, updater, specialized components that take care of several things. We have four servers I have to manage. Two of them are in the life system behind the load balancer, so they should always be equal. The other two are used for staging systems. Staging one and staging two. The one is used for QA purposes. There is some stuff going on, and often things break due to do testings at the demo environment, which can be used to show the stuff to customers, potential customers. I have running 22 crown jobs on each of these machines that I have to keep track of, which is also sometimes not that easy. 33 workers that are managed through a superman. And in total, we have currently 2,300 users roundabout and 690,000 products. Just to give you a little scale and reproduce around 30 gigabytes of log files each month. In case there goes something wrong, I have to dig through these log files, so that might be a problem. Background monitoring. Through these, we have a lot of data that I have to manage, and so what is background monitoring? Background monitoring. Monitoring is a term used to say that I want to find out what's currently going on. Monitor show me the status of my current processes or whatever is used, and managing it. With background, I mean that I want to keep track of all the stuff that is going on. Yeah, in the background, that I don't have track of through any UI or anything. I don't have a web interface to call my crown jobs, to see what are my crown jobs doing. So any kind of process, demon, worker, whatever you may call it. Anything that runs in background and is fired automatically, I want to track that. But how is it working right now without some monitoring? You probably get feedback, because you don't have any measurement to fix something before a real crash happens. You will get feedback probably from the customer. So yeah, you get a message. The sync is not working right now. Bad. Maybe there's just some data wrong for the customers so you can look into the database and hopefully fix this very fast. Maybe some products are not updated. Also something you hopefully can fix very fast without having too many issues. Or maybe the site is down. This will create chaos. This is not a good thing to happen. You don't want your site to be down. And in case something like that happens, you need to fix it. And to fix it, yeah, you probably need to gather some intel. This is a little screenshot of the log files we have for Kinect. This is by far not all of the log files and you see that there are some filtered away by log rotate. So these are old files from the last days. This is a current file. If there's something happening, I need to dig through these files. If it happens right now, that might be easy. Just open the latest log file and tail it and try to cause the error again and you may find the exception. If something happened at Friday afternoon and you're looking at that on Monday, you probably have to go a few files backwards. Depending on how many logs you generate, maybe you just have to look at the log two or maybe you even rotate them more often. That depends. If the exception happens just in one component, that might also be quite easy. Just open the log file and everything is fine. You will get a big problem if an exception is not occurring just in one simple component but in several ones. So it spreads throughout your application. Then you might have to open two or three log files to really see what is happening, what caused my problems and how can I fix them. If that's a few days ago, you have to find that exact time in the log files and that might be a pretty horrible task. But what's the problem? The errors already exist. If you get feedback from someone that something's crashed, yeah, it already crashed. So yeah, that's bad. The error already persists. So if the synchronization is not working, it was once not working, it's not working right now and that's not good. Customers recognize errors, so they lose trust in your application. If this happens more than once, they will probably become pretty angry. And if they have to tell you that something's wrong, that they can't have trust that you can fix anything beforehand, that you have control over your application. Finding stuff is hard like I just mentioned with log files and time. Like I said, the errors persist. If you have an error that is not easy to fix, it may take a whole day or longer to fix the issue and that whole day, the customer can't really work depending on the error that happened or your site is down for about half a day or a day. That's not good. Yeah, monitoring to the rescue. I will talk about three different components. Log aggregators, metrics aggregators and performance analysis. These are the three components we're using Connect and these are three components that really saved me a few times when something was going wrong or made me realize that something can go wrong in the next days. So the first thing, log aggregators. What exactly is a log aggregator? Or more precisely, what does a log aggregator? First thing, it gathers logs. So all the log files we've seen in the past will be gathered by the log aggregator and centralized. It will index log files. This gives me the ability to search them. It will add a full text search for all the log files and it will add a chronology for me. So I can jump to the Friday afternoon and see all everything that's happening there. I can filter that log files for that exact time and see what happened, what caused my problems. I can group stuff by environment. Like I mentioned earlier, our life system is made up of two servers. That means if I have to find something, I would have to jump to each server and look at the log files and find out is it just happening on one server or on both or anything. The log aggregator groups stuff by environment so I just look at the production environment, at the life environment and I will see, is this happening just on one server or on both servers? What's going on? And something that's maybe more subtle, I can make logs available to more people. I don't want to give everyone access to my servers. I don't want to give the trainee access to, with SSH to my servers to look at log files. Maybe by accident he breaks something on the life system, not a good idea. So with the log aggregator, it's basically a website where I can visit and I can grant more people access to the servers. I can also grant access to the log files to people who are not familiar with the terminal, who wouldn't even know how to open the log files on the servers. Another cool thing, I can alert some messages. But let's look at the log aggregator. Oh, the quality is great. This is the overview of our production environment. You'll see a lot of log files and here's something I had to jump into and fix it because we have a critical error here. But I can immediately see that. We have two, okay, it's not visible. We have two different environments. Some of the messages come from the back end one and some of the messages come from the back end two. But we see them in one big overview. I can filter the messages down below and here I could select production and the environment I want to use all the time. By the way, this is a tool called paper trails I'm using. There are plenty of other tools out there that can be used, also open source tools. This one is a paid tool, a paid service. Which has the advantage that I don't have to set up my own log aggregator service or anything. But yeah, just look for that and you will find different solutions. Here I can see that I am displaying two different log files. In fact, there are a lot of other log files in here but not currently visible. I can also filter them out so I just see the log files of a specific file or a specific environment or just one specific server. So I have plenty stuff I can do there. Alerts, I have quickly mentioned that earlier. I can define alerts. We just have basically two different alerts. They are duplicated so we will receive a message in hip chat if something is going wrong if one of these alerts triggers and I will receive a mail about the issue. So that even on the weekend if something really critical happens I will get a mail and maybe I can try to fix that or say no, I can wait till Monday. This is how an alert can be configured. You can basically write a query and just what you've seen down in the search field you can just copy that and paste it there. You can limit this to a specific log file or anything. Typically you can define a frequency so if something is going wrong I want to be informed in this case every hour about this error and you can define a threshold. And sometimes if the filter is getting like five messages per hour that's fine, it's okay. Things can go wrong that might be okay but if you suddenly receive 60 or 70 of these messages something might be wrong. So yeah, you can define that. Some other things here are some definitions for our hip chat. Yeah, that's how you can define an alert. Of course this is a bit different from tool to tool but basically this is how things can be set up. But how can you define this? How do you set up such a log aggregator? It's quite simple. For UNIX or Linux system logs you just have to do these three steps. You just have to detect your system log at first. The different ones out there so yeah. Then you have to change something in your syslog and gconf file. I had a few lines there and yeah, that's. Can I kind of scroll there? It's not everything. Yeah, I can scroll. Ah, the third step was hit. And in the third step you are going to kill the service, the old service and make it accept the change. That's how we do it for system logs. But in my case I don't only want to use system logs. I have my own custom log files I want to log. Most of the system files don't really, really interest me at all. But there's also a solution for that. I can push any existing logs to that. Here is remote syslog. That's a tool for my thing provided by PaperTrails. I just download that one, install it, and then they provide a configuration file. This is the standard setup for the PaperTrail. I can define different log files here. In fact, our definition is a bit longer. And I can set up the destination. Not only for PaperTrail, this also works for other tools. Yeah, after I've done that, I just start the demon from for remote syslog and the log files are being pushed to PaperTrails. Yeah, so the setup is really quite easy. We've automated this with Ansible and there are just three commands and you're good to go. Very simple. This is also not only limited to PHP, obviously. You haven't seen any line of PHP code here yet. This can be done for anything you're running on your machine. Yep. The second part, the metrics aggregator. What is a metrics aggregator? I'm guessing by the name, it's pretty much similar to the log aggregator, just uses metrics. But what is a metric? Metrics are basically just numbers, but in the context. You can see here, this is a quick overview of our metrics. This tool is called Libratto. Same here, there are lots of tools out there, depending on what you currently have and what your needs are. Pick the right tool for you. In this case, we have some metrics here. We have, up here you can see, we have 164 metrics pushed to the service. And the metric is really just a number. So you can see here, we have both environments, back and one and back and two. And every peak or every point where this line changes is a number that has been pushed to the service. We define a name for this that tells us how, what kind of data this is. This are really just integer values, float values, depending on the context. And without knowing what they are, it wouldn't be very helpful. With this data, you can create dashboards like this. This gives me some information about the current status of the application. In fact, this dashboard, I have that on a TV screen on the opposite side of my desk. So I'll always see this one, and if something goes wrong, I can clearly see that. A little example, you can't see that example, damn. Okay, this is a view of the past four weeks. Down in the left, you have the beanstalk jobs that are currently in the queue. And it should look like this. You should have these peaks, and everything is fine. Jobs are being pushed to the queue, they are handled, and everything is good. What you don't see here, we have, I had a very high peak to the left here, so you basically can't see these peaks from before. There I had around 40,000 jobs in the beanstalk queue. It was not that bad, because nothing was really broken. The memory was not super full, no processes has been killed, so without monitoring, I wouldn't really have noticed that something's going wrong, but the queue was filling up more and more. If this would have gone, yeah, was going on, after one or two days, the memory would have been full, and I would have had a real problem. The issue for that was simply that the jobs couldn't be handled as fast as they're being pushed to the queue. If I wouldn't have reacted to that and seen that in the right time, process may have been killed, or anything else that would have happened, and yeah, that way with the dashboard, I have seen that, and I can react to it and fix the issue before anyone notices. In this case, we also can define alerts. So this is a definition for this. As we only have numbers, you can just select the metric you want, so the context of the number and what the trigger is. So in this case, if the average is above 50,000 for 30 minutes, then there's something wrong and the alert will be thrown. In this case, this is the indexer, so the component that takes track of our products being indexed to an elastic search database. And yeah, how is this being done? It's even more simple than the other one, it's just one curl. I have my user data up there, and I just give some some data, so I have the name for my metric, I can define some tags. In our case, we have defined what environment we have, so that's back at one or back at two or whatever. And I just have the name of the metric and the value. This is just a curl I fire in the PHP code. We have written a wrapper for this so that I just have to pass the name of the value into the function, and you can call this at any time in your code to push the values. In fact, we have written one command in symphony that collects lots of metrics like the current amount of users and products and stuff like that, and pushes that to the Brato. Yeah, so far so good. The last component, performance analysis. This is not only useful for making your application run fast. Yeah, why performance analysis? This is not only useful for making your application run faster if you realize that it's quite slow. You can also recognize irregular changes. So you haven't done a deployment or anything changed and suddenly your response time of the live environment goes up. Then there's something wrong that might be a bottleneck, but you won't realize it at the beginning. I'll come back to that later, and you're able to gather some intel. So if there's something going wrong, if there's some regular changes, you can easily identify which exact function call causes the trouble, or if it is a slow SQL statement, or if you have very much data in one response or anything. Yeah, so this is an overview of typeways. Again, this is not shown completely. We have two environments located here. This dashboard can be used to see what changed in this application over the last time, so I can see, hey, the response time dropped by 33%. This is okay for me. If it would have dropped far further or if there, it never really fluctuates in that area and it drops really to an amount that is not normal to your application, then you also should worry. So not only if the response time increases, also a sudden decrease of the response time could be bad. So this gives you a good insight what happened. Also some requests per minute and some other data. But how does this look in detail? This is the overview of our social network. So the main front-end, the customers use. We have an average response time of 100 milliseconds here and we can see that there is some peak in the requests for the site and yeah, how the site reacts to this stuff. But we can also see down here how fast some requests are. Like some of them use just 80 milliseconds and we have one here that's a bit higher. It's around 1.3 seconds. Maybe we should take care of that. What's currently not visible on the right side to the memory, there is also a row which indicates the impact of that request. Because even if the one action is needing 1.3 seconds or anything, if it's just called once a day, it might be okay. It really depends on the situation. In fact, they are ordered by impact. So the top response time, the 80 milliseconds, has the far most impact on the results from all these other results. The other ones are just around 5% or something. So yeah. But let's look at the start action because that's quite high. We can also get a bigger overview of the last calls and how things change. And here we can also see that some of the calls just need very, very low time. Okay, very low is lie, but 500 milliseconds and sometimes the database call takes over two seconds. So yeah, you can investigate further. You can also see here with these labels, they indicate slow queries. Not so slow, sometimes not so slow that they will be recognized by your hardware monitoring or anything or your hoster. But they are regularly slow for your application so you can handle them. You also can get stack traces and more information if you need that. But this is really a good tool to give you an overview of something changes because a change from 100 milliseconds to 300 milliseconds is an increase of 200%. But you won't recognize that. Nobody will recognize a response time change from 100 milliseconds to 300 milliseconds. But this tool will show you how this being done. We're using tight ways here and you can simply install PHP extension on your system and the demon. In most cases you don't have to add the extension to the PHP any, but what you can also do is tell tight ways which framework it uses. You are using in your application. So in our case instead of WordPress, we have Symphony two in there. So tight ways can guess a bit better what's happening in your application if it knows what framework you're using. Yeah, so we have these three tools. They give you a good insight and you can use them all together. So yeah, hooray, awesome. But is this really all necessary? Do you need all these three tools to handle that stuff? Yes, I have taken some of the issues we had in the past and one of them I've already talked about what the Beanstalk you've been running full. That's one of the issues I would have never recognized without the background monitoring. This way I could solve it without it becoming very bad. The response time increase. We actually had a case where the response time increased to 300 milliseconds and we've just realized it through the performance monitor. The cause of this was a bottleneck. A bottleneck that was not really bad right now but if we would have suddenly had a few more customers that would have uploaded several 10,000 products, it would have gone bad. This way I could fix it before the response time goes up to one, two, or three seconds or any tasks run into timeouts or anything and this was a good thing. Without this monitoring, I would have never realized that. Supervised the task being killed. One of the things in the overview of the metrics monitor actually was how many of my supervisor tasks are currently running. If one of them fails, it was killed due to some reason. I probably won't notice that depending on what kind of service it is and yeah, maybe it's a synchronization for a customer doesn't work anymore. Because of the metrics, I will see if a task is killed. I will see if a supervisor task is killed. So the supervisor task where all the workers running in the background, they are doing stuff like synchronizing, fetching updates for products, starting index, the indexing process and anything like that. And something else, specific tasks crash due to some exceptions. The exceptions, I can pretty easily see them in the paper trail. If there are currently exceptions being thrown, I will clearly see that due to the stack trace that will be visible in paper trail, at least in our case. And they are clearly distinguishable to other log entries. So they're easy to detect. We also had this a few times and yeah, so that's it so far. From cases we had where really, we needed all these tools and every single tool helped me a lot. But now to every single one of them. We have the logs. The logs are very useful for complex applications with many components. If you have a more simple application that has just one component and you just have one big log file where everything runs into, then you probably don't need a log aggregator. Also if you don't have multiple servers in one environment, it's also probably not necessary to use a log aggregator. Another thing where a log aggregator is useful if many people will benefit from the access to the logs. So if you have the Q&A team or a support team that would benefit from being able to read the logs, if the customer comes towards them and says that, yeah, the shop synchronization is not working, that he can't log in anymore, then it might be useful for the support to be able to open the log files and see if something with the customer is wrong. And sometimes log files are located on remote machines, you can't quickly access. This is not a problem we generally have in web development, but I had this in the past that I would have to call somebody to give me access to a remote machine because it wasn't an internal network. And that can be a pain in the arse if you just have to wait for them to react to you if there's a serious issue right now. Yeah, that could also be solved by this log aggregator if he is pushing the messages, of course, if it's an internal network and the machine does not have direct internet access, you have to think of solutions how to make the access through the log aggregator possible, but yeah, that might also be a case where a log aggregator is useful. Metrics, when are they useful? First and foremost, do you have data that can be tracked? If you have no data that could be tracked with metrics, you probably can't use them. If there are a lot of stuff in the background, even if you don't have that clear numbers, you might be able to create some numbers by just, we have things like for the beanstalk, if the task is pushed to the beanstalk, we increase the counter and if it's finished with the success, we increase the different counters so we can clearly see how many tasks have been pushed to beanstalk and how many have succeeded and how many should be still in there or failed maybe or something like that. But to do that, you need clear workflows. Without clear workflows, clearly defined workflows, this is not possible. You don't always have them. In most cases, you will have some starting points, some endpoint and you're good to go, but you will not always have these clearly defined workflows. And one other thing for the metrics cells department, sometimes they just want some numbers. They like fancy dashboards, but if you have no clear workflows or anything, if they can't see any numbers there, it's pretty useless for them too. Yeah, and now the last component again, the performance analysis. You will probably need it if, or make, you can use of it if you have complex tasks that use a lot of performance or are potential to use a lot of performance. One of the things in development for detecting bottlenecks is pretty hard, bit hard because we're working on machines that don't have that much load on them like the life service finally have. You could simulate that of course, but in many cases that simulation is not close to reality or, yeah, but if you have complex tasks that potentially consume a lot of performance on live server, performance analysis and monitoring might be a good idea. Also is your application likely to run into bottlenecks? This is a bit hard to determine beforehand, but if you guess there are a few functions that might be a bottleneck in the future, so if there is a sudden increase of products or any other data in your application and they all need to be processed, it might be a good idea to use this monitoring just to find bottlenecks before they become bad. And of course, is your performance already bad? If you already have a slow application, it might be a good idea to use performance analysis to get rid of these slow parts of your application, fix them and then keep this afterwards to identify other areas of the application that are becoming slower over time. Yeah, that's so far from me for the talk. Any questions? Yes. Which tool did you use to show us the dashboard? The dashboard, that was a libato. Okay. Yeah. Yeah, so thank you for the presentation. I have a quick question. So, you mentioned that you used green store Yes. So the question was I have considered using things like Kibana or LogStash, things that might group some functionality for my application instead of using all these different components. Yes, I've considered that. I'm already, right now, I'm looking into finding more centralized solutions for this. But even if it's centralized, these three components remain. So we have, even if metrics and log aggregation is put together into one application, I still have the benefit of separate, I still have the log aggregation and the metrics that I can use separately in some cases. We're currently not using things like LogStash because all these tools we have shown here are projects hosted somewhere. I don't have to take care of any servers. I don't have to take care of another server that needs to be running. As far as I know right now, LogStash is a server tool. I have to set up by myself. Oh, they're provided as a service. Ah, okay. Yeah, but there's one of the reasons why we are using this right now, these tools right now because they are hosted solutions. And yeah, this has been set up quite a few years ago. So I'm not sure if LogStash, they already provided the hosted solution and I was not involved in today picking these exact tools. But yeah, I'm currently also searching for some more combined tools. Yeah. Do you have some blocking with the platform on GCO relative to standing data? Because when I work, we use also data to play, but we send it in the box and then extract it from the list. So we don't block our process by sending it to some other servers. I'm wondering if you have some issues with that. No, this is just like, yeah, fire and forget. We just fire that to the service. We don't really care about the response of that thing. If it potentially, the service is unavailable. We don't really care. And it doesn't really affect our performance. Yeah. I forgot to repeat the question, I think. The question was if the matrix aggregation, when we are collecting this data, if that affects the performance of the application in any way and it doesn't for us. Yeah. Any other questions? Okay. Thank you. Yeah.


Good morning respected guests, principal, teachers, my dear friends, and my fellow graduates. I, Milene Etchishu, am absolutely honoured to be representing the graduating class of 2021. Well, on behalf of all the fellow graduates, I would like to thank you all for joining us on this auspicious program. To all my fellow graduates, we did it, we accomplished one of the early major milestones of our lives, and this is a major step in the journey of our lives, which should be recognised for its immense significance. We worked hard to get to this day, and our hard work did not go to waste. But that doesn't mean we should stop there, because this graduation has shown us how capable we all are of accomplishing our goals, and it has also made us realise that anything is truly possible if we put our minds to it. And as we all continue on with our lives, I hope that everyone will take each problem on with confidence, as we are all aware now that we have achieved great heights and it is equipped with necessary tools to take on the future. Well, amidst the experience of our college years in Thessau College, there has been many teachers who has helped us to succeed, who has prompted us forward, and has also been a very special inspiration. And whatever the experience might be, we could not have gotten here today without the help of our teachers, our families, and our peers, who has made a huge difference. So I thank all the teachers who have helped us succeed. And now looking back at these precious years, I think everyone has realised that we have learned so much more than the information from the textbooks, and I believe that everyone here has learned so much more about yourself, about your interests, about your talents, and that everyone has to follow their own path as an individual. Well, finally, to all my fellow graduates, with whom I've shared so many phone memories with, as we end one of the chapter of our lives, I hope that you are already the beginning of a new one, a new life. I wish you all the best of the best, good luck, and congratulations, class of 2021. Thank you.


The Independent National Electoral Commission, INEC, has again expressed concerns about the various court orders it has continued to receive, based on the November 11th offseason governorship elections in Emo, Kogi and Bayosa states. INEC's concerns came on a day the Chief of Defence Staff, CDS, General Christopher Musa, gave assurance of secured elections in the three states. According to the Commission, the development is capable of jeopardizing its plans for the elections, as it had had to continually reprint sensitive election materials, which it said are not easily procured of the shelf. INEC Chairman Professor Mamoud Yakubu expressed the concerns at the quarterly consultative meeting with political parties at the Commission's headquarters in Abuja. As election campaigns continue to intensify, the Commission reads threats is concerned about the spread of violence in the three states involving parties and candidates, which remind you as party leaders that free and fair elections are only possible in an atmosphere of peace. On the issue of candidature, the Commission is concerned about the spread of recent judgments and orders of courts in respect of the nomination, substitution or disqualification of candidates after all the sensitive materials have been printed.


humans or mammals. We all learn this in elementary school. We also learned that, as in mammal, we give birth to live children rather than laying an egg. Part of the reason the child develops inside the mother is to protect it from being harmed by the external environment. This means that the developing child is protected from all unwanted environmental hazards, right? The environment inside the uterus where the unborn child is developing is called the prenatal environment. Inside the uterus, the developing embryo and fetus are protected. The unborn child receives all it needs from the mother, including the nutrients that keep it healthy. The placenta is a temporary organ that joins the mother and fetus. The placenta attaches to the mother's uterus and to the unborn child through the umbilical cord. It transfers oxygen and nutrients from the mother to the fetus and allows waste products to be eliminated from the fetus. This sounds like a pretty sheltered environment for an unborn child. Let's consider our question again. Is the developing child protected from all unwanted environmental hazards? Unfortunately, the answer to this question is no. Up until the 1960s, it was believed that the placenta also acted as a filter to help keep anything unwanted or harmful from affecting the baby. We now know that potentially harmful substances can cross the placenta and be transferred to the developing child from the mother. While the prenatal environment protects the embryo and fetus from a great many dangers, it cannot protect the unborn child from everything that the mother comes into contact with. There are many potential hazards in the prenatal development of an unborn child. Many of these potential hazards are related to drug, alcohol or tobacco use. Alcohol, for example, can quickly cross the placenta and enter the unborn child's bloodstream in the same levels that it is in the mother's blood. Women who drink alcohol during pregnancy put their child at risk for fetal alcohol syndrome. This is a set of birth defects and disabilities related to alcohol consumption during pregnancy. Tobacco use during pregnancy can cause low birth weight and has been linked to higher rates of respiratory problems in children. Women who smoke are advised to stop if they discover they are pregnant or trying to become pregnant. The use of illegal drugs can cause a variety of concerns for the health of an unborn child. Prenatal development can be slowed, birth defects or death of the unborn child can occur and there is a higher risk for premature birth. Also, a child can even be born with addiction. It may seem obvious that illegal drug use can be harmful to an unborn child, but store bought or prescription medications can be a hazard as well. A caregiver can help determine the benefit of a medication and whether it is greater than the risk that it may pose to the unborn child. The use of any medication that is a known teratogen should be avoided during pregnancy. A teratogen is a substance known to potentially cause a birth defect or cause a pregnancy to end. Remember when we mentioned that before the 1960s it was believed that the placenta affected the developing child from harmful substances? The common use of the prescription drug thalidomide for morning sickness during pregnancy changed this idea. A large number of infants with birth defects were born to women who were given this medication during pregnancy. Because of this, we now know that medications can have harmful effects on the prenatal environment. Maternal diseases and environmental concerns are also factors that can harm prenatal development. Maternal diseases and infections can produce defects. Prenatal development can be impacted by factors such as RH factor incompatibility, high blood pressure, diabetes, rubella, and some sexually transmitted diseases. What effect maternal diseases could have is dependent on the stage of prenatal development in which they occur and how long the condition lasts. An embryo or fetus can be endangered by other hazards in the environment as well. Radiation, mercury, lead, carbon monoxide, or pollutants such as toxic waste can endanger prenatal development. One reason proper prenatal care is important is that it can greatly reduce the risk of hazards to the prenatal environment. A health care provider can give advice about what could be harmful to an unborn child or what to do if the unborn child may have been exposed to something harmful in its development. This is important if a woman wants to give birth to a healthy baby. Prenatal care from a health care provider also monitors the progress of a woman's pregnancy. This care helps spot any potential problems as soon as possible and helps manage any issues that may occur. Like all mammals, human babies develop inside their mother. The environment inside the uterus where the unborn child is developing is called the prenatal environment. The mother and fetus are connected by a temporary organ called the placenta. It attaches to the mother's uterus and to the unborn child through the umbilical cord. It transfers oxygen and nutrients from the mother to the fetus while allowing the fetus to eliminate waste. Inside the uterus the unborn child is protected but harmful substances can still cross the placenta and cause harm. There are many potential hazards to the prenatal development of an unborn child. Many of these potential hazards are related to drug, alcohol or tobacco use. An example is fetal alcohol syndrome. Maternal diseases and environmental concerns such as exposure to radiation are also hazards. Proper prenatal care can greatly reduce the risk of hazards to the prenatal environment.


Hello everyone, I am Prasanthes Malge, Assistant Professor, Department of Electronics Engineering Walchen Institute of Technology, Swalapur. Today we will see divide and conquer approach for computation of discrete Fourier transform the learning outcome. At the end of the session student will be able to explain the divide and conquer approach for computing DFT. Now, let us see the calculation of endpoint DFT by using divide and conquer approach. Now, DFT of size n can be factored as a product of two integers n is equal to L into m. So, now to understand this let us first represent the signal in a two dimensional array. Now, consider this is a sequence x in half length n. Now, in a two dimensional array we represent it as x l m, where l is the row index and m is the column index. So, now these are the rows from 0 to L minus 1 L number of rows you have and 0 to m minus 1 total m number of rows sorry columns you have. Now, this is x of 0 0, this element is x of 0 1 and so on. So, the total number of elements will be l number of rows and m column. So, l m number of elements which is total equal to n. Now, depending on the relation between n m and l there are two types of mapping possible. Now, if I consider n is equal to this capital M into l plus m, this particular mapping leads to row wise mapping of the signal. It means that the signal is now represented in row wise that is first m number of elements of the signal will be in first row next m number of elements in will be in the second row and so on. Say for example, if you have l and m 0 0, so this 0 0 n will be 0. If I take 0 1 element, so l 0 m 1 means n equal to 1 means x of 1 will come in the first row as a second element. So, this particular mapping n equal to ml plus m leads to row wise mapping. Similarly, if instead of that if you take n equal to l plus ml, this will give you column wise mapping. So, it means here first l elements of x of n will be in the first column, next l elements will be in the next column and so on. Since again here you have l number of rows and m number of columns, so the total number of elements will be l m which is equal to n. So, for discussing this divide and conquer approach, we are considering the two dimensional representation of the signal x n and similar arrangement will consider for the DFT values that is x k as x k is also n point sequence. So, x k 0 to n minus 1 is one dimensional r index by k, now can be represented as x p q. So, now we will use the variables p q for representing it as a 2D array where p will be 0 to l minus 1 and q will be 0 to m minus 1. So, l number of rows and m number of columns as a 2 dimensional array index by p and q. Once again if I use k equal to m p plus q, the mapping will be row wise and if you use k equal to p plus q l, the mapping will be column wise ok. So, now before proceeding further, just try to recall what is the twiddle factor and what are its properties, pause the video for a minute and think on this ok. So, what is twiddle factor? So, twiddle factor is also known as a phase factor which is given by this W n, where W n is equal to e raise to minus j 2 pi by n. Now the properties of twiddle factors are there are two one is symmetry property and another is a periodicity property. So, symmetry property says W n k plus n by 2 will be equal to minus of W k n. So, this is what is approved for that. Similarly, the periodicity property says W n k plus n will be equal to W n k. So, this is how we can show that this relation holds true right. So, basically in this divide and conquer approach we are making use of these properties to reduce the number of computations right ok. Now, let us discuss this. Now, for our approach let us consider the column wise mapping for input x n and row wise mapping for DFT sequence x k. So, with that our x k which is a summation n equal to 0 to n minus 1 x n W n k n can be written as x p q now that two I mean summations m equal to 0 to m minus 1 l equal to 0 to m minus 1 x l m W n k is now m p plus q because it is a row wise mapping and n is equal to l plus m l. So, it is a column wise mapping. So, that DFT equation can be written in terms of a 2D array right.  So, W n m p l into W n m l m p into W n q l into W n q m l right. So, now from this these terms can be written as now let us take this W n m l m p now we know that m l is nothing, but l into m which is capital N. So, this comes out to be W n n m p now as we know this is actually W n is e raise to minus j 2 pi by n that raise to n m p comes out to be e raise to minus j 2 pi m p and e raise to minus j 2 pi into any integer comes out to be 1 therefore, this factor will be equal to 1 right.  So, will be can be written as once again by expanding e raise to minus j 2 pi by n this can be written as W q m n upon l and as n upon l is equal to m. So, this will be W q m m and on same lines the first term is W n m p l this W n m p l can be written as W p l n by m that is W p l l. So, instead of these factors will now use. So, one of the factor is 1 and rest others will be placed by these and now we will write this x p q in terms of this as x p q equal to 1 just now I have interchanged the summations l equal to 0 to l minus 1 W n l q see one of the term W n l q.  So, the same expression so by simplifying these we have written this. Now, from this now let us understand how to calculate this. So, this equation is same as a previous one. Now, the computation of this can be done in terms of l pointed DFTs and m pointed DFTs. Now remember our signal x l m is the 2 D array it basically has l number of rows and m number of columns right ok.  We calculate this now if you see for any l these are m number of elements right for any l these are m number of elements means 1 row right first row when l equal to 0 it will be first row when l equal to 1 it will be second row and so on. So, it means what in this step we are calculating the m pointed DFT of each row and store it as f l q for q equal to 0 to m minus 1 right. So, in the first step we will calculate these total how many DFTs l number of DFTs right because we are calculating it for each row l equal to l minus 1. So, there are l number of m point DFTs we are calculating in this step right ok. In a second step now for if you see this bracket we multiply this bracket by W n l q right W n l q. So, g we will represent it as g l q which is equal to W n l q into f l q right for 0 to l minus 1. So, basically this in second step we are multiplying each of these values by this constant W n l q right ok. And in the third step now this is once again a 2 D array of l number of rows and m number of columns and if we represent this as g l q. So, it will be l equal to 0 to l minus 1 g l q W l p l right. So, here we will compute l point DFT of each column ok l equal to 0 to l minus 1 means 1 column for each q right q equal to 0 it will be first column q equal to 1 it will be second column and so on. So, we will calculate l point DFT of each column and store it as x p q right. So, here we will get finally, the DFT right the total size of the DFT will be l into m. So, it will be equal to n point DFT and then we have to collect it row wise which gives us the n point DFT right. So, now we will compare this with the direct computation method right. Now, let us discuss the computations required for this. Remember in step one we are computing l number of m point DFTs and for each m point DFT we have m square multiplications. So, total number of multiplications will be l m square. In second we have l number of rows and m number of columns. So, there will be l m multiplications. Third we are computing m number of l point DFTs. So, for 1 point 1 l point DFT l square multiplications. So, for m number of DFTs m l square multiplications. So, which gives us the total sum of this as n into m plus l plus 1. So, this number if you compare it with corresponding direct computation that is n square which is approximately half right. So, with this approach the number of complex multiplications reduced and same way if you count the number of additions for l number of m point DFTs for 1 m point DFT we need m into m minus 1. So, for l you need l into m into m minus 1. In second step there is no addition in third step once again for computing m number of l point DFT.  So, which gives us the total once again n into m plus l minus 2. So, in case of direct computation it is actually n into n minus 1 and now that n minus 1 comes out to be m plus 1 minus 2. So, which is once again nearly half of that right. So, this is how this divide and conquer approach is useful it needs lesser number of computations as compared to direct computation. So, the reference is digital signal processing by Rokies. Thank you.