So, today we are going to look at one example in handling character strings stored as single dimensional arrays. Yesterday in the extra lecture I had discussed a few things, within a couple of days we will put that also as a video lecture on your home page, although I did not use any slides, so I am afraid you will have to look at the web page video itself. I will take one example, primarily an example of separating out first and last name, if both are entered with some blanks in between and they are read as a single string. So, they should sort of give you an indication of how blanks are handled in character strings, they shall also discuss the course projects and as usual I will have brief announcements at the end. So, the problem is that if I have been given two names on a line, how do I read that line in? As I said you cannot use the C in function because the C in operator in C plus plus actually eats away all blanks, white spaces, etcetera and automatically extracts useful information on the line that you type. It could be the name, it could be a value, it could be a floating point number whatever it is and it appropriately assigns it to whatever variable or array you are reading it in. That is not useful if you have to handle a complete line as a single record as you are required to do in the assignment for lab 7. So, as an example we will take a record to consist of two strings, one is the first name of a person, second is the second name of the person separated by a few blanks. We will see how exactly we can take these out and print them. So, here we are defining the usual includes, notice that apart from the inclusion of string there is another hash include called C string. This C string represents all those library functions which are traditionally part of the C programming line. The original inclusion used to be hash include string dot H, but when you go to C plus plus compiler, C plus plus compiler also recognizes it by the name C string. So, I will include all of these things in our program, these are the main declarations in our program. So, let us understand what we are going to use different variables and arrays for. The first line says CAD line 256. This I expect naturally to read an entire line from the keyboard or any file inside my machine. Now, usually the line that you see on your screen is about 80 characters long. Names would usually be 20, 30, 40, 50, 60 characters long including first name and last name. However, remember that whenever you are trying to read a record as a complete line, there is no point in being stingy in allocating small memory to it. So, therefore 256 is a good value to allocate to a record which you want to read as a line. The line may contain numbers, commas, full stops, character strings, values, whatever one. An interesting declaration is star char ptr. This is a character pointer. When I declare it, it doesn't point to anything, but it creates a placeholder in memory. The value inside this char ptr will not be a normal numeric value as we have seen last time. The value inside will be pointing to an address in memory location. Typically, char ptrs are used to point to positions inside character string arrays. You can access an element inside an array by a numerical position, 1, 2, 3, 4, 5, which is the array index. You can also access it by a character pointer. We shall see the difference. Immediately thereafter, you see char name string as 60. So, you presume that the name that you will get in two parts totally will not exceed 60 characters, a reasonable assumption. Then you have two additional character strings declared, first name and last name. Please notice that when I declare them as 60, the actual positions will be 0 to 59 and the 59th position will be expected to be occupied by a slash null or zero value character, which indicates the end of string in any character string array in C++. So that means your effective length of the name is only 59 and not 60. I have declared two more arrays, first name and last name because the problem says I expect first name and last name as two different parts on the line and I have to separate these out. Obviously, the first name and last name individually will be smaller than the full name, but I do not know that. So, I assume that in the worst case, either first name or last name could be larger than whatever I may assume, I might therefore put the same size as name string. Then I declare a string type called line string. Notice that this line string is different from line to 56 car array, although it is what I am expecting to read when I use the gate line function on C in. This line string length is not determined by me, C++ is intelligent enough to read all the material that you, characters that you type till the new line character. When you hit the new line character, that is considered, that is when you press return on your machine while giving input, that is considered the end of the line. So whatever characters you have typed, C++ is capable of accumulating all of them in a string variable called line string. This is not to be confused with the C type character arrays. So, we will need some conversion to get that line which has been read into line string into our line, which is the car line to 56. I have additional things in N car. This N car I am going to use to indicate the number of characters in my string that I get. I do not know how many because I may not get exactly 60, although that is the limit I have. It may be less, it may be more. I also have an integer value called blank pass, which indicates the blank position because I need to separate out things depending upon the blanks. I have two additional variables, length F and length L. I use them to denote the length of the first name and length of the last name. I have usual indexing variable I. So is the declaration clear in the purpose? Ordinarily in a regular program, I would have written adequate commands to explain what these variables and arrays are meant for. I now give an instruction type a name and then I say get line C in comma line string. This is a function available in the string library of C++. The first name is name of a file. C in is the standard input file. But if I had declared any other name, I could have used that to read data from. So when I say C in line string, I would actually get the entire line that I would type on my keyboard into a variable called line string. I do not know how big is that string. So I have another function. Actually it's an operator because line string is an object, not really a variable or an array, that object dot length is the way I invoke the function within the object class line string. And when I say line string dot length, no parameter required, this will actually calculate the exact length of what is there in the line string, the value, the number of characters that I have collected, and that will be assigned to N care. So N care will represent the total number of characters inside the not counting the backslash null or whatever it is, it's just the total number of characters inside this. So these two simple functions help me to get a line, and this function helps me to get the length of the line, meaningful line. Now you notice that I want to deal with character arrays, that is an array in which I will handle the character string. That string I had defined, if you look back, I had defined this as name string 60. So what I do is I want to start getting the characters in the name string. I set name string N care equal to 0. Can you guess what does this mean? I am actually putting a backslash 0 or a null character into the last position in my string, where I already know the length of the string from the previous function, which is N care. So in the N careth position, suppose N care is 40, what it means actually is that the length of the string is 40. So 40th position will contain backslash 0, 0 to 39 positions will contain the actual characters. Of course I expect the N care to be less than 59 really in number, whatever. The comments indicate that now I am looking at reading the line string in the character array. Now for that, there is another function called mem copy or memory copy. My string exists in memory, my name string array also exists in memory. The string library provides a function called memcpy, wherein I list the name string, that is the string into which I want to copy, line string from which I want to copy. Now since line string is an object, you don't use a normal function on line string, but there is an operator called C undercore string. What does this operator do to line string? It takes the contents of the line string and extracts all the characters from that line string, converts them into C type array and puts them into the name string, which is an array pointed out by the name string. N care is the number of characters. Observe that instead of calculating the length of the string separately, I could have actually used here that entire object dot function to calculate the length, that is also all. So what do I have now at the end of this mem copy? I have inside the single array name str, the entire line that you have stored as a C character string. Hopefully it has a first name followed by a blank followed by the last name. I am now writing a program to locate the first name.  What does it do? What do we expect it to do? It will actually locate the first blank inside name string. We give the length up to which it has to search. So this is actually a search function, mem chr is a search function. There is a corresponding search function which will operate upon the C type array of the C library as well. Notice that last time I had given you a whole lot of function names. So if you look at any standard information on C or C++ libraries which is there on internet just search for C++ string for example. You will get the names of all these functions and what they perform. However, here I am using this function but notice that I will not get a position of the space. I will get instead a care pointer. There is a fundamental difference between a position and a care pointer. Both point to the same location but they point in different ways. A numerical position would be another index 13, 14, 15, 21. A care pointer will also be an index but it will indicate a position through a pointer variable. So suppose I had written, I had executed this program, hopefully I will have something like type the name in two parts on a line. This is not the syntax that I have used in the program. Some prints are different message but some such message. And suppose I give this line first, one blank, last. You would have understood by now that the first blank last would now go into an array like this. F, I, R, S, T, one blank, L, A, S, T and back, black slash zero. There could be some elements in the array because the array is larger. It has 60 elements but we don't care what the remaining elements of the array contain because they don't matter. The point that I was making is that if I have an integer variable, say I, then I will use the value of I as zero, one, two, three, etc. These will be integer position. What I am calculating using that function is not a numerical value. So I am getting a star pointer. The PTR may have absolutely any value as we have seen, some hexadecimal value. But the PTR means that the PTR will point either here or here, etc. In our case, the function will return a pointer to the first blank. That means our pointer, which is I think care PTR, this will point to this position. Now I want to get the position of this. How will I get the position of this? I have a pointer here but I also have a pointer to this element because this is an array. The array name itself is the first position. The array name, too, will be a pointer because the array name itself is the pointer. As I mentioned to you, when we pass array names to functions, values are not passed. The pointer to the first element is passed. Consequently, the array name in C++ itself is a pointer to the first element. What was the array name that we had used? We had used name string. So name string can be used in two ways. I can use anything like this. This will mean Ith element of name string. However, if I just use name string, it is a pointer to the first location. Now, using these two pointers, I can actually find out a numerical position of the blank. Simple. I subtract this value from this and add one to it. I should get the point. I should get the numerical value. So this is what I have tried to do here. So I locate the first space using char ptr equal to char star, mem char, name string, blank and char. This char star is called casting. The value calculated may be an integer, may be something else. If you want to convert that value appropriately from an integer to a character pointer or you care pointer to a character pointer, whichever way you can actually cast the result. This can be applied for any expression.  You can, before assigning to integer value, in front of that expression, if you put inside the bracket int, then the whole value will be converted to int. It is called casting a value in a different type. It is a fairly powerful facility. We use this to convert whatever value is returned by this function into a character pointer and assign it to char ptr. Now notice the next one. If char ptr is not null, why am I checking for that? I may not have any blank in the whole string. Somebody has goofed up in giving, instead of giving me two names separated by a blank, fellow gives only one name, no blank and carriage return. Now that means there will be no space. So my function will return more, it will return a null. That is the essence of the memcaya. Either it finds a position, in which case it gives a pointer, otherwise the pointer is null. A null pointer is given. Notice that null pointer is different from a null value within another element. In fact, in cc++ a null pointer like this is considered the most troublesome person in the world. The creator of this null pointer has recently confirmed that during our winner, he said that I should have avoided null pointers. So this is a very dangerous thing. Every time you use pointers, you better be sure that your pointer is not null before you use the pointer to access anything or to use it in any computation. So we make sure that the character is not null. That means I have found one blank. If I have found one blank, I have to get the first name. The first name as we saw is between the beginning and the first blank. That is supposed to be the first name. So I will just find out the position of the blank as equal to care pointer minus name string plus one. So pointer to blank, pointer to first position, difference plus one. That is the position of the blank in integer num. So blank pause will now get this. I will print out from blank at blank pause and I will set the length of the first name as blank pause. So let's just very briefly look at the array once again in the example. This is actually the whole string. I have F, I, R, S, T. Assume that this is the name. This position will be fourth position and this position will be fifth position. So this is pointing here. This is pointing here and the pointer difference plus one gives me the total number of characters. So this is the blank position. The blank position I will get as five. When I get blank position as five, that is also the length of the string because the first name will have one, two, three, four, five characters. Of course, this is the sixth position in the array. So in the sixth position, I will have to put a backslash zero. So length of F, I set it as blank pause. The value of blank pause will be six. The element was fifth because we started counting from zero. I will copy n characters from a string. This is another function called strncopy. There are two functions strcpy which copies an entire string and strncpy which copies n characters are specified by you. I am copying from name string which is the original string that I got into a string called first name. That is my array which will hold the first name and how many characters I want to copy? Length F. So length F characters will be copied. I want to make sure that the first name array contains a proper C++ string in an array. So I will put at the length F position a zero which is a backslash zero. So the whole string is guaranteed now to become a null terminated string. So just to recapitulate, I first copy the given input string into a character array. Then I locate the first space by using memcar which is a search function. After locating that, I confirm that the pointer return is not null. If it is not null, I have found one blank and I can get the first name by just finding out its position and copying that part of the string into first name. Now I proceed to look at the second part of the name. I have assumed so far that first name and second name is separated by only one blank. But what if somebody gives two blanks or three blanks? Then obviously I have to gloss over those blanks. I should not count them. I first output the first name for I equal to zero I less than length F, I plus plus C out less less first name I. Observe that this will put one character at a time and all the characters in this array will be put out after which I put an end L. C out end L is not part of the four statement. The four statement scope starts here and ends here. This is because I am using it on a slide so I am shortening the length. Otherwise I would have written it in proper form. So after outputting all the characters in the string I will just output an end of line. Now I know the position where the first blank was found but I do not know whether there are subsequent blanks also. If there are I must give them. That is why I have written a small part of code which keeps consecutive blanks if any. What it does? It looks at the blank plus position of name string itself. If it is equal to blank it simply increments blank plus plus plus. So this is the while loop. If I find a blank I increment blank plus. Observe that blank plus has no purpose in my life anymore. It has found out the first blank position. So I can continuously update blank plus to move towards next position, next position, next position till I find a non-blank character. So while the character is blank I increment the blank plus. However I must check whether there are only blanks till the end and nothing more. Somebody has cheated me, given only one part, left a lot of blanks and then pressed end of return, end of line. So if I hit the end of line itself then I must say there is no other name. That is what I do here. If blank plus is equal to n care that means I have completed the entire length of the string and I have still not located anything then I will say see out no last name, end of. However I break out of the complete program because there is no point in continuing my program any further. I simply say return one. So I print a message that there is only first name, there is nothing else and I get out. But if this is not true, if indeed somebody has given a valid second name then this while loop will end here and when the while loop ends I would have skipped all consecutive blanks. Consequently when I come out my blank pass would have hit the position which is a non-blank character. So I now print the last name. What is the length of the second name? The length last name is n care minus blank pass. Observe that n care was the total length of the character string and blank pass now points to the first non-blank character in the second part because of the skipping of the blanks that I have done. So this way give me the length of last name. Now I again use string n copy last name name string plus blank pass and length n. Notice that strm copy copies from one string to another as many characters as you prescribed. If I just said copy from name string to last name it will start copying from the first position in name string. That is nonsense. The first position in name string contains the first name. I wanted to believe that the string that I am giving for copying actually does not start from the first position but starts somewhere else. And where should it start from? Where my non-blank character is and that is why I treat this as a pointer name string plus blank pass that is the first non-blank character position. So this becomes a pointer which will point to the middle of the string where the second name begins. And how many characters I am copying? Length l. This will get me everything into last name array to make sure the length lth element of last name is set to 0 which is backslash 0. So consequently in second name that is last name also I have a valid name. I will print it out by some message first and then again for i equal to 0 length l, i plus plus, c out, last name i. I am not bothered to put opening brass and closing brass because a single statement after for loop automatically starts and begins ends the scope of the for iteration. So consequently the next length c out endl is actually end of line that means I will just print end of line. If this is not so, else c out name has only one word. Observe that this else does not correspond to any if here. We will have to go back one slide. Let's go back here. Notice we had said here if blank pass equal equals n care we had said no last name. If I have not found any non blank character after the first name then I will say the name has only one word endl. Here are some execution results. I type a name here. Let's say my friend Nannlal one blank soundl. The program will output found blank at 8. So notice 1, 2, 3, 4, 5, 6, 7, 8. 8th position is blank. First name is Nannlal. Second last name is Sardar. The program works correctly. As I told you however in real life you cannot make assumptions about data being correct. People may type in data wrongly and the mistakes could be of any kind. That is where you need to validate the data. What my program does is it does some very simple almost trivial validations. In real life you will have to do many validations. For example suppose instead of typing Nannlal I type N A N D comma semicolon l. Now can that be the name of a person? Generally it is not tradition to name people with commas and semicolons. So I should be able to look at that name string and say sorry this doesn't look to me to be the right name. But maybe somebody in Timbuktu have names like that. So I leave that to human beings to decide whether I got a right name or wrong name. But I must print a message and a warning saying it does not look like a right name. In your projects you will be spending a lot of your programming skills in validating data and giving messages for wrong data. Even in this simple program let us see some examples. Here is the next example. I have typed my name with lots of blanks in between. As you observed in the program I have taken care of skipping the blanks. So that is why when the program is executed it says found blank at 7. Notice 7 is this position. But they blank at 8, 9, 10, whatever. However the program correctly prints first name is deeper, second name is further. So the program is sturdy enough to withstand multiple blanks between two different parts. Let us again execute it with some other data. I type one name, Sridhar. The program correctly says name has only one word. Don't cheat me. However, look at what happens when I type Kavi Arya with lots of blanks ahead of Kavi then Kavi, then lots of blanks, then Arya. Now what will my program do? It locates the first blank. Unfortunately not between these two words but here itself. Found blank at 1. What it means? It assumes that first name is null. Because the string starts at 0. Blank is found at 1. So the last character is also at 0. It actually prints first name as nothing. Now as per my program the blanks will be skipped till it finds a non-blank character. It finds capital K. It says I found this surname. And from that point till end of the string it will print that as the last name. So my friend Kavi suddenly has lost his first name and Kavi Arya has become his second name. That is unfair. This is just to illustrate that you have to be very very careful when you deal with real life data. In fact the second assignment example is precisely to convey to you that when data is entered by different people there could be lots of mistakes. And you have to provide for those mistakes. And you have to either give warnings or make suitable assumptions and even make corrections. When you correct wrong data like that it is called data cleansing. You cleanse the data. For example here you should be able to figure out logically that if such is the case the leading blank should be removed. If you remove all leading blanks then you will print Kavi Arya's name and recognize Kavi Arya's name correctly. I'll leave it to you to think about this when you complete the second assignment. When we print data we have been using C out statement. The C out statement is not always very good because it does not align the printing properly. I would like printing to look neat, look pretty. So process Sony had some examples I thought I will include them here. Look at the normal C out. Suppose I am outputting a 2 by 2 matrix and the matrix elements are 1, 2, 3, 45, 6, 7 here. The first two elements are 1 digit numbers and the second row has 3 digit numbers. Now if I just execute this program just C out A, I, J and at the end I put NL after the J loop so that the first row is printed in first line and second row is printed in second line. What the output will look like is one blank 2, 3, 4, 5, blank 6, 7 here. Now it is not very clear if I have large output like this then all my positions in the array which I would like to visibly see would get all disturbed. You will recall when I had shown you the histogram and the image pixel values they were adjusted so that you could make sense that this is first pixel, this is second pixel, this is the eighth pixel and so on. You would like therefore the printing that you do to appear appropriate or pretty. For that purpose there is another command which is not C out but a command which is called printf. This is a function. This is a C style function. So instead of saying C out if you say printf followed by prescription inside the brackets for how the value should be printed and what value should be printed. So this is a replacement of C out. I thought I will very briefly describe what does this function do. So I would like ideally the printout to be 1 so blank blank 1, blank blank blank 2 etc. I would like the output to be like this. How would I get an output like this? This is done by using the printf function. The printf function has what we call format specifiers. A format specifier is a string which declares how a particular output should look like. Unfortunately the syntax of the format specifier is very funny. It always starts with a percent symbol. If I say percent 6D this is a specifier to say that some integer values to be printed print it as a 6 digit integer. Observe that if I say this the integer value will be printed right justified in the 6 places. It will not appear arbitrary. Percent as means print a string. I am not specifying the length so string will be printed as is. But if I say percent 7 as that means string is to be fitted in 7 character space. If the string is smaller it should be paired with grand it should be truncated. Percent 8.2f this is a specification for floating point printing. That means the value that is to be printed is float. Total 8 digit space is to be occupied out of which 2 digits should be after decimal point. 8.2g is a similar specification but it says that if you cannot accommodate the value in this field because either the precision is larger or the number is very small or big. For example if you have a number which is say 2.7 into 10 to power minus 90 now when printed as decimal it will be 0.000000 so many zeros and then 27. Now in this 8.2 format I will only get zeros. So 8.2g says that the same floating point number but switch to E notation if required. Here are some examples. They are simple examples but I would request you to try out many such examples by giving arbitrary value giving format strings and then trying to see what you get as the output. So here I have three variables A, B and C which are integer and three variables P, Q and R which are floating point. First let us look at the integer variable. I have assigned a value A equal to minus 1 B equal to 10, C equal to 100. Let us look at the printing that happens.  You can give multiple format specifications and give multiple values to be printed. You can look at any example and see that in a book. What this does is it prints the value of A in a 5 character space. So observe that minus 1 will be printed like this. There are 5 spaces. Assume that the starting of the printer line is here. So this will be put in the last two positions. When you print B it will print 10 like this. When you print C it will print 100 like this. Can you see it will be a very useful thing to align numerical values appropriately? Consider print F percent 2. If you say percent 2d then minus 1 will be printed in two spaces. B which is 10 can also be accommodated in two places. C however is 100. Not just because you have asked it to print only in two spaces it will not print 00 or 10. A programming language cobalt does that actually. Depending upon the picture of the print out data value it will print only so many digits. So we have had problems when 10,000 became 0000. Here however C++ will print 100 properly. Here are examples of floating point numbers. I have values for P, Q and R as 123.456, 0.1234, etc. and they are printed like this. You should now try to adopt print F wherever you can particularly for the final results which you are going to print out. I am suggesting this you can do it for your practice program that you use but most certainly all project outputs must look neat not haphazardly. There is a lot of work to be done to decide on the proper messages to decide on the proper error messages to decide on the proper output messages and that work is integral part of any good program. Just because the logic of the program is right the program does not become a good program. It is a working program. It becomes a good program when it is properly documented within and when it produces output which is well documented. I will very briefly re-describe the projects that we had. I had a meeting with the team leaders. Unfortunately all team leaders were not present. Unfortunately all teams have not yet been formed. I have advised all the present team leaders and that will be in fact part of the assignment this week in the lab. You have to complete formation of team by midnight tomorrow. There will be five teams of four students each who will form a lab batch. In each lab batch there must be five teams. There are lab batches which have only 17 students. Then form teams of three students each with few teams of four students. Four students is a norm. It can be violated only if you have more than 20 students. If you have more than 20 students it is not permitted to have a batch, one batch of three students and few batches of five students. The minimum size of the batch is four. One batch can be either three or five in the extreme cases. Please also remember to balance out the batches. I have found and that is natural that either a few friends or few people who have a lot of programming experience they team up together to form a team. Very good. That will be a very strong team. But remember the project evaluation which has 25 marks has 15 marks for the project. If the entire project is not done well because just one team is very weak the whole project report may get only five marks out of 25 and every member of the strongest team will also get five marks. Every member of the weakest team will also get five marks. This is the first lesson in any group work. Balance out the assignment of work. So please ensure that there is no weak team in the lab batch. If there is, if you find any, some of the experienced people who have done some programming should take the lead to shift over to some other team. It is not necessary that every team must do excellent programming work. Every team must write some programs but there is a lot of work which I shall explain tomorrow when I describe the projects in greater details. The whole group that is lab 1A, 1B, 1C, 1D or 5A, 5C, 5D, 5A, 5B, 5C, 5D all of that will be doing just one project. It is called the mini national UID project for IID campus. So you will be allocating a unique ID to every student on the campus and you will be using that unique ID with fingerprints for recording attendance or for permitting, whatever. These are the four parts. These are the four sub-projects. Registration, classification and consolidation, duplicate detection and usage. For usage, you will have to build an application. I shall describe these more details tomorrow but please understand that one batch, say batch A could be doing duplicate detection, batch B could be doing registration, batch C could be doing this, batch D could be doing this. How do you decide that? I would expect the team, the lab batch coordinators, four coordinators to sit together and decide what they would like to do. I could specify it easily. Incidentally, if the team formation is not done completely for any lab batch by tomorrow midnight, I shall use my authority as instructor in charge to reallocate teams for such batches and I might do that very arbitrarily. So by Wednesday morning, either you decide properly balance five teams in every batch or I decide arbitrarily. That's the only choice. The purpose of these projects. Now this is extremely important for all of you to appreciate this. So far you have been doing individual assignments in labs or answering questions in quizzes or lab tests or mid-semester tests as individuals. Programming is not an individual activity. Programming is a group activity. So therefore the objective of the project is to expose you to and give you some practice in large software development. As I mentioned earlier, large software development requires version control. We shall use a system called CVS for version control. Any significant program development and checking and testing requires some online program debugging tool by which you can see where your pointers are moving or where data values are moving. We shall be using a graphical debugging tool called DDD. You will have to learn how to test programs, how to write test input and how to first write in advance what should be the correct output and test your programs accordingly. Enormous amount of documentation. All of this would have standards which shall be put on the web page for the projects and you can follow them. You should also be exposed to the notion of teamwork. The teamwork starts with forming good teams in the group. Professional peer evaluation. As I mentioned earlier, I have used this technique in my postgraduate courses. This is the first time I am using it for a first year course. Out of 25 marks, 15 marks will be given for the project report by the TAS based on the project report evaluation. But 10 marks which are for individuals will be given by the lab batch based on the peer evaluation. I shall explain the process of peer evaluation. By and large, whatever marks you submit out of 10 will be allocated as your earned 10 marks. However, as I mentioned to the team leaders, if I suspect that the peer evaluation does not accurately reflect the work done, it is not necessarily programming work. It is all kind of work that is required for that project. If the work done is not commensurate with the marks, I reserve the right to conduct two sample vivaas. I will take any two sample people from the whole batch and I will conduct a viva. Now, suppose you have given 8 marks and 10 marks to those two students and I detect that they deserve, say 9 marks and 10 marks, then my average mark is half mark more than what you have given. I will add that half mark to every student of the whole lab batch. On the other hand, if I detect that these two students actually deserve 4 marks each and not 8 and 10, then you have given 4 and 6 marks more to these two students, the average works out to be 5 extra marks. I will deduct 5 marks from every student of that lab batch. So please understand that it is extremely responsible activity. That is the principle of forwarding peer revolution. Well, you can mull over it later. May I have your attention please? I know it is harsh, but that is how it is. You cannot get only the authority to give marks to yourselves without being accountable. I would like two minutes of your time. There is something that has been pending. I still not have got the final updated mark list for the mid-semester from my TES. It is quite likely therefore that this list might be changed. Once I get the final list, I will put it on the home webpage, but however, it is with honour that I would like to recognize these people. Guru Raj Suresh, what is he here? Yes, thank you. Nami Traval. Can't even see. Yes, Nami Traval is sitting here. Well done. Vinayak Gagrami, we saw him yesterday, returned and sent a nice program. Ankush Jain, Ankush is here. Yes. Siddhas Chauber. Where is Siddhas? Yeah, that side. Okay. Udi Jalan, Prathik Bandari, Jarin Jali. Long corner. Okay. Jai Khan is there. Raja Jain. Shiva Chandramawali. Missing? Chandramawali is not here. Okay. And Nalamala Gautam Reddy is there. There are at least three other names that I know who are special because they use binary search in a problem when it was not required to be used. Unfortunately, there may be many others. I do not know who had used binary search. I would request those few of you who actually use binary search in solving that problem. You remember the problem did not require you to use binary search but it stipulated that one of the arrays was sorted and naturally you should have used binary search. Although it was more difficult to code online in an exam but those few who did, they deserve the honor to be recognized and I would like their names to be known, which I will flash next time. Last request again. Please give your anonymous feedback on the course on this side. It has been put up on the web. Please ensure because your feedback is very important for me and my TAs to correct any problems that we have with the course delivery so that you can benefit from it. And repeating this concession, there have been umpteen people. I have received some confession letters already but there are many people who are inquiring that I had copied a program which has not yet been graded. I am going to resubmit it anyway. So do I have to give an apology letter? Please understand that the apology letter requested is not connected with any evaluation. It is connected with falling prey to a wrong temptation and therefore the punishment is for falling prey to that wrong temptation. It does not matter whether it had zero marks associated with that assignment. But if you have copied an assignment without giving credit from whom you are copying then you have done a wrong thing for which you must confess. So this I must have. There is absolutely, absolutely no debar from this. As I have said and I have repeated again there will be no punishment except that in those assignments they will get zero marks provided after the confession letter they also resubmit those assignments doing properly things on their own. Doesn't matter whether they are right or wrong. We are conducting, we have conducted seven assignments. I am extending the date of assignment submission including any old assignment that you have submitted which we are not correct. You have a chance to correct them and resubmit. I am telling my TA's to reevaluate assignments only those which are latest submission. If I submitted something earlier and that is right, leave it. But if you have some problem with that and you now have thought a better thing you resubmit that assignment by rewriting it that is perfectly fine. The last date for such submission is next Saturday. So you can submit all assignments including the last lap seven assignment and we will count best five out of seven. Ordinarily I expect everyone to get five marks out of seven at least four, maybe three. Those who have unfortunately copied somebody else's assignment may stand to lose at most one mark. It is not worth it. Please send your letters immediately because one thing I have guaranteed on 13th February which is the last date by which time I expect to complete my comparison thing if I do not get these confession letters and catch people who are copied they will be given fail grade on 14th that is guaranteed. Please don't get into that problem yourself and please don't force me to get into an extremely bad situation. I feel very hurt if I have to do that. There are some people who have made me saying that we have written this but we know some people have copied from our assignment. Such people need not worry. If they tell me in advance that they know some people have copied if their names comes up in the matching I will ignore those. If their names don't come up in the matching if their names come up in the matching and they have not informed me they may be called for a discussion. To me, I have a speciality in spotting the original authors. No person who is innocent of copying will ever get any punishment. That I guarantee. However, others who have fallen to the temptation must confess and must not do this. It is bad actually. It is bad for you. You don't learn anything at all by copying and testing or by changing some variable names or by shuffling some code. You learn a lot by attempting a difficult problem not necessarily getting the right solution. I want you to learn that. Thank you very much.


And last but certainly not least, we have Dr. Michael Murray who's going to be discussing a case of unilateral blurry vision and headache. I'm sorry to interrupt but I just want everyone to know that he looks amazing this morning and that's despite being woken up by me at 6 a.m. in the call room when he was a little disoriented sitting up on the couch wondering what was happening. So you clean up well, Mike. You look good. Thank you so much. All right. So I'll be discussing a case of unilateral blurry vision and headache unlike other presenters. I don't have financial disclosures. Maybe I wish that I did at this point but I do not. So this was a patient who came in with a right eye blurry vision and headache, a 78-year-old male. I had a past medical history of polymyalgia, rheumatica, a cabbage in 2007 and then diabetes and presented to a rheumatology clinic with about a weak history of right eye blurry vision. It was described as blurry throughout the eye without flashes or floaters and then an associated headache described as unilateral at frontal with some mild-associated jaw pain. There was no recent illness or other systemic symptoms and past medical history and ocular history were pretty non-contributory other than stated here. He was on prednisone, 10 milligrams daily and aspirin, had a penicillin allergy and then a former smoky had a 50-packier history. So at this point in the rheumatology clinic, the differential was quite broad including vascular causes, GCA, NA, UN, infectious inflammatory causes is listed, neoplastic autoimmune. The point of this slide is that the differential was or should have been quite broad. The patient was told by the rheumatologist to increase his steroid dose to 30 milligrams per day and then was sent home. Then two days later came back to the emergency department, had a worsening headache and at this time he had a mild ptosis in that right eye and some right facial numbness and also severe right-sided facial and forehead and retroorbital pain and still had this blurry vision. Temporal artery biopsy was arranged at that time and taken and then he was told by the ED after consultation with rheumatology to increase the prednisone to 60 milligrams per day and sent home. And then two days after that, so four days after his initial presentation and almost two weeks after the symptoms started, he came back to the emergency department for progression of his symptoms and pain and meanwhile the biopsy for GCA has come back negative. Mike was he already on the 10 milligrams of prednisone before this? Chronically was on it for the polymyalty aromatic. So his visual acuity in that right eye was NLP at this time. He had an unreactive five millimeter pupil. He had an APD by reverse and then on extroocular movements he was fixed in the right eye and the left eye had an abduction deficit. Pressure was normal and his visual fields were normal in the left eye and then he didn't have vision in the right eye obviously. So on bedside exam, he had moderate proptosis in the right eye and a complete ptosis and mild fullness of the right upper and lower lids. He had a corneal epithelial defect without infiltrate. Otherwise, ACIRIS lens exam relatively normal and on his dilated exam, the optic nerve didn't show any signs of edema or pallor. There was no non-hemorrhageal ischemia visible. Craneal nerve exam kind of summed up. The only other thing besides the NLP vision and the ethylamplasia of the right eye was also a decreased sensation of V1 distribution of the right side. Otherwise, cranial nerves were normal. So this is a photograph of him just demonstrating that right eye ophthalmoplesia and the left eye abduction deficit here. So selected lab exams. He had an elevated white count. He had an LP performed that PCR came back for strep pneumo on his CMP and demonstrated metabolic anion gap acidosis. PT, PTT were within normal limits and his A1C was 14.5. So working differential at this point, obviously thinking about vascular causes septic emboli, cavernous sinus thrombosis, infectious causes. He has some bacterial meningitis, bacterial fungal invasive disease, neoplasic otomy, and obviously a little bit lower down at this point. And I just wanted to talk just a quick kind of learning point about temporal arthritis since this was kind of an anchor diagnosis in this case. Looking in the literature, it can exhibit multiple cranial nerve signs. It's pretty rare to have it be bilateral. And here's a couple of isolated cases, but they're kind of case reports. And especially seeing a facial nerve, or sorry, a V1 distribution sensory nerve and also abduction deficits, a little unusual. And then I liked this quote, it's Sherlock Holmes. He says, I make a point of never having any prejudices and of following dossily where a fact may lead me. And in an outside hospital, there was an astute ID doc, as this patient was admitted and being worked up for some meningitis concerns who thought that the facts might lead him to look here. So this is a photo that we actually obtained when the patient was transferred to us showing black discoloration of the right palate. And then here's some other imaging. So on the left-hand side, this is a MRI post-contrast T1 image showing that superior ophthalmic vein, and there's a thrombosis there. Also on the right image, there's evidence of occlusion of the right patrosal vein. These images are also MRI post-contrast T1 images showing an infiltrative disease involving the right orbit and then extending to the right cavernous sinus. And then here's a post-contrast T2 image showing also that involvement in the right cavernous sinus. So I wanted to talk a little bit about orbital apex syndrome and superior orbital fissure syndrome. Basically the biggest difference between this is how far back compression is occurring. So the orbital apex syndrome is involving cranial nerve 2. And I like this anatomical diagram here as a view looking towards the orbit. And then superior orbital fissure syndrome is a little bit more anterior. Spares the optic nerve and it's common trauma related. And then cavernous sinus. So the anatomy of it, it's a complex network of vein, lots of septations in there. And a 1 by 2 centimeter cavity drains blood from the superior and inferior ophthalmic veins as well as supraparital sinus and the superior and inferior cerebral veins. And the two sides are connected by an intro cavernous sinus. I like that lower depth diagram that shows the space that contains cranial nerve 3, 4, 5 and 6 and the internal carotid artery. And it also shows great proximity to the sphenoid sinuses in the roof of the pallet. So cavernous sinus syndrome first described by Richard Bright in 1831. He actually had two volume sets of renal disease and then cerebral vascular disease has these remarkable drawings. You can buy a first edition online for like $20,000 if you want. And there's three types that have then been described. And it's basically anatomically how far back the cavernous sinus is involved. Posterior being all branches of that trigeminal nerve. Whereas anterior is just V1 and middle is V1 and V2. Common causes continue to spread from nasal frunkel, the sphenoidal ethmoidal sinuses and dental disease and the pathogens are listed there. Staff and strep obviously common and then less common gram, negative rocks, fungal and u-core. There's also aseptic causes, trauma, malignancy, dehydration, anemia, granulomidus disease. So this is histology. This patient's palatal biopsy, a representative photo here showing this septated hyphae there and then also the staining on GMS. So I want to talk a little bit about mucomycosis. Described first actually in 1885 by Richard Ploff. He was a medical forensic professor in Prague and then actually didn't really get much attention to literature until about the 1940s. Vascular invasive is part of the zygomucosis family. Commonly rise spacer mucor and has affinity not just for the rhinoorbital tract but pulmonary and GI tracts as well. It's associated with diabetes, especially DKA, which our patient happened to have, as well as being immune to compromise either from medications or malignancy causing neutropenia, etc. And the initial presentation is similar to our patient with a headache sinusitis and then some visual changes. The cavernous sinus symptoms which can spread to the other eye and that's actually what was happening in this patient is that they were spread along that intra-cavernous sinus causing the left ABduction deficit. Treatments from mucomycosis, obviously you've got to stop the fire that's stoking the flame so getting rid of any immunomodulatory therapy as quick as you can taper it down, correcting the metabolic derangements, so DKA in this case. And then an IV antifungal, commonly anaphtericin B at 5 to 7.5 mix per kick per day and then the aggressive surgical debreement is just really paramount in causing the source control. Other therapies that are actually being looked at as adjunctive therapy and I'm sad that Dr. Patel couldn't be here today but he actually published a case report where they were able to save an eye from exeneration using interorbital irrigation of anaphtericin B in kind of concert with these other therapies. There's also a case report for retrobulber injections of amphotericin B. Hyperbaric oxygen has been shown also to be kind of another adjunct therapy that people have been interested in and then another therapy that people have looked at is iron chelation. Deferaserox was in this Defeat Meurek trial and unfortunately that didn't show any benefit. The difficulty in all of these therapies is really coming up with any meaningful amount of patients that you can get at a single center because meucomicosis is relatively rare. And so finding the end size to be able to power a study to show significance is difficult but there's more studies that need to be done. So the follow up for our patient the clinical course unfortunately after extensive consult with neurosurgery and ENT and ID this decision was made not to perform surgery. He had extensive involvement to the skull base and they didn't think that the morbidity of the surgery was able to justify doing surgery in his case and they'd be able to clear the affected tissue. So Palliative Care was consulted and the amphotericin B was actually continued but other comfort care measures were taken and the patient was transferred back to Montana for his end of life care. These are my references. Just wanted to thank Dr. Patel, Dr. Marx and Tina Manlis actually helped out with this case a bunch and as an ode to summer I'm sad that it's over. This is some of my favorite summer activities at Bear Lake and then I'm happy to take some any questions. It's a picture of the family.


from San Francisco, it's theCUBE, covering DevNet Create 2017, brought to you by Cisco. Okay, welcome back everyone, live in San Francisco, this is theCUBE's exclusive coverage of Cisco Systems, inaugural DevNet Create event, an augmentation extension and build upon their successful three-year-old DevNet developer program. Our next guest is Amanda Whaley, who's the director of development experience at Cisco DevNet. Well congratulations Amanda on one, DevNet being successful over three years. And now you're foray into DevNet Create, which is some called the hoodie crowd, the cloud native developers, open source, completely different animal, but important from DevNet. Absolutely, so the hoodie crowd is more my tribe, that's my background is from software development and I came to Cisco because I was intrigued when they reached out and said, we want to start a developer community, we want to start a developer program. I talked to Susie Wee for a long time about it and what was interesting to me was, there were new problems to solve in developer experience. So we know how to do REST APIs, there's a lot of best practices around how you make those easy for developers to use, how you make them very consumable and developer friendly and there's a lot of work to do there, but we do know how to do that. When you start adding in hardware, so IoT, network devices, infrastructure, collaboration, video, there's a lot of new, interesting developer experience problems to solve. So I was really intrigued to join Cisco, bringing my software developer background and coming from more the web and startup world, coming into Cisco and trying to tackle what's this new connection of hardware plus software and how do we do the right developer experience around it? So I have to ask you, what was your story?  What are you looking around? What was your reaction? Tell us. So what was interesting was, so DevNet started three years ago at Cisco Live, we had our first DevNet developer zone within Cisco Live. That was actually my first day at Cisco. So my first day at Cisco. Half dozen by five. Yes, absolutely. And so that was my first day at Cisco and Susie talked to me and she said, hey, there's a lot of network engineers that wanna learn how to code and they wanna learn about Rust APIs. Could you do like a coding 101 and start to teach them about that? So literally on my first day at Cisco, I was teaching this class on what's a Rust API, how do you make the call, how do you learn about that and then how do you write some Python to do that? And I thought, is anyone interested in this that's here? And I had this room packed with network engineers, which I at that time, I knew some networking, but definitely nothing compared to the CCIEs that were in the audience. And yeah, very, very, yeah. And so I taught the course and it just caught on wildfire. They were so excited about because they saw this is actually pretty accessible and easy to do. And one thing that stood out was we made our first Rust call from Python and instead of getting your Twitter followers or something like that, it retrieved a list of network devices. You've got IP addresses back and so it related to their world. And so I think it was very fortunate that I had that on my first day because I had an instant connection to what that community needed. They're like, who is, she's awesome. Come on. Well, it was, it helped me understand what they were interested in. You're like, we're gonna go for a while on the block now. Come on, kindergartners, come on out. No, but these network guys, they're smart, so they can learn. Really smart. It's not like they're wet behind the ears in terms of smart, it's a new language for them. And that was the point of the class was like, you guys are super smart, you know all of this, you just need some help getting started on this tooling. And so many of them, I keep up with them on Twitter and other places and they have taken it so far beyond and they just needed that start and then they were off to the races. So that's been really interesting and then the other piece of it has been working in our more app developer technologies because as developer experience for DevNet, I get to work across collaboration, IoT, networking, data center, like the whole spectrum of Cisco technologies. So on the other side in application, we have Cisco Spark, they have great JavaScript SDKs and it's very developer friendly. And so that is kind of going back to my developer tribe and bringing them in and saying, do you want to sell to the enterprise? Do you want to work with the enterprise? Cisco's got a lot to offer and there's a lot of interesting things to do there. They have Cisco networks and gear all around the place and so it's important. Now talk about machine learning and AI, the hottest trend on the planet right now in your tribe and developer tribe. A lot of machine learning going on and machine learning has been around in the data center. Networking guys, it's not new to them either. So that's an interesting convergence point. IoT is a network device. So you got IoT, you got AI and machine learning booming. This seems like it's a perfect storm for the melting pot of... It really is. So today in my keynote, I talked a little bit about, first of all, why have I always liked working with APIs and doing these integrations and I've always thought that what I like about it is the possibility you have a defined set of tools or Legos and then you can build them into whatever interesting thing you want to. And I would say right now developers have a really interesting set of Legos, a new set of Legos because with sensors, whether that's an IoT sensor or a phone or a video camera or a piece of a switch in your data center, a lot of those have you can get information from them. So whatever kind of sensor it is, plus easy connectivity and kind of connectivity everywhere, plus cloud computing, plus data equals like magic. Because now you can do, now machine learning finally has enough data to do the real thing. My original background was chemical engineering and I actually did predictive model control and we did machine learning on it but we didn't have quite enough data, we couldn't store quite enough of it, we didn't have enough connectivity, we couldn't really get there. And now it's like all of my grad school dreams are coming true and you can do all of these amazing things that seem possible then. And so I think that's what DevNet Create has been about to me is getting the infrastructure, engineers, the app developers together with the machine learning community and saying like now is the time there's a lot of interesting things we can build. And magic. And magic. Yeah. Right. I mean you think about it, that's chemical reaction, the chemistry of bringing multiple things together and this experimentation sometimes it might blow up or innovation is about experimentation. Andy Jassi at Amazon Web Services, I mean I've talked to him multiple times and him and Jeff Bezos consistently talk about take, do experiments, try things. And I think that is the ethos. It is and that is particularly our ethos in DevNet. In fact DevNet create an experiment, right? New conference, let's get this people together and start this conversation and see how it comes together. What's your reaction to the show here? Just divide your feeling, feedback you're getting, observations. It's been, I'm so happy. It's been great. I had someone tell me today that this was the most welcome they had felt at any developer conference that they'd been to and I thought took that as a huge compliment that they felt very comfortable. They liked the conversations they were having, they were learning lots of new information. So I think that's been good and then I think exactly that mix of infrastructure plus app developer that we were trying to put together is absolutely happening. I see it in the sessions, I see it in the birds of a feather and there's a lot of good conversations happening around that. Question for you that we get all the time and it comes up on CrowdChat, I'd like to ask you the questions. Just get your reaction to is what misperception of DevOps is out there that you would like to correct? If there could be one then you say, I know it's not that. What's your? The one that seems the most prevalent to me and I think it's starting to get some attention but it's still out there is that DevOps is just about the tools. Like just pick the right DevOps tools, Docker, Docker, Docker, use Puppet and Chef and you're good, you're DevOpsing. And it's like that is not the case, right? It's really a lot more about the culture and the way that the teams work together. So if there was anything I could and the people, right? And so it's flipping the emphasis from what's the DevOps tool that you're using to how are you building the right culture and structure of people? That's the one I would correct. Suzy was on yesterday and Peter and Suzy had a little bit of a bonding moment because they recognize each other from previous lives, HP and his old job. But and it brought up a conversation about what Peter also did in his old job at Meta Group where he talked about this notion of an infrastructure engineer. And what's interesting now was, I mean infrastructure developer, I'm sorry. That was normally like a network engineer. So the network engineer is now on the engineering side meeting developers almost like there seems, I can't put my finger on it. It's like I can feel in my knee weather patterns coming over. That a new developers emerging. And we talked a little bit about last night about this, what is a full stack developer? Doesn't stop at the database. It can go all the way down to the network. So you start to see in this view a little bit of a new kind of developer. Kind of like when data science emerged from not being an analyst but to being an algorithms specialist meets data person. Right. I think it's interesting that, and this shows up in a lot of different places. When I think about DevOps, I think about this spectrum of the teams working. And there's the infrastructure teams who are working on the most deepest layer of the infrastructure. And then you kind of build up through there into the DevOps teams, into the app dev teams, into maybe even something sort of above the app dev team, which would be like a low code solution where you're just using something like built.io or something like that. Something that we would normally think of as developers, right? So that spectrum is broadening on both ends and people are moving down the stack and moving up the stack. The network engineers, one of the things in DevNet we're working on is what we call the evolution of a network engineer. And where is that going? And network engineers have had to learn new technology before. And now there's just a new set which includes automation and APIs and configuration management, infrastructure as code. And so they're moving up the stack and then developers are also starting to think, I really want my application to run well on the network because if no one can use it, then my application's not doing anything. And so things like the optimized for business that we have with Apple where developer can go in through an SDK and say, I want to set these QoS settings so that my app gets treatment. Like that's a way that they're converging. I think that's really interesting. So one of the things that we've been working on at Wikibon, I want to test this assumption by, we talked a little bit about it, is the idea of data zone. Where just as we use a security zone as a concept where everything that's in that zone and it's both the technologies, it's governmental, there's other types that has these security characteristics and if it's going to be part of that agglomeration it must have these security characteristics. And we're not thinking you could do the same thing with data. Where you start saying, so for example, we talked earlier about the idea that the network is what connects places together. And the developers think in terms of, the places where things are, like the Internet of Things. I'm wondering if it's time for us to think in terms of the network in time, or the network is time. And not think in terms of where something is, but think in terms of when it is. And whether or not that's going to become a very powerful way of helping developers think about the role that the network's going to play. Is the data available now? Because I have an event that I have to support now. And it seems as though that could be one of those things that snaps this group, these two communities together to think it's in time that you're trying to make things happen. And the network has to be able to present things in time. And you have to be cognizant of in time. That's one of the reasons, for example, why RESTful is not the only way to do things. IOT thinks in time. What do you think about that? Yeah, I think that's really interesting. And actually that's something we're diving in with our community on is, so you've been a developer, you've worked with REST services and now you're doing IOT. Well, you need to learn a lot of new protocols and how to do more things more in real time. And that's a skill set that some developers maybe don't have, they're interested in learning. And so we're looking at how do we help people along that way. Well, data in motion is a big topic. Exactly, yeah, absolutely. And so I think, and then the network, like thinking about from a network provider, like I need this data here at this time is very interesting concept. And that starts to speak to what can be done at the edge, which is obviously like an interesting concept for us. But also the role the network's going to play in terms of predictably anticipating where stuff is and when it needs to be there. Yeah, yeah, I think that's, I think that's really interesting. But it's programmable, if you think about what Cisco's always been good at and most network and ops guys is, they've been good at policy-based stuff. And they really, they know what events are and they have network events, right? Things happen all the time, network management software principles have always been grounded in software. So now how do you take that to bridging, again, that's why I see a convergence. I think we should have a conference around that. It's called, you have net create. Net create. Okay, so final question for you, as you guys have done this, how's your team doing with the talks, was one going on behind us as a birds of a feather, IOT session, you've got a hackathon over here. Pretty cool by design that we heard yesterday that it's not 90% Cisco, it's 90% community, 10% Cisco. So it's not, this is not a Cisco coming in and saying, hey, we're in cloud native, get used to us, we're here, you know? So, I mean. Absolutely not. So it's, I'm really proud of how my team came together around that. So I have our team of developer evangelists who we connect with the developer community and we really look at our job as this full circle. We get materials out and learning and get people excited about using Cisco APIs and we also bring information back about like, here's how it is, here's what customers think about using it, here's what the community's doing, all of that. So when we started DevNet Create, we set the stake in the ground of, we want this to be way more community content than our content we produce ourselves. And so the evangelists did a great job of reaching out into communities, connecting with speakers, finding the content that we wanted to highlight to this audience and bringing it in. So the talks have been fabulous, the workshops have been a huge hit, it's like standing room only in there and people getting a seat and not wanting to leave because they want to keep their seat and so they'll stay for workshops in a row. It's been amazing. I think it's great, it's exciting for me to watch because I know the developer goodness is happening. People are donating software, you see Google donating a lot of open source, even Amazon on the machine learning. You guys have a lot of people open source, but I got to ask you now within Cisco and it's ecosystem of this company, we see a lot of Cisco people on our Cube events that we go to, we go to 100, that's last year would be over 150 this year, we saw Deli and Ciro, we saw some Cisco folks there, there's Sapphire, there's a deal with CenturyLink and on a cloud enterprise cloud. So there's Cisco everywhere, there's relationships that Cisco has. How are you looking at taking DevNet Create or are you going to stay a little bit decoupled, be more startup like and kind of figure that scene out or is that on the radar yet? So I think we know with starting DevNet Create for this first year, what we really wanted to do is get foundation out there, stake in the ground, get a community started and get this conversation started. And we're really looking to in the iterative experimental way, look at what comes out of this year and where the community really wants to take it. So I think we'll be figuring that out. I see what grows out of it. Yes, we see what grows. Thousands of flowers bloom kind of thing. Yeah, and I think that it will be, we will always have the intention of keeping that, we want to keep the mix of audience of infrastructure and app and we'll see how that grows.  I'd like to get some of those experts on the CUBE interviews as soon as possible. Absolutely. Add some crowd chats. You guys did an amazing IoT crowd chat. I'll share that into the hashtag. So very collaborative. You guys are a lot of experts and Cisco's got a lot of experts out in hiding behind the curtain there. You're bringing them out, bringing them out out in public here. That's right. Congratulations. Thank you very much. We're here live for the special inaugural coverage of DevNet Create. Cisco's new event, cloud native open source, all about the community, like the CUBE, we care about that and we'll bring you more live coverage after this short break. Hi, I'm April Mitchell and I'm the senior director of strategy and planning for Cisco.


the breakdown is presented by John's sewer and drain cleaning the name to know when the drains don't flow welcome into the breakdown Patriots fans you are recovering from a regular season finale we've got you covered here on the finale of the breakdown I'm Phil Perry that's Ted Johnson Ted worst record since 1992 I had this team as a nine or ten win team before the season believe it or not I did not see this coming did you I didn't see this coming honestly Phillip really I thought the offense would be a little a lot better than what it was considering Bill O'Brien was coming in here I thought the buy-in would be better than it was considering how the season ended last year to see where they are at this point with you know Bill Belichick's job in question going forward I never thought it would get to this point and here we are well if you're looking for one reason why the Patriots won just four games this season turnovers huge story this year after going 14 straight years without turning it over more than 22 times the Patriots turn back the clock to a different era of football committing at least 23 turnovers in each of the last three years their 29 giveaways this season their most ever under Bill Belichick it's time now for board games brought to you by John sewer and drain cleaning the name to know when the drains don't flow turnovers turnovers turnovers Ted it's been the story of the 2023 season for the Patriots we're gonna break one of them down here you've got tip drill written at the top of the board sounds like something you might have done in Patriots practices past buddy many many times I have Phil all right so tip drills is something we do in practice where you know guys tip the ball up and then the secondary guy comes in and makes the interception and this is what's been happening to Bailey's happy in the Patriots offense a lot of tip balls and interceptions Bailey's throwing on these short to intermediate passes because defensive backs are getting their hands in there tip of the ball up and guys are making plays and so that's why we have tip drill right here so this is a second and nine situation late in the in the fourth quarter just over two minutes to go all right in the Patriots are trying to get back on track it's a down and distance of second and nine that's kind of your get back on track down in distance where you you're trying to get a chunk play here to get a third in manageable kind of third down okay so what are the tip for the jets that it's going to be a pass clearly is when a team comes out and empty like the Patriots did you come out and empty really the only run threat is maybe a quarterback draw not really real threat and so feels like it's going to be a pass besides just the down and distance also coming out empty so this is what the the Patriots run okay on this side the three man side they just run a couple of out routes here with a clearing route by Zeke Elliott and on this side we have two slant routes from the two two man side right here okay this is the Mario Douglas he was the intended receiver if Bailey's happy had the confidence in the time and his offensive line and was you know maybe just a little bit more advanced than the offense he maybe would have surveyed the field a little bit longer instead just locking in on the left side like he did and found key Shambudi who was open on this play but nonetheless he went to the left side on this play and in this coverage the jets were playing Tampa two Tampa two is where the middle linebacker he goes to the middle of field the two safeties of the half field safeties on this and everyone's playing hook hook hook the flat hook the flat and then and then playing soft on the outside here's what you have for Bailey zappy if you're gonna throw this ball into a coverage it's got eight guys dropping so the jets only rushed three guys right here they rush these three linemen and they drop this deal I mean so there's eight guys flooding the zone on only three rushers and so if you're gonna try and squeeze the ball into a coverage it has eight guys dropping there the timing and precision has to be there and these two haven't worked well long enough together to get that timing down and the field conditions were so bad nonetheless they tried it anyway he throws the ball this defensive back right here really was never fooled on this it's really hard to cut on those conditions he was right on the guys inside hip right here he tips the ball as a ball gets to him tips it to Tony Adams the safety who's squatting these safeties did not open up like you typically do in cover two because the conditions are so bad and the footing so bad they knew that they just stay condensed and something maybe good will happen and it certainly did Bailey zappy has to do a better job of getting the ball out on time and more accurately and really the defense of the wide receiver has to get his head around quicker than he did those things didn't happen they're ugly get their hands in there tip the ball and this is a theme that's been reoccurring for the Patriots offense the last few weeks these short to intermediate routes teams are squatting on him tipping the ball and getting interceptions Bailey zappy strong nine interceptions to his six touchdowns this year Phil predictable offense Ted when you don't have a lot of threats to beat the defense deep you're in conditions like they were in on Sunday you got to throw short the Jets were expecting it Bailey zappy the lowest rated quarterback in football Ted on throws zero to nine yards beyond the line of scrimmage just 60.5 Bailey zappy's first few games as a starter were a Cinderella story he's kind of turned into a pumpkin yeah after throwing six touchdowns and just two picks in his first four games as the path starter zappy's last two games were different story no touchdowns five picks so does he think that he had earned himself a chance to remain a starting quarterback in the NFL Bailey I mean yeah of course you know the confidence myself to know that I think I can go out there and lead a team of win games of course I want to be here I mean I've always earned the plan in the phone of course I want to be a patriot so whatever is decided this offseason I'll be ready for training camp and I'll come to compete and do everything I can help this team with and hopefully that's a starter and you know hopefully we can win. Ted is Bailey zappy a part of the Patriots quarterback room next year I love the confidence my man that's my Texan buddy right there Phil I'm a little bit worried about him being part of the future in this quarterback room just because if they go out and draft a guy high in the first round like we all anticipate the Patriots doing doing I just don't know if his personality type is the best to have in that quarterback room because he clearly thinks he's a starter and that could be combustible with a young kid who's clearly the heir apparent and so I just I'm not sure how that's gonna work with him on a roster. And I also get back to something that we don't often talk about with Bailey's app he's just his size Ted you know we're talking about another short interception there he had five interceptions this year throwing zero to nine yards beyond the line of scrimmage I wonder if his height just makes it difficult for him to see the field and it's okay if you're a scrambling quarterback if you're a great athlete you can be a little undersized and get by Kyler Murray for instance that's not zappy's game so I wonder if they view him long term if somebody like Bill O'Brien who might be back next year if they view him as a long term backup option it's probably probably not but does he have a role on a team somewhere yes he's probably one of the top 70 or 80 quarterbacks in the NFL but to be a starter and to pin on him I'm not so sure about that in a big part of it is because of the size he doesn't see I don't think the defenders that are there you know on the inside the hip of these wide receivers and I just think those linemen I think cover up and so he doesn't have clear path and vision to these receivers in the short to intermediate areas I think you're starting fresh maybe Bailey's app Zappy's back is a two or three but you're probably going with a young guy Mac Jones probably gonna end up somewhere else be fascinating to see what the Patriots do at the quarterback position moving forward hey be sure to download the NBC Sports Boston app it has the latest news analysis and commentary from all of our insiders you can scan the QR code on the screen right now or go to the app store or Google Play up next Patriots run defense had been one of the best in the league until Breece Hall came to town what went wrong for New England when the breakdown returns like I said it is man we know we didn't do what we had to do this year I don't mean we didn't work hard I don't mean we didn't come in weekend and we got expecting and plan to win just an execute the ball down roll out way so that I said off the top of the show I was surprised by the team's overall record I was also surprised by the outcome yesterday you're in the snow you're against the Jets and Trevor Simeon that's a bad Jets team I'm just so used to them beating up on the Jets especially at home especially beating up on a bad team in the snow that's usually where the Patriots thrive and yet we saw the result yesterday that we saw Phil the Patriots are 12 and 0 and snow games at home they've beaten the Jets 15 straight times Bill Belichick potentially last game of his career here and that was the effort that you saw I was very disappointed I thought it would go a lot differently than it did I thought the Patriots were gonna win handedly that was not the case at all no surprise here the the grades on the report card not good not good not fridge worthy exactly my report card of course is presented by the Massachusetts School of Law we already talked about Bailey Zappy not much of a surprise he received an F hard to get anything better than that when you don't exceed a hundred yards passing he's joined by his offensive line with a failing grade seven sacks brutal day once again the Patriots offense leaving it in the hands of their defense to try to win the game the defense just wasn't good enough for more let's go back to the drawing board we're back out here for more games brought to you by John sewer and drain cleaning the name to know when the drains don't flow a lot issues for this Patriots defense Ted against the run on Sunday you've got living on the edge written at the top of the board makes me feel like we're gonna be focusing on one of these pass rushers on the outside who might have to play against the run yeah absolutely so this is we're gonna focus on on the edges here okay the the dead to the good job of getting you free yards on the outside and the Patriots outside linebackers didn't do a good enough job of setting the edge turning the ball back inside where their help is okay so if you're a Patriots defensive player Phil and you're looking at this formation on the offense what side looks like it's the running strength to you what side of the field I would guess this side because the tight end is on the right side you'd be correct Phil good job my man all right very good I'm rubbing off on you I love it all right so it's it's the tight end side is usually the set strength side for teams you see two wide receivers over here it just looks like here's all the bodies over here it looks like this is the run string but what teams love to do the Colts used to do this with Pey Manning and Edwin James they like to try and run to the open side to the side that doesn't have the tight end because there's less people to that side and if you can just get one block on this play then you have a shot of getting a big a big run here and so this is what happened so this was a minimal gain it was about a 12-yard gain but this set up the first field goal for the for the Jets and it goes to show you maybe some of the problems you have with this particular player Josh Uche who is a gifted pass rusher but really really has had issues since he's been here in New England stopping the run and setting the edge so what you have right here is you have a basically a stretch play so these all these linemen are going to be hard flat going to the left right here and they it just it's a they just do the RPO handoff right here the quarterback to Breece Hall right here who was a beast oh my gosh this guy's a beast so it's all this stretch zone run play to the open side okay all these guys are coming up here shooting the gaps all these inside gaps were filled nothing's going on over here it's all over here because if the numbers favor the Jets on this side if they can get one block and that one block is Mackay Bekton big ol 77 his job is to reach and hook the outside linebacker to get the room space needed for Breece Hall you have the wide receiver clearing out Jonathan Jones they're in cover one so it's man-to-man so John Jones turns his back and starts running so there's all this space out here Mackay Bekton does a great job of reaching out here and sealing Josh Uche so that Breece Hall has a clear run and laying to hit he gets a 12-yard game sets up the the field goal but this play even though it was just a 12-yard game kind of exemplifies maybe the issues with this one player do you bring him back you're not bring him back he's a good pass rusher he's not a great pass rusher but his run defense skills have kind of lacked I haven't seen them gotten better over the years that he's been here and this one play was kind of indicative of the problems the Patriots defense had all game stopping the run watch out this breeze Hall is a bowling ball but your knives he's a hell of a player Phil special special athlete at the running back position for the Jets and Josh Uche special athlete himself 11 and a half sacks last year but just three this year and some obvious issues against the run game now how much of a beast was Breece Hall exactly a whopping 37 carries for 178 yards by far the most the Patriots given up to any back this season Raheem Moster back in week two was the only other rusher this season to gain more than 80 yards on the ground against the Patriots and this brings us to our Ted Neek Ted Neek of course presented by Shaw's which is perfecting the art of fresh and Ted I know you wanted to get down and dirty on the nitty gritty of something you loved to do and still love to do to me occasionally here on set and that is tackling because there were a few moments in this game where Breece Hall was able to pick up chunk gains because he forced a missed tackle how did he do it and what could the Patriots have done to better execute in those situations. Yeah just you know Breece Hall get ready Patriots fans because this guy is a hell of a player for the Jets and he really showed me a lot in this game and what he was doing I mean you see the Patriots defenders they get close to him I mean there's bodies around him he does a phenomenal job of getting separation and exploding out of his cuts and then also using his forearm and dare I say he kind of reminds me of my former teammate and Hall of Famer Curtis Martin okay. He was so good at when he would you know start throttling down and then cut and in turn his separation and explosiveness was so much better than any other running backs that you would think you would have him because you'd be right there and then he's gone so Breece Hall has similar qualities and so this is what he did a lot throughout the game is you would see a Patriots defender and I'll just I'm gonna show you his stiff arm first so a Patriots defender would come up to want Bentley the defensive backs they come up and here's the thing they think they're gonna come in there and make a big lick boom you see Breece Hall just put that stiff arm out there you hit the shoulder you'd see him sometimes no no it boom and that's just that stiff arm right there is enough to get the defender off balance and then he could go right by he would get under the chin all right and it's very hard to make a tackle when your head's getting jacked backwards so in the shoulder under the chin okay go easy all right all right and then what the Patriots defenders needed to do better fill is they needed to figure out you know what we're not gonna get him down by trying to run through him when they get close what I would tell my defenders leave the leave your feet go off the jump diving board leave your feet and go low and get him that way as opposed to trying to take him up high because he's so good at getting using a stiff arm and getting separation the Patriots defenders didn't do that Breece Hall had big explosive runs this guy is gonna be a handful for this defense to deal with the next five six years Patriots fans hated seeing Curtis Martin with the Jets Ted oh I think they're gonna enjoy watching Breece Hall with the Jets over the course of the next few years all right Tuesday six o'clock tune in for quick slants Tommy Kern sharing his takes as always on the Patriots now that their season is done it's presented by your local New England Honda dealer still to come who's in who's out Ted Johnson throws on his general manager hat for a little Monday night spotlight when the breakdown returns time for Monday night spotlight which is presented by touch view interactive display panels available at the Oakers company here's a look at the most notable Patriots free agents Hunter Henry Trent Brown Kendrick born Michael Wenu Josh Uche and Kyle Dugger among the most notable names on this list so general manager Ted Johnson among those names who are the priorities for you I would say the two guys on offense go sign Mike on Wenu he's been excellent for you ever since you drafted him and then also Kendrick born I love his attitude and his his skill set and then on the other side you know what keep Kyle Dugger I think that guy is a beast he's a little bit of a liability sometimes in the past coverage but he just a hell of a tackler and I think a good leader on this team and then also Anthony Jennings I think he's earned a second contract with the Patriots with the way he's played this year sort of an under the radar free agent but he's another one of those 2020 draft picks that the Patriots picked up and had a career year this year so good for him on that front I would add one more name to that list I'd add Hunter Henry I think Hunter Henry this year as a captain he really embraced that role plus the tight end position really difficult one to fill with a rookie so maybe a draft one for the future there but you might want the placeholder and hunter Henry who still is a borderline top 10 tight end in this league bring him back help establish whatever's happening moving forward in terms of the culture here because I think he was a good fit in that regard now in terms of maybe outside additions Ted we know the Patriots have holes to fill but where are you going first positionally I would say needs one two and three all start with a left tackle please please please get me a left tackle all right you're not going quarterback though well yes okay all right see now we're drawing it out all right yes quarterback should be number one I guess but you know we need a left tackle to block for the quarterback because you know the offensive line I think maybe ruined our young quarterbacks but yes I'm sorry quarterback of course and then left tackle that's those would be the first two positions I'd go at and then clearly you need to upgrade the receiver depth on this on this team and then if hunter Henry doesn't resign we need to tie it in as well a lot of needs a lot of needs and listen the left tackle spot you're not wrong for trying to prioritize it it's really difficult to try to find good ones who are also available in free agency because typically if you've got one you hold on to them and you never let go we may have a little I know this this is a very smooth operation that we have here but it sounds to me like we have a blooper reel here which I haven't seen we're going to throw that to the people right now have some fun with this all right here we go ready yes okay three two one we got to make up for the lack of energy that they are bringing to the table it's a lot of responsibility on us but I think we can do it yeah smelling salts the reactions are so yeah it's like ah stings the nostrils um of the uh the radar it can be uh sorry sorry sorry sorry sorry sorry sorry you you were old one that's my one that's uh it felt like I was in this like zone thing and I was just talking and oh you were great man I was you black out a little bit that was awesome makes a tremendous interest god you stink that's just too much words too much words too many words deep down the middle of the philly just shut up phil alex austin rookie too much talking already just need a word counter we should do the mccana hay thing before every now all right here we go rolling rolling rolling rolling rolling what just one of them days sorry hello one two three four five you have ah push it push it written at the top of the board explain why more philly zappy here zappy holidays I don't know that was bad that was pitchy that was pitchy that was pitchy zappy holidays zappy holidays there we go let's break it down though it's good for the blooper reel all right it's time now nice where'd he go both in the midst yeah that's good all right all right took one on the chin there right took one on the chin but we're gonna we're not gonna uh oh boy oh I love it okay now I'm not a little wobbly I'm wobbly you got a rookie mistake on one end a veteran making a critical mistake another critical mistake by mac jones there in the second half I'm Ron burgundy that was that was horrible let's go whoa good job phil good job buddy how do we make it through any program here Ted thank you for for bearing with me in the ridiculousness my man you keep it loose you keep it light we have a lot of fun doing this show we do thanks to you thanks to jeff garcia our floor director jibbop producer steve hamlin ryan preventor kevin douche arm adam harp ryan o'neill kevin miller we love you and thanks for watching all season