 Hello, I am Nagesh Karmali and I have some four projects. So, one there is another project with Yogendra Pal and so, total 4 plus 1 5 I think right and so, he is Rajesh Kushalkar and one of the projects he would be also mentoring. So, that is that is the first one so, that is porting of C C plus plus applications onto the cloud. So, the idea is you have a C plus C plus plus application which will get converted to some intermediate code and then that intermediate code will be converted to Java JavaScript because JavaScript runs everywhere. So, there have been lot of quite a lot of applications which have been written using this fashion and we are looking for educational applications maybe like running SyLab, you heard of SyLab like MATLAB, SyLab, R applications or you know like anything which people use. So, maybe for commerce student that could be like a spreadsheet you know G numeric or something like that right. Something which people are used to on the desktop and if you provide them online which they can use it and they can learn from anywhere right. Today data is becoming cheaper and cheaper right. So, you do not have to have a desktop people are mostly having mobile. So, that is that is the impact we would like to see. So, as many people having mobiles they should be able to do something with such applications and so like you know we are targeting simulators and emulators and so it has to be LTI compliant. LTI is nothing but learning tools interoperability. It is about you know I can have an application embedded in some other application some other web application and I can have the access mechanism for that application which is embedded. And I can divert you know like for example if I want to say it is an assignment and a user has used this application which is already inside another application and the user is actually answering right you know somebody tells you to write a particular program and you want to write it using that application or it is already given to you. Then after being checked you know some data about you are like you have scored some marks or not or how many minutes you have been online you know such data can be fed back to the main application. So, using LTI it is possible. So, it is like you will not feel the user will not feel that it is a separate application it is a part of that application and you will never come to know that it is separate. So, like this you can give the same feeling that you have you know on the desktop it is a same application which goes online I think if he has something to add maybe he can. So, basically I would just like to add few points out here as you know there are a lot of applications for the programming like Python, C, Java and all these things there are a lot of online compilers and all these things are available. But what about some of the simulators there are a lot of simulators for electronics and all these things each are there but it is a desktop application. So, a lot of applications like what you are looking at open edx MOOCs so there the simulation mode is not available. If you see a simple circuit simulation if you can do it on desktop but if the same thing is available on the net how we can do it. So, there are a lot of open source free tools which are already available but it is a standalone. So, how we can convert those native C application so that it can be available on the web also. And then we found some of the LLVMs to JavaScript tools and all this thing which can do all this work which are basically a native C application and put it on the cloud. And the requirement of LTI is very simple of students submitting a circuit simulations or anything directly online. So, that is the main intention of this particular project. So, let us go to the second one. In this we are interested in say for example, using the commodity I mean just machines you know you can use any machine. If I have say 4 or 5 machines and if I want to see good performance from that machine and I would like to see that if I have say 4 today and if I just add 5, 6 and 7 later and I do not need to do anything I just have to provide the IP address to the underlying layers and it has to understand what to do inside. So, it is like resource aggregation and for that we are going to use OpenShift. I mean if you have heard of OpenShift that is fine. There is also another one which is OpenStack. OpenStack is actually an IAS it is like infrastructure as a service. So, what does it say is that it gives you an infrastructure that is how many no processor processing power you have. How many how much of memory do you have? I mean you can manage those things. So, I can say if I have this much of processing power I can say I need a virtual CPUs. I can derive virtual CPUs from those processing power that you have. I can say if I have 1 terabyte of memory, I divide I can say I want to allocate in small, small chunks maybe 2 GBH or 10 GBH. So, I can build a virtual machine. I can build a virtual machine. I can do so many things. That is the underlying layer which talks about managing the infrastructure itself. Like maybe IP addresses and networking this virtual machines and all those. And you need a platform as a service here. You need a platform as a service. So, have you heard about software as a service? What does it do? Gmail is software. Right. So, here we are looking at platform as a service because we have certain applications which are IIT Bombay X, you have Open edX, Moodle. You see we are concerned only with applications which are educational applications. And what we want to see is that can we allocate or can we look at some I mean when I actually deploy those applications, I need not worry where do they go. I just have to say that I give 5 virtual CPUs or I give sorry I give maybe at the Docker level. So, there is a containerization like a container. Docker is also like a container. So, we want to experiment with different capacity. So, do these applications need how much of processing power and how many users would be actually part of that. So, the first thing is to see that your platform has to scale. So, that those type of experiments will be performed here. So, we need to calculate capacity for such type of applications. Say for example, somebody comes and asks you that I need an application like maybe Moodle or Drupal or any of this and he says I have 50000 students or I have 50000 people. So, what is your calculation? How are you going to calculate? You should be knowing that if the load is this much I have I can say maybe 7 machines of this much configuration. So, that is the output of this project where you will be able to tell somebody that this much of computing power is required, this much of storage is required. So, all these things can be calculated. And the third one. So, here we are looking at so, again this is we are not looking at platform as a service, but we are looking at dockerizing certain applications like I mean one of the applications is Open edX, I mean IIT BombayX. IIT BombayX is a version of Open edX. So, I do not know whether you know about it or you heard about IIT BombayX, you heard about Open edX? Yes, you heard about Open edX? Yeah, heard about IIT BombayX? Have we taken courses on IIT BombayX? No. So, this just is another instance which we have even the same instance is been I mean has been deployed in various different countries. So, same Open edX and with a lot of changes you know the requirements that we need for our system here. So, which are little bit different than what Open edX does. So, those are the things which are being customized. Okay. So, here we are looking at if somebody wants a small you know you want to do it a single click you know you want to deploy it by just a single click and you need to know a lot of technologies here. So, here you need to know Ansible, I mean you can write it down Ansible, you need to know GitHub, you are familiar with Git, yes. So, you need to know Python, you need to know Django, you need to know what else Docker, I mean how to write Docker files. So, these are all the things much more than this you know I might be not remembering. So, much more than that you know in fact more important is how to. So, for example, if you want to say that I am given 7 maybe 7 VMs or something or 7 machines and I would like to say I have my application. So, IIT Bombay X actually has got like 40 VMs, 40 VMs, VMs is virtual machine, 40. But the problem with VMs is that I just have one VM and I cannot have another VM of the same type. You know I have to configure it. But Docker is a technology you can actually scale it. So, if you have one Docker you can say I can have a swamps of Docker. So, there is something called a Swam. So, you can say if there is a load which has increased then maybe you know the system itself decides 5 Docker, maybe 6 Docker, 7 Docker and like that. But you have to configure it. But you will have to see how that is scalable. So, we are looking at horizontally scalable systems here. The first project, how many people? Six people I think, six people but maybe five was what was declared later. The six was given the requirement then for the second project four people. The third project again six because here we want to do performance testing and then maybe two people would be involved only in doing performance of the system. And finding out how many users, what is the memory capacity, getting utilized, doing it to I mean what is the actual equation that has to be found out. I mean it is going to be like production ready. So, dockers which could be deployed in the production. So, production is something which I do not know maybe I will tell you something about. So, when you do development I expect I mean everybody would expect you to actually push changes on the on the grid. Right. So, normally I mean I have seen many people or maybe even there are some people who actually obey those things like even a small feature push it on to the grid. But there are some people who do not do it but which is bad. So, you have to push it on the grid and when you push it on the grid what happens? So, code is available, code is live. So, you have to actually do I mean you do not have to do it there must be a system which does all these things testing. The first stage is development. So, you develop something and then you go for testing. Both of this can go parallel actually if you have people who can test you can write code which is automatic. So, testing is much more difficult than writing code. Remember that. So, do not say that if you are going to write test cases means it is low level job. No. Testing is much more difficult than writing normal code. So, when you do this I mean you have what you say integration testing. So, the first thing so as a developer you are supposed to write unit test cases. I mean you are supposed to write unit test cases and other types of cases which you feel that my code is working. That is the reason it is not because you are you have to write because it is written somewhere. I have to write no because you have to make sure that your code is running. That is why you have to write. Then you have the integration test. So, in this case I you know actual open edX the branch which is there on Git. So, they are releasing every night you understand it is a nightly build. They are releasing 10 features 20 features every night. So, how do we keep in you know so how is that I mean we should not be lagging behind. So, can I have a parallel system which is going to you know build nightly by fetching those codes. We have to figure out what things will go where and then I can say when the new version comes I can still be ready with the latest release. So, there are many releases which happen and we want to see that once they release we also should be releasing at the same time. So, there are other branches which are to collect and you know. So, you see I have written that single click deployment. So, that means, there must be a script or there should be a script for using Ansible or lot of other commands scripting where you should be able to say whether it is A class, B class, C class code towards the end. So, am I ready for production? If I click if I try to go through the stages I should be able to figure out where am I right. I mean whether it is a gold standard silver you know bronze. So, I mean performance testing is one of them. So, it is not that I would not say that you just do performance testing and then say oh ok it is working. No, I can still run it again and again. I can see that means it is automated. There has to be something which is automated. So, you run something and say oh it is giving me this one used 50 million users. I mean you 50 million users can log in at the same time, but it is you who have checked it, but not everybody. So, there must be a script which checks that right. So, you should be in a position to write such scripts we say that oh 50 million users ok run it should work right something like that. So, there is lot of code to be written here I mean by the way I would like to know your motivation for doing internship Is it only for a certificate or writing lot of code? Ok. So, if you want to write lot of code then join. Then the fourth one android app ok. So, this is very straightforward. I am trying to see whether we can use any identity management like key cloak. Presently IIT Bombayx does not have single sign on ok. So, there are two problems here. One is to see whether we can achieve a single sign on using say additional centralized I mean kind of distributed identity access management ok maybe like key cloak or there are many actually. So, one of the protocols which Open edX is using is SAML you can write it SAML and we want to see whether the existing IIT Bombayx can have this open sign sign on integrated with other applications. So, there is some bit of code to be written and so like and then you have an android app where it will actually access the backend and you will have to you know customize it based on the requirement. So, one of them is one of the is like IIT Bombayx the front end so it is not just about front end ok. So, you will have to there must be smarter ways of doing things right I mean. So, you may have to explore it and so sign on will help us in saying that if I multiple applications I should be able to use any of them based on what you want to access right suppose you want to access your dashboard as a teacher or a dashboard as a student. So, there are two different applications presently they do not have a single sign on and if you have this single sign on capability then it will solve much of the problems. So, an android is what we are looking at the android app then this is our website I think this is already there right. So, Aruna must have already given you this link I think when you register on the portal you get to see a particular link or something like that projects have you seen projects any projects or you are not seen right they have no ok. So, this is a this is a wiki actually you may be able to find summer internship I think this is the place where you can there is very limited information, but I will be updating in the coming one day or two days time something like that ok. So, this wiki has lot of other resources you can even go through last year projects and many of those and there are I would I would expect not just you know you not just as a programmer I mean not becoming just as a programmer or like system level you know configuration. I would like to see if you can read some papers not difficult some of the things which have actually come in open edX or other recent architecture the way the things are built ok. So, those could be very prime to understand why things are built in that way and not the way we built 10 years back. So, certain links I would put up and there would not be much maybe like 5 or 10 for each or each of the projects something like that. What is I mean many a times I put like 30 40 and they are all lost how to I mean which one so I put only 5 or 6 or 10 ok. So, any questions here questions. So, actually there are lot of projects here you showed us. So, they are from particular means basically different streams or in which you will be working on one was from server side one was from android app development and some other things. So, how will you will be working only on one project. Yes sir will be working only one project. So, how will we be given chance to choose will we be given a chance to choose the project in which we want to work or will be given a project to work. No, I think it is your call. So, you have to choose and I think what see just becoming a developer just becoming a tester does not work well. So, you may have to know little bit of other things also so that you can communicate because if somebody speaking in Hebrew and you speak in another language. So, you have to know both languages is like that. So, you should know what is happening in deployment you should know what is happening in testing it is like that you should know scripting sometimes. So, why scripting is used. I mean why not Java use Java for deployment and why scripting is used what is the reason. So, only if you use it you will come to know how to what is up to you to choose you know what you want to be. There are ample of things that you can do in this project. I mean this project can go for 2 years and 3 years if I want to increase the number of features and if I want a world class product you know I can iterate and iterate and iterate and it can it yeah I mean lot of potential lot of potential you choose a group like this yeah not okay and then you choose after that I will you choose the group first and then you choose a project but I think if you have chosen a project then you are already chosen a group just like that right you choose a group because you want that project right but you are worried that if there are 10 people for one project then the competition is there okay yeah you should see that and that such competitions do not arise. Okay so the objective is to like for example if we take the open edX we have to have like on open stack we have to know the number of VMs so but that can be done using like benchmarks that is how it's done yes yes yes I'm looking for benchmarks so what is the like what is the process of I didn't understand the objective of the second okay the first thing is you know okay so first thing is playing with machines right so you would like to know what is the typical node size that you are looking at right do you want to say okay can you say that I mean your family with processors like atom processors atom atom processors okay so I have atom processor can I use atom processors what is the minimal configuration it depends on the atom processor so can I use tablets which can run servers I think a lot of there's a lot of work in doing that to find out so so so that is one thing but you are not looking at that so when you look at what is being deployed okay so you are essentially trying to instrument the system okay so presently can you can you by sitting here can you say that what is the configuration that I am looking at okay so what are the different components of the system okay you should be knowing those things right I mean you should be knowing you should be running some tests on the system to actually figure out okay so I mean the second in the third project they should sit together I mean and then they interact and like that okay so trying to put something like AWS is there a easy way out then please let me know you know what is AWS Amazon web service yeah trying to put something like like an AWS okay which is elastic and which can but open source yeah open open source yes yeah yeah so we have something which is running here is VMware and VMware is not open source and so we want to replace it with you know VMware is equivalent to open stack okay and on top of that I mean actually so I don't need even open stack you can do it by open shift okay because open shift does provide all of this technology so one thing is if you are going to do this project then you will learn lot of things about this technologies how to operate how to you know you won't do I mean you will have to write code it's not that you don't need to write code so why you write code what is the reason for writing code can you tell me no to automate right yeah something which is repetitive instead of you going there and firing commands not required you could dashboard big dashboard everything comes right so a lot of scope in writing right and something which is repetitive otherwise you don't you don't have to write code right and you want to be happy that's why you write core right something which you don't want to fire the same commands again and again and again right you want to write something which does automatically for you which tells you I mean you can use machine learning here inside I'm telling you but the only thing is how you will think and how we apply artificial intelligence or anything for that matter you can predict the workloads so many things are possible in the system any more questions okay thank you I mean you should actually go and read you know there are some good ethical guidelines and which is very important more important than writing code okay so if you if you are fine to be violating something like that I mean if you if you take somebody's work and plagiarize it not good okay so always try to give credits to somebody else's work okay no that hard working at least it doesn't apply this year no maybe just eight hours that's that was long back sorry I think we should change it to eight to ten hours not 12 to 16 and you can take yeah one or two days off maybe right two days off sometimes two days off and okay and there are some references I mean if you want to read you can in your free time and then I believe that you should have familiarity with this because anything to do I mean your mind has to work right so so these basic courses are more than enough we don't need to know advanced courses or if you are did you have functional programming no some you did which one and which language you used more of a generic course oh no you you have not used Haskell or any other so actually now why why it is there where did it go why here because I think industry is moving towards functional and there is a language which is very recently I mean people have been popularizing it if it is Scala and you can write in functional I mean does make more sense and I mean you have a lot of other things you know which it goes along with it's the way you write and and how the type system is you know there are no side effects and other things so that is one I don't know how I mean whether the industry is looking at see today if you are actually going to run I mean so maximum at many places you will find people are using Java and then there is a JVM there already sitting okay well configured so JVM exists right so wherever you go there is JVM Scala is supposed to run on that JVM and because it is all there so you don't have to do anything much you know everything gets converted to byte code and like that but the mindset you know the way you write code matters and in functional it's not the procedural way of writing and actually it has survived I mean if you see functional has survived and still it is life I would say it's not that the many languages they have died you know even if they were procedural now people must have heard about goals or go programming language right recent ones yeah but they come and they go they come they go they come they go and you don't know what is happening with them you know but Java is still there I mean you you see Java is still there so Java is there and Scala will remain and Scala enters people will write more functional code okay so there are there are other things I mean which you can okay so all all the projects will come over here and they will all be so if you want to go to 2018 or something you can change it right and then that's the main page where you can you can check there are so many things you know you may find your problems being solved here or something like that there will be a lot of this is a wiki which has been there for last more than 10 years so you can use it free open open source okay thank you