So, welcome back to the lecture on reaction mechanisms. So, we were working with the Hammett equation and we had looked at several parameters for the substituents as well as reactions. So, the substituent constants we had looked at the value sigma, sigma plus and sigma minus. And in the last lecture specifically, we had focused on examples of deviation from linear free energy relationships. So, typically you would expect that for a particular reaction, you will get a straight line plot. But sometimes what happens is instead of a straight line plot, what you see is you would see a curved plot and that is because depending on the nature of the substituent, the row or reaction constant changes. So, we had looked at two examples. One example where the change in the rate determining step leads to this deviation from linear free energy relationships. So, what happens is when you have an electron releasing substituent, one particular step becomes the rate determining step. Whereas, when you switch it to an electron withdrawing substituent, it is another step which becomes slower. The other example we had seen is when the mechanism itself completely changes because of change in the reaction mechanism. So, these were the two things that we saw. And now just to summarize whatever we have learned so far, what we have learned so far is that the Hammett correlation which uses benzoic acid ionization as the standard reaction gives you the substituent constant sigma.  And the reaction constant for a new reaction is given by rho. And this works best for reactions that do not involve conjugation with the aromatic ring. So, for reactions involving conjugation with the aromatic ring, a good standard reaction if you have negatively charged intermediate would be sigma minus where the standard reaction is phenol ionization. And here what you see is both resonance as well as inductive effect play an important rule. And here the reaction constant is rho. And if you have a positively charged intermediate, the reaction is standard reaction is phenyl dimethyl chloromethane dissociation. So, like an SN1 reaction and the substituent constant is sigma plus. And here again you see an effect which is contributed both due to resonance as well as an inductive effect. And here again the reaction constant is rho. We also studied some other variations. But what you would see is in all these cases, we were mainly looking at electronic effects of the substituent. So, essentially either inductive or resonance, but mainly electronic effects. So, can you have a scale which will actually tell you how the sterics of a substituent actually affects the reaction. So, this is what we will look at in today's class. So, now just as we had a standard reaction before like the benzoic acid dissociation, whenever you want to develop a relationship like this, you need to first find an appropriate standard reaction. In this case, the standard reaction is given below, which is the ester hydrolysis. So, when you think of ester hydrolysis, the reaction can be conducted in an acidic medium or a basic medium. So, the first thing I want you to do is, since we have also practiced writing reaction mechanisms, write the reaction mechanism for ester hydrolysis in acidic medium. So, here remember the medium is acidic. So, you will have protons in the reaction medium. So, with this information, I want you to press the pause button on your video and draw the reaction mechanism for this ester hydrolysis. So, we will draw the mechanism together in case you had trouble writing the mechanism. So, now the reaction medium is acidic. So, I will start with first my ester. So, in an acidic medium, the first step would be protonation of the C double bond O. So, what this protonation does is, it increases the electrophilicity at the carbon. Now, the next step is addition of your nucleophile. Remember the reaction is under acidic medium. So, you will not have OH- in the medium. So, what you will get is and then the subsequent steps, although those will not be of much consequence because this is your rate determining step. So, then what you would have is, you will have a proton transfer. Now, you are converting this into a good leaving group. So, once this proton transfer is done, you will have this coming in to give you the protonated product which would then deprotonate to give you the desired product. So, this would be the mechanism for the ester hydrolysis under acidic medium or under acidic conditions. So, now let us look at the rate determining step because we are trying to determine the role of the substituent. And let us assume now we are looking at the substituent at this position R. So, in the rate determining step, I have A going to B. Now, what is happening here is both A as well as B is protonated. So, if I have an electronic effect on A, say electron releasing or electron withdrawing R group, a similar effect will also be felt on B. So, if the energy of my reactant as well as my transition state is increased or decreased, it will not have much of an effect on the reaction kinetics. So, this is a very nice example where the electronics actually does not play much of a role at all in dictating the energy of activation or kinetics of the reaction. So, then what will play an important role? Sterics. So, this is a very nice example where if I consider the R group, sterics is actually very important, electronics is not. So, this equation or this reaction can be used for you to determine the effect of sterics. So, that is essentially what was done. So, if you do this reaction and here the standard reaction is the one where you have R is equal to Me. So, in the benzoic acid case, we were looking at an aromatic substitution. Remember, here we are not talking about substitution on an aromatic ring. What we are saying is that the whole R group essentially is Me. So, in the standard reaction we are looking at, all right. So, we are essentially looking at methyl acetate here. So, here this is your denominator and your numerator has kx where x is essentially different R groups. So, x is where you have different R groups. So, I am specifying this again because I do not want you to confuse this with the earlier examples we had done where we were only looking at substituents on the aromatic ring. Here we are talking about changing the whole R group. So, for your basic reaction or your standard reaction, you have R as methyl and then to look at the effect of sterics, what you do is you vary R. So, instead of methyl, you can have ethyl, you can have hydrogen, you can have phenyl. So, that is how you vary x. Now, log of kx over kMe gives you Es. So, based on what you had studied earlier with sigma. So, if you have a group which is bulkier than Me, what would that do to your numerator here? So, kx if you have a bulky group, will that be greater than or lower than kMe? I want you to think about this. So, again let us look at the reaction. You have A going to B and sterics is important that we have already seen. So, now if sterics is important, if you have large groups there, they will actually make it more difficult for your nucleophile to approach. So, large groups will actually lower the rate. So, just like where you have a traffic jam, if you have large substituents, it will be very difficult for your nucleophile to come in. So, what that would do is that would decrease the numerator here. Alright? So, if you have large groups kx would be less than kMe and if kx is less than kMe, what would that do? You would have Es which is negative. Whereas, if you have small groups, where small groups as in, you are comparing it with respect to Me. So, if you have groups smaller than Me, then kx will be greater than kMe and then you will have a positive value. So, you will have Es greater than 0. So, now that we have understood this reaction under acidic medium, can you also use this reaction to get the effect of electronics on a particular reaction such as this? So, to study the effect of electronics or to decouple the sterics with electronics, a very clever experiment was done. So, here what is done is, you consider the same reaction now under basic medium. So, now what I would like you to do is, I would like you to write the mechanism for this reaction under basic medium. So, you can go ahead, press pause button on your video and write the reaction mechanism under basic medium. So, let us see if you have the mechanism correct. So, I will start with R and then I have, so which is the most electrophilic center here, it is the carbon here, you have your delta plus. So, then you add OH- remember now your reaction medium is basic. So, you will not have protons, but you will have OH-. So, what you will get would be, so you will form this tetrahedral negatively charged intermediate and then once you form this intermediate, we will get your product. So, here your first step which is the attack of the hydroxide is your rate determining step. So, now let us look at this carefully. Now, in this case, if you compare R in the reactant with R in the intermediate, what you would see is the reactant is neutral, whereas your intermediate has a negative charge. So, this is similar to the benzoic acid case. So, when you have electron withdrawing R groups, they will actually stabilize the intermediate more than the reactant. So, will electronics make a difference in this particular reaction? Yes. So, electronics important. Now, what about sterics? So, even here since you have the R group close to the carbonyl group here, so if you have the nucleophile coming in, again the same traffic jam concept. If you have a large R group, it will be more difficult for the nucleophile to come in. So, does sterics play an important role? Absolutely. So, you will have both electronics as well as sterics playing a very important role in this reaction. So, now if you were to vary the substituent just like you did in the previous case, I do not want you to get very stressed looking at this large equation. I will help you understand it so that it does not look as scary. So, what we will do is if you have, so let us look at each term. For now, I want you to neglect the first term which is 1 divided by 2.48. This term here corresponds to log Kx over Kme in a basic medium. So, for the reaction above in basic medium if I do log of, so this will give me sterics plus electronics. So, this is in basic medium. So, the first term you get from the reaction which is shown on the screen in front of you where you talk about the reaction happening in basic medium. The second term here after minus is for the reaction under acidic conditions. So, this deals with only sterics and this deals with sterics plus electronics. So, if I subtract these two terms what is the effect that you get? It is the electronic effect. So, again I will repeat in basic medium you have sterics plus electronics. So, I will call it S plus E. In acidic medium you have only S which is sterics. So, when you subtract basic and acidic what you get is only the electronic effect and that is what is given by sigma star. So, sigma star gives you only the electronic effect which has been gotten by subtracting the Kx over Kme in the acidic medium from the basic medium. Now, let us come to this factor of 1 divided by 2.48. Why this has been added is when you compare all the values, so we have the scale right for the substituents the sigma scale. So, we want these this electronic effect sigma star to be comparable in magnitude to that obtained from the Hammett equation.  Now, in the case of Hammett you have the substituent attached to the aromatic ring. So, it is farther away from the negative charge whereas in this case you have the substituent right there close to where the charge is being generated. So, so that both these sigma values are comparable a normalization factor of 2.48 is added. So, which is why the value is divided by 2.48 to give you sigma star. So, that you can put all these values in a single table the sigma sigma plus sigma minus and now the sigma star alright. So, again I will give you a summary before we move on to see how we can use this for any reaction. Remember we are still at the standard reaction which is similar to benzoic acid dissociation. So, here the standard reaction is hydrolysis of an ester in the basis reaction you choose R is equal to Me. So, you have R is equal to Me which is in your denominator. And this reaction can be done in an acidic medium and a basic medium. So, to get the constant which corresponds to sterics you look at log kx over kMe in acidic medium and if you want to get both sterics plus electronics you look at the reaction in basic medium and to just extract the electronic effect for the substituent you subtract acidic from basic. So, now we have looked at the standard reaction for getting an idea about sterics. So, now that you understand the steric factor Es and sigma star which is the electronic factor let us see if you can predict some of these values. As I have told you before you need not know the exact value but you should have an idea about the trend. So, as I told you the basic reaction or the standard reaction you are looking at is where R is methyl. So, let us look at the first case where you have R is equal to hydrogen. So, in terms of sterics you have to think of whether hydrogen is smaller and or larger than methyl the same thing you do for each of the other substituent shown here. As a hint I have shown you the value for ethyl so that based on that you can predict the values for the other substituents. So, go ahead and try to do this exercise you can press the pause button on the video and work on it. So, alright let us start with hydrogen what will the value for hydrogen be Es will it be positive or negative?  Now, since hydrogen is smaller than methyl the reaction will be faster when you have hydrogen. So, Kx over Kme would be a value which is greater than 1 which is why you will get a positive value. Now, what about isopropyl? Isopropyl is bulkier than methyl so Kx over Kme would be a fraction value. So, if you take log of that you would get a negative value and it would be more negative than 0.07 which is given for ethyl here. T-butyl now as you know T-butyl is known to be super bulky so you would see a much larger value it is minus 1.54 so it shows you how bulky T-butyl is and how small hydrogen is. Now what about the benzyl group? Benzyl group comes out to be somewhere between isopropyl and ethyl remember in benzyl you have a CH2 whereas in isopropyl you have CHMeMe. Now phenyl this is very surprising for this particular reaction what is seen is that phenyl is found to be even more bulky than T-butyl. So this is not always the case but in this particular reaction what is seen is that phenyl group appears to be more bulky than the T-butyl group. Now the electronic parameter so this would be similar to the Hammett trend when you have hydrogen so if you have hydrogen here instead of methyl what you would have is methyl is more releasing so what you would have is you have hydrogen being better because it increases the electrophilicity of your starting material. Now after hydrogen if you have isopropyl in the case of isopropyl compared to ethyl what would it do or compared to methyl? It would be slightly more releasing which is why you have a negative value T-butyl again slightly more releasing so you have a more negative value and then benzyl and phenyl would work better than methyl which is why they have positive values alright. So this is a very good example of how one can use the simple ester hydrolysis reaction to get both electronic as well as steric factor. So the Taft equation is the only one where we look at the effect of sterics on the reaction. Now if you have a new reaction so your basic reaction is the one where you had the ester hydrolysis of methyl acetate. So now for any given reaction if you want to see how the reaction behaves in terms of the steric parameters and the electronic parameters you have an equation your Taft equation which says log of Kx over Kme is given by rho star sigma star plus delta Es. So essentially for any reaction you compare it with R as Me and you see how it correlates with sigma star for the electronic parameters and how it correlates with Es to give you how the sterics has an effect on a particular reaction. So now again just to revise log Kx over Kme the steric factor Es is given by the reaction under acidic medium the ester hydrolysis reaction whereas your sigma star is obtained from this equation that we had seen earlier from ester hydrolysis under basic medium. So what can be done is for any new system or a new reaction you see how it correlates with sigma star and Es if there is a correlation with sigma star you know that electronic effects are important for the reaction if it correlates with Es you know that sterics are important for that particular reaction. So just to give you an example so that this makes more sense to you let us look at the free radical reaction. So here you are taking an alkene or an olefin and a free radical so we can think of halogenation X dot reacting with the olefin to generate a new radical. The position where the X has come in so we will call this as the alpha position and then the position right next to it we will call as the beta position. So now if you have a terminal alkene and you are doing this reaction so what you will get is you can have two possibilities or we have done similar examples earlier. So you are looking at generating a primary versus a secondary radical so this is more stable further what is seen here is that. The effect of R is pretty pronounced so the R groups can actually stabilize the radical so if I were to look at this the R group would have a very important effect here okay and the effect would be mainly electronic. Now let us look at the situation I have shown you earlier now suppose you have where you have substituents on both sides.  So what we need to figure out is does sterics play an important role in this case. As you see in this case you have two R groups so the effect of electronics is similar at alpha and beta position correct because you have two R groups at both sides. So electronics will not play a major role in deciding regiochemistry for this particular reaction because you have electron releasing groups or electron withdrawing groups at both positions. So when you have a situation like this sterics can actually play a very important role in deciding what is the regiochemistry of the product. Now if you think carefully if I compare alpha position versus beta position where do you think sterics will play a very important role will it be alpha or beta position. Sterics actually plays a very important role at the alpha position. So here for this particular reaction the value of delta was determined. So if you look at the previous slide delta gives you correlation with ES alright. So here you are looking at how it correlates with ES. So what you see is at beta position the correlation is very small in magnitude it is 0.28 but at the alpha position you have a very large correlation of 1.4. So what that tells you is that at alpha position sterics plays a much much more important role than the beta position. So here you can use the Taft equation to actually correlate at the two positions to determine what would be the regiochemistry for the product. And this can be done both looking at sterics and electronics. In this particular example sterics is what plays a very important role. So this is an illustration of how you can use the Taft parameter. So what we have studied so far under linear free energy relationships is we have looked at the Hammett equations sigma, sigma plus and sigma minus and these are again the standard reactions for each of these and all of these tell you important information regarding how electronic effects are seen due to change in substituent. So only electronic effects are mainly seen for these equations. Today I have introduced you to the Taft equation where you get a substituent constant ES which solely tells you the effect of sterics and the reaction constant here for sterics is given by delta and here you have steric effect. So this shows you how you can use linear free energy relationships very nicely to give you an idea about how a particular reaction behaves by changing its substituent which in turn tells you a lot of information regarding the nature of the reaction intermediate or the reaction transition state. So just to illustrate how LFER can actually be used to even understand biology or can be used for important applications is shown here you have the structure of vitamin B12. As you can see it is a very large molecule and looks quite complicated right, it is really big. So now what scientists have tried to do is they have tried to use this small molecule it is called cobalt oxide to imitate or mimic this cofactor of vitamin B12. This part of the vitamin B12 is its cofactor which has the metal. So this molecule has been used to imitate the cofactor. Now if you look at the structure very carefully this is actually not a cyclic molecule it is an acyclic molecule which is coordinated with this cobalt and due to hydrogen bonding interaction it gives you a feel of the cyclic molecule seen here in vitamin B12. So isn't this quite clever where scientists have used a small acyclic molecule which can essentially hold hands with each other to give you a cyclic structure which looks like this large molecule here. Now what scientists wanted to see is they wanted to see which would be a great mimic for vitamin B12. So what they wanted to do is they wanted to see how the R group has an effect on the properties of cobaloxam. And this in turn would give them some idea about the effect of R group on vitamin B12. So what they did is they crystallized different molecules where the R group was varied. So you must have studied what crystallization is right. If you take salt and convert it to a crystalline form that process is called as crystallization. In biomolecules and organic molecules what is done is if you are able to get an organic or biomolecules to form a crystal you can actually get almost a photograph of that molecule to show you how the molecule looks in the crystal or in the solid form. So what was done is different crystals were made of molecules where the R groups were different. And once you have a picture of the molecule you can measure the distance between this R group and the cobalt center. So what was done was the CO R distance was measured and also what was seen was because of this R group how much the CO group goes out of the plane of this linear molecule. Remember we are trying to mimic a cyclic molecule so they wanted to see by changing the R group how much the CO is pushed out of the plane. So what they did is for each of these crystal structures they correlated the CO R distance with sigma as well as ES using the Taft equation. So what they found was that the CO R distance correlated with sigma. So that mainly indicates that the CO R distance is affected mainly by electronic parameters. But what was seen is that how much CO is pushed out of the plane correlated better with ES indicating that it was more of a steric effect. So what was seen is that one could use the Taft equation to figure out a very important property of these cobalt oxides. And what is even more interesting is so far we were talking about rate constants right we were seeing how you vary Kx over Kme but in this particular example a correlation was seen using static images or photographs of these molecules. So using static images also you can draw linear free energy relationship. So this is an example of its utility in biology and we will stop here today and in the next class we will move on to see how solvents can have an important role in understanding or understanding the reaction mechanism and also improving the efficiency of a reaction. Thank you.


Hi and welcome to the session. My name is Chachy and I am going to help you with the following question. Question is, solve the following pair of linear equations by the substitution method. Equations are 3x upon 2 minus 5 over i upon 3 is equal to minus 2 and x upon 3 plus y upon 2 is equal to 13 upon 6. Let us start with the solution now. Multiply in both sides of the given equations in the question by 6 we get 9x minus 10y is equal to minus 12 and other equation would be 2x plus 3y is equal to 13. Let us name these two equations as equation 1 and equation 2. Now from equation 2 we get the value of x equal to 13 minus 3y upon 2. Now let us name this equation as 3. Substituting the value of x from 3 in equation 1 we get 9 multiplied by 13 minus 3y upon 2 minus 10y is equal to minus 12. This implies 117 minus 27y upon 2 minus 10y is equal to minus 12. Multiplying both sides by 2 we get 117 minus 27y minus 20y is equal to minus 24. This implies minus 47y is equal to minus 24 minus 117. This implies y is equal to minus 141 upon minus 47 minus n minus sign get cancelled and 473 that is 141. So we get y is equal to 3. Now substituting this value of y in the equation 3 we get x is equal to 13 minus 3 multiplied by 3 upon 2. This implies x is equal to 13 minus sign upon 2 which implies x is equal to 4 upon 2 or x is equal to 2. So our required solution is x is equal to 2 and y is equal to 3. Substituting x is equal to 2 and y is equal to 3 you can verify that both the equations 1 and 2 are satisfied. Hope you understood the session. Goodbye and take care.


Before we start, let's do a quick show of hands. How many of us believe that continuous integration, C.I., is an integral part of the development process? Please raise your hands up. Okay, cool. Keep your hands up if your C.I. takes less than 30 minutes to produce stable build artifacts after running all the available tests. That's nice. What about 15 minutes? What about 10? Wow, cool. So we have at least two people here who can help us out if you have any questions. If you have any questions, you can reach out to them definitely. In our case, though, around 10 to 12 months ago, our C.I. system used to take around 60 to 90 minutes to produce stable build artifacts after pulling the code, building the code, and running all the available tests. Now, that's a pretty slow time there. And it used to get really bad if the test failed because while the prior build was running, multiple developers would commit their code, and now to go and isolate which commit actually caused the problem and then to fix the commit, it would take four to five hours to get the next set of stable build artifacts. And you can only imagine a situation when there was a mistake in isolating the problem or fixing the problem. It used to be much more longer. Now, clearly, the team was not happy about it because our ability to get quick feedback, to quickly learn from it and to take a course correction, that was getting impacted. Now, having these long-running build cycles also had a specific developer behavior impact. They were discouraged from committing their code frequently because if they commit their code frequently and the build fails, then now they have to spend their time making sure that whether they were the cause of the problem or was it someone else, so it's a waste of time. They were also afraid of committing their code during evening times. You can imagine, right? If I commit my code during evening and if my build fails, my entire evening is lost. So they'll prefer to keep their code on their machines and come next day morning and then commit their code. Now, that leads to other problems. Like, the longer, the more away you are from your repository, it takes longer time to integrate the code with the repository. So it's a waste of time. And God forbid the hard disk crashes when your entire efforts are lost. Now, these are profound business impacts. But apart from these business impacts, there are also some social impacts. Like me, has anyone been in a situation when you had to stay back late night to integrate your code with your colleagues just because your CI system does not exist at the first place or your CI system takes longer time to run? Anyone? Okay, cool. Okay, have you been in a situation when you had to rush back home living behind an unstable build so that you don't miss the dinner with your family or friends? Okay, this is how your colleagues would be looking and pointing at you when that happens. Or have you decided to stay back, make sure that the builds are successful, all the tests are passing, the build artifacts are produced so that your colleagues are happy and not pointing fingers at you? But now, worst, you have to hear your kid cry and say, dad, you're late today again. Are the situations familiar to you? Are they acceptable to you? Understandable. Understandable, okay. So those are not acceptable to me. Like, you know, I didn't want to be in that situation and that is what led me on my quest to reduce our CI build time. Now, this is how our new CI pipeline looks like. That's the first build. It is triggered whenever the code is committed. The only thing that it does is it pulls out the code. Once the code is pulled out, it will trigger the next build. That's our build job. It has the responsibility of, you know, building the code and producing the build artifacts. It could be the war file and the database artifacts. Once the build is done, it triggers two jobs in parallel. The very first one is a deploy job, which picks up the artifacts, deploys the artifacts in their integration environment, and on top of those, on top of that environment, it will run two type of tests in parallel, one of the BDD tests and one of the REST tests. And the other job that you see here, that's again a testing job. What it does is it runs a lot of tests in parallel, which are not dependent on the environment as such. And now overall, we have come down under 10 minutes. And what we are going to see now is, like, you know, how we have actually done this, what principles of REST tests should do this. So let me call him Naresh to actually talk about the key principles here. I think the slide is pretty self-explanatory, so there's not much I need to do, but let's see. I think there are many principles, but if you look at it, I would say there are broadly, you can classify into three core principles. One is basically, you need to identify the bottlenecks. What is the biggest bottleneck and focus on the bottleneck, right? They are always trying to optimize the bottleneck. So key techniques, the first one is to focus on bottlenecks in your build and try and isolate where the bottleneck is. Once you've got that, then you basically figure out how you want to divide and conquer the problem, right? If this is your biggest bottleneck, how can I put things in place so that I can divide and conquer the problem and take it into smaller pieces? Once I've done that, then I want to basically focus on fail fast. I want to set up my build pipeline such that I get feedback as early as possible whenever there is anything that goes wrong. So those are the kind of three broad categories, and next we are going to go into each of these and talk about specific techniques that we have actually used to speed up our build time from 90 to 10. So before that, a quick commercial break. I'm Ashish Parkey. I'm very passionate about solving business problems. I'm working for ideas, a SaaS company. Both ideas and SaaS are into analytics, and at Ideas, we help hotels and the car parking to increase their revenue. Yeah, I'm Naresh Chin. I work at Ideas Alternative Weeks, and we've been helping kind of a whole bunch of things. Build is one part. We have developers with clean code with various other practices. So kind of really focusing on bringing agility in the organization without using the word scrum. Cool. So let's have a look at the first principle, focusing on bottlenecks. Now in your experience, what are those elements or entities in the system that lead to a lot of bottlenecks in whatever systems you have worked with? Any examples that you can cite? Sorry? Yeah, but what leads to it? What leads to it? What leads to it? If you actually go down, right? If you were to focus on the bottlenecks, right? Keep drilling down. What is the things that actually lead to bottlenecks in your business? Remember? Tests. Okay, tests. Why tests? That's our goal actually, reducing the time itself. Why tests are slow? Like keep asking why, till you keep going down, right? Why are tests slow? IO. You're saying database, when it hits database, then your test becomes slow. But when it hits database, why is it slow? It's basically because of the IO, right? So if you were to drill down, IO is one bottleneck, right? That's one aspect. Any others? So configuring environment, which is basically setting it up and bringing it up, right? That takes some amount of time, okay? I mean the knowledge of the people, one of the point I noticed is the knowledge of the environment setup. Like they have put so many things on the server, like not only it's been catering for a build server, but so many other things which is not necessary to be that part of the build server could have been different. So your CI server itself is not getting the CPU and the memory that it needs because other processes are hogging that, okay? That's an easy one to resolve because you know, I think you were saying something. That could lead to increasing time, but I think where you need to further go down is you know, even if I ran my test sequentially, if they were fast enough, I don't care. I mean it would get done really quickly. The problem is that it's doing one of these things that other people have highlighted, like IO and things like that, which is where they are becoming slow. And then running them sequentially makes it even more slower. So in my experience, like you know, disk IO is one of the primary causes of any of the slowness that you see in the system. So if your tests are dependent on a lot of, let's say as an example, file operations, reading files, writing files, reading files, searching files, the tests are going to get slow. As you also rightly pointed out, if the tests are heavily dependent on the database and they're reading and writing continuously from the database, the tests are going to get slow. So these were very obvious problems for us to look at. So we started going through our build scripts and our Jenkins configurations to see if we have something obvious there. And that's where we came up with this, we identified this problem. This is how our earlier build pipeline looked like. The first job which would pull the code, build the code, produce all the artifacts, and the next set of children jobs which are responsible for running the tests. And all these children jobs, they actually required the parent workspace so that it can actually use the artifacts which are produced. Now, when you create a new job in Jenkins, what it does is by default it creates a new workspace for that job. So, naively what we had done was we actually, in every children job, we deleted the workspace and then we copied the workspace of parent there. And that's how we replicated the jobs and we had these file jobs running in parallel. And our parent workspace turned out to be 3GBs. Now, what happened was every time the builds were running, we were unnecessarily going and dropping all the files which are available in the child workspace. And then we were copying the 3GBs of data from the parent workspace. Now, that was taking unnecessary time and that was a very low-hanging code that we had to deal with. That is where we came across one utility by Microsoft. That's called mklink. What it does is it helps you create a shortcut between two folders. So, now I can create a shortcut between my child workspace and my parent workspace and that way I don't have to drop anything or copy anything. That saves me a lot of time. Eventually, we also found that Jenkins itself provides you a custom option or an advanced feature where you can go and say that you can customize the workspace and say that use a parent workspace as your own workspace. And, you know, that saves a lot of time. Another thing that we discovered while we were going through our build script was that there were multiple visdals that we had in our system and those were static visdals. And with every build, we were generating jar files out of those visdals. Now, doing this activity as part of the build process, it was not really necessary because, you know, every time we were taking a build, we were taking that hit of creating jar files. So, we switched away from it. Instead of creating jar files every time we checked in the jar files, we were using ant, we're not using maven, so that was the option that we went with and that saved us some time. As I mentioned earlier, like, you know, Ideas is an analytical company and what we do is, we do forecasting for the hotels. And in this particular one case, one test was running pretty long and after scanning the log files, what we discovered, that particular test was running forecast for the next 10 years. Now, in the context of that test, running forecast for 10 years was not required and you can imagine, right, when we are talking about running 10 years of forecast, then it deals with a lot of CPU, it also deals with a lot of IO and that was a wasted effort. That was an integration test. All we got to make sure was that from Java, we are making a call to one of the services and the service was actually doing the forecasting and was returning back with the results in the database. So, in that context of the test, we were not going and really checking if the forecast was accurate for the next 10 years. That was the scope of the test. So, it was just an integration test. So, within that context, we decided to bring down the number of days for which we are doing the full cast. We brought it down to 15 days and that saved us a lot of time on that specific test. No matter how much we tried, we still landed up in situations where we still had to use IO. Our goal was to eliminate file IO operations as much as possible. But there was one test which relied on a pre-populated database. So, deleting the earlier database, now copying the newer database and then running the test. That is where our DevOps guy came and told us, have you used RoboCopy before? And I was like, no, I don't know what RoboCopy is. That's what he told me. RoboCopy has a feature. What it can do is, if you have a source folder and a destination folder, it can only copy the differences. So, let's say a new file has got added to source. It will only copy that file. Let's say out of 100 files, only one file has changed. Then it will go and copy only that one file. So, instead of blindly going and dropping everything and copying everything, RoboCopy again helped us save a lot of time. And arcing is the unix or the Linux equivalent of RoboCopy. Now, if you're not able to actually reduce your IO timings or disk IO timings, the other alternative is going for SSDs. Now, as you're aware about, SSDs do not have mechanical parts the way and hard disk has it. This is a sample comparison I have and what it shows is the number of IO operations that are possible on a standard hard drive and an SSD. And you can see these numbers are much, much higher on an SSD. But this is how I'll imagine an hard drive and an SSD. I'll imagine a hard drive like a single-end highway where you can start seeing the bottleneck. Whereas I'll imagine the SSD as a five-end highway where my entire traffic can zoom through. Now, SSDs are expensive than hard drive. And in our context, our Jenkins environment was hosted on a virtual VM. And this virtual VM was part of a virtual server. So what it meant was I had to, you know, buy an expensive SSD so that I can fit it into the server that's available. And that also meant that I had to go back and, you know, make budget changes, take a lot of approvals. And I didn't want to get into it. So I started wondering, you know, what else can I do? I can't use SSDs immediately. I can start doing. And that's where, you know, we thought of, you know, checking if we can use, make use of in-memory database. And we are using MySQL in our company. So the obvious choice was the memory engine of MySQL. Now, as the name suggests, this engine is not residing, or this database is not residing on the file system. This database is residing in the memory. Now, memory I.O. is much faster than the disk I.O. So we were hoping that using a memory database would reduce our, you know, speeds very much. But we immediately discovered that there are, you know, limitations with the memory engine of MySQL. Like it doesn't support a couple of data types that we are using from the MySQL engine of MySQL. So we couldn't really use this particular. Also, this would solve the disk I.O. problem, but not necessarily the process. I mean, it's still out of process. Yes. So you still have to take a socket connection. Yeah, technically. So it's not going to give you that huge an advantage, basically. Correct. So like blobs and text, long text, these are not available there. And our analytical engines, they make use of those particularly blobs. And then we came across HyperSQL. Now, as Naresh mentioned, HyperSQL can be installed and used as only in memory or in memory and in process. It has both the options. But what happened was like, you know, we have this product in the market since 2002. We are into software as a service world. So we govern what kind of databases we want to run. And we have been using MySQL since then. And like, you know, a lot of our queries over a period of time have got very native to MySQL to make use of the flexibility provided by MySQL and the performance provided by MySQL. So it was not possible for us to actually change our code just so that, you know, I can put the database into memory or HyperSQL is not supporting all the MySQL native MySQL queries. So our search continued. And like, you know, we came across H2 database. Now, this H2 database has a MySQL dialect. And it supports not many MySQL queries, not many native MySQL queries. But it still didn't support a couple of queries that again we are using, like insert, ignore into or insert on duplicate. So these are not supported by H2 database. So, you know, our search continued. And then we came across MemeSQL. Now, MemeSQL is supposed to be wire compatible with MySQL. What it means is I can simply make use of, I mean, I can put my database into MemeSQL and I can run it and everything is going to work fine. All my native queries are going to work fine, too.  So we went ahead and we thought we'll download MemeSQL and we'll start installing it. But again, what we discovered that MemeSQL is only, you know, it can be only installed on the Linux machine. Now, our entire Jenkins infrastructure is on Windows. Now, just so that, like, you know, we have this advantage, we didn't want to introduce another, you know, another machine in our infrastructure which is not native to what we are doing there. Now, we went through so many alternatives, with every alternative we thought we are almost there, but, like, you know, we were still a bit far away. And I started wondering, like, you know, what next? All I wanted to do was use my own MySQL database. I don't want to change my code at all, so that it runs in memory. And I wanted to run it fast. So, you know, I started wondering if I can do something by which I can put the same database in memory and start using it. And to my surprise, I actually came across something called as RAM drives and a software called as SoftPocket. Now, what it does is, let's say, for example, if you have 32 GBs of RAM, then a software likes SoftPocket, it can actually carve out, let's say, 4 GBs of RAM and create a file or create a drive out of it. So, for all practical purposes, for all the applications running on a machine, the drive will seem like any other normal drive. The only difference is it's not on the file system, but it's there on memory, right? So, it would have run very fast. Now, these are numbers that I have. Like, if you remember the SSD numbers, these are way higher, like, these numbers are way higher than the SSD numbers. This is how I'll imagine a RAM drive.  And I was pretty excited, right? Because now I didn't have to worry about the native SQL queries that we have written. All we had to do was port mySQL on that particular drive change, my.nl settings, run my tests, and things were going to work fine. And that's exactly what I did, and I was disappointed. I was disappointed because, like, you know, it did not work. The timings did not go down. And, you know, I started wondering why. Like, in theory, I was right. The disk IO is slow. We were having many test cases that were going and hitting the database. They had to be slow. And still, you know, there was no impact. And the only hypothesis that I could make out of it was just maybe, just it could be possible that maybe the traffic that I was thinking, the disk IO traffic that I was thinking is not enough. So no matter how many lane highway I create, it's not going to help me. So the next question was okay, not that disk IO was the problem, and that's not the problem, then what else could be the problem? And that is where we decided to do some CPU profiling. So we decided to do CPU profiling of our test cases to identify where the bottlenecks are there in our system. Now, the image that I have here is from a plug-in called as JVM monitor. It's an eclipse-based plug-in. And what it shows you, two things here. One, the time that the particular method took and the number of times it got executed. So now that gives a decent idea into what's happening with your test cases. And we actually came across a lot of insights that we had never thought of. We never thought that some of the problems that we had in the code were actually there. So this was our first insight. What we discovered that we were using resource bundles, and the resource bundles were checked in the jar files. And when the resource bundles are checked in the jar files, whenever that resource bundle was required, we were going and scanning all the available jar files to find out that resource bundle. Now, that's an expensive activity because, again, the disk IO is coming into picture. So the database IO, I thought database IO was a problem, but the problem was somewhere else. The problem was disk IO in terms of searching files. So the option that we had was to read the resource bundle for the first time and then cache it. So that solved our problem. How many of us are using spring here? A couple of you, okay. So spring context loader, that's another thing that takes a lot of time. So every time the spring loads its context, it has to initialize all the bins available. And many of our test cases were initializing the spring context with every run. And it was taking around five seconds to 10 seconds for loading that spring context. But when you start talking about thousands of tests, certainly the time is huge. And that is what we wanted to get rid of. So we had to refactor all our test cases so that it makes use of the spring context. And that again helped us saving a lot of time there. This was another discovery. Like, you know, in our test cases, we were sending out a lot of emails. And in the context of the specific test, we were not really going and checking if the emails are sent correctly or not, whether the subject is correct or not, tool is correct or not. That was not the scope of those test cases. But just because in the flow, the mail is sent correctly, the test is sent correctly, the test is sent correctly. And in the flow, the mails were getting sent. We were not even aware about it. And again, CPU profiling highlighted that, you know, it is taking time. Sending out email also is an expensive operation. So we decided, okay, we started finding out all such activities that are not necessary to be run in the context of those tests. And we started eliminating. So if it's a test environment, then we got rid of, you know, that particular activity. It's horribly slow. And in our analytics, we are using a lot of the calendar APS to, you know, to do data arithmetic. And what our profiling showed was, like, let's say, 87% of the time in our process was actually spent just doing the data arithmetic, like adding data, subtracting data, you know, comparing data. Now, you know, I couldn't even imagine that there was a problem with our code. Now, if you think, like, we started actually profiling our test cases, but where we landed up was our production code as well. So our test cases are also slow because of some of the components that we were using in our production code. And, you know, this not even, not only, like, you know, was impacting the test runs, but our production batch processes, those were also getting slower because of this problem. So we switched to using Yoda datetime library. And we also started using so that those are working as per expectation. And using Yoda and the deprecated data API, we could bring down that date arithmetic calculation by around 93%. So that was a huge saving that we got. And not only our test, but our production was also getting impacted by that. So we are getting huge benefit on production. How many of us are using Ant? And, okay. So, yeah, we are also still using Ant. And Ant has this option called the two options that Ant has. Now, fork option, when the fork is yes, it indicates Ant that whenever you are creating a J-unit or whenever you are running a J-unit, create a VM for it and then run the test under that VM. Now, if you have not provided the second option, fork mode, the default parameter or the default option of fork mode is per test. What it means is if you have thousands of test cases or test classes for every test class, it's going to create a new VM to run the test cases. Now, again, that's pretty slow, like creating VM so many times. It's very slow. Also, we talked about caching earlier. If you're creating VM per test, then the caching is not going to work. After this discovery, we changed it to fork mode once. And now it creates the VM only once and runs all the tests within that one VM. That started saving this time. This is actually a classic antipattern. You'll see a lot of people recommend that you use fork once. Sorry, fork. You leave the default option so that you can fork and run things in parallel. But what you're losing by doing that is all like Ashish pointed or all the caching and everything. You're losing the advantage of that. This is actually a very bad practice to fork per test. It's better to fork once. Yes. While we were doing CPU profiling, we were still finding that the tests are running slow and we were trying to figure out where. The real profiling did not give that output. But while trying to think about where the problems are, we came across this particular option. If you're just mevan, mevan also has similar configuration. But I think that by default, it forks only once. So let's look at the second principle, divide and conquer. Now, in this world, we have powerful machines. They have a lot of CPUs and every CPU has a lot of cores as well. So the next goal was how we can break down our problem into smaller problems by which we can make use of CPU as much as possible. And if you... This is how the new build pipeline looks like. I talked about multiple jobs running in parallel. So what we have done there is instead of creating one big job which runs all the test cases, we have split down our test cases into multiple jobs which can run in parallel. Now, once you do that, that starts utilizing as many CPUs as possible and as many cores as possible. It speedenups the entire process. There is another option. Jenkins itself has an option of deploying it in master and slave configuration. So if you do not have powerful machines, but if you have many machines, what you can do is you can have a master and you can have multiple slaves and now you can distribute the job across those multiple slaves and run the test. That's again going to save a lot of time. Now, what we talked about here was either using creating parallel jobs or distributing it on different machines. But there is another option. There is a concurrent generator written by Matthew and what it does is let's say if you have a test case or test class which contains 10 scenarios and if those 10 scenarios are actually the test cases are supposed to run in isolation and if that's how your test cases are then using this particular runner, you can run again those tests in parallel. So one test class, multiple test scenarios in it all running in parallel with the help of this particular runner. It's going to save time. The important thing is this is all running inside one JVM. Not across multiple JVM. So you get all the caching benefits. Cool. So let's look at our next principle. Fail fast. All right, so the last one which is the easiest one is the fail fast. We talked about fail fast earlier where we said that basically we want feedback as early as possible and if something goes wrong, it's basically as possible. So few things that we tried out was basically let's look at our build and what is the most important things? What are the items in our build pipeline that's going to give us the fastest feedback or the most important feedback? Certainly building Java docs is not going to give you any benefit. So let's move things like that which were happening earlier as part of the entire build. So we started looking for things which were not going to really give us any meaningful feedback or not the most important feedback and we started differing those later in the build process and we started pulling things that were most important up in the pipeline.   So we were getting those tests into different categories and we would run the fastest running tests first and then run the slower tests later. So that way we're getting feedback as early as possible.  What this does is if you look at today when you run any JUnit test it is pretty stupid, it just goes and executes the test in the same order even though last time when you ran it, test number 15 failed and in spite of that it will always run 1, 2, 3, 4, 5 till 15 and then say oh 15 failed again it's like that's stupid. So you want to basically reprioritize your test dynamically at run time and run tests that fail you want to run the tests that are most likely to fail first. So that's what protest uses a bunch of other techniques as well using dependency if you change class A then all tests that depend on class A would be run first before other tests would be run. So it does bunch of things and that was kind of again another thought process in terms of fail fast right how do you prioritize your test dynamically so that the most likely test will fail fast. Also one of the things you will notice is a lot of people do clean builds every single time now certain builds in your pipeline you don't need to do a clean build you could just do an incremental build and get really fast feedback maybe post that you will run a clean build and make sure that in spite of after cleaning everything it still gives you the same behavior but that's again another technique where you are applying the fail fast principle to say okay I'm going to do incremental build really quickly see if something goes wrong if nothing goes wrong then let's do a clean build and do it but if it's going to fail right there in your incremental build then maybe there's something for us to look at it and validate that. So kind of quickly I know we are running short of time so this is some very quick practices or some very quick techniques we used to fail fast in our build. Thank you. So all these techniques have helped us actually to get down our build pipeline time below 10 minutes. So just to summarize focusing on bottlenecks and looking forward to you know shifting of the bottlenecks so make sure that you know you avoid pile operations as much as possible again in your own context figure out what is optimal database or the data set size. Use as small data set size as possible so that the IO operations are lower use rubo copy or rsync wherever possible that will again speed up your IO operations. RAM drives you know that was a discovery I think that those are nice things if you are in Linux world I think Linux also has a concept called as tempFS and those are again memory drives so you can make use of those drives. CPU profiling is another thing that we want to do. Typically we don't do profiling for the test cases but I think that also helps us uncover a lot of issues within the code itself. Like you know log files doing good kind of logging making sure that you are also going through the logs to uncover what the problems are that's a good practice. The next thing is verifying build tools that you are using and you have to make sure that you are using the right options of it and in your context see what's appropriate to you that's going to help you saving a lot of time. Basically one point Ashish didn't put in there which is a constant debate between us is that if you were on Linux most of these problems would have been solved automatically that you didn't have to struggle so much but some people are still stuck with windows. Yeah that's our leader. So next is dividing in conquer. Let's talk about how you can use different configurations of Jenkins and the JVNetrunner to divide your tests and run those tests in parallel. The last thing is again failing pass. If there is a slightest probability of failure you want to fail as soon as possible so that you have enough time to recover and try again. So you want to make sure that you restructure your code way or your test cases, the build pipeline so that you get that quicker feedback. So with all this this is our build time versus what build graph looks like. So about 10-12 months ago our build times were increasing and this is our number of builds that occurred at that point of time. And as we started fixing different problems all these problems were not fixed in one day. Time for us to identify and fix those. So as that happened our number of builds they started going up. So the very first big dip that you see here was because of getting rid of the workspace duplication and the fork option RAM drives. The next dip that you see is because of caching the resources, spring context and avoiding unnecessary activities like emails. The third dip that you see there is by using YORA real-time and deprecated DTPI, Java DTPI. And the last dip that you see there is running test concurrently using the concurrent JVNL printer. Again we have not used that thoroughly. We still have to go back and make changes to our test cases so that those are isolated. We have a couple of tests which are dependent on each other. You have to work on those, you have to re-factor those and then we will be able to make use of the JVNL printer too. So the important point in the last slide is that you will notice as your build time keeps going down the number of times people are willing to check in code daily keeps going up. This was theory when we started and now we actually have real data from the project where we can say this is actually helping people. There is a big difference in terms of selling this to the business stakeholders as well. Now you have these tools available. I don't believe. As we started discovering things to implement it now you are aware about these things you can pick and choose in your own context. I think you should profile first and see where your bottlenecks are instead of trying to apply things randomly. You might find something completely different that we have not seen yet. It went for about 4-5 months. That never happens. Just to clarify that never happens as in we don't even waste time convincing business about things like this. When it took 4-5 months it basically means half an hour here half an hour there. Whenever you are taking a break from your regular work spend half an hour on this. If we focused and sat on this it would have been much shorter. What we do is we also run hackathons. Our hackathon every quarter. That's another time that we get every time where we can do anything that we want in that particular hackathon and help add more value to the company. Yes. 24 hours. 24 continuous hours. In that 1-24 hour cycle we have done a lot of things which have contributed to our own... In the previous conference we actually talked about a game that we built for how you are performing. That also came out of the hackathon. We've actually open sourced a bunch of these things so you could actually look at that as well. Those are different kind of tests that we have there. Some of them are unit, some of them are BDD tests some of them are RSS tests some of them are integration tests workflow tests. That's why when we are saying there are different tests taking different amounts of time because all of these different categories. All the jobs that you see here, those are different type of tests that we have. So obviously after with all this the developers are really happy, the colleagues are happy they are able to commit the code frequently they are no more afraid to commit the code during evening time and most important family is happy to be able to go back home early. All this was not possible without a lot of references. We had to dig into a lot of problems there are not many references available. The slides will be available for you so you can so we don't have a build engineer so the team takes care of it. Ashish is the team so he is kind of responsible for the entire team and then developers testers work together under him. This goes all the way. Yeah, so like the Jenkins that's our integration environment like you know we are actually trying to go towards CD.  So our plan is that the same job can install the entire application on your local development machine on integration machine, on stage environment, on production. So there is a consistency across all the different environments so that's where we are heading towards. And for some of our products we have already done that for the product under consideration we haven't done that yet. So our basic problem was time. Because time was the problem we first attacked the CPU part of it. We actually did look at memory we did see and we we saw that memory was actually not an issue we could still see that you know based on the RAM that we had in that particular server we were never actually running out of the RAM and not even hitting this thing like above 75% so we said that's not something we want to even focus on. So we eliminated that very quickly basically. I missed the question. No, no, no, we didn't get into the details the lowest level of it, no. So that's what like the goal I mean the idea there was like you know we started with some presumptions that you know that is what the problem is going to be. And we ended up finding different problems which are not you know like let's say the disk IO we thought hitting to database a lot is a problem. We assumed that and that's how we started focusing on the problem. But after doing the profiling the problem shifted somewhere else. The database IO itself was not a problem. We spent a whole bunch of time trying to get everything in memory and then still not seeing the results. That's when we went doing CPU profiling. We have like you know if you have was that session yesterday? There was a session yesterday or day before yesterday. It talked about test pyramid and what our focus is that at the UI level we want a very less test cases and the only job of this test cases is to go and do the navigation test whether I'm able to navigate from one screen to another screen properly or not and whether there are any crashes or not. Otherwise like you know most of those UI tests are slower because at that level we try and do a lot of data tests as well whether the data is showing properly or not and it starts hitting the database. So that's where it becomes slower. So we did have a bunch of UI tests when we started but there's another initiative we've been focusing on is to essentially get the test pyramid right. So we've been pushing a lot of those tests to the lower layer and we've kind of reduced that quite a bit. We still have a bunch of them left but we're kind of reducing it further down. So hopefully the 10 will go down to 5 at some point. Jenkins has a built-in the Jenkins has a plugin which allows you to do the master slave. Most CI environments have that these days. Team city has that Jenkins has that. Most of them have a master slave configuration. It's a plugin basically into Jenkins. JVM monitor. That's the Eclipse plugin that we use here. We'll go here quickly. That seems like too much enough effort to take a legacy project which was built in 2002 and try and introduce item potency into the entire build process. I think it's going to take a while. I mean there are low hanging fruits that we just went after to start with. No, so like the first environment that we had, we had it in our office, eventually we shifted our environment to our data center in San and we had SSDs at the tier 1 level itself. So after we moved there the RAM drives were not required and as the profiling suggested, I think the database operations were not the problem. The problem were other file operations that we were doing. So it didn't help. We have sooner. We have integration with sooner, yes. But what we do is our inspection job, it doesn't run with every build. It runs once per day. It's one of those things that we talked about. Do you want to run sooner every single time a developer checks in? Or do you want to run it once in a while? We are not actively going and looking every single time at sonar. We look at it once in a while. Maybe once a day or something. So we don't want to spend that additional CPU cycles trying to do the sonar running sonar on it. Why do you say that? We have achieved it. We are running all those tests right now. The entire build per pipeline is per check-in. Otherwise you are not getting the feedback quickly. We are prioritizing which tests to run in what order. But we do want to run all the tests every time a developer checks in code. That's very important for us. As Ashish said, we are moving towards continuous deployment where we do want to basically automate the entire cycle. We are not going to have another set of tests that runs nightly or things like that. So wherever we feed this bottleneck, we want to look at those tests. We want to refactor those tests or dismantle them. You should do with Jenkins the standard tools. Jenkins, yeah. Because we are a window shop, we are using a lot of power shell. We have Jenkins for scheduling and triggering and orchestration. In between we have power shell to do window specific activities. It solves part of the problem but not the entire CD problem though. Next year. All right. Thank you. Can we run short of time? Thank you very much.


Yeah, we on boss talk one-on-one, one-on-one. Yeah, we gon' talk. I asked you about the vaccine. Did you take it? No. What's your view on it? Well, I have a friend. His name is Dr. Leslie Ray Matthews out of Atlanta, Georgia. He was the head trauma doctor at Grady Memorial in Atlanta for I don't know how many years. Probably one of the best surgeons in the world. It should be in the White House right now. He told me that all I needed was vitamin D3. Wow. And he showed me how to use the vitamin D3 to keep myself healthy. And from that information that he gave me, I've got about 15 people at the hospital. Really? Well, you said how do you use vitamin D3? Isn't it just a pill that you just take? Yeah. Because you said how to use it. I'm like, is there a special way to use it? Yeah. If you just take, if you just say, if you go to Walmart and you get the vitamin D3 with 200 milligrams, you didn't get much vitamin D3. Okay. If you go there and you get the pill with 10,000 milligrams, you got a whole lot more milligrams. So what he taught me to do is, if you catch the virus, you high dose. Okay.  Wow. But didn't you tell me the other day that actually a doctor passed away from... He didn't take his vitamin D3. Hell, I tell you what's going on with that. The first thing I do, when I find out one of my relatives is in the hospital, the first thing I tell them, check your vitamin D level. And I guarantee you, deplete it. My niece was in the hospital in Austin, Texas. My brother called me. She had been in there two weeks. And I called her. I said, hey, babe, how are you feeling? She said, I don't feel good, huh? I said, listen, tomorrow morning, when your doctor comes, this is late at night when they call me. Probably like 11 o'clock our time. So real late, her time in Texas. I said, listen, when the doctor come in in the morning, tell him to check your vitamin D level. So she did, I called her back. She said, hey, my vitamin D is depleted. I said, tell him to give you a high dose of vitamin D immediately. Two days later, she was out the hospital. She said, I'm on my way home. I got this breathing tube with me though, but I'm on my way home. Wow, so she was off the breathing tube. No, she had the breathing tube. She took that home with her, but she no longer needed to be in the hospital. Correct. I just had a friend who just had the Delta version two weeks a week ago. And when he called me, he had been sick two weeks and a half, I think. And he was telling me that his wife wasn't moving. I said, okay, look what you do. Can you go to the store? He said, yeah, I can make it to the store. I said, if you can't, I'll come over and bring it to you. He said, no, I can make it to the store. I don't, you know, all the young guys around the time. They all call us on call. Yeah, they call me on call. I don't like it. I don't like it. I don't like being on call. Well, you know, onk is a special, that's a special word. Yeah. That's a special word when they say onk. We'll go into that. Let's just talk about the vitamin D, right? That's all they said. OG, a school, all that. So when he went to the store, he got the vitamin D and he took it. I said, he said, my wife, man, she ain't responding. I said, sticking it in my mouth, make her take them. He did. And the next day he was like, onk, I'm moving around now. I said, okay. He said, I ain't ate in three days. I said, listen, go in there and wolf some food down.  So when you lose that, you don't really want to eat. So he wolfed the food down. It took him about four days. Took it. That Delta version was a little usey when it was just a regular coronavirus. Two days, they will. Yeah. But this one here took like four days, but he recovered and then a couple of days later, he told him, man, my wife moving around. She ought to be it. And both of them told it, the whole family told it. And his two daughters had it as well. They all totally recovered. How do you feel like you, like we take zinc and all kinds of stuff? See, I take zinc too. Okay. So you make the zinc. I just take vitamin D, but you're gonna make me go back home and look and see that. I'm done.  And see how much, how many milligrams I'm taking. Don't listen to me. What you do is go look up Dr. Leslie Ray Matthews and see who he is. Write that down. And then get your information directly from him. Right. I know that's right, man. Same man. So what would you say to the young of you, man? If you could go back before you even was talking to the guy that sold dope asking his opinion, how would you, what would you say to yourself to change your narrative or to get yourself prepared for where you were headed?  I know. In life, you know, whatever it is, it is. It ain't gonna change it anyway. But what I do is those steps that I missed, I started to do them right now. Hey, man, so what I would do is exactly what I'm doing right now that myself know you can run with doctors. You can hang out with doctors. You know, during the pandemic, I was hanging out with two of the coldest black doctors in the world over the telephone though. Because I'm trying to get him to the White House. I'm trying to get everybody to know, like, look, this dude got the answers.  Wow. Y'all need him up there with y'all, you know, I call Congress people and pastors and like, man, you need to get in touch with Governor Newsom. Yeah. Can you get Newsom on the phone? And they just didn't believe it. I thought, I'm gonna be honest with you, I don't trust Will. So I'm thinking they don't have no good agenda for us. I'm thinking the health, you know, creating sickness is something that the health department, they thrive off of. And that may be a negative way to look at it. Yeah. I don't know, I don't know if that's the case, but I know that they're, Do you think some of them do it? Now, come on, now they, They could, but even if, even if they don't, you know, like, I don't, I don't really, I know that they choosing the wrong two doors. They picking from the wrong doors. They not picking from that door that they don't know about.  Yeah. So it could just be out of ignorance. You know, they could be doing this stuff out of just straight. Ignorance. Dumbness. You know, Doc told me a lot of them when they was going to school, they was getting drunk. So like that guy. Doc said he didn't have those, he didn't have no rich parents to pay his way through. You know, he can go and pay the teachers. He said he had to study. Yeah. But he's in a lot of his classmates was getting drunk. And doing all kinds of other stuff, having party and rages and all kinds of stuff. When he was studying. So sometimes they just don't know, you know, they, they got that piece of paper, but it wasn't really earned.


I am delighted to be in the midst of the students, the younger generation whom I like so much for the region of which I have chosen this profession of teaching. Don't consider me to be an administrator. I am first of all a teacher and being a teacher my first love is to be in the midst of the students. I feel it really a privilege for me more so to be present on the celebration of the freshest day 2023 of the Tessa College. In the morning I happen to be in another college. There also I spoke about how much I like to be in the midst of the students because students inspire thinkers, students inspire teachers, not the other way around. It may so happen that some teacher may inspire you but the teacher gets inspired by the dynamic student, an individual student. I congratulate all the freshers who have been admitted today, not today actually in this college, today is celebrating the freshest day. Before I had turned into this day woman I was asked by the principal madam to inaugurate the business student. I am very happy and I congratulate the management, the principal madam and all of you for having a facility which you can go a long way in generating lot of visitor resources. From the point of view of Naga tradition, Naga history, Naga culture and Naga Indian knowledge system. This is the new thing that I have been talking about. Either you say Indian Naga knowledge system or Naga Indian knowledge system vice versa. And which is the key, one of the key elements of the national education policy in 2020 which has been implemented in the state of Naga land and which has been implemented by Naga land university. Your course curriculum, your course structure, everything has been revised and has been tailored in line with the requirements of the national education policy. This will not interest you I know. I will come to the things that will interest you and inspire you. But I don't know to what extent I can be able to inspire you. Still I will go on speaking something more. After that I will come to speak about the students. Madam principal represented very meticulously and with so much of first years. The requirements and the possibilities that Terceau College wants to incorporate in the course of development of this institution. And I fully endorse all the things that she proposed. Given a chance if it is within the framework of the new system, I am going to approve everything. Even if it is not within the new system, the framework of the new system, I will try my level best to have these smaller things. It is a very small thing but there are so many bottlenecks that are created because of the structural reasons of this ecosystem that we are presently in. I joined just exactly one year back in Nagar Milosev. Wherein the outlook and attitude, pardon me for having very blunt, the outlook and attitude of people in the educational system in here is very conservative. People should be allowed to think out of the box which is not happening. And if you come up with a proposal for me to offer a course, a module on Indian Nagar system, I will be very glad. Madam, to respond to your specifics like allowing this bachelor in physical education, you will be happy to know that I myself have proposed to the UGC to open a master's program, a department on physical education to the UGC. So why not I approve when you submit your course curriculum syllabus for the board of studies and then to the academic council. I will be glad to support. Regarding bio-technology, I will be the first person. I am a student of political science. But if you talk to my colleagues in the last one year, the kind of things that I do is pro-science, not political science. So bio-technology is the same thing in the modern scientific world. And if I am a student, here the presence, bio-technology presence is very low. And interestingly, Nagaran University is having bio-technology teaching program and we have got some constraints. I was amazed to know about that. I wanted to fill up the course of professor of bio-technology. And the person who has got the highest number of scope in this application would of course automatically qualify to become a professor. But the school of engineering and technology in Nagaran University says our students as per the AICP department, things would happen. If somebody is having BSc, MSc, Geology, and you know a BSc from by the way from say United States, why not we have him? No sir, we can't. Then I get fired because I have to go through the academic council route where I will just open up. There are so many structural, I say so many structural problems to open up and allow the growth of certain disciplines. Similarly I had a problem in agricultural sciences. We had a wonderful candidate, of course I saw that he joined. And I did it through my own interpretation of the things. He has all the publications published in the foreign journals. And he is the fellow of Royal Society of K-Base. He is currently a professor in my university. I am very proud. And I have got many such kind of people now. I am recruiting. And what I do you know, at times I take the shortcut. I don't care anybody. I don't care anybody. If I put up the institution, if I need to bypass certain things, I will do it. It's not the first time I have done it. I was doing it in Missouri University. And I am also doing it here. Madam Brigadier, this microbiology, please do introduce. Please come up, ask your department faculty to present all the syllabus through the respective schools. I will definitely see that through. Next year, next academic session, please get ready to introduce all these courses. I have no issues in approving those things. Now, students, it's very hard to fill in. I saw that the motto of the college, strive for excellence. What else can it be? When you are in academics, you need to strive for excellence. But what is the yardstick of excellence? To what extent you can go to so that you can achieve excellence? Don't panic, don't worry. I will explain, I will define excellence very simplistically in our own way, in our own modest way. For me, excellence is to pursue one's own self to the fullest possibility. In achieving keys or health objective, that is excellence. It's not necessarily that you have to get gold medal in MA or BA and you have achieved excellence. No, I don't agree with that. I've seen gold medal myself so many times. But it did not give me any satisfaction. I did not feel that I want to achieve excellence. Because as long as I have not pursued the desired intention that I have in my mind to the fullest extent possible, I have not achieved excellence. You may not be to the expectations of your parents. You may not be up to the expectations of your teachers. But if you feel that you have given a hundred percent, then I would say that you have achieved excellence. The whole thing is how to unravel yourself and come out of all the constraints, handicaps and hurdles and prove yourself your own path. Then I will say you are having excellence. Excellence is not to become an IS officer. Excellence is not to become a philosopher, a scientist, nothing. In your own life, you should feel satisfied. You see, these are only momentary kind of achievements that would give you some satisfaction for a while. But it has to have a longer satisfaction. You should feel at the end of the day what I have achieved. Then I will say that you have really achieved something. In Nagaland University, we have tried to, we have been trying a lot. Ever since I joined, to do these kind of things. And now, with the introduction of NEP 2020, you have everything on the platter. You can have fashion designing, you can have bio-technology. You can have yoga. You can be a yoga master. You can have Naga Pooji when college has already started. I was so happy immediately I had the text to help. It is helping. So I take the name Jaffu College, Jaffu Krishnan College, Koima. She is also a lady, please come. Immediately after she opened the laboratory, she sent me the photo of the laboratory. What a wonderful thing. Because by having that course, they have not started the course since the lab has started. And when they come, I will definitely support them. And having that course, you are reaching at a global level. Now, I will relate this digital studio. With the digital studio, if you can develop a module or a couple of modules on, I have already said. Where is it? I think, I think, yeah. Digitizing, yes. Digitizing three, three, three in a, three tribes languages and things like that. Not the dominant tribe. Pardon me for using the word dominant. It is madaming, pardon me, because she knows what I mean by dominant tribe. She is a student of cultural studies. So the work that we are going to undertake in that so-called is not to record the language, the story of history of the dominant tribe, rather the tribe, which is rather minority tribe, if I am correct. That will happen today. If you develop a course on this Naga knowledge system, Indian knowledge system, and we will put up that in the Swayam platform, not only that our students will take here that course, will make it compulsory to all to take that course. And that course you don't have to take in the classroom. You have to take that course in of online, sitting at home after dinner time, one hour online course. And you write the exam. Devapur is the place where you are going to center, that's fine. Four days back, I had a meeting with the additional secretary online again. I am a person who believes in online things. And I told to him, Sir, Naga Land is neglected and people do not take Swayam courses because we do not have sufficient number of centers. A boy from Maan district, how can he come all the way to Dhimapur to write his exam? Maybe a poor boy. Then it is noted. But for you in Dhimapur, it will not be difficult to position. You can take few courses. What I would request madam principal, just let your students take more number of Swayam courses. Reason is, next year we are buckling up for NAC assessment. Please have sufficient, all the students should know that it is one course. I am going to have it ready transfer thing. We will do it slowly. Slowly means next year. Let us spend next year, because in the next academic council by then we have to frame the rules. If you are having a credit course of two or four, we will transfer it. For that actually we have to evolve the rules, all the framework, everything. But you can enroll, get the certificate and give credit. And Naga Land industry will definitely recognize that, which is very important for NAC accreditation. Another important thing, I am going to have, teachers, hundred teachers are having PhDs. Please enroll all of you. I would say, I am really ashamed of myself when I say this language. Naga Land industry, some of the teachers are yet to have PhDs. I got so furious. You don't know my language, I shout like anything. I said, how come for 12 years you have been working here and not done PhD? I want that within next year you should register for PhD. That's the language I speak. I terrify people for their positive development. I don't mind to terrify you if there is some positive development. So I request all the teachers please, at least enroll yourself in the PhD program. And I for myself, one for myself, what can I do for you? By just saying that I will, please do it? No, I am there for you. What is that? This year, immediately, last year till I came in September, immediately after I came, I asked how many PhDs are registered under Naga Land industry. They say very bigger number, I don't want to speak for that number. Immediately I say, go for the winter season admission. So we have, we did some number, it was not encouraging. But I was not feeling encouraged, but they said no sir, this is a good thing. Now this year, again July admission, they enrolled. They enrolled. What I have done, you know, I have given fellowship to everybody who pursues PhD. 8000 rupees, non-net fellowship. You pass up from MA, I will give you fellowship, you do research, coursework, everything. In the meanwhile, if you can prepare for a completed examination, I don't mind. If you get into NPS, I don't mind. If you get IAS, I'll be very happy. But I'll give you 8000 rupees. Similarly, I request madam to give incentive. You don't have to give 8000 every month, don't give. You can't afford to. But please incentivize, give some increments, something, those who get PhD. Three days back, I was asking, I was interacting with the heads and deals and the PVC and so on. To prepare houses, because all of them also submitted the NAC SSR. This address to the teachers, don't worry, you understand. I'll come to you again. Then the teacher said, a publication, we need incentive. I said wait, not now. But I'll give incentive for something else. What is that? If you can give me, if you can give me a patent, I'll give you 60,000 rupees. For publishing one patent, they were really surprised. I said I've got money, but I'll give it in a proper way. But this is the kind of decision you have to take. We've been taking to bring Nagara University to the forefront of the national level. Similarly, I'm so much fascinated by the infrastructure here. We do not have a machine to admit this kind of building, because they are current people. They really, we get hundreds and thousands of floors from central government. But I don't have this kind of building, because it's being managed by private lady. See, you have got the infrastructure. You should be proud of the infrastructure that you have. And I wish madam would take much more progressive steps to get much more facilities for the students. Are you ready for the hostels? Full level hostel for all the students. So now it will be, I request madam to have a fully residential college. Please do it. Please do it. And you collect money from them. Don't have to do it for free. Nothing is for free. There is nothing called free lunch, because madam is a very dynamic person. First time I was speaking to somebody like this. I never speak in a podium like this, because I was fascinated. So when you have got the hostels for everybody, if she wants she can get it within one year. If a vice chancellor wants, she cannot get it even within two years, three years. Then the constraint of the public institution. I want to do everything very fast, quick and fast. I am not able to do it. And people are telling that sir is getting impatient. Sir, we are doing sufficient progress. I said no. Nothing is moving in another industry. I say no. But there are some changes taking place now. I am happy also within one year. We have done something for the students, for the business scholars, for the teachers. Similarly, if you look at that kind of profile and in the college. I think this college will definitely shine. What is your name? What is your grade? B. Next time you are getting A. I have got the experience of visiting colleges and other institutions, I mean universities. As a NAAC team member, as a NAAC team chairman. For the last spanning, not exactly 20 years. Since 2004, I have been visiting colleges and universities. My experience says that with this kind of infrastructure, all we constraint is teachers, PhDs, publications. Of course, it is the percentage less, not as much for universities. And in case you need any hand holding, of course already we are in two times, you know, like related to the third, you can approach NAAC industry. We have got a very dynamic advocacy director.  So, you can also help you how to do the thing. Now the students are to talk about students. I spoke about your pursuit for excellence, all these things that may sound a little bit, you know, abstract. But when it comes to the reality, what are the things that you are going to do? How many hours you are going to spend in the library? Now you don't have to go to the library. You can have a remote access sitting in your hostel room or in the reading room. And I think library automation might have been down here. So remote access you can have. And you have to spend more time in reading and writing and thinking. Thinking is more important. If you don't think about what you are reading right, that kind of knowledge is not knowledge. Then here you will ask yourself what is knowledge? For me knowledge is that which I read, I write, I think and forget. I forget also. Then something remains in my mind. That is for me is knowledge. And when I pass you that knowledge for a longer time, it is wisdom. You might have noticed what I am doing here. I am speaking from my knowledge. And the knowledge is I do not remember anything, but something remains. That is my knowledge. Because learning and unlearning are the two sides of the same coin for the pursuit of knowledge. Your unlearning should move faster than your learning. So that what you learn next time, when you unlearn that, you learn much new. That is what knowledge is about. And you are all so fortunate. Because in India, still in Nagaland, still people do not get the kind of facility, the opportunity that we have got here.  And take maximum benefit out of it. Money is worth. Money is worth. Your money is worth. Your father is spending 10,000 rupees per month. You should get 30,000, 40,000 worth of the things.  Or else you are cheating.  Please do not cheat yourself. Be sincere and honest in your undertaking and be successful. Thank you very much.