Hello, hello. Welcome to the weekly ITTT session. My name is Lisa and I'm glad that some people have been joining already. So, I hope everything works smooth here and you can hear me clearly and see me well. If anything goes wrong, please let me know in the comments section so that I could fix it quickly. And I'm happy to welcome you here today. Thanks for coming to this session. Today we are going to talk about a vital topic of lesson materials. I know that many people still struggle looking for resources and contents for the lessons. So, this is something I want to dwell upon today. And just while we are waiting for some more people to join us, please let me know where are you guys tuning in from. I'm located in the rural region of Russia in Yekaterinburg city. It's pretty chilly today and it is also snowy. So, my plan is to go skiing right after this session. Let me know where are you from. We have a comments section. You can use it for interacting with me, which is a really awesome idea because I will be able to know that there are some people over there behind the screen. I basically talk to myself right now and feel a little bit, you know, a little bit uncomfortable. So, just let me know where are you from and let's have a quick chat at the beginning of the session. It's always great to know where our viewers come from and, yeah, it's something to discuss and something to know as well. Okay, there are some people from Beirut. Hello, Rafiq. I hope I pronounce your name correctly. Right. Okay, there are people from Panama. It's so far. What time is it there? Okay, and I've already mentioned that I'm from Yekaterinburg. The weather is not sunny, so I feel pretty gloomy this day. Okay, Hugo is from Sweden. Nice to meet you, Hugo. And there are also people from Myanmar and Nepal. Nice to have you guys here today. And I hope the session will be interesting and you'll find it useful. Thank you for sharing your locations. Okay, so it's 4 a.m. in Panama. Why are you waking up so early? That's so cool. I'm not an early bird and I sometimes judge myself for being late every morning, but it's just who I am so I can't get up early in the morning. Hello, Margaret. Nice to have you today. Thanks for coming to today's session. And as I've already mentioned, we are going to talk about lesson materials. So I'll focus on online lesson materials mostly, but I believe all of these things can be really flexible. And if you teach in a real classroom, just feel free to adjust whatever tips you find interesting and useful for yourself. Right. And moving on, guys, just stay tuned for today's 30% off of all ITTT courses. We share this special offer with you at the end of the session. So just stay with us and you'll find your special offer. And please don't forget to like us and subscribe because we basically share a lot of useful contents on a weekly basis, on a daily basis even if we talk about the Facebook group. So, yeah, just stay with us and you will get notifications on the slides sessions and you won't miss anything interesting in terms of teaching, of course. Okay. And I also want to mention that we go live every week twice. My online sessions are every Tuesday and my colleague Linda goes live on Fridays and all of the live sessions are being recorded. So if you want to rewatch or you don't have to watch in real life, just go to the Facebook page or to our YouTube channel and you'll be able to watch everything we had before.  They both are Tefl alumni and they shared their teaching experience. So if you didn't see those sessions, I highly recommend it because, yeah, you'll be able to learn firsthand about online teaching and teaching abroad in Japan. So if it is something you are really interested in, check those sessions out. You'll find them interesting. And now let's go to the main point of today's presentation. Okay, let me make the video a little bit bigger, the presentation a little bit bigger so that you can see it. Hello guys, thanks for tuning in. I am really glad to see some familiar faces. So it's always cool to know that some people join us regularly.  Sorry. Let's look at this slide. So this is something to discuss before we go to the recommendations themselves. So when you start looking for your materials, for your lessons, do you usually think of your students and do you consider their learning goals? Let me know in the comments section. Do you have any challenges with it? And also, let me know what's your teaching format. Do you teach online or you work in a real classroom? And what challenges you might have with it in terms of looking for teaching materials? Let's just have a quick discussion here. Use the comments box and I'll share some of your answers. I think that this way will be more interactive and we will be able to have like an experience exchange. As for myself, when I prepare for my lessons and look for additional materials and basic materials, I always find it difficult to keep up with my students' interests. What I prefer is having a special course and circle everything around it. But when it comes to my students' interests, I find it challenging to adjust because, for example, some of them come just to discuss something they like. And they don't want to talk about, I don't know, sports or books or anything else. And I just feel frustrated when looking for some specific materials. What about you guys? And by the way, my teaching format is completely online. So I also have to organize my lessons for online experience and it's also complicated in terms of design. So what about you? If you teach either online or in the classroom, what challenges do you face when you look for any teaching materials? Can you share your experiences, please? And I'll show it on the screen so that everyone can see it and either agree or disagree. So what do you think? I hope that you can add something to this part of the session because it's really vital to know that we are on the same page here. So let me know, please. So do you usually think of your students or you try to come to teaching generally and you don't pay much attention to their personality or their vital interests? What do you think? I hope you can share your ideas. If not, it's not a problem. I'll just go forward and maybe later we can come back. Okay, I just wait for a couple of more seconds and go further. All right. Okay. And so when it comes to preparing, it is always better to think of some points beforehand so that you limit lots of options you find on the internet or in the library. And you can be more focused. So this is my point. And when it comes to looking for specific teaching materials, they can be either ready-made, professional or self-created. And now I just want to share a couple of thoughts because there are some people who've just sent them to the chat box. So, Myo, I hope I pronounced your name correctly, says that so she believes that technological engineering students are quite complicated. And yeah, I figure out it's quite difficult to adjust to their needs. Okay. And Louise from Italy says that she teaches B2 C1 levels and they are totally online. So Louise, what struggles may you have when you prepare for your online lessons? Let us know. And I'll just go further with my thoughts. So there are different types of materials, but I would divide them into two main groups. They can be ready-made, professional and self-created. What I mean by ready-made professional is that there is a coursebook or any other professionally designed materials which you can use as a whole syllabus.  You can do it either with your hands or you can find them online. Many teachers distribute their works on the web. So it's just easy to copy and give it to the students as well. I believe that both methods, both types of materials are really important in English teaching. But it is important to think of some balance between the first one, the first option and the second one. Okay. And there are some professional materials I usually use. They are mostly from Cambridge, Oxford, Macmillan and there is a really great coursebook from National Geographic. Have you ever heard of it? It is called Perspectives. It is so cool. We will come back to these types of materials a little bit further, but still these publishers are the best. And I just feel like it is really important to use them in teaching because it is so helpful in terms of preparation. It saves time. It's very handy to use ready-made professional materials. Because there is a course structure, the skills are developed gradually throughout the whole course and the books are so user-friendly itself. I really like it. And as a constant student, I would definitely prefer to have a coursebook over some just odd materials because it helps to just have everything structured. And what do you think, guys? And on this slide, I would like to share some of my favorites. I handpicked some of these books during my professional teaching experience. And I should say these are not only coursebooks I usually use myself, but I feel like they are the best. So here you can see a couple of books from Cambridge. They are for young learners. These books are from young adults or teenagers. And these ones on the bottom are for adults. But basically, for example advanced grammar or English vocabulary, they can be also used for teaching young adults. They are quite flexible. And the same with the prospective book. These coursebooks are quite fascinating in terms of design. They look really beautiful. And when students get those books, they really want to study every topic they get. Because there are beautiful pictures and interesting articles. And the whole structure of the books is really, really awesome. And if we, for example, talk about this one, Fun for Movers, this book is for exam preparation, like for the earliest stage in the Cambridge exam scheme. But it is very adjustable to the needs of those students who struggle with reading, with listening, and with sentence building. So I use this one with one of my daily English students. She wants to improve for school. Like she has some English lessons at school, but she just doesn't understand anything. And her main problem is reading, spelling, and everything related to it. So this book is really, really nice for adjusting to the needs of the youngest students. Right. And you don't need to write anything down. Here are the same books mentioned. And there are some links, some useful links for you. At the end of this session, I will share this presentation and you will be able to click and go to the resources mentioned. And of course, there are not only these books, but there are even more course materials on the professional websites. So you will be able to find whatever suits your needs and your students. So make sure you wait for the presentation at the end of the session, sorry. And there is also this one, this resource library link. This is a really, really cool website. It is called Verpex. I'm not sure if it is in English, but I feel like it is. It's a great resource library with different PDFs of the most vital course books. And I know it's not right probably to download PDFs. But I suppose for teachers who just start the career, such resource is really convenient because we can't afford buying new books which are quite pricey. So why not using something from the internet? So I just recommend you checking out this link and maybe you'll find something useful for yourself. When you register there on this website, you'll have like 100 bonuses to download whatever resources you need. But when you run out with those 100 of bonuses, you can pay some extra fee like really, really cheap subscription and you will be able to download whatever you find interesting. Okay. And let's talk about some created materials. So of course there are a lot of websites that offer interesting materials like worksheets, lesson plans and whatever. They are usually done by teachers like we and people have communities there. So it's also a great idea to check some of these resources because they are really, really cool in terms of lesson preparation. And also make sure you check our ITTT website because we also have a lot of free materials. And you can just follow this link and you will find a whole list of different resources. And as for these websites, I would say that my favorite one is teachers pay teachers. This platform is not only for adults. And you can find any materials there because they have cool filters. You can basically choose your students level or age group, whatever, and find absolutely any type of resources. And if you create your own materials, you can also use this website as a platform for selling your contents. If you want to make some extra money, consider teachers pay teachers as well. And let's see some more ideas. So when we talk about creating materials and choosing materials for online lessons, I would say that the best recipe would be choose a base material and add something extra. And when I talk about some add-ons for your online lessons or even real classroom lessons, you can think of taking a YouTube video or a podcast. It's also always interesting to use a real article, so some authentic materials. I believe that students value it a lot and we as teachers have to facilitate this need. So don't forget to use whatever real materials you can. And let's just look at some useful YouTube channels. There are some useful resources on YouTube for adults and young adults. I use, for example, a great big story. It has short videos like two or three minutes or so. And the content of those videos is very, very easy to comprehend by students from pre-intermediate level or so. So it's a really great channel to use for your online lessons or in-class lessons. And as for channels for young learners, there are Maple Leaf, Super Simple. They are mostly based on singing things, but there are still some patterns to follow and learn as well. So these YouTube channels are really useful. And by the way, you can recommend your students using these resources as a home practice, as a part of their home practice. So sometimes I assign my students some of the videos from these channels and they watch for pleasure. And you can also add some extra resources like articles or podcasts. They can be from the Economies, National Geographic. Of course, you need to consider your students' age and level. But still, you can adjust the articles, maybe restructure them and just considering your students' level. Yeah, something like that. And podcasts are vital for building strong listening skills. So you can also recommend them as a part of homework or just for listening for pleasure. And if you are a non-native speaker as well, it's a great idea to listen to podcasts on your own because there are so many interesting ideas and language tips as well. So something like that. I hope that you find these resources interesting. As I've already mentioned, you will be able to get the same presentation. At the end of the session, I'll just share the link to this presentation and you'll have it at your hand. Right. Okay, let me check the chat box here. Yeah, the Economist is very difficult, but if, for example, you teach C1 students or Business English students, it's a great resource for, I don't know, for practicing. And also, the Economist is really helpful for exam preparation like IELTS or TOEFL because those international exams are usually focused on something really difficult and specific. So these resources still can be used by English teachers. Right. And I believe I've just covered everything pretty much. And this is the end of the main presentation, but it's where I have my Q&A session. So if you have something to share or to ask if you have any problems to discuss, let me know in the chat box. I'll try my best to assist you. And this is also where we share the 30% discount. If you scan the QR code, you will get directly to the ITTT website and you will have the coupon link. You don't need to apply straight away because the coupon will be saved in your browser. Other way you can get the same coupon is by following this link from the chat box. So if you follow it from your computer, then you will have it on your desktop browser. And the other option is to scan the QR code. And right now let me check the chat box. There are some comments. Okay. Could you repeat please the name of the resource library? I will send you the link to the presentation just now. Let me do it. But I'll need to... Just wait a second. I'll send you this presentation link. And you will be able to follow all of the links I added on the presentation. Okay. Just quickly. Just one second. Sorry for being silent. I'll just copy the presentation and share with you. Okay. It is right here. Don't be afraid that the link is so long. You will get to the website I use for designing presentation presentations. It's on Canva. So by the way, this is a great resource to design your lessons as well. There are many templates you can use for lesson planning and just worksheets or whatever you need presentations as well. So if you follow the link, you will find all of the YouTube channels. I listed there all of the podcasts and so on. So I hope it will be useful. And let me know... Well, let me know later if you use some of the materials I've mentioned. Okay. There is another question. I'm struggling to find a student book for my adult learners. They are beginners. Can you help me out with this? So as I have already mentioned, let me go back to this slide. So I usually use some of these coursebooks. And I also choose between different publishers, for example, Cambridge or Oxford, have great course materials for beginners and for those who are over 18 years old. So you can follow the link I shared from the presentation and check the whole resource library on their websites. I won't recommend anything particular apart from these ones, but it's always up to you. If you find any materials useful and interesting, you can just check them and think if they will be useful for your students. Okay, let me see another question. I have just sent the link to the presentation. Could you please try to follow it? If not, then maybe I can save it on the Google Doc and share it with you this way. Let me see. I didn't see it coming, so I didn't prepare with the Google Drive. So just give me a moment and I'll send you another link. Just one moment. So someone says, Luis says that it works, the link works. So maybe you need to copy it from your browser and insert into the search line. Or something like that. If it still doesn't work, I'll send you a link to the Google Drive with the presentation. Just stay tuned and I'll do it. I'll do my best. Okay. And let me check the chat box while I'm downloading the presentation from Canva. There are still some questions. Okay, so they are basically all about this presentation. And Luis says that she likes fun for serious. Yeah, it's really cool. One of my students was a really, really bad reader at the beginning of the course. And we've worked through like six or seven units, but she has changed so much. Her reading skills are getting better and better. So I really like this course because it's well structured. And it's very useful to have some structure, but especially with exam preparation. That's right. Yeah, for exam preparation, it's something really vital. Okay, Luis has to go. Thanks a lot for coming. And by the way, we are just going to finish today's session as well. So thanks a lot guys for joining me today. I will stay a little bit longer to share the presentation with you because some of you still have troubles with opening the link to Canva. But I still need some time to download this presentation because it is quite heavy. Okay. All right. And if guys you have any questions related to teaching lesson materials, TEFL or whatever you struggle with, please let me know in the comments section. I'll try my best to help you here. And also, if you look for any teaching materials for free right now, you can go to the ITTT website and we have a whole library with those resources. They can be useful as well. So make sure you check it out. And yeah, I'm almost done with this presentation. So I'll quickly upload it on my Google Drive and we'll send you the link to it. Okay. Thank you so much for joining me today. I hope this session was useful and you found something interesting. And I hope that I'll see you next week again. If you have anything on your mind related to teaching. If you want any specific topic to be covered in this sessions, you can recommend me and I will just be super happy to talk about it. Because it is always better to adjust to the audience needs and to consider the audience interests. If you need anything specific to be discussed, suggest your topic and I will use your ideas in the next sessions. If you want to find anything interesting in terms of materials or English teaching tips, go to our ITTT resources and we will try our best to help you out with it. We share different materials daily on Facebook mostly, but we are also presented on Instagram and on YouTube, so stay with us and keep in touch. And thank you guys for coming today. It was really, really awesome to talk to you and to discuss all of these things today. Okay, I'm almost done with the presentation and I'll send you the link just right now. Quickly, let me see. It's almost done. So, right. Okay, let me send you the link right now. So, here you go. This is the link to my Google document where I store this presentation. So, if you guys need any materials later, if you want to review the whole presentation, just feel free to copy this link and follow it whenever you need. So, I hope today's presentation was useful and you will use these materials I've mentioned in your interesting lessons. And thanks for coming today. See you next week and bye-bye.


It's been about, it's been a couple days since the incident. I spent most of yesterday in the police station trying to explain in French everything that happened, but I woke up this morning, feeling a lot better.  So I lost my backpack, but my host family hooked me up with this like Puma sports satchel from the early 80s and it's definitely a good look and the people in the Metro definitely won't want to steal from me now at least. I don't know what I'm gonna title this video, but it's pretty much gonna be just another day in the life of a study abroad student because all my footage is gone now, so it's all good. We're gonna make the most of it. I'm on my way to the Metro station right now. It's about a half mile walk from my house and I have a short 10 minute Metro ride, change lines, have another 15 minute Metro ride and then I have a short walk to the school. So total it's about a 45 minute commute, which isn't horrible. I'm almost there and all these people are staring at me, so see you guys there. I'm begging, I'm begging, I'm begging, I'm begging you please stay. Cause that city, that city, that city, that city won't treat you my way. And I'm hoping your Uber breaks down on the way as it speeds to high place. Cause when you head downtown in the town. This school now, it is in the Setyamahondes Mall and it is, it's a pretty nice area.  No, we're not filming yet, now we're filming. No, that's fine, that's fine. We are. Bonjour. Bonjour. Nous sommes perdus to ne film. Okay. We are, we're. Nous sommes. Nous sommes. Nous sommes, okay. Nous sommes perdus, nous sommes pas perdus. Nous sommes pas perdus. Okay, nous sommes pas perdus to la, c'est quoi le, le town? No, oh stop. We are actually perdus. No, we're not some, nous sommes pas perdus, mais on a perdus, on a perdus. Nous sommes pas perdus. Nous sommes pas perdus, mais on a perdus to the. Okay.  We lost you writing the subtitles. Okay. Okay, okay, okay. Okay. Oh, do I actually get, okay. So, Josh, I've heard you, both of you. We lost all the footage. We lost all the footage. All of us going to Fraun Prix during breaks, during class. So. So, we're making up for. We're making up for. We're making up for. And that's a voyage at the Supermarché for a petite soup. It's not a supermarket. It's okay. In a pizzerie. In a, we're launching a couple of shows. Obed, profess your love for Fraun Prix. Um, Fraun Prix avec tout, tout les choses. Tout les choses. Qui, qui nous avons besoin de? C'est incroyable. Don't, don't, nous avons besoin de. Don't, don't, don't. Our friends are friends with us. Our friends are friends with us. C'est donc. C'est donc. C'est donc. We killed it. We are done. We don't need the one remaining week. Oh, it's possible. Oh, it's possible. My, my, my. Three weeks, close to a month now. And I still am not anywhere close to. All right. That's going out. We speak French phenomenally. That's just all. I should be on close. Pass us it. Stand there. On. It's too close, right? Yo, YouTube guys. What would I got? Evie. I just got myself some Fanta and a symbol of French power, the baguette. Oh, it's full baguette. Yeah. Like magic. Um, I mean, it tastes slightly different. Pass is over. Luckily. Luckily. It's like the pass. No, I'm in the, the Jardin. Wait, can I, can I see something? Yeah. If anybody mentions anything about the quality, they can talk to me and I will beat them up. The level 720p is all we have right now. So we're working with it. But we're here after class waiting on some people before we grab food is absolutely beautiful. How long have you been smiling? It seems like it's been too long. Yeah. We're here in Jardin to Luxembourg. I no longer have my Canon 70D. So the DSLR photographer has now become an iPhone photographer. Yeah, shot composition. It's not about, it's not about quality. It's about shot composition. Yeah. And it's about the man himself. Yes, the other world. It's like the signature event. I know. Whoa, whoa, that was, whoa, whoa. Canon is the next one. No, it's not. Just smile like that, like that, and do something. Keep smiling just as you are right now and do something. I feel like this. This is, this is good stuff right here. Oh. We need one more. The photo shoot is going well. And then they're setting this up. Do you have something to say Obed? No, it's just a beautiful day here. It's a beautiful day here in Paris. Yeah. After grabbing some foods, after grabbing some food, we were on our way to the Paris catacombs. We coincidentally ran into a mall on the way there, which led to a hour and a half diversion while girls were shopping. Absolutely the spot is shopping, and those French stores, not much there. We did eventually make it to the catacombs, but the line was pretty much wrapping around the entire city block. Oh my God, what's happening? There's a lot of stuff going on here as we begin preparations for the World Cup game on Sunday. A lot of noise, a lot of very, very rowdy French fans. Anyways, yeah, the line was way too long for us to wait in it, so we just decided to go home. Going to get dinner with my host family. This should be a wonderful home-cooked French meal like it always is. It's really great eating with them every night, getting to practice French and just being kind of immersed in what a normal dinner looks like for a family living in France. Afterwards, I might go hang out in downtown for the evening. Who knows what will happen? We'll catch you guys later. I'm headed to the Senn River to watch the sunset, finish up some work, and just try to make the most of one of my last nights in Paris. I mean, I've got another week, but I'm counting them down already. But first, it's time to make the second trip of the day to the good little calpri.  Yeah, there's definitely some wine in there. There's only so long I can take advantage of these $4 bottles. Tonight is no exception.


The entry requirements into the business school is a rank score of 180. The rank score can be calculated from five approved subjects and three of those five approved subjects need to be from table A or B. Also, in addition to a 180 rank score, you need at least 16 credits and three of those subjects from table A and B. Business Studies is not part of table A and B but it is a approved subject when calculating the rank score.


The FCC's emergency management agency, Fairmer, has said the ongoing search and rescue for peasants trapped in the debris of a collapsed three-storey building at 4th Avenue Guaring Pass entered the second day. Who had earlier reported that the building under construction went down at about 11am on Thursday, trapping an unspecified number of construction workers. The agency's head of public affairs, Mrs. Nkechi Isai, on a statement on Friday in Abuja said, as of this morning, 21 peasants were rescued alive while three others were removed from the rubble, fatally injured. Mrs. Isai said that the rescue team, comprising Fairmer, Neymar, Red Cross, Nigerian Police, Nigerian Security and Civil Defence Corps, Federal Road Safety Corps and some construction companies, are on the ground combing four victims. She said during a visit to the site of the incident, the FCT Minister Malam Mohammed Bello commiserated with the families of the victims and residents of the FCT over the unfortunate incident. The minister noted that it was the third time such an incident happened at Guaring Pass State. He studied that the FCTA would stop at no limit to identify those involved in the unfortunate development.


Welcome back to this lecture on digital communication using GNU radio. In this lecture, we are going to continue our discussion on demodulation, the preliminaries and talk a little more about jointly Gaussian random vectors. And then we will briefly discuss a little bit about hypothesis testing as well. Let us now go back to where we left off in the last lecture. We were dealing with collections of random vectors, particularly Gaussian random vectors. And we were saying that if you have a random vector x, this consists of a column vector consisting of x 1, x 2 up to x n which are random variables which are jointly Gaussian. Now, one important aspect is that I have not provided that definition here. A jointly Gaussian random vector has a special definition. It is one where any linear combination of the entries results in a Gaussian random variable. Like let us there is a very classic example of you know where a pair of random variables both of them are Gaussian, but they are not jointly Gaussian. So, for example, let us say you have sorry, let us say that you have y x is for simplicity n 0 1. So, x is a Gaussian random variable which is normally distributed, let us make it linear. So, x is distributed as normal with mean 0 variance 1, alpha is independent of x and is plus 1 or minus 1 with equal probability. So, it is like alpha is one where you toss a coin and if it is heads it is plus 1, the coin is tails it is minus 1 independent of x and you write y is equal to alpha x. Now, what does y do? Y is essentially just a you know coin flip multiplied by a Gaussian. So, if since x is normally distributed with mean 0 and variance 1, you can actually check the distribution for y. If alpha is 1, it is going to be the same as x which means it is going to be Gaussian. If alpha is minus 1, it is actually flipped version of x, but you know x is normally distributed with mean 0 and variance 1, minus x is also going to be normally distributed with mean 0 and variance 1. So, in both the cases it is very evident that y is also Gaussian with mean 0 and variance 1. But this is a very classic example where x and y are both individually Gaussian, but not jointly Gaussian. Why is that the case? Because if you look at x plus y, x plus y is not a Gaussian random variable. Why? Because x plus y takes the value 0 with probability half that is it takes the value 0 with probability half that is because whenever alpha is minus 1, y is minus x. So, x plus you know x plus minus x is 0. So, with probability half you are getting 0, you are getting a weight on a single number and as you know a continuous random variable like a Gaussian cannot take any single random any single number real number with any non-zero probability. So, this is a classic case where this is you know two individual random variables are Gaussian, but they are not jointly Gaussian. Jointly Gaussian means if suppose you have x 1, x 2, x n and a for any real numbers or you know complex numbers alpha 1, alpha 2, alpha n alpha 1, x 1 plus alpha 2, x 2 plus dot dot dot plus alpha n, x n is Gaussian. Then with any distribution of course, then these are said to be jointly Gaussian random variables. So, this is something we should really keep in mind. That is the only definition of a jointly Gaussian random variable and only such random variables have this kind of distribution that is 1 upon root of 2 pi power n determinant of Cx this by the way this mod means determinant of Cx times this is a mistake here there should be a Hermitian here and there should be no Hermitian here x minus Mx Hermitian Cx inverse x minus Mx. Now, as we discussed at the end of the last lecture independent and uncorrelated are the same for jointly Gaussian random vectors. This is something which is also very key. If you remember the example we discussed where y is alpha x, y is a basically plus x or minus x with equal probability. You can actually verify that those two are uncorrelated, but they are definitely not independent because if you know the value of x then you know that with probability how y is definitely x with other probability how y is definitely minus x they are definitely not independent, but they are uncorrelated because if you evaluate expectation of x y in that case it will turn out to be 0. So, in that sense you know independent equal uncorrelated only holds for jointly Gaussian random vectors how? So, in the case of uncorrelated random variables you have a Cx which has only diagonal entries and 0's here 0's here. Why? Because what are the off diagonal entries of the covariance matrix? The off diagonal entries of the covariance matrix are the correlations multiplied by root variances of the individual variables. Which means if you say that those random variables are uncorrelated their covariance is 0 which means your Cx is now a diagonal matrix. If your Cx is a diagonal matrix you can easily verify Cx inverse is also a diagonal matrix and if you then look at this x minus mx times diagonal matrix times x minus mx of course as a Hermitian here if you can easily verify that what will happen is that this will essentially have a for this will result in something of the form maybe I will just erase this some constant times x 1 square or rather some constant times x 1 minus mx 1 the whole square plus some constant times x 2 square or x 2 minus mx to the whole square and so on. And these so the way it will appear is that you will have e power minus something something x 1 square and something x 2 square and so on and this can actually split into e power minus x 1 square times some constant e power minus x 2 square times some constant and so on. Now you know that whenever you have a joint distribution which splits into the marginals and products you can verify that that is going to be a that is that means that that in that from all the random variables in the joint distribution are independent because you can show that the uncorrelatedness which reflects in Cx will result in the pdf's being appearing as the product of the marginals. So that is something special only for Gaussian maybe there may be some other way Gaussian definitely uncorrelated implies independence and this is definitely not the case for most other random variables you can check. Finally of course joint Gaussianness is preserved under affine transformations you can see that this is an affine transformation over here over here and that preserves the joint Gaussianness that is if you take a jointly Gaussian random vector apply an affine transformation to it then the resulting random variable is also going to be jointly Gaussian. Now again these things are going to come in handy whenever you deal with vectors like jointly detecting multiple symbols and so on. So just keep these things in mind we will refer back to these as and when the situation arises. The next thing that we have to consider is Gaussian random processes. Now one thing you must remember is that whenever we deal with these practical communication systems you have aspects like noise and you know channel and all those things typically what happens is that the random process essentially is like a varying waveform that is you have there are two pictures of a random process that is one picture is there is one particular random process one particular realization there is another realization and then there is a third realization. These are all sample path wise realizations for example let us say that you know this is like one particular path which you take another particular path which you take another particular path which you take there are multiple paths each of these can be chosen randomly. This is the picture when you want to basically fix the realization and view as a function of time. The other picture is if you fix time ok I will go back to the blue pen once again. If you fix time then it can be this red value this blue value this green value and so on that is X of t is a Gaussian random variable. So there are two pictures in the case of a Gaussian random I mean any random process or a Gaussian random process if you want to look at it as a function of time it is a realization if you fix t and want to look at it then it becomes a random variable ok. So typically this picture is you know used we say X of t is a random variable for every t belonging to R while we are silent about the exact interpolation of t you can assume that t is like time. So for every time t you have a random variable. Now in the random process how do you know what is the significance of you know our understanding and why do we have to look at these things. See whenever you deal with random processes suppose that you make an observation now one question that we may ask is is this observation useful for the next time instant. For example if it is sunny today then if it is sunny tomorrow going to if it is likely to be sunny tomorrow as well you can say that over time you know the level of let us say the sun is definitely correlated across time that is something which you can say but suppose that you are in an environment where you know today it may be sunny tomorrow all bits are off it may be sunny cloudy rainy or whatever then you can say that for this particular random process there is no real correlation among the weather on successive days. So you have these kinds of characterizations of how closely related the random variables are that is something which you will try to exploit even when designing it for our communication system. So for real numbers t1 t2 up to tn and complex numbers a1 a2 up to an now just hold on and we will tell you what t1 t2 tn are. Let us say that we observe the random process at time t1 time t2 and time tn and then we take a linear combination of those random variables you observe the time t1 time t2 and time tn that is a1 x of t1 plus a2 x of t2 and so on then this is a Gaussian random variable. This is the definition of a Gaussian random process I think you can recall that I just mentioned about jointly Gaussian random vector if you take t1 t2 tn and measure the random process at that time x t1 x t2 x tn forms a random vector and I am claiming that it is a jointly Gaussian random vector because a1 x by t1 plus a2 x t2 and so on are the summation is Gaussian and therefore the Gaussian random process is defined in this manner if you basically take the random variables that constitute this random process for various times and take any linear combination if that results in a Gaussian random variable then this process is said to be a Gaussian random process. Now the Gaussian random process is completely characterized by its mean and its autocorrelation function like if you recall we mentioned that you know jointly Gaussian random vector you just need to know its mean you just need to know its covariance matrix in a similar way the covariance matrix is transformed to autocorrelation function. So the auto the covariance matrix was useful in the random vector case because you had finite set of random vectors in this case the autocorrelation function tells you the relationship between pairs of these random variables for every pairs of times ok. Now one aspect is that you know you can you have these aspects related to x you know x of t1 and x of t2 have some correlation right what about x of t1 plus delta t and t2 plus delta t do they have the same correlation property that is if you look elsewhere do they have the same correlation properties that particular aspect is called stationarity. So if you recall a wide sense stationary process is one where the mean does not vary with time and the autocorrelation depends only on the time gap that is if you want to measure the correlation between x of t1 and x of t2 it is a covariance it depends only on t2 minus t1 that is if this holds true then you say that such a process is called a wide sense stationary process. So therefore another way of looking at it is that the autocorrelation the covariance function or the autocorrelation function in this case we may write autocorrelation because we typically say that it is 0 mean or we subtract out the mean so autocorrelation autocorvariance it does not matter. So if the autocorrelation process depends only on the gap t2 minus t1 we can always characterize the autocorrelation by calling this gap t2 minus t1 as tau and such a process is called a wide sense stationary random process it is very typical to assume that random processes are wide sense stationary when analyzing several communication systems. In the Gaussian case there is a special bonus wide sense stationarity implies strict sense stationarity because it is almost like once you have characterized the covariance ok it is like the you know the distribution like in the case of random vector Cx is known in this in a similar way the Cx or the autocorrelation which is which is basically getting the covariance for all pairwise random variables is fixed therefore the distribution itself can be fully characterized. This is something which you can look at from references but most important is Gaussian random processes have a very nice characterization any linear combination of x of t1 x of t2 x of tn is Gaussian. Now that we have our Gaussian random processes in our toolkit let us look at n of t we define n of t in this particular situation as the noise process it has zero mean and we define its power spectral density n0 by 2 as sigma square. Now power spectral density I am sure you would have seen it in the context of you know random processes but if you want to be refreshed about the definition the power spectral density is the autocorrelation of the sorry is the Fourier transform of the autocorrelation. As we discussed we are going to restrict our concentration to wide sense stationary processes. So, if you take the autocorrelation which only depends on the lag t2 minus t1 and find its autocorrelation that is the power spectral density. So, the power spectral density function is n0 by 2 which is same as sigma square that is if you look at the power spectral density I will say Sn of f the power spectral density is flat at its value here sigma n0 by 2. Now as you very well know whenever you have a random variable whenever you have a random variable which is like which is flat like this then let me just fix this a little bit. So, this is Sn of f whenever we have a random variable with a flat or not random whenever you have a Fourier transform that is flat this is n0 by 2 you know that its corresponding time domain function is delta you know basically I am using the fact that delta of t has Fourier transform 1. So, since n0 by 2 is the Fourier transform we have Rn of tau this is the autocorrelation or autocorvariance of the noise function is n0 by 2 times delta of tau we can also write it as sigma square times delta of tau. Now, one question which you may ask is why this choice n0 by 2 this n0 by 2 choice made for various reasons of course it you can go back and look at the Boltzmann constant based you know derivation and so on. But more importantly we want n0 by 2 because we will eventually move to complex baseband signaling in the context of complex baseband signaling if we choose n0 by 2 is the noise along the real axis and n0 by 2 is the noise along the imaginary axis and treat those as independent then we will eventually get n0 as the complex noise. So, that is where we are getting at for now we are just going to define the noise along this particular real axis as n0 by 2 n0 by 2 is the real noise process with 0 mean and power spectral density n0 by 2. So, that is n of t ok. So, n0 and n0 is k t0 k is the Boltzmann constant and t0 is the operating temperature you can choose it as you know 300 Kelvin or something it has to be in Kelvin remember and the Boltzmann constant is as you find in your list of physical constants. Now, there is a problem with this definition of noise that is it is like noise is flat and has a very wide spectrum and this particular noise is actually stretches actually this is the frequency axis because the Fourier transform. So, across all frequencies it keeps going this means that your noise essentially has an infinite amount of energy in it ok. So, but that does not make sense because you can actually start extracting the energy from the noise and build something called a perpetual motion machine you know which is something you may have heard about in physics you can actually try to get free energy from the noise. So, the answer to you know if you have a question as to whether that is possible the answer is no this is a noise model and what happens is that the noise effect essentially affects the frequency range within which you employ the communication system because wherever you send the signal that is where the noise is. So, to that extent within the band of interest within the frequency range of interest the noise exists and can be treated as flat that is basically the assumption we are making. So, let us not get into pathological questions of whether the noise actually has infinite energy infinite power no we will just assume that if this is the range of bandwidths you are using remember your pass band signaling and all those. So, the noise here this is the amount that affects your signaling. So, that is the summary now we will take a very brief look at hypothesis testing. So, hypothesis testing can be looked at as a framework for deciding which of M possible hypotheses best explains an observation why this is based on a statistical model. So, assume we assume that let us say that there is an observation why, but there is something called i that actually causes this. If you want to have a very simple example let us say that you send a message i ok messages can be 1 2 3 4 just send a message i and you receive y the question is from y you. So, from y how do we decide which message was sent. So, that is why we have these hypothesis hypothesis which I said message i is sent ok. Now, we have to decide how these hypotheses are tested and how we decide which of these hypothesis is likely to be true that is we have h 1 h 2 up to h m let us say we send messages from 1 to m which of these messages are sent is the question. So, probability that of h i are the Bayesian priors that are known that is in this particular case the simple way to understand is probability of h i is the probability that message i is sent. For example, some if you live in a city where let us say most of the days it is sunny and every day you make a you send a message regarding the weather then the probability that h i let us say that probability that you send the message that it is sunny is much more likely than the probability that you send the message that it is rainy or snowy or cold or something like that. So, in that sense p of h i are the Bayesian priors, but in the case of messages when you send in digital communication let us say 0s and 1s typically these 0s and 1s or 1 2 3 4 all those are equally likely and given that they are equally likely these p of h i's are going to be 1 upon m which means all of them have the same prior probability. So, this is something again that you have to keep in mind a Bayesian prior indicates what the probability that that particular event of that particular message being sent is if all messages are equally likely then that does not help you make a decision. Intuitively if you have a situation where it is more sunny most of the times then you may say even if I get a rainy answer I have to be really convinced that it is actually really rainy because most of the times he sends a sunny message what if suddenly he or she sends a rainy message these kinds of questions are what this essentially is meant to handle. So, let us go to the hypothesis testing case with a very simple example before we go into that particular example I will give you another simple test. Let us say that you have a car windshield and let us say that you count the number of drops okay and let us say that the number of drops is what you measure let us say it is something like 100005 or something like that. So, your Y is the number of drops on the car windshield and you have to decide whether it is raining or it is not raining for a minute let us assume that you are only counting the drops and not checking the clouds. So, the question which we may ask is there are two hypotheses it is raining it is not raining then based on the observation which is the number of drops which we call Y how will you conclude whether it is raining or not. In other words we have to come up with a way for example we can make a statement like if the number of drops is greater than<PHONE_NUMBER> then it is raining if it is less than or equal to<PHONE_NUMBER> it is not raining someone actually just sprayed those to you know clean the windshield or something like that in this manner we have to come up with a means or a metric to break our tie or you know like to find out which hypothesis we are going to decide on. Hypothesis testing can have errors it could be that you know you are under a tree so you do not get enough number of drops yet it is raining. So, this can lead to an error or someone essentially came with a bucket and poured all the water you counted the number of drops there are many many drops so you have greater than<PHONE_NUMBER> but it is not raining so you made an error. So, under various situations errors are possible your aim is to take into account all of these situations and minimize the error. So, this is like a very basic kind of example to motivate this hypothesis testing but in a more practical scenario let us restrict our consideration to the Gaussian case let us say that you have a very basic Gaussian system there are two symbols 0 or 1 but what you see is y and y manifests as if 0 is sent y manifests as a Gaussian with mean 0 and variance sigma square if 1 is sent I am sorry this should be 1 if 1 is sent y manifests as a Gaussian with mean m and variance sigma square. That is if you if you send 0 then you get a y which looks like this this is there essentially the distribution of course, it should not go below 0 sorry please do not you know we just we just redo this. So, if you send you get this if you send 1 you get this where this is m. So, this is what is happening. So, if you now let us look at this intuitively intuitively it is very evident that if you send if you receive some value which is here then most likely what was sent you know it is like most likely that message 1 was sent and this Gaussian took it far to the right it is more likely that a value close to m is taken far to the right than a value close to 0. But suppose that you get something which is you know over here let us say over here then it is more likely that a 0 was carried to this place rather than m assuming m is a positive number. So, what is the decision rule? Now, we have to decide just like my windshield example we have to decide where we can draw a line and to the left of that line we will say message 0 was sent to the right of that line we will say message 1 was sent. An intuitive rule is this is 0 this is m of course, by symmetry because the variance is the same we can decide that m by 2 is one place where you know we can draw the line and to the left we will decide that 0 was sent to the right we will decide h 1 was sent this looks like a possible way to make this decision. But so, I mean when we decide this decision rule we want to partition the observation space. So, you want to basically say anything here is h 0 anything here is h 1 and that kind of thing is what you want to say. But what is the correct statement or what is the mathematically correct statement which you know optimizes something is something that we are yet to see. So, let us briefly look at the conditional error probabilities. Errors can happen hypothesis testing that is even though you know you know you what message 1 was sent it could be that the message was carried to the left side because of the noise. So, in this particular case you know instead of m you got something over here because of the behavior of the Gaussian. So, you can have this kind of errors. So, what is the probability that h j is decided you conclude that h j is decided for some j not equal to i, but h i is true that is what is the probability that you will decide that this message 1 was sent even though message 0 was actually sent. What is the probability that you decide that message 0 was sent even though actually message 1 was sent. So, that is basically the summation of probability of y being in gamma j for j not equal to i that is let us say that you have multiple symbols you decide one of the wrong symbols given that h i was sent and now this is same as 1 minus y belonging to that is this is basically the same as 1 minus the probability that y belongs to the correct region. This is a conditional you know error probability just so you know with priors actually there is a little gets a little more tricky with priors what happens is that you have to account for the prior that is what is the probability that you know message i is sent what is the probability that may say j is sent this is the case where you know all messages are not equally likely right now we will just skip this for a minute we will focus on this particular aspect. So, if we look at conditional probabilities and maximum likelihood that is what we call as ML maximum likelihood the maximum likelihood essentially maximizes the some likelihood function that is it tries to give you something which has the most probable way of deciding. Let us look at our example what is the probability of error given 0 is sent if you look back at our plot when you send 0 you will make an error if you cross into m by 2 or to the right. Similarly, if you send 1 you will make an error if you cross from m by 2 to the if you cross m by 2 to the left. So, now coming back to that what is the probability that you will make an error let us look at this particular case. So, you will make an error if this particular Gaussian crosses m by 2 that is this integral m by 2 to infinity 1 by sigma root 2 pi e power minus x square by 2 sigma square dx. Now, again if you just do some quick normalizations and you know do the transformation to z and stuff you can easily find out that this is q of m upon 2 sigma. Similarly, if you do the same analysis for error given 1 you will make an error if what you observe is to the left of m by 2 even though 1 was sent and that you can also verify will turn out to be q of m upon 2 sigma. This is because why is n 0 sigma square under hypothesis h 0 why is n m sigma square under hypothesis h 1. So, it is very evident that for both of these you can essentially evaluate these probabilities it turns out that both of these are the same. Now, that means that since you know probability of sending 0 and probability of sending 1 are both equi-probable q of m by 2 sigma is indeed the probability of making an error. So, the maximum likelihood decision rule actually is going to say that I want you to find me arg max for all i of p of y given i which is arg max you can also take log of p of y given i. So, that is you write the pdf p of y given i and find out that particular i which is the maximum. In the case of Gaussian this is just going to turn out to be the minimum distance that is something which we will see. The other is the minimum probability of error rule which is the one with Bayesian priors. So, now if you want to minimize the probability of error then this delta minimum probability of error delta m pe of y is arg max the only difference is we do pi i times p of y i which includes the prior probability that is in this case let us say that it is you know you there is a probability that you will send 1 more often than 0 you can account for that in the form of pi 0 that is what essentially this is other than that the rule is similar. If all the pi i's are the same let us say in our case it is half and half then this particular thing can be removed because for all of these p of y given i the same multiplier exists. So, you can get rid of this. So, maximum likelihood is the same of minimum probability of error also known as map maximum a posteriori under the condition of equal priors that is when all symbols are equally likely. Now the minimum probability of error is also the same as the maximum a posteriori rule which is the map rule because it maximizes the probability that hi occurs given that y is observed. So, that is something which you can verify. The final thing which we want to just briefly dwell upon is the aspect of irrelevant statistics. Sometimes when we have y and it is complicated you know it is a complicated thing to process because it has been much of unnecessary or you know extraneous information. The question which we have is can we decompose the statistic into y 1 y 2 where only y 1 is relevant and y 2 is not relevant.  But let us say that the noise is going to take it to some place like this there is complex noise. So, there is a real noise and imaginary noise. So, can we not decompose y into two parts. So, in my example we will just take the real part and imaginary part the imaginary part of noise is irrelevant because it does not affect your decision on what is actually sent on the real axis. In this you know in a technically speaking for m-ary hypothesis testing where you want to check which one of m hypotheses were sent. If you decompose your y into y 1 y 2 you can decompose it in various ways like break into a vector or you know subtract or add or something like that. If you find some part that is irrelevant to the conditional distribution of y 2 given y 1 then h i is independent of i that is if it is not going to aid you in deciding which hypothesis is sent then P of y 2 given y i y 1 comma i is this P of y 2 comma given y i for all i that is intuitively speaking if you have some extraneous information that is not relevant then you can ignore it. We will look at this more technically when we deal with projecting noise onto the signal space and we will show that that part that is not projected is irrelevant that is something which we will see in the next few lectures. So, to summarize what we have learned over the past few lectures practical communication systems have some kind of random effects such as noise and these necessitate optimal detection techniques. Sometimes interference inferences from meaning concluding what was sent from the received signals may be complicated and it may be easier to take them to a different space or convert them. In this situation we will use the relevant space with sufficient statistics and that is something that we will see. Hypothesis testing to obtain the maximum likelihood or minimum error decision on transmitted symbols is something that is a tool that we will use in order to recover our data and you know and also find out how much error there is while recovering the data. So, these are some aspects that we will see in the next lecture followed by implementation of these on GNU radio as well. Thank you.


Hi, this is Pastor Jared Pozarski from Hold Fast Baptist Church in Fresno, California. I want to make a quick video talking about an upcoming sermon series. We're going to be starting on Sunday evenings. The sermon series is called Omni. We're going to be looking at the three omni characteristics of God. And in Sunday night's sermon in particular, we're going to be looking at how our God is omniscient or all-knowing. In this modern day and age that we live in, there's a lot of talk about artificial intelligence and AI and different algorithms that are happening out there and being developed very quickly. So for this sermon series, I'm going to be detailing a conversation in light of the Bible, of course, but a conversation that I had this week with Google's AI called Bard AI. And I'll answer the questions. Do we have to be worried about, you know, AI taking over the world? What is AI good at? What is it not good at? Do I have to worry about, since I create content and write sermons as a pastor, do I have to worry about being, you know, obsolete in a year or two because of artificial intelligence? I'll detail my conversations about religion, science, all manner of different things that I talked to Bard AI about this week. And I'll show you some of those details on Sunday evening. I look forward to seeing you all at church. God bless and have a great day.


1. What to watch out for before signing your TEFL contract in China. Signing any contract can be daunting. However, if you know what to look out for as you go through the papers you have no need to be scared. We have compiled a checklist for you to keep with you as you read through your contract. Is the contract written in English and easy to understand? Is the name of the school the same as the one you were told during interviews and has it been spelled correctly? Is your name and passport on the contract and are they correct? Is the salary the same as that promised to you in interviews and is it written down correctly? Are the start and end date written down correctly? Please note, these dates may not be the same as your arrival and leaving dates to China, but they must be there nevertheless. Go through the package details carefully. Is everything with regards to your package, accommodation, medical etc., written down and the same as previously agreed upon? Are your work hours stipulated correctly? Are the following details, with regards to the contract, stated? How to terminate the contract early and the penalties for doing so? How to extend the contract and any benefits for doing so? The offenses which may lead to your dismissal and contract termination. Does the contract specify how you may go about voicing any grievances? There's more. Those are the most important things you will need to look out for. There are a few things you should also keep in mind when signing your contract. Then after going through the contract with the checklist above, get someone you trust to read through it before you sign it. You will sign two contracts, one before you leave for China and one when you arrive in China, please make sure that these two contracts are identical and that no facts have changed. Now you are ready for your adventure. If there are any discrepancies with the contract, contact the school or ask your agent who will contact the school for you. With the help of these guidelines and your recruitment agency, you should have no problems at all. Speak with an ITTT advisor today to put together your personal plan for teaching English abroad. Send us an email or call us toll free at 1-800-490-0531 to speak with an ITTT advisor today.


Hello, and welcome to this talk about shift left performance system. My name is Hari Krishnan. I am a consultant and a coach. I have companies with cloud transformation, extreme programming, agile and lean. I've spoken at multiple conferences. My interests include high performance application architectures and distributed systems. So before we jump into the topic, let's understand the context. Why do we need to shift left and performance testing. Let's take a quick show of hands and which environment do you identify most of the performance issues. Not quite likely that you'll identify many on local machine, and even possibly on development environments. Most teams have worked with start identifying performance issues on staging and then a lot more on their production replica. And those issues that we don't end up identifying our users identified for us and we need to fix them. So what we're putting here on this chart is the more intense the red is, that's how long it takes to fix those issues. So this is not desirable right now why do we end up in this condition. Let's take a look at the usual setup of performance testing. The developer writes some code on a local machine goes through the development environment staging. At this point, the performance test that comes in, starts setting up the perfectest environment. And what does that involve writing test scripts, setting up the load generator, the agents, etc. Start sending out the load, maybe for staging, and maybe even to production. Once the tests are done, you generate report and share it with the team. Developer makes sense out of it, and then ultimately starts trying to fix them. Now what's the problem with the setup? Obviously the first one is if you're identifying issues in staging or production, you're already quite late. And what's worse is once you identify those issues, to fix those issues, you have to go through the same cycle, which means the cycle time for the issue is going to be quite high. And what makes it worse is the higher environments, including the perfectest environment are highly contested. Because it's not just one developer, there are multiple developers, all of them trying to figure out how they can fix their respective issues. So that's like a compounding effect with this current setup that we have with most of the teams that have worked with. So how do we solve this and how do we want it to look? Ideally, we'd like to identify most of those issues on the left hand side. Obviously, we cannot do away with performance testing in higher environments, but at the very least, we'd like to identify most of them on the local environment for all the obvious reasons that we already discussed. That should be easy, right? This test is sitting on the right hand side. All we need to do is take that same setup where the performance testers had as a developer, take the setup and start running against local machine and development. And we start depending a little lesser on the higher environments and on the performance making their job a little easier. But that's not as easy as it is said than compared to how it's done. Let's look at the challenges with shift left. The first one is obviously creating a representative performance environment on the left hand side or on your local machine or lower environments. What's the difficulty? The first one is obviously the production architecture itself. You have fairly complicated architectures on like cloud, multi-cloud, hybrid cloud. And on staging, it becomes a little less complex. And ultimately, by the time you have your developer environment, it's just a humble laptop. How do we equate all these environments and say that's something that's tested here will work in a higher environment? Not necessarily possible, right? Likewise, network topologies will differ. The latency levels, the firewalls and architecture will be significantly different. But that's not something we can replicate on local environment to a good extent. And moreover, both test environments themselves are fairly complicated with multiple servers to generate significant load. Trying to stuff that into a higher environment itself is pretty hard. And now putting it on my local machine, this is a screenshot of how it looks as a memory pressure on my 8GB MacBook Pro. That's not desirable, is it? And now all of these issues are fairly genuine. So with all these challenges, how do we shift left? So the first lesson that I took away from my experiences is to scale down. You can't go to C trials for every single design change. You have to figure out a way to scale down. But how do you scale down? Let's take two parameters, request to second and response time. Now, do we scale down with aspect ratio, which is physically saying I'll reduce RPS and I'll also expect response time. I'll sort of increase it and stuff it into the lower environment. Maybe I'll maintain the RPS, but I'll reduce the response time. I don't know. These are all various options, right? So what is the way to accurately scale down all these parameters? And usually it's not just two parameters, right? We'll have multiple. And how can we validate the performance KPIs accurately? And so this we cannot. What we can do, however, is we scale down the trend and we invalidate hypotheses. Let's understand what hypotheses and validations. The hypothesis is practically a statement that we make that, you know, something is going to work. And that's usually what we have to assume with a lot of software and product, right? We just have to believe we make a change and we believe that this is what is going to happen. And for such a statement, there's usually a verifiability aspect and a falsifiability aspect. We're going back to the old school lesson with hypotheses. All green apples are sour and you eat one sweet green apple. You practically invalidated the entire sour green apple theory, right? So you don't have to eat all the green apples and prove that they're also, you just find that one sweet green apple and you have just proved the entire statement. Let's see how that sort of connects with software and performance testing in our context. Let's say I have been given this task to achieve this particular KPI that says with exponential increase in throughput. I want my response time to degrade only at a logarithmic scale, right? That's the expectation. How do I scale this down? While I cannot scale the absolute numbers down, the trick is to scale the trend down. Can I take the logarithmic scale and see if that is valid at lower throughput? If I test it, it doesn't happen and I realize that the response time is degrading at exponential rate. So what I do is not bother going to the higher environments. Try and see if I can fix some of those issues on my local machine. Once that's fixed and maybe even I'm able to achieve better than what is expected. That's not conclusive enough for me to go to the higher environment and release this piece of code or feature. It's inconclusive, so I need to validate it. And I do that in the higher environment and I realize it actually holds good for some more time, but then thereafter it seems to fall off. So for that sort of scenario, I can always come back. But this is not all bad, right? I did identify some of the issues on the left and then only for the absolutely unconfirmable issues I had to go to the right. And that's your shift left through invalidation. One more aspect to this whole picture here is you're learning through falsifiability on the left hand side. You're understanding better about the solution that he came up with. Obviously, we don't know whether it's going to work and we're confirming that through variability on the right hand side. Let's look at one more example. This is one of my favorites for invalidating hypotheses. In production, the baseline KPI at the moment is we are at 80% CPU at about 10,000 RPS. Now with cash, we'd like to reach 1 million RPS at the same 80% CPU, fairly ambitious, but let's see what happens. Now, how do I take this problem and scale it down? The numbers are insanely high, right? Let's say I won't even fix the CPU, right? Some max CPU on my machine and I hit X RPS without the cash. I add the cash and I figure out that at the same CPU level, I achieve another RPS, which is Y. Now it doesn't matter what X and Y are. The least bit I expect there is some bit of difference between X and Y. Why is this important? Because adding a cash should make some difference, right? Many times I've seen projects I've worked with where we simply add a cash and then we realize much later that it never was working. It just happened to stay there as moral support, right? At least we'd like to identify some of these changes here. See the trend that there is a big difference between the cash being present and not being present and then move to the right. So that's how we evaluate hypotheses through the trends or some significant markers. So next challenge in our way is the capacity challenge. Like how do you get to fit performance testing within your sprint schedule? The difficulty is the developer starts writing a feature, completes it. And at that point, we know performance testing is going to take long because that's how it usually is. So what we do is hand it off to a performance system to take this feature through its basis. Meanwhile, the developer moves on to feature number two. Now at this point, we hand that also over to the perf tester, move into sprint two. And we start with feature three. By this time, perf tester comes back saying, hey, I identified that feature one is not as per the expected KPIs for perf requirements. The issues are there, but we cannot really look into it because we committed to two points velocity and then we finished feature number four. And by then perf tester has identified more issues. And by the time we are into sprint three, we are only fixing performance issues from sprint one and doing performance testing for sprint two. Typically, this is a very big anti pattern, which we usually call the hardening sprint, right? We achieved some velocity by throwing some of the pieces of work across the wall. And this never has worked in the past. This is typical where the testing is not complete in the future is called done. So how do we go about solving this problem? The first thing is to come to terms with what is the reality, right? If the performance tester and the developer collaborate, once the feature is done, they do the performance testing together, identify the issues and then fix them. Now that takes two sprints. And this is the best case scenario. Now, assuming we are able to fix the issues in the very first iteration that we identified. Now that's how long the duration of the performance test is affecting how long the feature gets to completion. So what do we do? We reduce this feedback. We reduce effort. We reduce complexity and we reduce repetition. And you automate all the way to resolve this problem. So reducing repetition. How do we do that? Let's start with the API tests and the first test scripts themselves. So the developer writes API tests, the perf tester writes load tests or performance tests. Both of them are very common, right? Like the three similar, they just generate requests that's practically their job. A slight difference is the API tests sort of verify or assert the response. And the performance tests, we don't really care about the exact result, but we measure the response time. But net-net, typically what would happen is probably write karate API tests here and maybe perf tester is using some other tool, which is a code gen tool and a completely different language stack. So that's repeat effort with duplication. The second evil that comes in is inconsistency. We cannot say that the first test is consistent with what the developer is writing as API test. And obviously there's a disconnect between the person writing the test scripts and the person who designed the system. So maybe we'll miss some aspects which we could potentially have broken in the system, right? How do you do, how do you solve this problem? Take a purpose. You take a perfectly good road car, chop it up, add some big engines and turbochargers and take it rolling. Likewise, take your API tests and convert them into perf tests. That's what some of the projects that I've been working with effectively be able to achieve. It helps you reduce maintenance and you are consistent by way of how you write the API tests and leverage them as perf tests. And also it's a coordinated effort and promotes a lot more collaboration between the developer and the perf tester. Reducing complexity. Now this is a fairly tricky one. The ecosystem around performance testing has come a long way. We have a ton of tools that are available. Once you've chosen your tool, then you have to pick up like some sort of a metric store, right? Because we don't want to see some test report at the end of the run and then make sense out of it. We want to gather the application metrics and the test metrics together so that we can visualize it together. On that note, to visualize you have multiple choices, Grafana, Kibana and the lot. Ultimately, the tooling and the infra and the instrumentation and orchestration of this whole setup, putting it together, is a fairly complicated bit. Add to this your constraints like cost and licensing, the perf test as preference, any other constraints and ultimately with great difficulty, we might arrive at one of the stack. And take that stack and install it on a higher environment. It's a hard enough task for the performance system. Now, taking that and trying to shift it left and putting it on to a developer machine, which is only laptop. The developers at a loss for how he or she is supposed to achieve this problem. So, let's see how we can solve this. Wherever you have fragmentation and complexity, the simple answer that usually pops is containerization. So that's exactly what I've been trying to do with some of the teams. We containerize the entire performance setup, so that we don't have to have specialized instructions for each environment. And we write or rather develop up after setup exactly like how we write code, and we promote it, we build it on the dev machine, promote it to the higher environments. Now, taking all of the things that we've spoken so far, let's look at some code. What we did is codify all of this knowledge into a framework. And we call it perfect. Let's look at how it looks. Let us look at a live demo for fees. For fees helps developers and performance test collaborate by providing a common performance testing stack that runs on local machines and higher environments alike. It leverages karate API test as performance test through karate Gatling integration without the necessity to write any scholar code. Let's cover this in a little bit.  Now all of these pieces that you've seen the orchestration is handled by perfis and it runs inside Docker, which means you can install it on your local laptop or higher environments alike. All right, let's look at some code now. The purpose of perfis is as easy as downloading the zip file and extracting it to a location of your choice. I've already done that. Now I'm going to set the environment variable perfis home to point to the location where I've extracted it. Done that and that's pretty much all the setup I'll need. At this point, I need a demo project, which already has some karate API test, which I can convert as performance test. For this purpose, I'm going to use the karate demo project, which sits inside the karate GitHub. So I've already got the app cloned onto my local machine. I'm going to boot up the application now. And it has started. Let's verify if it's running. I'm going to host 8080 and greeting. Hello world, the app is running. At this point, I need to start integrating perfis with this application. How do I do that? I go back to my terminal. All I need to do now is since I already have the environment variable, I run perfis.sh init on this project. I need that perfis has added a configuration file, a YAML file, and another folder, which has some basic templates and configuration which I have covered in a bit. But primarily it has added this YAML configuration file. What I'd like to do is take the first feature, which is the greeting.feature file, which is a karate API test and convert that into a performance test. Let's look at how we can do that. So I open up my perfis.yaml. Now, perfis has dropped in a template. All right, let me walk you through this document from the top. So at the top, I have the features directory and then the karate feature file. Like I said, I would like to leverage the greeting.feature file. So these path parameters are helping perfis locate where the feature file is and create a simulation out of it. And the main element here is called karate.env, which says perfis. Now, why is this required? This is because karate config has a minor change in it, which I have done. I'll show you why. Because perfis is going to be running inside Docker, it needs to access a springboard application which is running on our local host. So for that purpose, I've created an environment and only set the host to host.doctor.internet. So this is something you could set to any URL where your application is running and it should be done fine. All right, let's get back to the perfis.yaml again. That covers the first four lines. Now, I can name my simulation to something more meaningful. I'll call it greeting because we are testing greeting. Now beyond that is the interesting part. Like I said, we don't have to write any scalar code to get this feature file to run as a performance test. The load pattern defined right here in somewhat of a similar manner as to how you define it in Scala DSL for Gatling. And finally, I have some URI patterns. For this particular test, I don't need URI patterns to be recognized or delete that. So there we have it. We are done. Now the next step for us is to boot up perfis. Why do we need to boot perfis? Because perfis runs inside Docker. At this point, my Docker dashboard is looking empty, but shortly the entire stack that I showed you in the slide deck will boot up right here within Docker. And done. So once it's booted up, it shows you that Grafana is running on localhost 3000. Let's actually check it out. Grafana is running the username and password is admin and admin. Inside Grafana, you'll notice that perfis has already dropped in a template dashboard. Obviously, there's no data inside this. Let's kick off a test to see how this dashboard looks. So in order to run a test, all I need to do is perfis.srch test command and it will pick up the perfis.tml configuration by default. So perfis now takes the creating.feature file and the load pattern we have defined here and generates a catlink simulation which will run for about 60 seconds as we have mentioned here. And yeah, let's look at the test results on the Grafana dashboard. So at the top, you'll notice that the left hand side pane shows you the catlink metrics, which is basically the total number of requests and the OK and the failures. At the right hand side, you'll see the percentile response times distribution. Now, obviously you can go and modify this. The catlink information is all available through influx to Grafana and you can generate your own queries. So that's the catlink related panels at the top. And at the bottom, I have the container metrics for the test, which is being gathered through Prometheus. The purpose of this dashboard is to demonstrate that you can look at the test results and the application behavior side by side so that you can correlate if with the load pattern changes how your application is actually behaving. So there you have it, a complete performance test that we wired up and caught it running in less than five months. So all this help with the shift left of performance testing. Let's take a look. Let's say you have your laptop and your API code sitting on it, along with your karate API test, your deploy your local environment could be localized. And that's pretty much your application. Now, let's say you install perfis, which is already inside Docker. You configure through perfis config amel and let office know how to generate the load treats it generates the, you know, the performance test out of it. Gathers the metrics from your local application get link presents it on a dashboard. And now you are able to analyze it and take immediate action on your local laptop. Now, once you're satisfied that your performance testing is to an extent complete on your local machine, promote your application to higher environments. And likewise, you could promote perfis to higher environment being dockerized. There's not much of a specialized setup that's required in higher environments. It pretty much leverages similar configuration files through a pipeline, if you wish, and runs the load test generates load against the higher environments, gathers the metrics makes it available to you for analysis. This is a longer cycle. So on the left hand side, you could do your performance testing right on your laptop identify most of the issues that shift left with that. And for those verification circumstances, you will have to move on the right. While we have discussed many things, the largest challenge in my opinion, still remains the mindset, we need to move from the performance testing sort of a thought process towards performance engineering. What do I mean by that, because of the word testing, we seem to associate testing to a verification activity that comes pretty much to the tail end of development. Instead, it should probably be treated more like a learning activity a series of spikes, through which we are able to learn about the decisions we're making and avoid guesswork. Right. All in all, what we would like to strive towards is become more scientific about how we are making architectural decisions or even as much as adding a couple of lines of code. Are we involving the right amount of rigor and, you know, designing experiments and trying to understand what's going on. So can we have some sort of a template where we can put all of these ideas that we discussed through the stock and sort of help push our thought process in the right direction. So that's what I call the continuous evaluation template simply puts your problem statement the baseline and target API and their hypotheses to start with. And then comes the important pieces which is your design experiments, and particularly, you split them up into falsified ability and very fabulous experiments in order to quickly invalidate hypothesis wherever possible. Record validated learns that come out of this experience for future lessons. Let's take a simple example to run through this template. I will again leverage the example that we saw earlier to improve the throughput of the application. Here we have a target to take it from 10 k rps to 100 k rps. The immediate thought process that appeared to me when I solving this problem is why don't I add a cache that should help speak things along. The first falsified ability experiment I came up with for this is adding a cache should create some sort of a change right. So you remember the, you know, with or without experiment AB experiment. So, at least I need to see that difference between X and Y. So, that's the falsified ability piece. If this itself fails, adding a cache makes no difference. I don't need to verify it. And I try to investigate the issue and I realize the miss rate is 100% on the machine, because of which I'm not able to see any discernible difference in the behavior of the application. And I further hypothesize that the miss rate is 100% because the TTL is too small. So I fix the TTL issues, and try the experiment again and this time it works. So I move towards very fabricate on a higher environment, understand staging, and the strategy I'm going to leverage now is to scale the trend. I mean, see that there is a 10x improvement that has been requested. So I'm going to try a 10x. That is pretty much put on the basis of whatever is the baseline KPI for staging environment. Now, if we cannot achieve that, we further investigate and we realize the miss rate and eviction rate are still fairly. One of the things we have is that eviction rate is associated with cash size. How can I prove this part on my local machine. Again, falsified ability. If I cannot prove that cash size improvement will help to move eviction. Can I prove that I can introduce eviction by reducing the cash size. What is the experiment here? If I can test that, I can establish there is some sort of a relationship between eviction rate and cash size. Now I repeat the very fabricate experiment that works, which means the validated learning has now put me in a position where I have some meaningful recommendations for how the production environment should be set up. Before I go too far, first I verify that deploying this change at least changes the CPU load and the current circumstances. And we have a cash rate rate just establishing that the deployment has gone through. That works. We can go for a full-blown performance test on the product replica to see if we can hit our target KPI, which is 80%. Sorry, the target KPI of 100KRPS at 80% CPU. That also succeeds the initiative. Of course, I've simplified this template and for the purposes of demonstrating it here, this list was a lot longer. But you get the idea. This template has constantly put me in a position where I have to think towards shifting the problem left by designing falsified ability experiments and depend less on moving to the right. So with that, I thank you all for being very kind audience in this talk, and I hope to stay connected with everyone through any of these mediums. Let's move on to the question and answers.