Hey there lads and ladies it is Petrifying Pumpkins here and we have got a firewall ultra news video which is nice to see especially when we're just one week out. This one is a blog post from Sony which details the new pve mode which is called Xfill which is short for Xfill tries. So I'm just going to go over the details see what's new any improvements over the last one it seems like there's a lot. So revealing first details on new firewall ultra pve mode Xfill and this is from David Jagno strategic communications manager first contact entertainment so includes support for co-op with up to four players available at launch this august so anyone who played firewall zero hour remembers there was a co-op mode in firewall zero hour that also supported four players but it was somewhat bare bones you know I think most people were into the contracts mode didn't really pay much attention to the co-op mode unless they wanted to maybe I don't know learn the maps a bit better or try new weapons or whatever. So today we're pumped to reveal one of the biggest evolutions to the firewall franchise by sharing new details on firewall ultra's player versus environment game mode Xfill short for X filtration. This brand new pve game mode aims to challenge players in a group across every map that is available in game to offer an unprecedented level of variety and excitement to the firewall experience. In this blog and of course it's a blog again can't get videos for whatever reason but it's a blog we'll take what we can guess. We're going to break down the new Xfill mode and why we're so excited for everyone to check it out when firewall ultra launches exclusively for psv or two august 24th that is one week away less now I think and here we have a this is new the gif is new but it is like literally two seconds of gameplay in a gif maybe three seconds of for being generous you can see a few contractors moving around you get an idea of what the flashlights look like and you know not much else correct me if i'm wrong but i think that map is oil rig as well so we're still seeing the same few maps being shown off we still haven't got a new one yet the firewall franchise is well known in vore for its pulse pounding gameplay without response intense firefights across an assortment of maps and deep customization and progression all those pillars are carried into the new pve xfill mode but this time with a focus on challenging ai enemies so big focus on ai and the improvement of ai over what was in firewall zero hour so what is xfill mode in xfill you and up to three other players will set out on missions to secure data on three laptops so there's the first big change uh which is a big well which is a big change from the single laptop format of our pvp mode contracts so and in contracts it remains the one laptop but in this mode it's three laptops we've designed each map to accommodate both pve and pvp game modes so you're always uncovering new pathways through levels and finding great flanking spots to take out enemies so there won't be unique maps for pve they will be the same ones you're using in pvp when you first load into a mission in xfill you'll hack into one of two available access points to reveal the laptop locations and then make your plan of attack will you try to split up to cover more ground as a squad or will you stick together to cover each other's backs do you plan to sneak through corridors and try to remain undetected for as long as possible so stealth is viable it seems or will you roll up guns blazing to wage war the choice is yours since every level in xfill is like a miniature playground with a wide assortment of options and possible scenarios and then we get another new gif this one of the office again the one that we already knew was coming but we've never seen this before it's got like a new social makers type logo that wasn't in the original so i'd know if it's just like an update to the background or maybe it's a new area of the map once the laptops are revealed they will appear at spawn points from a dynamic set of locations so when you replay levels it's not repetitive so they're not going to be in the same spot every time they're going to move around it remains to be seen now of course how many locations there'll be but it's nice that they put a bit of thought into that into replayability that sounds promising you'll need to be careful in this mode though because the ai patrols are deadly at the start of mission the enemy units won't know your location so they'll simply be preoccupied patrolling around the map once you initiate a hack and start firefights that's when things get more intense my laptop is just going crazy right now reinforcements equipped with various weapons will dynamically converge on your position from around the map in unique ways to keep you on your toes so they'll keep using unique and dynamic they're using that a lot and that's very encouraging for replayability ai enemies also have an assortment of gadgets at their disposal similar to players with the ability to throw grenades lay traps breach rooms by kicking down doors and even deploy c4 charges these aren't your run-of-the-mill ai bots that just run into the line of fire blindly they take cover they flank you and react to your moves intelligently so if this is all true if this works like they're saying it would be a significant leap over what was in fire while zero hour and i might even pull people away from the pvp mode because it could could be a popular thing if you manage to hack all three laptops and secure the intel this is when things escalate you and your squad must make it to the xville zone and hunker down to survive until your evacuation completes so once you get to the zone you have to waste for the extraction to complete and this is when you're under attack so there's multiple steps to this this is the hardest part of the match as enemies converge in your location and give you everything they've got for players that manage to make it out alive they'll be rewarded with in-game currency which is called crypto and hopefully they'll have completed a few black road dealer assignments as well more on that laser so there's two interesting things here the first thing is that for players that manage to make it out alive they get rewarded which kind of implies that the ones who don't make it out alive the ones who died during the mission maybe they get nothing and depending on how long it goes on you know that'll be interesting to see how people react to that maybe they'll still get something i don't know but it's going to be interesting to see how the reward system works for that and then the next thing is this black road dealer assignment which they'll go into more laser they say however if you have to guess i imagine it's going to be like many objectives you know something maybe similar to the contracts or the operations that we had in the original maybe if get 10 headshots or something like that and maybe you can complete an assignment complete guess for bonuses or whatever that would be my guess and then here in the next gif you can see we're back to the oil rig map again where they're making the extraction now interestingly they don't say that the extraction zones are dynamic or whatever so it sounds like it could be the same zone on each map which would make sense for example for this map to have like a helipad and maybe a helicopter comes in who knows but you can see that the squad is making their way to the designated zone it's like highlights it in the yellow square it seems and there is like crates and stuff lying around there so there is some cover there for when presumably waves of ai come to stop them from getting away so firewall ultra is designed as the kind of game you can keep coming back to again and again over time on your psv or two and consistently find something fresh and new to do and see as a live service title that means constant updates with new content such as maps weapons and contractors as well as redesigns for locations like the shooting range and safe house lobby environment so for those wondering what do they mean by redesigns for locations well if you remember firewall zero hour was like for holidays and stuff like that they would decorate the menus and the lobbies and want last to have you know match those themes so it looks like they're planning on doing something similar maybe not just for holidays i don't know we want this to feel like a living breathing world that evolves over time just like the world of firewall ultra is five years into the future from the previous firewall title as time goes on firewall ultra itself will also see changes the waves is almost over since firewall ultra launches exclusively for psv or two on august 24th etc etc etc pre-orders are live now so you can be ready to dive in to the all-new pve xville mode to put your skills to the test or squad up for four v four pvp matches one thing to know is if you have pre-ordered the game like i did you can actually preload it now since yesterday so you can have it ready to go for day one and that's the end of that information i remember a bit disappointed there was no trailer to go along with the xville announcement to see is in action we just got a few gifts sadly plus haven't said that we're just six days away now so i'm not too butthurt over that either let me know what you think in the comments below if you liked what you're hearing about xville mode is it something you're gonna try out now maybe you weren't interested in before but now that you're hearing it's kind of more fleshed out more it's more depth to us maybe especially with these black road dealer contracts and stuff if you're interested in firewall content or psv or two content in general then be sure to hit like subscribe all that usual youtube and before i end the video let me thank to septicom for letting me use his music in all of my videos you can check him out at the link in the description and also let me give a very special thank you to all my channel members who are helping keep this channel going they are purple unicorn gah moz dead eyed dan i've never seen such behavior in the war room before chopped pp e mr 777 no one knows move master mick alvo world league commentator cast deej the pumpkin patch kid pete hawkins and crumb thank you very much for your support if you want to support the channel as well you can hit the join button beneath the video and become a member too for exclusive perks benefits all that kind of usual youtube and shout you know it is with that i will end the video thank you very much for watching and i'll see you in the next one please stay nice and


Are you ready? Yeah, are you ready? No, my alcohol's packed. I don't have it.  I'm so sorry. I could use some more. I could use some. Yes. Anyways, today, you all know why you're here. You know, although it just dropped, something we've been looking forward to for the longest time. And it was just announced that it's coming out at the end of February, just like a few days ago, and now they've released a full-fledged trailer. All we got before were some pictures and a teaser. But now we got the full-on trailer for Gengubai Kasiwa Deli. Corbinized. That makes it. That qualifies for a Corbinization. Directed by Sanjay Leela Bansali and starring Ali Abad and Ajay Devgn. Ali is playing this real-life gangster, female gangster.  I think somebody even said like teen years. Something that young. This will be our first Sanjay Leela Bansali film. New film to come out since the channel, which is crazy. Mind-boggling to me. Just absolutely insane. It is. It's three years. But let's just get into this. I'm excited, man. Yeah, me too. Three, two, one. Namaste. Look at that. Look at that symmetry. Look at this. Oh, it's going to be amazing. Oh, I can't wait. I'll keep doing it. Write, mother's name, Gangu Bhai. No. Look, it's a joke. Mother's name is not enough. That's sucker.  You do it. Do a little more. A little more. Now, will the entire Chinese language be heard? When the power, the wealth, the intelligence are three women. Then what kind of teacher are these men? Brother Keji, write in the newspaper tomorrow that while giving speech in the free world, Gangu Bhai has not bowed his head. He has met his eyes and talked about his rights. Sorry. Might get accused of being an Ali about fanboy here. Because I am. Don't care. That looks amazing. Everything about it. I got everything I wanted and some surprises that either I forgot. That little stinker, we were talking to Jim Sarb. He said there's some stuff I don't think I'm at liberty to talk about. And I bet that was one of the things he wasn't at liberty to talk about. Did we know that he was in this? I feel like we didn't. We did not know. Man. And did you know BJ Ross was in it? Oh, it's going to be an amazing BJ. Oh, it's going to be such a great role for him. It's going to be how lucky Alia must have been to have been able to play opposite that man in this style of role. It's going to be incredible. So there's so much to talk about, obviously. I thought the trailer was great. I actually wish it was probably a little less. I don't like three minute trailers too much because I think that sometimes I don't want too much. I just want a little taste. And you gave me plenty in the first two minutes. Nothing that was wrong in the three minutes. It's just, I like my trailers a little shorter. But you're going to get the spectacular viewing of a Sanjaliya Bansali film in this. And it was evident just immediately. He's a certain director that has a style and it's an amazing style. And it's one that has the utmost symmetry I've ever seen a filmmaker give. Who's the equivalent? It's Wes Anderson. It's Wes Anderson, right? It's Wes Anderson. Where Anderson will give... It's a very different kind of... It's very different. You know what it really is? It's like looking, it's interesting because Andrani and I went to the Getty today to look at a lot of the different works of art that are up there. And it really does remind me when you look at some of these masters of the craft it's like looking at different artists who are great at what they do. And it's like there's just a different feel to what they create. And you can't even really put your finger on it every single moment. It's just, there's a uniqueness like Anderson has, and I don't even want to categorize it. There's a complexity to his mathematics, I guess you could say. Whereas, there's a complexity to Sanjuli Labansali's color palette aesthetic in every single thing he captures. Not just the light. We know he's like Thomas Cankade is the painter of light. Sanjuli Labansali is the filmmaker of light, but it's more than that. There's a particular blueprint to every frickin' frame. Yeah, it's going to be incredible. It's going to be one of those, at least everyone that I've seen of his, I think, unless I'm forgetting one. You could literally just watch it without sound and it would be an enjoyable watch because you're just going to enjoy the visuals that him and his cinematographer have created and the lighting. I don't know how many times you've said it. We would love to see a behind the scenes with him just working with his cinematography. People, his DPN, his assistants, and the lighting crew. I just would love to be a fly on the wall. And then Alia, I think, looked amazing. I thought she was going to be a role, even though, you know, she has the utmost amount of haters in the industry for nepotism reasons. I'm not really sure because obviously we rave about her.  It's always Alia. Alia and Ranbir. At least in like the current age of actors. It's Alia. Maybe they're just stuck on the fact that she did Student of the Year or those style of films at the beginning of a career and they think that, you know, you can't do other things after that. It's also, we know this on a miniature microcosm of not even worthy comparison proportions. But there's just some people who hate because they're hateful people, you know. And I love this because I saw, I saw, I think the best word I could use is a heft to the persona she's carrying and it's not anything that seems a contrivance that she's adorning with an intentionality to try to appear hefty. It's the work that she's always doing as an actress. It's internal coming out and I really see the weight of the depth of this woman she's playing. I'm freaking excited. And this is going to look like it's span a lifetime of this person. So not only obviously her younger years where she looks like she was brought into prostitution, it looks like, this person, which is going to be an amazing character for her to explore. I think it's going to, it looks like a fun character. It looks like one that's going to have a lot of emotional depth, I guess would be, I don't know, I don't know if the correct word would be, but like there's going to be so much that she's going to have to go through in this film and then to be able to act alongside some of these heavyweights. Especially if I was, Vijay Raaz getting to play either a cross dresser or transgender or just somebody who likes to, whatever. I don't know what it is. I'm so excited for it though. Me too. And you know, we only got to see a real quick glimpse of Ajay Devgun. But it feels from the trailer that Sanjay Leela is always wanting us to know that this is going to be a film that's going to have some of the lighter elements of say like Ram Leela does, right? But it's also going to carry with it some very serious gravitas I think. And the fact that we're going to be able to see it in theaters our first Sanjay film. I'm so freaking excited. I'm hoping. I'm so happy this was good. I'm hoping that because when RR was originally supposed to come out on January 6, we had tickets already and they actually came in IMAX, which I was very excited. So I definitely got IMAX for that. We will again come March now that it's coming out. But I'm hoping this gets an IMAX release here in the States because Sanjay's film deserves to be seen in IMAX. I would love to be able to see this in IMAX. This is one of those trailers we've been waiting so long. One of those where as you're coming to watch it in your mind, you know, you don't expect it to but these are human beings creating their stuff. It can fail.  Please don't. Please be really good. And I'm so excited that it lived up to expectation. And this is a great. Well, let us know what you thought about it. I would love to if Sanjay, Alia, J, obviously VJ, Jim, you already are dosed. If any of you guys want to come on the channel and promote or talk to us, you know, we would always be willing. Sometimes you guys watch, I think. Let us know. Put your phone number down in the comments below.


One of the keys to creating content consistently, whether you want to write more or to do more videos or to share more photos or whatever it may be, a practice that I see a lot of people not doing is to have a place that's easy for you to capture your ideas, so that when it comes time to create content you can just take out those list of ideas and pick one that you want to do that you're most energized by. This is a practice that has become so normal for me that I often forget to teach it because it's become just second nature. And so what I did was, I mean really I started doing this back in the early 90s, even late 80s. I used to have a note, a tiny notepad and a small pencil that I used to carry around with me everywhere and whenever I had an idea that I want to remember, I don't want to forget, I pull out the notepad. This is a tiny one, so easy to fit in my pocket and quickly jot a few notes. And then in the late 90s the palm pilot came along and I started using the palm pilot a lot to write my ideas and of course now with the iPhone and Android smartphones it's so much easier to be able to quickly capture your ideas. So I really really encourage you, if you don't have a practice of quickly and easily capturing your content ideas, please start today. Get, I mean you probably have a smartphone, iPhone on Android. On the iPhone every iPhone comes with an app called Notes. Notes, N-O-T-E-S, right? I don't know what the app on the Android is for those who know, please comment below. But Android, you can download the app called Google Keep. So Google has a way for you to take notes for free easily called Google Keep, K-E-E-P. And so please practice that today. When you have an idea that you think, oh, I might want to write about this, or I might want to do a video on this, take a pause, take out your smartphone and write it down right then and there. And if you do this once, twice, three times, ten times, twenty times, it will become natural for you. And here's what's magical.  I have more ideas today for making videos like this than I had a year ago, than five years ago. Because I allowed that source to be open by keep writing it down, keep letting it go somewhere rather than blocked by your forgetfulness. Oh, I forgot to do this, so I might as well not not even bother coming up with ideas. It's basically what your subconscious or your spirit is saying. So please start practicing that today. You've got to practice it once, twice, three times, five times, ten times before it starts to become habitual, that you naturally immediately think, oh, idea that I might want to create content with. Pause, write it down. OK, write it down in somewhere that you can easily get again. A couple of times that you might want to practice this is after a client appointment, pause. Don't schedule another one right away. Give at least 15 to 30 minutes between your client appointments. Pause and say, huh, from this kind of appointment, what could I write something about? That was some kind of aha moment that the client had. Some kind of exercise I walked the client through that was helpful for them. Some kind of story that I told or that from the client's life that might be useful as a teaching tool for my audience. So after client appointments, another one is after you watch someone else's video or read someone else's article that's in your industry, you probably have some ideas. It's like, oh, I could talk about this as well, but in my own way. Or, oh, this author didn't mention this. Well, maybe I should talk about that. OK, so this is why I get ideas all the time after watching other sort of business and marketing videos. I go, huh, I want to talk about it in my own way. I want to talk about it this way. So I hope this is helpful for some times for you to practice taking notes so that you have writing prompts, essentially, or video topic ideas. OK, so until the next video, I'm George Cal, and I wish you a habit of allowing your ideas, your content ideas to have a place to be so that it's easier for you to create content. Be well.


My name is Gabriel Hiram Beltres, Corporal of the United States Marine Corps, retired. I'm Jenae Piper and before I got out I was a sergeant. My name is Corporal Ray Hunter, United States Marine Corps. My name is Corporal Michael Paltow, I'm a USMC active duty. My name is Matthew Roach, retired as a Lance Corporal. Playing any sport or doing any kind of activity, you're not thinking about anything else. You're thinking about your team or you're thinking about your individual sport and it just makes you aware you're like, oh yeah, and you forgot your injured. It doesn't change. Being around Marines just brings out Marines and everybody. The way we train, the way we practice, the way we interact with each other, it's always pushing each other to the next level, always pushing each other to the next tier and it shows, especially at this high level of competition, it shows. It allows me to get back out and hang out with Marines again because being in the military and coming back into the civilian world is a little different. So coming back now into the warrior games I get to hang out and deal with the camaraderie and get that brotherhood that you don't get back in the civilian world. If you're tired of the same thing every day and you're tired of the pills and the meds, this is the perfect thing to focus your energy on is the competition and the friends that you'll make while being out here. It definitely gets you out of your rut. It's something that vets miss. Coming here gives me a chance to be with the active and for other vets I'd say it's a great advantage and some vets need that brotherhood and camaraderie again.


Today I want to start discussion on another important topic which will lead to the discussion of files, files of various kinds in which we maintain data and the operations on files such as reading, writing, accessing, directly a particular record in a file, the notion of a record, etc. To begin with, we will look at how data is ordinarily structured inside a file. We have had some examples. For example, the image that we looked at, we did say even in the mid-same question that you are required to design a file format in which data would be actually created by you as a text file. Files are not only text file types, there are multiple types of files. For example, another popular file is known as the binary type file where the data is stored in the internal format and therefore is much more compact and occupies less space. We will discuss these things in due course of time. Today we will continue our discussion with the help of an example which relates to the performance of students of CS101 in mid-semester. Typically, people would use a spreadsheet. How many of you are familiar with a spreadsheet?  Those who are not might want to look at a spreadsheet. A spreadsheet is nothing but a two-dimensional array of cells, rows and columns, and in each cell you can keep some value. Typically spreadsheets are used whenever you want to put a large amount of data related to the same type of entity, but there are various entities, such as students. So you put one student's data in one row of a spreadsheet, another student's data into next row, and so on. And the data could have as many files as you want. For example, for mid-semester, I would put a serial number in one column, a roll number in another column, which is actually a string, name in third column. I might put a lab batch in the fourth column. And then I might, if I want a detailed analysis, I might put marks scored in question one A in the fifth column, question one B in the sixth column, and so on. And finally I would put total in one more column. A spreadsheet not only acquires data of this kind and can maintain it in the files on the disk, but it can also provide a whole lot of computational nuances. For example, if you have a total column, it is possible to write the generic formula in that column, which says, add up all columns from column five to column eighteen. And whatever is the total, you put it in this column. So this is automatically done. Once you put that formula, for all rows that formula will be applied. That way you can cross check whether the totaling done by your teaching assistants is correct or not, because you will get a total there. It can do a whole lot of statistical computations. It can do sorting of data. And therefore spreadsheet has become an extremely important tool in the hands of all those people who need to analyze data. So you take financial analyzers in banks or financial institutions. You take statisticians or you take people who want to just maintain data such as academic office or people like me, teachers, who would like to maintain a data on a spreadsheet. Now spreadsheet itself is an extremely sophisticated programming system. People have written application programs which constitute the spreadsheet. Spreadsheets don't fall from the sky. Typically most of the spreadsheets including the Microsoft spreadsheet would have at the back end programs written in C, C++ or what Microsoft calls C sharp, which is the equivalent of C++ or Visual Basic or whatever programming language you may choose. And there would be hundreds of thousands of lines of code written to make a perfectly working spreadsheet for you. Our objective is not to see how spreadsheets are made, but our objective is to see that if data has to be analyzed in this fashion. In what way could I maintain that data in a text file or in a text file? Exactly the same kind of data that I described. And then how could I analyze that data using my C++ programs? So that is the objective. Here is a sample mid-sem file. You can see that it is not a spreadsheet file. But whenever you enter data in a spreadsheet, every modern spreadsheet permits you to export the data contained in that spreadsheet in a variety of formats that you want. One of the commonly used format is known as comma separated value format or CSV format. So while the spreadsheet data will be contained in different cells, one row per student as I told you, when I export the data in a CSV format, I will get a text file which will look something like this. So for example, you can see a whole lot of things separated by commas. So these are called comma separated values or comma separated fields. Obviously, this one is the first field which says one. You'll notice one, two, three, four, 50, etc. These are serial numbers. It is not necessary for me to export serial numbers into a data file. But for the sake of convenience, I have done that. You can see the next field is roll number. You can see the next field is name. Notice that our notion of reading data from input comprises of use of C in statement. The C in statement is able to read numerical values or strings which do not contain a space. We therefore do not know how to read a name of this kind, Joshi Aditya B, we don't know, or Mandane Amal B, or Abhishek Kumar. Whenever there is a blank in between any two parts of the character string, the C in statement will terminate there. We don't know how to read that. We shall in the subsequent lectures handle that problem properly. But this is just to tell you that this is a problem that we have in the use of the input statements which we have studied in a very limited fashion. However, the point being made here is that these are different fields and each field is separated from the other field by a comma. That is why they are called comma-separated fields. I have now got my data into such a file. So let's say this file I call midsamemarks.txt, some text file. You are all familiar with how I can write a C program and use input redirection to say a dot out less than midsamemarks.txt. Then this whole file, line by line, can be read by my C program. How do exactly I write a C program, a C++ program which will analyze this data and get me variety of details? What kind of details would a teacher be interested in? A teacher would be interested in, of course, the individual marks obtained, who are the best performers, who are the weak performers. Additionally, a teacher would also like to know what is the class average? In fact, class average is a very good indicator because all individual students can then figure out whether they are below the class average or above the class average. We have lab batches. So we would also like to know what is the performance strength of a batch. So I would like to have batch averages. You will notice here that we have a field, the fourth field, which contains actually batch number. So 11, 11, this 14 here is a batch number. So there are batch numbers up to, whatever, 75, and all that data has been collected. Data management, by the way, is a completely non-trivial exercise and it involves as much of good programming, as much of actual data management and meticulousness, entering values, cross-checking. For example, when a typist enters this value in a spreadsheet, he could easily make a mistake. One of the reasons why we had the notion like a check digit was to ensure that mistakes are not made. We don't have check digits with roll numbers. We don't have check digits with names. We certainly don't have check digit with marks. People could make mistakes while entering the data. The objective of writing all programs is to analyze some data. If the data itself is not properly handled, any amount of good programming will be useless. So you have to spend time and attention to ensure that the data that is captured, either by you or by somebody else who is going to use your programs, is done as meticulously and as properly as possible. So the way we handled it, for example, in an examination encompassing such large number of students is that one person will enter the data, another person will enter the data for some part and then these two people will cross-check each other. That is how you ensure. Additionally, because marks are sensitive issues, we also put the entire list onto Moodle and request all students, please check whether your marks have been correctly entered on. So that if there is a discrepancy, a student can point out that they can check it and we can correct it. So this is non-trivial work involved other than programming that needs to be done in real life. However, we come back to this problem. Notice this record. It has comma, comma, comma, comma. Obviously there are no values. The reason there are no values is that this student was upset. To indicate that the student is upset, a special value has been written here, minus 5, as we know that nobody is awarded minus 5 marks in the exam. So any roll number data which ends in negative marks is a person who is upset. Now that is a logical decision that has been taken before entering the data. Actually my staff entered AB absent. But for the purpose of illustration here, I do not want to get into string comparisons because I don't even know how to extract those small strings at the end in between and so on. So I have replaced that by minus 5. There would be 8 or 10 such students who would have minus 5 and there would be of course other students who would have marks in various subsections. You will notice that what I have here after the batch number are marks in question 1A, 1B, 2A, 2B, 2C, whatever, whatever. Okay. How will I write a C program to analyze this? Now that is a problem that I am going to discuss just the outline of that problem later in the class. But I want to show you another extremely powerful programming mechanism called AUK. AWK is the name of a programming language or a scripting language. It is named, these AWK are the initials of 3 people. I will give the details of what the AUK programming language is and something in these slides which I will make. As I said, you please read up those slides later. But I want to show you how simple an AUK script or a program could be. It rhymes very well. Its constructs, internal constructs are very similar to C++ constructs. So you will not have much problem in appreciating that. It uses the powerful concept of associative arrays which it builds unlike conventional programming languages which are compiled such as C, C++ or Java. This is a non-compiled version. The lines of program are interpreted. No declaration of variables or arrays is required. No initialization is required. AUK automatically creates variables or arrays in the first use, initializes them appropriately and uses them. And that makes the language extremely powerful and simple to use, particularly for such data processing. What I want to show you is a simple AUK program which analyzes this and produces two things. It produces batch-wise average values for the performance and it produces the total class average. Just so that we understand what is involved in computations, let us look at this. First of all, the logic of my processing would be as follows. My program and whichever programming language I use does not matter. Let's say a C++ program would be written to read one line at a time. When it reads one line, I would like to capture the marks scored by that student and I would like to accumulate those marks in some kind of a total. Suppose there are 560 students. At the end, I would like to divide this total by 568. That will give me the class average. Of course, I must discard those students who are shown to have negative marks because they are actually absent students. So in the process, when I read that data, I should also count the number of students who are actually present, number of students who are absent and only take into account the number of students who are present while calculating the class average. This part is simple but I also want to find out the batch averages. The batches are 11, 12, 13, 14, 15, 16, as you know, go up to 71, 72, 73, 74, 75. Exactly, could I do the batch average computations? Any idea how will I compute the batch averages? Okay, let's say to compute average, what do I need? I need the total number of students in that group and I need the total marks scored by that group. I divide total marks by total number of students, I get the average. This happens for the whole class. So the same logic must hold for individual batches as well. Now there are multiple batches. So what I could do for example, is I could have an array which is called batch totals. I could initialize this batch totals to 0 and every time I get a fellow from batch 11, I would like an appropriate index here to increment that value 0 from 0 to 1. I get another 11, I would like to change it to 2. This will give me the counts. Let's say this is batch count, just batch. I will also have another array which is called batch tot, let us say, but this accumulates marks. This also corresponding to 11, this will start with 0 marks. But when I get one student with batch 11, I will increment the first array with a count here and I will increment the corresponding element by the marks that the student has stored. So these 18 marks will go to be added to two different totals. One is the class total and the other is batch total for the corresponding batch. The point is I have to figure out what is the corresponding batch because this 18 should be added to the class total and it should be added to the 11th batch score here. If some student comes with batch 14, then whatever is the batch 14 index in that array, I should increment that by, no sorry, this fellow we have to remove. But let's say there was a student who scored, let's say 25 marks. The 25 marks should be added here and the count should be added in the corresponding. The problem is when I start looking at this data, I have no clear-cut mapping between batch number and index. Batches are 11, 12, 13, 14, 16. There is no batch number 9. There is no batch number 18 either. There are only batches 11 to 17 on Monday and the batches from Tuesday start from 21-20. So consequently while my last batch number may be 75, I don't have 75 batches and I don't even know which are missing batches. There is an added complication. I might initially make an array with batch numbers inserted because I know which are the batches I have made. And some typist makes a mistake in typing out the batch number here. Instead of 11, it times 01. There is no batch number like that. The student has appeared for the exam. I need to account for that student. But the batch total for one batch will be wrong because the batch number is wrongly written. However, when I analyze the program, when I analyze the data by a program, my program must point out that there was a person whose batch number did not fall into any one of the other batches and therefore that data has not been taken into account. In general then, the C++ program could become fairly complex logic program but you can write one and you will have to write programs to do this kind of analysis as we shall go forward. Coming back to the AUG script. The AUG programming language automatically separates out. It reads first of all line by line of any text file and it treats each line as a record. So when I write an AUG script and say run this AUG script, that AUG script when it runs, it will start reading lines one after another, one after another, one after another. Every line that it reads, it will separate out the fields and the fields which are so separated out are associated with predefined variables which are made available to programmers of all. These predefined variables are $1, $2, $3, etc., etc. So these are predefined names of the variable. Consequently whenever in the AUG script, you are processing a particular record. If you say $1, it refers to the first field. If you say $2, it will refer to $100, $200, $002 if you are on the first record. If you are reading the third record, $2 will be in second field of the third record. So this assignment is automatically done while the input file is read. How does AUG know which is $1, which is $2, which is $3? The different fields are assigned to these different $1, $2, $3 and therefore separation of the fields must be understood by AUG. Consequently AUG has a notion of a field separator called FS. Ordinarily field separator is a blank, just like in your scene statement. When you give a data, a blank is treated as a separation between two fields. But I can pre-assign a value of my choice to field separator. Some commonly popular field separators are vertical bar or pipe symbol, comma, tab, etc. Out of these conventional programs like spreadsheets are capable of giving you an exported data in the format comma, comma-separated fields or tab-separated fields. I have used comma-separated fields here. So if the AUG scripts reads these lines, every time it reads a line it will automatically separate out fields because it now knows beyond any doubt that a comma means beginning of a new field, end of one field. So notice that handling of this string, for example Abhishek Kumar, even though there is a blank in between here, it does not matter. Whatever comes between this comma and this comma will be inserted as a string of value for a variable $3 because this is $1, this is $2, this is $3. How does AUG know whether a value is numeric or characteristic? AUG provides a beautiful interpretation. It says you may use that value as either a characteristic or numeric depending upon the context. If you add a value of a field to something, then I will treat that as a numeric value. If you concatenate that value is another string, I will use this as if it is a string. Obviously it is for me to correctly write my logic such that values which are expected to be numeric are treated as numeric and values which are expected to be string are treated as strings. But this is an extremely powerful generalization which AUG permits me to. Now since the data is prepared by me, I know in advance what is string and what is numeric. I know for example this is a string. I know this is a string although it looks like a number because there could be a character D here and so on. I would like AUG to treat this as string. I know for sure that these are marks. So I would like the AUG to treat each one of these as numbers. And I would like it to take decisions based on the numerical value. For example AUG will have to decide that if a number in the last field is negative, then that data has to be discarded. Finally when a data line is read, I would like AUG to update the arrays which I have so created. Array of counts for different batches, array of marks for different batches. And I would like it to automatically update that particular element of each of these arrays which corresponds to a particular batch number. 11, 14, whatever. Since I am not going to prescribe in advance what are the various batch numbers I have. AUG has a difficult task. Imagine AUG reads the first record. The first record has batch number 11. At that time there is no array. But I suddenly say update the 11th element of this array. What AUG does is on the first reference it creates an array. It creates an element. It creates actually a cell here which can be indexed by 11. That is the associative array. So 11 is the batch code. And the 11 need not be number. It could be a string. And it will increment that number here. It will increment marks here. Next it reads again. It is 11. In the same element it will update. Next record it reads 14. Assume that the marks are not negative but are positive. Then it will create another element called 14th element. And it will update the count here and it will increment the marks here. Whenever it gets 76 it will update the 76th element. What it means is as many batches or as many unique batch numbers as really exist in my data. So many elements in my array will be automatically created by AUG. You see the power of this facility. We don't have such a facility in C++. We have to decide on the size. We have to decide on each element what it will contain. We have to map the index which is 0, 1, 2, 3, 4, 5 up to the size to the corresponding batch number and so on. It's not very straight forward. You get the point? Okay. So let us look at the AUG script now. This incidentally is the complete program to analyze the data. So let us look at what this program says. As I told you AUG program, each statement of the AUG program is of this type. Pattern followed by action. That is a AUG statement. An AUG program or an AUG script is nothing but a series of pattern action, action, action, action. There are two special patterns that AUG provides for. One pattern is called begin pattern and the other pattern is called end pattern. The begin pattern matches before any record reading has started. That means all the actions specified after begin are executed by AUG before it starts reading any data from the file. So you can say this is something like a pre-processing. The end pattern matches end of file. That means all the records have been read. Nothing more is to be read. But you want to take some concluding actions. Then you write end followed by whatever actions you want to take. What are the actions we are likely to take after end of file? Well, print the averages, print the totals, print the sums. That action I can't take in between while I am reading the records because I have not calculated all the totals. So invariably in any data processing task, there will be something that needs to be at least printed at the end. That job is done by writing the end pattern. The begin pattern is typically used to initialize something which is not initialized by AUG as default. For example, the field separator. Read the first line. It says begin FS equal to comma. Double. What I am trying to tell AUG is, AUG now understands after executing this action that whatever data is going to be read by my program is going to have fields separated by a comma symbol. If I don't write this statement, AUG will assume that fields are separated by bloods. Actually white space is a natural field separator. So either one or more blanks or a new line character or a tab character or a natural field separator. But when I want a special field separator, I say this. So you know this begin equal to FS for example. Rest of it is my program. And this program which will have pattern action statements, there are exactly two such statements that you see here. One is this and the other is this entire group. This program does is for every record that is read from the file. So this is how AUG works. After initializing anything that you have stated in begin, it will start reading records. For every record that AUG reads, it will apply all the patterns to that record. If any pattern matches, the corresponding action will be executed. If no pattern matches, no action will be executed. Now you can see that you can write patterns which are nothing but conditions in terms of what you want to do with which record. Consider for example, the previous slide in which we had the data here. If you count the number of commas, you will find out that the marks which is the last field is actually dollar 19. So what you want to do, you want to examine whether the value of the 19th field is negative or not. If it is negative, you want to discard it. If it is positive, you want to count it towards all your computations. Look at what the program says. Program says dollar 19 less than 0. So this is a condition. This is called a pattern in AUG. Notice I have no variable name, no declaration. I am depending on the fact that when AUG reads a record, it will automatically separate out fields. It will assign them to dollar 1, dollar 2, dollar 3, dollar 5. And I know for sure that the last value will be called dollar 19. So when I write a statement, each dollar 19 less than 0, that's the condition. If it is so, take the action. What is the action? Absent count plus plus. Why? Because a negative number means the student was absent. Notice I have not declared absent count as int or anything. Whenever I use a variable, if that variable has not already been used earlier in the program, AUG creates that variable for the first time. And it also initializes it to 0 if it is a numeric interpretation or it initializes it to null if it is a string interpretation. Since while creating AUG may or may not know what is going to be the usage, it actually maintains both initialization. And it uses one which is most appropriate. But once you start using that variable, you have to be consistent with the usage of that variable. So what this statement will do? If the first record which has been read has dollar 19 negative, it will create absent count, initialize it to 0 and add 1 to it. Subsequently, when I get another record which has dollar 19 less than 0, it will add 1 more to absent count. You will agree that when it has read all 569 lines, the absent count variable will contain the total number of students who are absent, as simple as that. For the same record, I will apply this pattern. For the same record, I will apply third, fourth, any number of patterns I write. This is something important to remember that all patterns are applied to each record which is read. However, the way I am writing this pattern makes it exclusive. Either the value is less than 0 or it is greater than equal to 0. So obviously for every record which I read, either I will take that action or I will take this action. Actions could be multiple. All of them are combined in curly brackets. We are familiar with that. Look at what is happening inside. Count plus plus, you understand exactly like absent plus plus. This count will be the total number of people who have taken the exam because they have positive score. Thought marks plus equal to dollar 19. You understand this statement now? This is thought marks equal to thought marks plus dollar 19. Dollar 19 is my marks. I want to add them to a variable called thought marks. Again thought marks is initialized to 0. It is created for the first time and it will keep on accumulating this value. Let us look at batch. Batch dollar 4 plus plus. What am I doing here? I am creating an array of batch. Inside it I will have dollar 4 which is 11, 12, 13, 14, 16, 17, 21, 22, 73. 7 z if somebody has wrongly typed 7 z as a batch. An element will be created for 7 z. I am actually using this only to maintain unique batch identities which are discovered in this. However, the counts and the totals I am maintaining separately here. Batch count dollar 4 plus plus. What does this do? This will count one by one the total numbers. What will this do? Batch count dollar 4 plus equal to dollar 19. That means the element of this array batch tot which corresponds to let us say batch 11. It will be incremented by the marks if that record has batch as 11. If I get another record with batch 12, the 12th or element corresponding to 12 will be upgraded. In short, when I repeatedly execute these statements for all my 568 rows or 69 rows, at the end I will have the count of people who have appeared for the exam. The total marks that have been scored by the whole class, division will get me the average. The batch count will give me the count per batch who are present and the batch tot will give me the total marks per batch. When you write a C plus plus program, which you will have to write to solve these kind of problems, you will notice that it is not as easy as you think, as easy as this. Notice that the data that you had seen here, I will comment on the data slightly later. Let us look at the results. The script is not complete. Remember I told you about the end pattern, end pattern and in between patterns which are applied to data. The end pattern says for I in batch, what does for I in batch means? Batch is an array. How many elements does the batch has? The batch has as many elements as there are distinct batches found in the data. Please understand the crucial difference between the distinct batches found in the data versus distinct batches which exist in your course. These two are obviously supposed to be same, but they need not be. Somebody as I said might make a mistake. Instead of writing 2-7, somebody might write batch as 2-0. And that's a valid batch as far as hockey is concerned. So it will create an element for 2-0. It will add one to that count. Marks will get added there. But if my data accurately represents what I have in reality, then I will have as many elements in batch as there are batches. And these elements will not be 0, 1, 2, 3, 4 up to 40, but these will be 11, 12, 13, 14, 15, 16, 17, 21, 22, 23 exactly corresponding to batch. This statement for I in batch actually varies just like we vary I equal to 0, I less than n minus 1 or n. Similarly, this for I in batch will make the variable I take values 11, 12, 15, 17, 73, 62, 15, whatever, whatever, all the values for which independent batch identities have been created. And for each of those, using that as an index, it will print that value of I, it will print the batch count I, and it will print the batch total I divided by batch count I, which is the average of that batch. This for loop ends here. But the direction does not end here. The for loop only ends. There is another instruction. Print total students are count plus absent count. You agree? There are two separate counts I meant. The total number absent is this, and the class average is simply torque marks divided by count. This is a complete valid correct AUK program. And if we run this program across the data that we have given, this is the command that is given to run the AUK program. M AUK is the name of the current version of AUK minus F. I can actually write the program many times. AUK program is just two or three statements. So I don't create a program in a separate file as I create dot CPP file. I can write the program immediately after M AUK, there itself. That's the program. But when I have a larger program such as this, I would say minus F, analyze, mid-sem, 2-0, 1-0, v-1 dot AUK. So I created an AUK file, because I have as many as 12 or 13 statements in the AUK program. It's an uncannily long AUK program by the way. Most AUK programs are two, three, four lines. This will read that program and then I have the text file. You will notice that I am using the pipe symbol here. This pipe symbol tells Unix that after running this program, don't create the output on my terminal. But send the entire output to another program. And output of that program you put on my terminal. What is that other program? That is a utility in Unix called SORT. It will sort all the lines that are given to it. So this is almost like a redirection. But it's more than redirection. Redirection will create a file. A pipe will force output of a program to be fed as input to another program. And the output of that program will be seen here. Why do I need to sort? I need to sort because I would like my batch averages to be printed in sorted order. If I don't do that, the batches will be printed in the order in which those elements are created internally for that array by op. So I have a student of batch 72 as the third student. Elements 72 will be created first and it will be printed first. When I say sort, it will sort on this. So you can see this is the batch 11. This is the batch total number of students batch average. Batch 15 batch students average. Students average like that. After it prints all batch averages, it will print class average is so and so. It will print number of students absent is so and so. It will print number of students, total number of students are so and so. Your job is now to write a C++ program to do precisely this. How long will it take to write that program? How long will it take to write that program? Yes? Suppose this was the mid-same exam question. Okay. In an exam where you can assume the data to be properly ordered in this fashion, you can still work out the solution in about 45 minutes. But if you have to write a professional program which does this, then you have to take care of the following. This is extremely well formatted. I might have a data in which there are blanks in between here and blank. That is blank on either side of a value. How will you take care of that? Ordinarily in C++ you will read the entire line as a single string first. After reading that entire line, you will have to hunt for the occurrence of a comma. Then from where you started counting, up to the comma, you have to extract those characters in a small string and convert that string into either a numeric value or a character string value. And if it is a batch, you will have to find out for that batch code which is the other element that you have allocated and increment count there. This would take non-trivial amount of time and some amount of testing to run. But that is how you would learn programming and that is how you would have to do programming because C++ is what we need to use. Why, by the way, do we use C++ for handling such things? Why not use Oc? Looks good. So let us have some comments on why. Why do people use programming languages such as C, C++, Java for doing such tasks? When programming scripting languages like Oc exist, any idea? What is your opinion? One answer that he is giving is that you want to probably make your solution platform independent. The fact of life is that Oc is generally available on almost as many platforms as on C, C++, Java is available. Same issue about other scripting languages, by the way, such as Python. And these languages such as Oc and Python are indeed popular and a lot of serious data processing scripts are written in Oc and Python. But let me give you the downside of using such tools. First of all, these are non-compiled programs. If they are non-compiled programs, that means execution time will be much larger as compared to compiled program, which can be very optimal programs in terms of the code which they generate. Second, I will not have data in simple text files like this. Imagine now not the data for the students of CS101, but let us say census data for Maharashtra. Eight crore people, variety of different information. I would in general not be keeping that data in a text file because what will happen is suppose I am one of the persons who has been monitored and I am supposed to exist in state of Maharashtra. Now I change my address. My address change must be reflected in the values that data that they have. If I have five-sixty students, I have six-seven pages of spreadsheet, I have a lot of tiers, I will say, okay, you have changed from hostel four to hostel seven, I will update it here. But when you have eight crore people, you don't update it like that. So there will be an official process by which people will say, okay, confirm the address proof, this, that, that. And finally when the data has to be updated, somebody will say, Dr. Deepak Phatak, address to be updated from, say, B14 to A15 in IIT. Now that time, exactly one record from all nine crore records must come in front of that fellow who can verify what was the old address who will verify what is the new address. AUK is incapable of handling anything related to directly accessing files. So AUK is good for data analysis, but AUK is not good for data management. And in real life, you would require real applications to do both data processing, data analysis and data management. Take for example, railway reservation system. How many of you have reserved a ticket on internet for railways? Many of you. You will find that you are able to give a train number or train ID. You get an equivalent of an application form. If the bus are available, you are immediately told the bus are available. Imagine there is an AUK program sitting at the backside. Whenever you say this station, it will read all the text file and find out whatever are the total number of trains available running between these two stations. That information is not valuable to you. You want information to be extracted out of a database which can later on be updated. If you say Frontier Mail, Bombay to Delhi. And when you say both, as an added attraction, the railway reservation system has to go to a payment gateway, to a credit card or debit card fellow and you will say, okay, collect this much money. So data management is a far more serious part in most of the real-life applications for which you require conventional programming languages and other tools. These are not really tools. These are called data management packages. The conventional name is Database Management System or DBMS. But to invoke the functionality of DBMS, invariably you would use C++ or Java to access the DBMS function. It is not common to combine conventional programming language programs with org scripts, although that can be done. In conclusion then, this illustration was given to you actually to demonstrate what processing logic needs to be applied for analyzing data from such text files. And that is of material value to us for this course because we have to do this kind of analysis by writing C++ programs. Additionally, you have got some exposure to a language called org which is incidental. We are not going to have org programming as a part of the syllabus or anything. But it is for you to appreciate that such powerful tools exist. However, our job is to write C++ programs. Now, coming back to some comments on the actual performance. This analysis is done on the raw data. So the marks that are there in my file are not the final marks. You will remember I mentioned that we will be sort of giving some bonus marks for people who have done proper indentation and proper commenting in their programs. Now that job is being done by individual lab TAs. And as they complete all the lab batches till Saturday, only on Saturday I will get all the final data. So these are not final marks. Yet I would like to commend that the average of 16.77 is rather a poor average. So I am a bit concerned. There are several students who have scored less than 10 marks. If I were to be one of them, I would be deeply concerned because as we analyze the exam questions, up to 10 marks should be easily scored by everybody. I would like all those people who have for some reason not been able to demonstrate a better performance in Midsim to introspect and find out whether they lost marks because of some silly mistake or because they have a lacunine understanding. I am yet discussing it with my TAs but here is a proposal that I have that all those people who have got less than 10 marks, I will be giving them a makeup test about three weeks later. The makeup test syllabus will be same as Midsim syllabus. It will be another 40 mark exam. If they score 10 or more marks in that exam, then their present marks which are less than 10 will be replaced up to a maximum of 9.5. So people who have already got 9.5 marks may not worry about it. People who already scored 10 marks may not worry about it. But suppose I have scored only one mark or two marks or zero marks, then I would be concerned about my total marks being passing marks at least. So this is the opportunities which will be given to those people. I hope you agree with this? This kind of a makeup test only for a selected few. Now this is about the marks and evaluation but there is something more to it. Why there are poor marks is because why did I get two marks to begin with? I got two marks to begin with because either I was unable to study and spend time or maybe I have genuine difficulty in understanding some basic concepts. So I would like to personally conduct extra classes or extra tutorial sessions where we will not have lectures but we will actually solve simple problems pertaining to this portion of the syllabus. It does not matter if those students are not quickly able to grasp the subject-oriented concepts that we are going to discuss. But fundamentally every student of programming must know these basic concepts of programming. So I will be announcing these classes next week and those of you who have these weakness this will not deal with any material that we will be discussing in the subsequent weeks. But this will have only specific tutorial-like exercises where I will have mental tears with me to ensure that before the makeup test happens three weeks later the students are well prepared to address that exam. Because I think we need to handle both the performance in exams because ultimately marks get converted to grades and also the basic understanding. So that is the proposal I hope you approve that. The maximum marks scored in the raw format incidentally has been 39 on 40 so that is very good score. I will be putting up an honours list next week when I have collected all the bonus marks and everything. Thank you.


Hi, beautiful. How you doing? So, oh, it's me and it's you and it's inverted hair color. Today, listen, we're doing inverted hair color. This trend went around for a while on Instagram, then it went to YouTube, but it always had to do with makeup, okay? It was always inverted makeup. It was these looks and these looks. It was a lot and I was like, wow, that's cool. I remember seeing a guy named lithium snow do it a long time ago who had, he has amazing hair. Hi, your hair is fabulous. And then the making tutorials did it. So whoever started it, I think it was one of them. I thought it was so cool and so inventive and so creative. And then I'm like, no, I was never like let's do it in hair. I never had that thought. Of all the thoughts that I had, doing inverted hair color was never one of them. I was like, how are you supposed to do that? I couldn't wrap my head around it. I don't know where my creativity was really lacking at that point apparently. Because then Miss Caitlyn Ford uploads a video a few weeks ago doing inverted hair color. Where was I on that trend? Miss Caitlyn Ford, if you don't know her, she is an amazing hairdresser on Instagram and she has her on YouTube channel. It'll be linked below of course, but she is so awesome and she does some really creative sickening colors. So Caitlyn uploads the video, like I said, it's called inverted color challenge and she basically nominated me to do this challenge, right? What is really inverted colors mean? I get it. Like if it's dark, it's then light when it's inverted. So we're gonna do that today. I'm gonna try and recreate the look that Caitlyn did on her wig and I'm gonna do it on my wig today. So good luck to me. I'm gonna give it a go and see what happens. Hopefully I nail it. Let's do it. Woo! And bam! Here she is. She is looking stunning.  She is prepped and she is totally ready for this color. Let's get mixing. Let's do the rainbow first. And voila! We are ready to get painting now. This is a lot of color. Okay. Alright, so Caitlyn took super diagonal sections and we're gonna get our base color down here, our pattern actually, and then we can just go ahead and follow it through.  Can't wait. However, I don't think that we're going for a natural look today, but I could be wrong. I mean I don't know.  Oh God. Black color stresses me out y'all. Well, one color down, 100,000 more layers to go. Let's do this. Two down, a billion more to go. Okay, I need to do way more than that in the next layer. Definitely something. Wish me luck. I have all these layers in here that are like getting in the way of my life. I'm the hair color machine.  It's been quite a time already and I do two sections, so Miss Caitlyn Ford, you get a lot of patience, girl. I'll tell you that much. No really, I do love color, but listen. When you're dealing with one, two, three, four, five, six, seven colors at a time, my brain starts to hurt. So basically what's going on here, let me just show you what's happening. So we got our sections, right? We got it going on. Learning how to build my foundation right now and just making improvements. So basically when I pull the sections forward, right, we're doing diagonals and this is the front of her face up here. I mean she's really have a face but like that's okay. We have these little baby hairs that keep just getting in my way and I'm like yo, get out. So I am using my trusty little hairspray over here. I'm also getting really not, I'm really feeling a little loopy from these fumes in here. It's getting a little foggy. A lot of hairspray. So we are just hair spraying that down. That way when I go ahead and paint this section, I start with the black and I go ahead and do this moment right here. I'm not getting those baby hairs sticking up because what happens is it's really hard to make vertical lines on hair because hair just moves all over the place and gets in your way and then all of a sudden you know you have one color mixed into another color and it's super annoying. I can tell you all about that because I just dealt with that a million times in a row. But the reason for that hairspray is to get all of those baby hairs laid down flat.  Make sure you're moving your hair back and forth within your sections in order to cover every hair strand because what may happen is you know you may wash this all out and you have a ton of spotting and grossness going on because you just didn't move around the hair enough. You didn't penetrate each hair follicle okay and nobody likes to not be penetrated properly. I'm just saying. I can see a few hairs right here that aren't fully colored. We're gonna get that again and we're gonna put plenty of color on there. We're gonna really waste the color. No I'm kidding. Oh a little bit. And so that section has been fully colored. I wouldn't work from the side usually and paint on the front but I would usually churn her like this and move and going down like this and it would be much easier but unfortunately I can't do that because my job requires me to show you what I'm doing and we're almost done. I've done quite a bit of this side and it's been about an hour and a half so we're making some progress here. Let's just keep going shall we? And boom! Only took me an hour and a half to clean up and mix new colors but we're here! Ah! Okay so here's the thing. I do really enjoy it like when I get in the zone and I'm chilling and I'm doing my thing. I like it. I like it a lot but then again I have you to entertain. So basically what I'm saying is you're ruining my life. I'm just kidding. I'm ready. Okay so where I'm at is I finished the other side right. So I know what Caitlin actually rinsed everything out and blowdried it and took a picture of it. However I didn't do that because I was thinking like I want to see like when when the colors processing like when it's the most vibrant I want to take a picture of that color and then invert it on Photoshop so this is what I got when I inverted the picture. Interesting colors right? So I set around mixing those exact colors for the last you know half hour so we have this kind of like pastel silver it will be a lot lighter on the hair. We have this kind of like pastel green and then we have this sort of like light yellow. We have a magenta with a little bit of more purple mixed in just like a little bit on more on the purpley side. We have a royal blue extremely blue blue and then we have you know our beautiful turquoise to end with and then we go back to this color. Wish me luck. I mean hopefully it looks inverted because that's what Photoshop told me so I'm listening to Photoshop today. Okay so I'm gonna start this section. Wish me luck. Hopefully my patience get me through it. It is 12 40 a.m. I have to be up at 8 30 tomorrow so I'm not gonna really sleep much tonight but that's okay. Who needs sleep you know? I'm gonna come back in a little bit and tell you a really funny story about one of the first times I actually worked as a hairdresser in a salon in New York City so stay tuned for that in a little bit. It's pretty juicy. Well actually it's just like appalling. You'll see. I hope this looks good when it's done. You know what to do? I'm maybe going more insane right now than I already am is if it didn't come out good. So I wanted to tell a quick story just for any hairstyles out there you know who are just beginning in the industry. I'm gonna tell you a story about the first time I got on the floor the first day that I was you know doing hair at a salon in New York City like the most exciting moment in my life right? So I went through all my training was so excited about everything and I'm very confident hairdresser from the start because I grew up in a salon and I had a lot of experience already.  I was like sure like I was never the one to be like no. Even if I was so scared I was so scared right? I didn't want to mess up like I wanted to just show her how it's done and kill it and just rock it like even though I was confident I was still a bit nervous obviously so I did it and I knew about this woman right? I knew that she was a bit well let's just say particular about her hair right? I was warned about this but since the stylist believed me and I was like you know what if they believe me but I can do this I was like yeah I can do it I can do it.  Girl I'm not your other stylist unless you go to that stylist you're gonna get a different kind of color or different kind of cut or different kind of blow-dry. So I'm already like this woman like she wants her girl but she got me so oh well. So I break her to the sink to rinse the color off her head that she had on she looks back at me and she's like please don't wash my hair just condition it and then I'm like okay yeah no problem like people ask for that sometimes like yeah of course but I'm already nervous right? So I am just doing my best just wanted to you know do good.  No this woman didn't want to be shampooed and that is a fact because she realizes you know after I started scrubbing her head that I am shampooing her head.  So she looks back at me like looks up in my eyes and she just stares at me and I'm like what like at this point I didn't even know what happened.  I'm telling you I cannot make it up.   I was like yep I did that. You're crazy but you're right. So I am there shampooing and I'm like oh no I literally the first thing I started doing with this woman I screwed up. Oh I was just so like sad about it.  I was just like so mad about that. I think I didn't even care about the other thing and I was like this girl did not just come from you like this like I'm gonna know her like don't be entitled and rude. She had just got her hair colored and that's why she didn't want her hair shampooed and I'm like girl it's literally not that big of a deal. So chill. I then you know finish the whole thing and I get her back in my chair. I pretend like that whole thing never happened. I just keep a smile on.   You can't just say that to people and she like comes and apologizes to me and the whole thing is all better but I was so devastated you guys like I couldn't believe my first experience on the floor I just got called stupid right away. Maybe definitely scared of clients for like months after that. I was like maybe I don't know.  I didn't make it known that I was scared but the girl I was scared from that day forward I was like oh God I don't want to deal with any anymore of these like New York City ratty type of people.  It worked for me.  Thank you. End scene. I'm gonna continue with this probably talk to you in the middle and finish it up. I finished. Wow I deserve an award for this one. We're done. Her entire head is just covered in color. It's looking inverted. I'm just gonna say it. That looks very inverted to me I don't know about you but that looks pretty dope. I'm 90% sure this is gonna come out amazing. I am preparing myself for the worst but expecting the best. I think you're supposed to do it the opposite way. I don't know but um yeah I think it looks cool. So let's let this sit for about 30 more minutes rinse it off and I'm gonna style it and then we'll come back and talk about the results and hopefully it's a good result. Hi I have the wig on. Are you ready to see the final results of my inverted color experiment inspired by Katelyn Ford. Let me show you. Bitch what? Tell me this isn't inverted. Tell me it's not inverted. Tell me that's not this isn't inverted. Like just tell me because I am like feeling myself all of a sudden. Oh hello. Sorry I can't come to the floor right now. I'm too inverted. Oh what do you need? Oh I'm sorry I can't help you with that. I'm super inverted right now so I mean listen it's not perfect. I have definitely never in my life done anything like this so I am quite happy with it. I think it looks pretty sickening. Can't really pull it off that well but at least I feel like it looks super inverted on this side and that was you know the challenge here was to do basically the complete opposite or whatever inverted means because I'm trying to figure out what inverted means and I feel like it's not the opposite it's like inverted you know. I'm so happy with it though. I feel like I kind of killed this challenge to be honest with you. I did it a little bit different than Caitlin did it. You guys saw that I you know inverted the color on Photoshop while it was still processing and I do feel like I got a bit more of like a vibrant version of an inverted color on this side which I actually like so I think it's really dope. I'm so happy that it worked out because in the middle of this whole thing I was like if this is a workout and I just spent you know six hours doing it I'm gonna be like slightly upset if I have to trash this video and you know it was a cool experiment and it taught me a lot about doing horizontal color. I don't do a lot of horizontal color so I really really had you know a lot of time to teach myself some different techniques during this process and and experiment more with color you know because not a lot of people come to the salon asking for this and this okay. I love that it's outlined like in black here and like the rainbows in the middle I think that's such a cool touch that Caitlin you know inspired me to do. If you guys like to see Caitlin's original video about this look it is linked down below she does an amazing job you can see her kind of take on the same thing I did well I took this I took the take from her but she did the original one you can see how she did it and you can also subscribe to her on her channel at his link below. Also I'm cool I'm obsessed um hello I'm gonna wait us for the rest of the day and just be like hello I'm sorry like I can't make to the meeting like I'm literally so inverted right now people are like what's inverted and I'm like literally don't worry about it. Oh also I styled the wig of course with my moisture cream electric rain. Guys if you want a perfect blowout I mean perfect shiny soft healthy hair without it getting weighed down please just trust me I know they're my own products I literally like could not back my own hair care line anymore like I'm so proud of what I've made and if you guys are interested in you know having an amazing perfect blowout or just you know having extra moisture in your hair and having it feel so damn soft pick up electric rain you can always return it if you're not satisfied but it is an amazing product and I know you won't want to return it and I also prepped with gliderati in order to make sure these waves will hold all day all night and throughout you know the next couple months before I wash this wig again and you can find those X-Mondo products on our website xmondohair.com it is linked below for you. Also make sure you follow X-Mondo hair on Instagram we will be releasing a lot of new products in the coming year like a lot so it's gonna be amazing it's gonna be an X-Mondo takeover this year I'm so excited and make sure you follow me of course at Bramondo NYC on Instagram and Twitter that is all for today thank you guys so much for watching it's been a journey today don't forget to live your extra life I mean I'm definitely living my extra life so you should too and I'll see you guys next time bye


Thank you for having me. In 2011, I founded Sigmund with a couple of my friends and roommates from MIT. And to give you a quick intro, Sigmund provides customer data infrastructure to businesses that put their customers first. So we help them collect data from all of their different customer touch points, unify that data, and send it downstream to all of their MarTech tools. So since starting the company, we've raised a little less than 300 million in venture capital. And we've grown to serve more than 20,000 customers all over the globe. And one of our toughest lessons learned to date is how to find product-market fit. So that's what I'm going to talk about today. How many of you are searching for product-market fit right now? Quick show of hands. All right, many of you. So statistically speaking, 80% of you are going to fail. And 80% of all startups fail to find product-market fit. And that means that four out of every five founders that just raised their hands is not going to succeed at finding it. And the one out of those five that does is most likely going to struggle through it. But that's just the stats. The reality is that failing to find product-market fit is a bottomless, emotional free fall. And when you're failing to find it, it becomes this obsession. You see mirages of it, and it literally makes you sick with worry. In 2012, at the height of our search for product-market fit, I went to the hospital twice for panic attacks and lost 10 pounds in three weeks. And I haven't had a panic attack before or after. So failing to find product-market fit really feels like the depths of despair. And I'm certainly not the only one. Sam Altman, who was the president and head of Y Combinator for many years, was previously a startup founder. And during his search for product-market fit, he actually got scurvy because he wasn't eating properly. So the search for product-market fit is not a healthy activity. But it is an important one. And so we saw mirages of product-market fit and lied to ourselves about it for sure. And we always convinced ourselves that we were one small feature or one small tweak away from getting product-market fit. So this is a picture of myself with my co-founders Calvin Ilya and Ian in the midst of our false hopes in 2012. But back then, we were just four guys in an apartment failing to find a product-market fit, but convincing ourselves that we were right on the cusp. We were writing a lot of code, but we had no customers. We did have one thing going for us, though.  And in the search for product-market fit, it's very important to be a cockroach, to stretch your startup's runway as long as you possibly can, so that you can test more than one idea. So you can test two, maybe three ideas and get more shots on goal. And so to make this process explicit, step one is that you build, launch, and test several product ideas to attempt to find product-market fit. And to improve the odds as much as possible, you stretch your runway as far as you possibly can. Step two, something magical suddenly happens. And this is product-market fit. And it really does feel magical. And we'll talk more about that in a minute. And then third, product-market fit suddenly turns you into a uneroach, if you will. And rather than just surviving, your product-market fit actually makes everything slightly easier. Investors are suddenly interested. People suddenly want to work for your company. People actually care. Customers want to help you improve your product. And at this moment, your focus as founder and CEO really shifts from product-market fit to go-to-market growth. So today, we're going to dive into those three stages in more detail with some stories from our early days. And first, we'll deconstruct what it takes to build a category-leading company. We'll shine a light on what bad product-market fit feels like. And then we'll talk a little bit about what good product-market fit feels like. And I think that third piece will hopefully be most useful for all of you. So why talk about category-leaders? Well, why do we care about them at all? Well, the reality is that they can be 10 or 100 times larger than the next closest company. So if you look at Salesforce as a great example of this, they're 10 or 100 times larger than the next closest real CRM company in sugar CRM. And so that's why we're here to discuss how to build them. We want to build really big companies. But how do you actually do that? What is it that makes a category-leader? What allows someone to dominate a category like that? Well, almost by definition, being category-leader gives you access to the largest set of customers and the most profitable set of customers. And what that means is that you can build a platform on top of that. And that platform allows you to create a moat, where other people are building products and marketing and selling to your customers. So what's required to build a platform if that's the key to category dominance? Well, generally, to build a sustainable and compelling platform, you need to have a SaaS business with at least $100 million in revenue, with line of sight to $1 billion. And what that means is that there's enough meat there for other people to build their business on top of your customer base. So in order to be able to category a leading business, you need a platform, and I need a platform, you need $100 million in revenue. But what is the path to $100 million in revenue? That's a big number. Well, Jason Lemkin, who started Saster, puts it like this. He says, from $0 to $1 million in revenue is impossible. From $1 to $10 million is improbable. And from $10 to $100 million is inevitable. And the reason that $10 to $100 million is inevitable is because by the time you get to $10, you have so much momentum behind you that you're going to make it eventually. $1 to $10 million is this brutal grind for the founders. And because as Saster says, you have a real business, you have real customers, but you can't yet hire a world-class executive team. And $0 to $1 million is impossible because that's this product-market-fit stage. That's where 80% or more of companies fail. So today, we're going to focus on that $0 to $1 million, that impossible stretch. And that's crazy, right, that four out of five companies fail at that stage. But it's actually even worse than that. So investors and founders often talk about the value of failure that will learn something from having failed. But it turns out that the research doesn't actually back that up. The odds of improving in your search for product-market-fit don't actually increase if you fail to find it the first time. However, if you have found product-market-fit once, the odds of you finding product-market-fit the second time go from 22% to 34% or 50% improvement. Still not a great overall success rate, but a significant improvement. And my interpretation of that is that there is no learning encoded in failure, but there is learning encoded in success of knowing what it does feel like to find product-market-fit. So when we were struggling to find product-market-fit in 2011 and 2012, I felt this very acutely. I had never seen what finding product-market-fit actually felt like. I didn't know what good felt like. And so I didn't know how to throw out the failures fast enough. I only had failures on one side of the machine learning training model. I didn't have an example on the positive side. And so I hope to give you that example today. So let's go back five years ago and walk through our story of finding product-market-fit. Segment is customer data infrastructure today. But back in 2011, we started as a classroom lecture tool. So the idea was to give students a button to push to say, I'm confused. And the professor would get this graph over time of how confused the students were. We were super excited about this. We were in college at the time. We got a bunch of professors excited about using this tool. Or at least we thought excited. We got into Y Combinator with this idea. We raised 600k coming out of demo day. We were super fired up. We'd invested lots of time in hundreds of thousands of lines of code to make this product successful. And then as the fall semester started, we deployed this into the classroom. And this is a picture from Berkeley where we were deploying it in the classroom. And a few professors were sort of obligingly willing to try this out in their classroom, I would say. And we took that as a sign of product-market-fit. They're excited to use our product. The reality was a little different than that. We actually went and stood in the back of one of these classrooms and looked at what students were doing. And this is what they were doing. It was a disaster. It was absolutely awful. They were all on Facebook and Solitaire and doing anything except actually paying attention to the lecture. It was a total disaster. We had literally just received investment from all of our investors. They had just wired us the money. And we didn't know what to do. So we called back all. It was horrifically embarrassing. We called back all the investors and asked them, what should we do with the money? It turns out that we don't have product-market-fit at all. And our investors said, well, we invested for the team. So go find something else. We said, OK. So we spent about a year trying to build an analytics tool. The idea here was that we should have been able to see what was happening with those students in the classroom by looking in a web analytics tool. We should have seen that they were disengaged and not actually using the tool. And we hadn't been able to see that. So we would go out like a good lean startup company and talk to occasional customers out there and ask, like, oh, do you have problems with analytics? And they would feed us an occasional problem with, oh, I don't quite have this report right. And I wish I could get this other dashboard. And we took that as a sign that they were really interested. They would ask, hey, can you keep me posted on your product updates? We said, OK, great. That must be product-market-fit. We must be getting close. They're really interested in learning more about our product. So we returned to our office and we started coding again. Six months later, now in San Francisco, we had done almost nothing but code. I had taken one sales trip and had met a few customers who had a few complaints around the edges with their current analytics tools. And we thought that we could build the features to solve that. And so we thought, OK, we're almost there. A few more tweaks, and we'll get to product-market-fit. And we really tricked ourselves here. We really were misleading ourselves with the level of feedback that we were getting from these potential customers. We used other little positive interactions with prospects to sort of buoy our hopes for what might happen. And every once in a while, a stray person would come by our website. This is a live chat conversation that we had with a customer. The three is 3 AM. This was the middle of the night. And we thought, oh, this is really exciting. This person has questions about what it is that we're doing and who we are. But the reality is, if you look at this more closely, this is a six-minute conversation they left after I asked a question without even saying goodbye. And that is not what product-market-fit looks like. And this is what it this is when no one cares. This is what it looks like. So by this time, we realized that this analytics product was not going to work. It was December 2012. We'd been working on two broken ideas for well over a year and a half. We had 100k left in the bank, so we had burned half a million dollars. We decided to go back to Y Combinator. This is just outside their office. And we went for a walk with Paul Graham around the little cul-de-sac there. Paul Graham leads Y Combinator or led Y Combinator at the time. And as we finished delivering our story and our update, he said, so just to be clear, you've spent half a million dollars and you have nothing to show for it. I thought that was a rather brutal way of putting it, but extremely true. So pause there and let's rewind all the way back to that first week of Y Combinator. And in that first week, we'd been like, what? We should have analytics on our classroom lecture tool. We should figure out what people are doing on this thing. And so we looked around and we found Google Analytics, KissMetrics, and Mixpanel. But we couldn't figure out which one was going to be better. And so we decided to build this little piece of code that could take the data from our website and send it to all three of those analytics tools. Now, we built this. We used it as 50 lines of code. Six months later, we improved it a little bit more. Six months later, we improved it a little bit more. Eventually, we open sourced it. People started starring it on GitHub, occasionally submitting pull requests. And so by the time we got to this decision point in December 2012, we were looking at this and we had up this tiny little JavaScript library with these 25 stars on GitHub and a few pull requests or what other idea?  I think that this could be a big business. I think Analytics.js could be a big company. And I thought, that is literally the worst idea I have ever heard. It's 500 lines of code. It's already open source. I do not understand in the slightest how that could conceivably be a large business. So we fought about it all day long. And I went home and I was racking my brains trying to figure out how to kill this idea. And finally figured it out, came in the next day and was like, all right, guys, here's what we're going to do. We're going to build a beautiful landing page. And it's really going to pitch the value of this open source library, a hosted version of it. And at the bottom, we're going to have an email sign-up form. And we'll post this on Hacker News and we'll see how people respond to it. So we agreed to do that. We built this beautiful landing page. We posted it up to Hacker News. So I started paying attention to other things. And much to my surprise, it went straight to the top of Hacker News. Got hundreds of upvotes. We got thousands of stars on GitHub. We even had people reaching out to us on LinkedIn demanding access to this beta. This is a guy who's now an MIT professor. He says, I'll give you feedback and tolerate bugs like you wouldn't believe. So full stop. This is what product market fit looks like. Every single thing in your business goes crazy. It's not metrics slowly moving up over time. It is literally everything going crazy simultaneously. So with our lecture tool, we'd been searching in the dark for the next feature, the next thing that would make it have product market fit. But now we had people cursing us out because we only had seven integrations and they wanted this other integration. And people were actually just building them themselves and pull requesting it into our GitHub repo. With our analytics tool, we had those sad, unanswered questions in live chat. But now we had people reaching out on any available channel demanding access to this beta. So don't let yourself be misled. These early indicators are not what product market fit looks like. This sort of explosion of interest that happens, this is what product market fit looks like. So let's be incredibly clear that product market fit does not feel like idle interest. It doesn't feel like a glimmer of hope from a random conversation with a prospect. It feels like everything in your business is suddenly going haywire. It feels like a proud rush of adrenaline that people actually care.  And it's no longer necessarily as much about your vision. You simply cannot mistake product market fit for not product market fit. And if you have the question, do I really have product market fit, I think the answer is no. But the hard part is being honest with yourself about it. And of course, that didn't stop us from making this mistake. I thought class metric for sure had product market fit. It didn't. I thought for sure segment.io, our analytics product had product market fit. It didn't. And even on our third attempt, when we finally did find product market fit very suddenly and explosively, I thought for sure it was a terrible idea. So it just goes to show you how difficult it is to find product market fit or maybe how stubborn I am. So if you take one thing away from today's talk, I hope it's that you have to be very lucky to become one of the five that makes it through this gauntlet of finding product market fit. You need to be brutally honest with yourself about what the world really wants and not what you think it wants. So thank you.