So in the beginning, there was servers, physical servers, then we had virtual machines, containers, and now we have serverless functions. So serverless functions, the end of evolution, there will be no further technology after serverless functions because they solve every problem we've ever had. There's small units of compute, they're easy to use, they're easy to manage. And it's not just lambda that is serverless computing, there's all of these other services, right? Serverless computing is any of these services, any of these APIs where somebody else is managing everything for you. And you can mix and match them. You can have some of your stuff on lambda and some of it on S3 and some of it over at that image hosting service and some of it at that text hosting service and the comments service. The point is you don't own any of it. So I'm mostly going to focus on the Amazon ecosystem today, but that's, like I said, that's not the only thing there is. So what is serverless anyway? Basically the point of serverless is there's still servers, obviously, but you don't control them. So you don't have to manage them, you don't have to optimize them, but you also don't get the choice. And really the whole point of serverless computing is this idea of speeding up development by getting out of the developer's way. It's, you know, removing the overhead, the management overhead. But what does that mean for those of us who actually have to manage this stuff? That's something I'm going to be talking about today. So, you know, back in the day you would have your single development pipeline, everybody who would check their code in, and it would run the tests and deploy. This is, of course, if you had a CI CD pipeline, maybe you weren't even that far along. And you know, this is kind of a pain for the developers, but it was great for us who have to manage this stuff because at least it was consistent and you kind of knew it was going to happen. Then came along the trend of having these multiple pipelines, microservices, everything like that. So you've got a bunch of developers working on different code branches, different repositories, committing to them, deploying, but in the end you had one solid product and at least everybody was still kind of coming through the same pipeline, maybe it was multiple pipelines but probably at least the same systems, or it was, you know, you could at least kind of figure out what was going on. But now we have the serverless environment. So we've got developers who can deploy to Lambda, they can deploy to these third-party services, they can set up their own pipelines. And so, you know, this is great for the developer, it's super easy for them to get moving, but it's a pain in the butt for people who have to manage all of this stuff because you don't know where they're deploying to, you don't know how they're doing it, you don't know how they've configured it, how they've set it up, or anything like that. And this, you know, the standard microservices pattern, right, everybody kind of moves through this eventually for the most part. There are still some monoliths out there. But there's a lot of advantages to the microservices, there's the distributed workforce and the contracts or APIs between them and everything is loosely coupled, so that's really nice, right? You don't have to have everybody in the same page and so that's the joy of serverless and the pain of serverless. So we're all probably familiar with the typical microservices architecture, you know, and the standard microservices tools, right? We've got the servers and the frameworks and all of that stuff. And now, what do all of those things have in common, right? These servers. This idea of you have to manage these servers, which means you have to deal with all of these things like utilization and capacity planning and all of that. And in the serverless world, that all goes away. You don't have to deal with any of that stuff, you don't get to deal with any of that stuff. And in theory, it's beautiful and wonderful and fully managed. But that's really not true. There's still all of these other things that you still have to deal with regardless of whether they're servers or not, right? There's still queues, there's still monitoring, there's still deployment, there's alerting, there's how do we make a reliable system? And so, as the DevOps engineer, your job is still to be expert on building reliable systems. It's still your job to make sure that even if all of these people are deploying to all of these different places, they're doing it in a way that makes sense, that works well together, and so on. And in a serverless world, all of those problems that you have with microservices are 10x worse. What do I mean by that? I mean, basically, with all of these people deploying everywhere with different configuration systems in all the different ways, everything about microservices that sucks, that makes them hard to manage, is 10x worse. So let's quickly talk about some of the example serverless use cases. So raise your hands. How many people are using Lambda in their production environment? Okay. And how about anything else that would be considered serverless? So you basically have a third party in the line of production. Okay, so not a lot of you. So let me throw out a few use cases here that might actually convince you that using Lambda or something like it is, how many of you are on AWS? Oh, actually, wow, that's a surprisingly low number, actually. So, okay, I guess the rest of you are self-hosting. Now I'm kind of curious. I'll ask you later. So some good use cases for using serverless is basically, well, one is the application backend, which I'm going to talk about a lot in a second. But also data processing and pretty much anytime you have one of those tools boxes, how many of you have a box called tools? No, everybody used to raise their hands.  Those are all perfect use cases for something like Lambda or serverless. They can be run, you don't have to have that server, that's that one off server, that's the cron job that runs all of the other things to make all of your other not one off servers work well. And so there's lots of other use cases around serverless like this one. So live video stream processing where you've got a bunch of different functions doing different things. The important thing to highlight here is the fact that one of these services is not running on Amazon. So this is a third party image hosting service. Another example is static website hosting. So there's services that'll host your static website. So maybe you want to have some dynamic content or something like that, so you can split it up that way. So what does Lambda do for you, right? So Lambda is sort of the canonical serverless type of environment. So what do they do? They manage server capacity, they make sure that the functions are executed, they handle some logging, some monitoring, so they handle some stuff for you. This is their monitoring, it's pretty basic, it just says how often things are running and how slow or fast they're moving. And how do you use Lambda? So not a lot of you have done it, so I'll explain it real quickly. Basically, you have to write your code. They give you SDK, you can use Java, Python. There's ways to use other languages as well with a shim. Then you have to choose the source that triggers that function, so the functions don't just run, you have to trigger them. You can trigger them with CloudWatch triggers though that are like Kron or a bunch of other different things. You have to choose the network that they're gonna run under, whether it's gonna be a private network or the regular network and how that ties into the rest of your systems. And then finally, you have to use Amazon's wonderful interface to deploy. If any of you have ever used the Amazon console, you know how excellent and easy it is to deploy things with the Amazon console. So these are all the things you have to do, right? You can do them through the console or you can use a library. So our company has built all of our stuff on Lambda. So basically everything we do is on serverless, on Lambda. And so we started by building an open source library to manage all of that. This is actually written by the same person who wrote BOTO. So if you're familiar with using Python and AWS, then you're probably already familiar with it. And so we wrote this, there's other libraries out there. I'll talk about it in just a second. But I wanna give you a quick example of what that code does and how it works. So I wrote a quick little word generator as a company founder. One of my jobs is to come up with product names and company names.  So of course, being an engineer, I wrote a program to do it. I wrote this little program where you can give it a prefix or a suffix and say generate English looking words using a database from Google of English type ngrams. So this is what this code structure looks like. The important thing here is that yaml file. And so that yaml file lets you specify things like the profile. It lets you specify the permissions. And you can go pretty deep into the permissions and specifications. Also the timeouts, the memory, etc. So Word Gen itself is actually very simple. It basically just calls another function that says go and grab the data and pull it out. There's a test file that just looks like that. It's just JSON with some arguments. And then this is the actual database. And so the database file is actually put right in there. It's a SQLite database. And it is uploaded with the function. So it gets uploaded every time. This will be relevant in just a minute. So it's really easy to do this deployment. You just say cap deploy.  It creates the roles, it zips everything up, it uploads it. And it does all of that other stuff. And so you can see there how it deployed and it created all those roles, etc. And then we can easily invoke the tests. So we just say invoke. That's the JSON file. All it does is call the function with that JSON. And we get our results back. I really like that second third when they're Opsender. That's a cool name. So free company name for anyone who wants it. Or product name. And so now let's go and edit our JSON file and ask it to generate 20 words instead of 10. So we quickly change our file and we invoke our test again. And then we wait and we wait and we see that, oh no, it timed out. There was an error. So the default is three seconds. So we'll go in and we'll edit the cap file. We'll change the default time out to 30 seconds and we will redeploy. And what you'll notice during the redeployment is that it is smart about the redeployment. It says the function didn't change. So I don't need to up change the function. All I have to do is change the configuration. And so you can see here that's all, that's weird. Well, there it goes. So all it did was change the configuration and that's it. So it's pretty smart and it does some good, cool stuff like that. And then you can see that after we run it again, it took four seconds greater than the time out and it created some other cool ops names down there. And that's all on my GitHub.   There's libraries for this. They all kind of work the same way. There's Apex, which you may have heard of. Apex works almost exactly the same way as Kappa does. The command lines are slightly different.  So they'll show in a JavaScript shim that lets you run pretty much any language that exists on the Lambda container, which is kind of nice. Serverless uses cloud formation. So if you have a lot of other infrastructure, serverless framework is really nice because it ties in very nicely with your other infrastructure. Or if you're running, if you're using Terraform, Apex ties in directly to Terraform. So basically, if you're gonna do just Python on AWS, Kappa's probably gonna be a good choice, but if you wanna do other languages or intermix with other infrastructure, Apex is really cool. I've used that one as well. So this is the architecture of our actual product. It's a little bit more complicated. It's a Slack bot, so we have to run a ECS container to maintain our connection to Slack because they require a long pole connection web socket. But basically the way it works is we maintain that connection. Somebody types something in chat. It comes in to ECS. That fires off to a routing function in Lambda, which fires off to other Lambdas, which may or may not generate data and send that data back and forth. The request goes back. And then it generates an SNS to send back and a Kinesis log line. So that's the basic architecture of our system. So router.py, what does that look like? Router.py is fairly simple. It just says, here's how you call other functions. So this is one of those nice parts of microservices that you don't have to worry about is discovery, service discovery. How do I find the other services to call? It's just sort of taking care of for you with Lambda because you can call functions by name. So you can alias the functions, you can call them by name, and you can do it right here in your code, which makes it really easy to do service discovery. You don't have to worry about a library or anything like that.  This idea of we have two running two pieces of live code. We have the current and we have the future and we shift the traffic to the future to see how it's working so we can rapidly shift back. You basically just shim that right into your own code. Now, at this point, you might start to see the problem. Every one of your developers might do this slightly differently. So this is one of those problems that you now have to solve that's multiplied 10x from microservices. In microservices, chances are you gave them a library to do this. Now, you're gonna have to give them a chunk of code and hope that they include that and so on. So here's an example of deploying functionality so somebody typed something in, it doesn't work. So I quickly go in and edit my file and upload it. I run the cap and deploy. It does its little thing there where it deploys. And then it's supported in dev. Yay, super simple, right? I changed one file and hit deploy and it was great. And then as a developer, I can go through and I can push up my changes. GitHub has that handy pull request thing that you probably used. I'm an extreme developer so I'm gonna prove my own pull request. And now you start to see the problem again, right? I've just, in five minutes basically, I've deployed new functionality to production and the only clue anyone has that I did this is the fact that I did a get check-in. And that's the only clue there is. There's no log of the deployment or anything like that because it all came out of my laptop. So yay for a developer production in five minutes but sucks for the person who has to manage that and make sure that it works. So the deployment for a capital looks like that. Now, how do we solve these problems? Well, we have the code-based structure here. So we've got all of these YAML files. We've got some extra JSON configuration files. Those are like environment variables basically. And we have our artifacts. And the only way right now that I know of to do this is to sort of scan all of this, basically check it all back out and scan through it and look for these problems. And that is unfortunately the current state of the art in managing serverless infrastructure. So the bad news I have for you today is there aren't a lot of solutions that I can offer you today because there just aren't a lot of solutions that exist. So what I will ask you now and again is if you have solutions please share them because so I'm gonna tell you all of the problems we have and hopefully next year I can come back here and we can talk about solutions to these problems because unfortunately there just aren't a lot right now. The good news though is that it means that serverless isn't making our jobs go away today. Maybe we'll have a good year or two left before we're completely useless to developers. So you'll notice here that this is the file sizes of all of the functions. So the way we've laid out our code is every lambda function gets its own little repository. And you notice those first three are significantly larger. I'll come back to that in a second because the other big question debate that a lot of people have is how many repos should I even have? Some people wanna have one repo for every single function which is very nice and granular but very hard to maintain. Some people choose one mega repo for all the functions. We've sort of compromised and we have a front end repo and a back end repo and a website. So because typically when you're editing front end functionality you're gonna end up modifying more than one function at a time so it's handy to have those in one place to make pull requests but we still have to deal with the issues of when we make a back end change or a front end change that requires a back end change that requires two pull requests. You can reference them to each other but that's difficult. So we're still actually trying to figure out what the best methodology here is around repos. It's actually looking like probably the best methodology is a single massive repo. But the important thing to note here is that Lambda lets you manage your code and your infrastructure in one place. Or if you're the person who asks to actually manage that stuff it means that your developers get to manage your infrastructure and do whatever they want to it without you really having any control over it. So how do we at least regain some of the control? How do we at least have some semblance of I actually know what's going on? Well, the one way to do that is through immutable data so this is a standard distributed systems architecture is the more immutable data you have the better. The nice thing about immutable data is that it doesn't matter what the cache state is and you can see all the changes to it because there's typically one after the next after the next so you get a log. So this at least helps a little bit in any distributed system, particularly in one of these distributed systems where the data can be distributed over lots of different places and maybe you can't even do a cache invalidation because some of that cache is stored on some third party server. Because in a distributed system moving data is gonna be the biggest cost of your distributed system greater than any other cost but for reliability you need to make that trade off so my best suggestion is to use queues as often as possible and I do like to go on a very quick side note about queues so queues store anything you're writing in the database you get some great insight out of it but let's look at this graph, right? Here's a graph of queue depth. What happened? What went wrong? Did things come in too quickly or did things not get processed fast enough? So if you take nothing else away from this talk I want you to go look up cumulative flow diagram so if you have any queues this is the best way you can monitor them so this tells you how many things have arrived and left and by looking at this you can immediately tell that the problem was slowness in processing so inbound rate stayed the same, outbound rate was poor and the reason it's cumulative is because if you don't do it cumulatively it looks like this, which is effectively useless. So some other tips and tricks with serverless that we've run into, limit your function size so every time you make a change you have to re-upload your function to the service which means the bigger it is, the longer it takes and worse off if you're using this particularly Java JVM startup time is actually gonna be a big concern. Remember that execution is asynchronous so again queues will help you solve this and so on the back end of these serverless systems typically what they're doing is managing containers for you so you want to, they're gonna manage the containers you wanna know that those containers exist and try to take advantage of the reuse of containers but you also have to remember that there is some temp storage but you can't rely on it ever existing from one invocation to the next but you can rely on it to potentially exist so this is again where that immutable data comes in handy if you throw some immutable data into temp it happens to be available for the next invocation of the function that will speed things up but you don't have to worry about invalidating it or whether it will be there or not so it's kind of like a nice little local cache that you can sometimes rely on. The function aliases as I mentioned are great ways to handle routing so you can use function aliases with prod and dev for example so you don't even need to have two separate environments. You can use version one, version two, version three so you can have your code pointed at a particular version of a function so there's lots of uses for these aliases so they exist, make sure you use them make sure you're using the included logger it has a lot of good information but you do have to process it. Make sure you set up all of your alarms on Lambda and CloudWatch so we got bit by that by not keeping track of failed executions, things like that. One trick to avoid some throttling if you are using Amazon is to use their queuing service because their queuing service has much higher throttles or I should say data coming in from their queue has a much higher throttle than coming directly so if you try to send data directly from one service to another has a much lower limit than if you send it through a queue first and then be aware of infinite loops so we got bit by this one and this becomes again this is one of those microservices problems that gets 10x worse with serverless because we have multiple people writing tiny functions those functions rely on each other, they call each other we ended up getting stuck in an infinite loop we couldn't figure out why our run times kept going up but nothing was coming back we ended up solving it by deploying a new version of the code that didn't have the loop luckily we caught it quickly I don't know what happens if you just let one keep running because I don't have infinite money so I don't want to find out I would hope that Amazon would shut that down but who knows so anyway the best way that we found to avoid it is to pass the call stack basically which is a good practice anyway because it really helps you with your distributed debugging is if every function has within it saying I was called by this person and I called this one next so at least you get that trace of here are all the functions that we pass through to get this data and then the store your data properly don't put anything on a local instance obviously that kind of thing because those local instances only last for a few seconds which is a nice security benefit so that actually takes some workload off of somebody who's managing these infrastructures you don't have to worry as much about security because your exposures is lower so using Kappa some of those difficulties that we've solved are the zipping everything up deploying creating the roles but we still have some other problems efficient dependency usage is one of those right local dev environments is another big problem there's really no good solution about local dev yet and making sure that we have the same dependencies so we had problems where one developer would do wouldn't update wouldn't run their library update and so they would deploy a function that had a earlier library and all of a sudden some code that I wrote stopped working couldn't figure out why and it's because somebody had deployed a lower version library so that's another thing that you have to watch out for so again this diagram of we've got a bunch of people deploying a bunch of stuff to a bunch of places and I mentioned before about the sizes of libraries so if we dive deep into that we'll see everything else is a lot smaller so why is that? Here is all of the files involved in those first three functions and what you'll notice is that there's this library BodoCore you can talk to me later about why we have our own BodoCore but it's taking up most of that space and you'll see those big blue blobs happen again and again so basically there's three functions that all have to have the same library very large library taking up a lot of space how do we solve this? We don't actually have a solution for this now if there were any other library besides like BodoCore one potential solution is to run a separate function that does whatever that thing is and have everybody else call it but then you have to get all of your developers onto the same page to make sure they all know that service X exists and does that thing that you guys are all importing so still there's no tooling today that exists to help you discover these but I think that's probably a path we'll go down where we actually walk the source tree and say hey six people are importing the same one library let's set up a service that does whatever that library does and then tell everybody to call it and then put up a watch to make sure nobody else imports that library something like that and that's kind of part of our next step of our deployment pipeline so we're gonna make it so that when you check in to get basically it calls a lambda function and that lambda function will go to spin up an EC2 instance pull down the code, run all of our analysis, run Kappa, run the deployment and then log a bunch of data into send all that back to the lambda function to log a bunch of data into DynamoDB maybe send out some alerts, things like that send back an alert saying okay your function is deployed still working out the details of this but this is what we're looking at probably so that the deployment is actually a little bit slower for the developer but in exchange we get a lot more insight into what it is that they're doing so we're essentially making it easier for them by deploying for them but in reality we're checking the work so to speak. So at least that will solve the making sure we have the same dependencies problem and knowing when someone else is going but again that efficient dependency usage is a big problem that we don't have a good solution for the local dev environments is another really big problem you pretty much just have to deploy it and test it in maybe a dev account to see if it works and more on the subject of testing in a microservices environment if you're doing a robust job then hopefully you're doing a lot of testing where you are testing things like slow network and cutting off communication from one service to another things of that nature none of that you can do right now if you're using lambda or these other services none of them provide a way for you to say make this just not work randomly five percent of the time and tell me what happens so as I mentioned before and I want to mention again a lot of these are problems that still exist that don't have a lot of solutions so hopefully as we're working on these solutions we can share them with each other we try to make everything we do open source around tooling and things like that and then hopefully I can come back here next year and talk to you all about all of the problems that we've solved with serverless deployments so I am done and I think that's all of my time so I'll be around if you have questions thank you give up for Jeremy


Hello sir. My topic is clicker system optimization. So, during today presentation I am going to represent what is a clicker, what make it unique, implication for its teaching and learning and the type of data collected and what are the downside of clickers. Next we will go through the literature view which is supposed to be covered the student response system, clicker response system, audience response system and etc which is related to the clicker fields. And after that we are going to discuss the clicker development in IIT Bombay. And next I will discuss about the motivation about the project and then the problem statement which I analyze and assume during the literature survey. And after that what is the future work we can cover about the clicker. So, first is what is clicker? So, clicker basically is a learning add or we can say a interface which provide the better understanding of a course material. So, like previously before the clicker development if in a large class or even in a small class if student want to ask any question, but he stop asking question because of some kind of fear in a large class. So, to enhance the communication between the instructor and the student clickers provide the mechanism. So, that the student can ask questions regardless of the verbal communication. So, how it could be possible? So, clicker provide a hardware device by which there are some options like if instructor ask some questions. So, that question will be displayed on a projector and the all the student they have some hardware on they have hardware. So, on their hardware there is a option for selecting the answer where when the student select an options that options are collected on the instructor computer using some interface which is connected to the clicker of an instructor to the computer. So, basically clicker use infrared or a radio frequency for communication. So, the main purpose of clicker is that the student should ensure understand the fundamental concepts of a course and also to allow the active participation by all student. How like as I already said when student give their responses they all the responses are collected back to the instructor. So, instructor can tablet all the responses according to that student can analyze on which questions he have to give some more suggestions or he have to again recollect thoughts. So, next question is what make it unique? So, one point is that whatever the size of the class instructor is always able to gauge this to standing with the help of responses the student have sent on the instructor computer. Also the result from the class responses can be saved and displayed in a variety of formats like histograms pie charts etcetera. So, the next point is what are the implications for teaching and learning of a clicker? The first implication is we can say like interaction engagement for important learning principle as when there is a more engagement then the active participation in class improve and the student learning and the individual growth of a student increase. So, next question is about the about what type of question should be asked in a class like if the question is wrong then the understanding of a student will not improve to the point which have to be like if the question if it is a class if the question is very tough then student will not be able to answer that question. So, the question should be asked in a way that it is related to the deep it is related to the deep theoretical knowledge of the concepts. So, choosing the right question is a very important. Next is after the responses are collected which response should teacher correspond? It is also main important point to selecting a question. Next the type of data collected in clicker. So, there are variety of data types which we can use like if teacher want to conduct a quiz what type of data he can ask like he can ask survey he can ask for any questionnaire quizzes and some type of field notes observations. A lot of data related to this field can be asked using a clicker basically in the most of the universities. The main form of data collection is basically quizzes and surveying during the exams also the teacher ask multiple choice of questions. The main question arises is what are the downsides of a clicker? So, the first drawback is a cost factor in hardware clickers. Earlier there was clickers which are composed of some hardware component. So, the cost of that hardware is very if not very expensive expensive if the class is very large. So, the reduce the cost factor. So, nowadays we are proposing the clickers which is based on the android system which are related to the like we can use tablet cell phones or a PDA for getting a question and spotting to the questions. So, the next downside of clicker could be like if we use like portable devices like tablets, smartphones or a laptop then it could be possible that like for these devices internet connection is needed during the communication between the instructor and student. So, for that communication as internet facility facility will be available during the class. So, student can distract from the course like if the internet facility available then he can then he can leap over the other uses of a internet like browsing something else. So, it could be a downside of a clicker. So, the we can provide some mechanism to not allow this kind of habits like if we can down the server like if we ask question then we can down the server while student will give the response. When student will ready be to give the response then we can again up the server. The next downside of a clicker is like if SMS based clicker response system is used. So, what is basically this SMS based clicker response system like through the some SMS gateway student instructor can send sorry student can send the responses. So, the major drawback is of this system is that cost factor the cost factor because SMS cost something cost some rupee. So, to we can remove this thing using by using some type of SMS why using some type of SMS gateway system by which we can send SMS freely. The next slide is represent the literature review I have covered throughout my M Tech Stage 1 project. So, I have got basically the what type of the web based system web based response systems like in 2006 pro IP August describe the web based tool which is namely as message grid through that message grid student can log in log in into the browser and then open the message grid and send the responses or queries and about the doubts also. So, the later on in 2013 Monica represented the also same type of browser, but it is not based on the message grid it is it is basically mobile clicker which what develop over a package Zoviki. So, Zoviki is basically a framework which provides which provides the facility to create quizzes, questionnaires and etcetera fields related to this kinds of data. So, it also provide good mechanism like it can provide different content to different kind of a student at different time like if one student getting a question number a then other question the student nearby sitting to him or her can get a question different from him or her. So, due to this we can type of concept can be used when we are conducting exam or quizzes. So, the student will not be able to cheat during the exams the next type of literature is related to the SMS based response system. So, in 2007 USPO represented an tax to learn type of response system which is basically on the SMS based classroom interaction. So, what is a advantage of this kind of system the main advantage of this kind of system is a it do not it have it does not have any cost factor like if we are not using any other hardware. So, it will remove the hardware a hardware cost also the installation cost. Then there are the system which are not based on any hardware like which are device free device free personal personal response system. So, what are this device free personal response system basically these are the system which are based on the computer vision technology like which like it was also implemented in India. So, what is basically this device free personal response system is that the student hold some sheet the cost of sheet is negligible the on that sheet there are some data is printed. So, when the student hold the sheet like he can hold the sheet like left down up and right. So, these are the option like if we hold the sheet left then the option is B if hold the sheet right then option is C like that there are four different option available for the student and nearby the student in front of the all the class there is some cameras high resolution camera are there which capture which capture the which capture the sheets sheets as the hold it by the student ok. So, there are some drawback associated associated with this system is that like one is the cost factor what is the cost factor like we needed the high resolution cameras. If we use low resolution camera then the then due to the low light sometime camera will capture sometime camera will not be able to capture all the responses by the student. So, it is a major drawback of this system. So, there are new response systems are developed which which basically focused on the teaching programming languages. So, for teaching a programming language we need a we need new data types like if we want if teacher gives some type of coding questions. So, we need to answer the question in a subjective manner. So, there is a new data type is needed for this kind of questions. So, the Matthew in 2009 implemented a software clickers which are used for teaching Java. The same type of tools was implemented by Daniel in 2013 which which describe the use of we will describe the use of web based response system for teaching Python. So, after the this literature survey I come up with some type of observations like what type of response like either group or individual or both affect the active learning. So, in a class if we ask question individually to all the student then sometime student is not able to understand the question easily or the concept easily. So, or if we ask the question which is based on group like towards we can make a group of two or three people. So, that and we put question to the individual groups. So, in each group the people and the student who are the part of the group can discuss among themselves and answer the responses. So, it is also a good good choice when the students are not very intellectual in studies. So, the the clicker response system is should be depend upon the choice of questions or responses. So, next next observation is that what type of question to be select for asking like if the I or as I already discussed about the importance of a question selection is a major role in a clicker system like if we ask a wrong question then the student will not able to be analyze the question or correspond to the question. So, asking a right question play an important role. The next observation is that as we know basically there are two fields related to clicker system like one is pedagogical theory and next one is implementation study like in pedagogical pedagogical theory. We relate this theory related to the type of questions type of question ask what type of hardware should be used like all these things are related to the pedagogical theory like we should use web based response system all that and the implementation study related to the how the data will be collected how the responses will be collected and then the feedback will be given to the student. So, so our study we will write that, but whether we should think about pedagogical theory more or a implementation study. The next observation is that like asking the question like when to ask a question in the lecture how to maintain the pace of a lecture while asking a question this is also major role like if teacher ask question and student are not able to answer that question within a specified given point. So, it will create some problem like so the question should be asked in a manner that the pace of a lecture will not be affected. So, the next thing I notice that if we provide some more discussion about the topic before the class. So, the student will be able to be able to analyze analyze the concept more this is the topic on the spot in the during the lecture. So, before the question will be to ask positive responses of a student. So, next I am going to discuss about the clicker development at IIT Bombay. So, the first clicker was developed in IIT Bombay in 2009. The first version of that clicker is consist of two hardware component one at the instructor side and one at the student side, but the major drawback of the system is cost factor. The early version like version 1 of this clicker is the cost of this version is around 600 rupees and the next version which was developed the version 2 the cost of that system was around 1100. So, the major drawback of this system was the cost factor. After that clicker was implemented in the distance education purpose like if we have a multiple remote classes and we want to connect all these classes through the clicker system. So, that we large large large set of class can be benefited from the from the lecture. So, for this purpose for this purpose Divya Tiwari in 2010 represented an synchronous distributive approach for CRS. What is this synchronous distributive approach for CRS is that it generally implement the clicker system in a distributive manner. So, that all the remotes remote server which are which are set up in the different classes across the country can be benefited from the from the course or the course or where the central survey is composing the current class. So, basically it involved two server one is current server and a multiple remote server the current server where the lecture is going on and the multiple server which are connected to this central server. So, what is the main idea behind this the main idea is that it use an XML file which contain all the responses of a student from the remote server at remote server when the instructor at the central server ask some question. Then the controller at the server remote server side collect all the responses from the students and this responses are collected in an XML file and this XML file then again sent to the central server. So, that the instructor can analyze the question and then analyze the responses and tabulate them and prepare the histogram of that. Then again he can reply to the all the questions which all the responses which are needed to be taught again. The next the next is that so, how the data collected as is then transferred back to the central server it is possible because of the FTP server. The next in IT Bombay we implemented a web based clicker system for a cache tabulate before that in IT Bombay we are using the hardware clicker. So, the to remove that cost factor we implemented the web based clicker system which are based on the cache tabulates. So, that removing the cost factor. So, what are the basic different modules of that a cache clicker in that one is one module is called admin. This module provide the facility to add, edit, patch or delete the information regarding the student or regarding the quizzes. The main feature or the new feature which is added in this in this clicker system was raise hand like if student have some doubts. So, student can ask question that help of this Akash, Akash tab or Akash clicker. So, this raise hand provide the good way so that student can ask the questions or a doubt in a class or teacher can or a teacher instruction instructor can reply to these questions or doubt in a class or in a class during the class or after the class also. The next module is polling which is used to conduct a questionnaire about the which contain the information regarding the student feedbacks about the lecture. The next module is a question bank. The question bank provide the facility for adding and searching a question which is for conducting exams or quizzes. So, we can say question bank is our database component which contain all the questions and the responses which are collected after the students and the next component is for creating a quiz. It provide the facility for creating a quiz and fetching the question from the question bank. So, what are the limitation of Akash clicker or what we can say what are limitations or constraints in Akash clicker. One is that it lack in vocabulary of a scientific symbol. If you want to ask some numerical question which contain more scientific symbols it is not able it is it is difficult to ask such type of question handling. So, the next thing is that it require an internet browser to fast the clicker web application through URL. So, if internet connection is not available. So, this kind of system is limited for the system for the response system which is based on the internet facility. And the next we can say a constraint is that it work best in latest version of Mozilla Firefox and Google Chrome. It not work in Internet Explorer or the previous versions of a web browser. Also it is used for real time responses. If we want a responses like if the student ask question outside the class or instructor want to give reply to that answer outside the class. So, it is not possible for that purpose. So, it is basically supposed to supposed to support only a real time response. So, after this literature survey and about the about the web page browsers and other kind of clicker response system and the study related to the clicker implementing IoT Bombay. I come up with some motivation. So, my motivation is focus on the clicker system that can provide the more efficient way of communication between student and instructor. So, that like which can remove the cost factors which can remove the cost factor and improve learning using asking some kind of questions or like when some question is asked. So, like if we conducted exams. So, same type of question is asked to all the student. So, how can we rely on the reliant student that we will not do during the exam as the same question is asked for every student. This is the prime source of motivation like other source of motivation is that like if we ask if teacher conduct exam. So, during the exam if some student solve the question early and some student are not able to solve the question early. So, there is a time slot if student are not able to solve that question. So, there is a time gap between the early response and the late response. So, how can we utilize that response. So, that a student who solved problem early can not be reflected. So, this kind of discussion is a prime source of my motivation. Also there is a there is a some drawback like if we ask question in a large class. So, in a large class if we are using single access point. So, it will create some problem of connection failure or even in a even we use multiple access point. So, load balancing of that access point is also a major source of my motivation. So, I come up with some points like can we provide an interface which can generate different content to different student who the student will not do during the exam or can we enhance current quicker system. So, that active learning can be improved. What is mean by this statement is that can we give more type of data formats like can we provide the data like by which a student can give responses in terms of subjective manner like if we can ask question which is related to coding syntax or can we can we maintain the time gap between the early response or a late response. So, how can we implement this kind of theories or the large question is that can clicker support large class. If we have if the clicker support large class then how can we manage that class like if we are single access as I already discussed if we ask for single access point how can we remove the drawback of connection failure. My problem statement is that how can we solve the problem of gap utilization when one student solved quiz early and other not. It is possible using a solve and evaluate approach. What is this approach is like if some student solve problem are way. So, the student who solve problem can evaluate the answers of the other students. So, this approach was implemented by Mathias in 2009. So, we can implement this approach. Next thing is that how can we generate different content to different kind of user. So, this is possible using an application which was developed by which was developed by Newman in South Central. It is basically based on the zoo wiki content flow. What is that it is a framework which provides the different content to different kind of user at the same time or at different time. So, next problem is of connection failure how can we tackle with this kind of problem. If we ask a single access point then managing Wi-Fi connection is big hurdle or if when we ask multiple access point then load balancing is a big hurdle. So, the load balancing we can done the load balancing using a hiding SSID or we can load balance using the deadline mix ratio technique. So, finally, I come to the conclusion. The overall conclusion of my study is based on the based on the following factors. One is the utilizing the time gap can improve learning and by presenting different content to different kind of a student can show that student will not able to cheat during the exam or cases. And is it possible it is possible to block the other sides or down the server while like if we conduct quiz or exam when student will get the question we can block the other sides or we can down the server or that come on that time of time or that duration of a time and then again we set up a server after when student finished with their answer and want to send the responses or also it is possible to apply the load balancing algorithm for maintaining or managing the multiple access points. So, we can provide an interface for asking and producing programming language question in class like syntax or coding. So, next we can do in future like we can ask we can integrate tutorial into the application. So, the student can be able to browse the content of the source or the course material. The one thing I am thinking about is that we can implement the recommendation system for enhancing learning capability of a learner. So, I mean I am deeply thinking about this recommendation system like if in a class there are many students the student IQ is different from each other. So, if we ask like if we first ask same type of question to all the student some will not able to answer some will able to answer those who are not able to answer the system will provide other questions which are not tougher than the earlier question. Other student who solved the question easily we can provide the tough question thank you sir.


The supernatural is not selective. A scientist working in his laboratory, a housewife, bent over her ironing board. All these and many others have, at one time or another, been the central figures in mysterious events. And bewildering things have even been known to happen to a young man, hurrying to keep a date with his best girl. Leonard Wadham, a resident of Walworth, South London, was a respectable young man of regular habit. He was, like most young men of his age, in love. And on the evening of September 27th, he had called the object of his affection on the telephone to confirm an appointment. Five o'clock. Five o'clock in front of St. Benedict's Cathedral. Don't be light. How could I be light when I'm meeting you, Ellen? I'll be there at nine o'clock sharp. It was only a 15-minute walk from his home to St. Benedict's Cathedral. But just to be on the safe side, he started out at half past eight. When he was still several blocks away from the meeting place, he chanced to glance up. And he noticed the clock and the cathedral spire. Not quite a quarter tonight. They've only got a couple of more minutes to go. She's the one who's going to keep me waiting. Oh, I'm sorry, though. What's happening? What's happening to me in here? On this same evening, near the village of Dunstable, not far from London, patrolman Gibbons of the Dunstable police force was covering his feet. What's this? Same bloke standing right in the middle of the highway? Looks like he don't even know where he is. Intoxicated, I'll bit you, surely. Hey, Yobar! What are you doing in the middle of a fair, fair? Well, I... I don't exactly know. That is, I... You want to get hit or something? No, but... but officer, would you mind telling me where I am? I can tell you where you ought to be, home in bed, in your condition. My condition? You don't think I'm drunk, officer. I haven't had a drop. Then what is the matter with you? I... I don't know. Something happened to me. Something strange and mysterious like a landscape. It brought it out. The street and the cathedral and everything. What street? What cathedral? Sight Benedict's on South Waterbury. What? That's in London, ain't it? Aye, that's where I was. Well, you're not there now? You're in Dunstable. Dunstable? Aye, that's the remorse from London. But... but how did I get here? I don't remember coming near his door. Oh, it sounds like haven't easy up to date. Aye, that must be it. But how am I going to explain it to Ellen? I was to meet her at 9 o'clock sharp and here I am 30 miles away and it must be midnight. And what makes you think it's midnight? Well, it was just 17 minutes to 9 when I looked at the clock inside Benedict's... Wait a minute now. Take a look at this watch. Blimey! It's only 10 minutes to 9! It is not recorded whether Leonard Bottom was ever able to persuade Ellen of the truth of his story. If she was highly skeptical, it is not to be wondered at, for few women would be likely to believe that a man could be transported without his knowledge 30 miles in less than 7 minutes. And yet, if we accept the evidence that was conclusive enough to convince both the Dunstable police and the Great London Newspapers, those are the facts. Facts. Incredible but true.


When you're getting ready to record a video or write an article, who do you have in mind? I hope that you don't have anyone critical or negative in mind. I hope you don't even have your audience in mind, especially when you're just getting going and you're trying to unblock yourself and trying to create content consistently. Here is the tip I wanna share with you. Make your content for just one person at a time. In other words, have in your mind one caring person. Maybe it's a kind friend or a supportive colleague, a true fan, bring that person to mind and to heart. Before you start to record, before you start to write, think about that one person and your connection with them. In fact, you might even ask yourself, hmm, I'm thinking about this one topic. What question do you have for me? You can ask that person in your mind, in your heart, what question do you have for me about this? What might you wanna know about this? And then write your article or make your video. If you make your content for one caring person at a time, it tends to be much more natural for you to be authentic, to be conversational, to be less afraid, to be not afraid. So I got this tip from my favorite book on public speaking. One of the, a few of you have said over the years, oh, George, you seem really good at public speaking. Do you have any resources? Yes, I have one book for you. And that book is Be Heard Now by Lee Glickstein. Be Heard Now. And that book, I'll show you with the one tip, which is that when you're speaking to an audience now, of course back then he was talking about live audiences. Most of us speak to virtual audiences these days, but when you're speaking in a live audience, imagine yourself not speaking to the whole audience because then that's how most beginner public speakers do it. They're kind of just trying to take the whole audience in and it feels awkward and it's hard to look at everybody at once and it's intimidating. But instead he said, find one welcoming face in the audience and look just at that one person with, and just connect to that one person and talk to that one person for 15 seconds with whatever thing you're trying to say in your speech, talk to that one person for 15 seconds and then find another welcoming person in the audience, welcoming face and talk to that other welcoming face for 15 seconds and then just on and on. And by doing that, there's a magic that happens. The magic is somehow the whole audience feels your connection to that one person at a time. It's amazing because, and it's not a surprise because you know, when you are talking with one kind friend, when you're talking with one supportive colleague, you're in relationship, you're natural, you're authentic, you're connected, you are in response, you are caring, you're in response to their care for you. And so of course you're not going, you're not being afraid, you're trying to express what you really wanna express, you're trying to help that person. So do that same thing when you're on Zoom or when you're making a video looking at your camera lens. Do that same thing when you're writing an article. Don't think about your audience. It's certainly don't think about anyone judgmental but take a few moments to bring to mind and heart that one caring audience member. And then go ahead and create your content. I hope this is helpful. I wanna thank Lea here for sharing here in the chat. So I hope you'll use this tip and I hope you'll let me know how it goes as you use this. For those of you who don't know me, I'm George Cao, authentic business coach, I love helping people build businesses that feel genuinely connected to their hearts and to the hearts of others. I wish you well and go forth and create some resonant content because you're creating it for one caring person at a time. Take care.