So the other day I did a video on a balloon popping game, which also runs on your phone here So you can pop Bubbles on it or balloons on it. We're gonna improve it. We're gonna give it more colors we're going to add a scoring system up to the corner and Yeah, make a few other tweaks So this is to follow up making our game a little better because it was a very simple game that I did just to do a quick Tutorial, but I think kind of a fun simple game. I know I'm not the first one to make a game like this We're gonna worry. Um, but um, yeah, just gonna prove upon it more balloons.  You can you can pull down the zip file from here or tar file Whatever you want. I'm gonna clone it. I'm gonna push it back to the server I'm just gonna use this clone with SSH because I get set up You don't have to get set up then you might want to use another route or set up git for me once I copy that I have an alias to I Just type clone and it pulls what's from my clipboard, but you would probably go git clone Put in that URL you just copy So now that I have that I can move into my balloon pop game Directory and then into its source directory and at this point I can use Godot to open up the project file and then Here we are Okay, so now I want to bring in some assets here So I'm gonna move these over here and I was gonna drag and drop our new assets I have a font the license for the font and I have a cloud I made which we may or may not get to in this tutorial So I'm gonna drag that right into here and then I can get rid of that Okay So again, let's look at some of the things I want to change Let's go into our main script here one thing that we had is I had it where the balloons are appearing faster and faster And the fastest they got was a half a second intervals. I felt like that was way too slow I'm gonna to go ahead and set that down to a Point two so that's like an eighth of a second from doing math, right? Okay, so now this time goes on that when they get to their top speed They're going to be appearing faster now. Let's go ahead and open up our balloon scene here And we have this hue shift, which is a shader that I did not create But here we go Right here. Let's go ahead and just turn off this That but turn this off so I can see the balloon a little better I'm gonna choose our sprite here and under the inspector if I go down to materials and click on material shader Right here. I have shader parameters And if we put this between number between zero and one, so if I do like point five it shifts it halfway point six Point seven that gets us like a darker blue if we do point two, it's gonna be like a yellow So that's how we adjust it in the editor here But if we go into the code here, you can see that I have used and again This is code that they came along with the shader create a random hue if they're using this Mathematical equation right here. I'm gonna change that one thing we can do basically It's getting a random integer getting a number divisible by three dividing it by two and then dividing it by 3.2 as a float so it's gonna get us a decimal You could up this number to like six or seven and we give us a bigger range But you can also just put a random range with some steps in there Like I'm just gonna go ahead and just say seven get something I test out there So basically it's going to give us instead before we had three colors We're gonna have I guess seven different colors possible here I think it's how that breaks down, but we're gonna get more colors in the balloons We're gonna get some teals some purples maybe some pinks and some darker blues So if we go ahead and hit at five this time our game will start there We go we have a green which we had last time there So that's more of a pink where before we had just a red but we'll still have red There's a teal color. So we're getting more more colors now Okay, we can't pop them because I turned off that 2d area so we want to make sure we reactivate that okay So we have that let's set up a scoring system We need a singleton which is like a global script that all our scripts all our scenes can access So I'm gonna come down here. I'm gonna right click on our resources and say new script and I'm just gonna call its Global you can call it whatever you want and then in our project settings. We're gonna go over here to auto load We're gonna choose that script Global and yeah, I'll just call it global with the capital G there. It's added now We can call what's in there from anywhere. So I'm gonna open up that script by clicking on it here I'm gonna go ahead and clear out some of this We're just gonna create variables because I want to start keeping a score. So we're gonna say Var score equals zero var Missed Equals zero so when we miss a balloon it will count how many we have missed Go ahead and save that now if we go back into our main function Actually, if we go into our balloon function every time we pop one what we can do here is we can say Global and this is case sensitive. So it's capital G because that's what we set in the project settings dot score plus equals one and Then we can also say when one leaves the screen so on exit screen we're gonna say Global dot missed Plus equals one. Okay, so now we're keeping score But we need to display that somewhere right now the game is gonna work like normal But you're not gonna see it so we're gonna go back to our main scene 2d view here And we're gonna add in a child node of a label We have that here. Let's go ahead and just put in some placeholder text. We'll just say score Miss but you can make it say popped or escaped or whatever you want to call will say zero and zero and You're not really gonna ever see that but I just want to because as soon as the game loads We're gonna run a script that updates that but I want to be able to see what it will look like on my screen here So that's why we're typing it here But now we have this label selected I can come down here and I can go to custom fonts click where it says empty And say dynamic font and then click on dynamic font go to font and we can drag This font over here, which is a free font that I got we're gonna go to settings and up this to 64 I think we'll be good. We'll give it an outline that's black And I think that looks pretty good. So now if we start our game, we'll be able to see that up in the corner here But it's not gonna actually Update we need to tell it to update. So we're gonna go back into our script here And we're gonna create a function. That's just called update score or something like that and We're gonna say here that our label So actually we need to grab our label so we could do dollar sign label is one way to do it But I think it's better if we actually set that as a variable up here. So I'm gonna say on ready Var label and we can do dollar sign Label or I think it just looks better I'm not sure if there's any benefit doing one way or another other than I just think that this looks a little bit better Even though it's longer, but now that we've done that anywhere in this script here We can call label just by typing label and it will be that label and we're gonna say that label dot text Plus equals actually let's just do equals so that will clear it out every time this this function is called It's going to basically Overwrite the text that's there and we're gonna say score colon and we're gonna say plus and The score is an integer. So we want to convert to a string So we're gonna say plus and then the string function here. We're gonna say global dot score And I'm just gonna copy that and paste it down here, but we're not going to want to override it We're gonna say add to that. I'm gonna do backslash and for new line Missed ends this score. We're gonna say Missed and if I typed everything right. Oh something. I already realized I forgot we created that function But we haven't called it. We want to call this Every time our game loops. So we're just gonna do that so it's on the game loop So multiple times a second theoretically 30 or 60 times a second. It's going to check the score So here we go. Oh We crash for some reason global GD type string So it's saying the value of type string and that's on this line. So maybe I don't have to Guess I never actually said it as an integer which technically is something to be correct. You should okay Okay, let's let's put this back and look at our global script here Var score it should be saying it as an integer since I gave it zero here Let me read that error again real quick So I'm saying well, let's run the script so I can see what the error says exactly. It's saying invalid set index text on Node global with value of string as far as I know I'm doing everything right. Let's go ahead and Comment out the second part of this line go ahead and hit f5 to run it. It's still It should be label. That's our label and it should be text. Oh Well, okay, let's undo those comments This is my fault up here for some reason I chose global instead of label when I was setting this I guess I was too busy talking to you guys now. Let's try it Okay, so we have a score of zero missed zero and I'm going to pop Like I got score one that one goes off the screen. It should oh Why did it say to already? Oh, okay, so let me pop a few here Am I not freeing the cute when I'm popping them? That should add If I click that and that and I'll see it's still counting them when they go off the screen So let's go into our balloon here and we're saying when it goes off the screen exit screen We're gonna say miss when I'm killing it. It's cute. Maybe I'm waiting too long on this There's probably a better way to do this. Let's see I'm gonna pop that one. I'm gonna pop that one. It's still saying Miss when it goes off the screen. So I guess when I'm popping it It thinks that it's going off the screen. That's interesting. I didn't think that it would do that So let's go ahead and see I have a variable here called death dead. Did I ever use that somewhere right here? If not dead okay, so input event if not dead pop Here I'm gonna say the same thing I'm gonna say If it's not dead Let's give that a try so I pop that one pop this one So when I pop them It's immediately saying that they're dead. So it should not recognize and it seems to be working. So let's let some go off the screen now Okay, that's working Let's let a few more go off the screen just to check There we go. There we go. Boom and I can pop some okay. It's working there might be a better option to freeing up our um Our balloons Uh, but we're we're good so far on this but actually that's good that I did that because I'm actually not going to Free them when they go off the screen. I think what I'm going to do is have them go back down to the bottom of the screen And that way if you the more you miss the more come on to the screen does that make sense? So I'm going to do here instead of freeing them when they exit the screen. I'm going to say Set their position y which is up and down. So position dot y equals um Our screen width so we got our screen width in our main function here So let's just control shift f and I'm going to say size So I do this sometimes to look so I have viewport rectangles. That's the command. So sometimes we do this. So I'm going to say get viewport Dot size And I think is it just dot y or is it like this y plus We'll say 300 Now let's say 500 Oh, I think it was already giving me an error there. Let's go ahead and let them run up the screen here again I've had these ideas. I haven't actually done this yet. So this is kind of there we go It did crash so let's go ahead and do this So that's getting our screen height So even if we resize our screen, we know the screen heights and we're going to add to it So that's the balloon. So we see this pink balloon going up here in the green balloon going up here once they go off the screen There it is that one just came back and we should be seeing the green one coming back up So if you the more you miss they're going to go to the bottom of the screen and come back up So you're missing them But then you have another opportunity to get them but the more you miss the more they're going to be coming So that's something I wanted to do last thing I want to do with this code is um add some clouds So I added a texture of a cloud here So let's go ahead and I don't know how this is going to look it may look horrible But we're going to give it a try we're going to say new scene I'm going to say 2d and I'm going to say I'm going to call it a cloud And I'm going to change that to be Change type some people leave these as node 2ds and I'm not sure the reasoning for that I'm going to change type to a sprite Just a regular sprite. It's not animated and I'm going to go ahead and grab my cloud This is the cloud texture. I drew and make it its texture here And I'm going to add a script to this so attach a script We're going to call it cloud Again, if you have a larger project, you want to put your scripts in one directory And your sprites and another is a very small project If it got bigger, we would want to move it into there But what I'm going to do here is I'm going to say Var speed equals and I'm just going to give it a speed at first here of 100 Then I'm going to say function process delta And then I'm going to say Position and it's basically what we did for the balloons but in the opposite direction So I'm going to say it's position y Plus equals wait plus we want to go down so minus equals Speed times delta again delta is basically a time between loops Think of it that way and what we're doing here is and just saying move at this speed We're saying move at this speed times that which might be a fraction It just helps if you have different speed machines keeping a consistent speed of your item So if you design this on a very slow machine, you play it on a faster machine The clouds aren't going to be moving super fast And if they're on the other way around If you design a faster machine, it's not going to run super slow on a slower machine It should keep it at a consistent speed So if I do that if I hit f or I should have said f6 f5 Starts our game f6. Yes, save it Save it We should see the cloud. It went real fast. So let's put this down to like 10 Let's see see up in the corner here. There we go. It's moving up off the screen We might adjust the speed a little bit more, but that's our start and then we're also going to say We're going to add in a child node Visibility notifier and we're going to say here with that selected we're going to go to node and we're going to say On exited screen, we're going to run this function within our code. So when it goes off the screen We are going to say Position dot y negative Oh video finished rendering negative or equals negative Let's see. We want these coming down from the top. Oh, I actually did it the other way I want the clouds coming down not going up. So they're going to go to negative. We'll just say 200 just to get it off the top of the screen I'm going to say plus on this one because we want the clouds going down And real quick just to test this out. I'm going to go to our main system I'm going to add in a child cloud and I'm just going to put it right here in the center of the screen Start up our game and see what the cloud does good. It's going down Which is great. So, but we definitely speed it up a little bit. We're going to get the variable speeds Let's go ahead back to our clouds here with our cloud selected. We're going to transform it I'm going to make it a little bit larger. I'll say four four And actually my squares my my clouds very squarish. So let's actually just do Three on that there we go. That looks good, but just depends on how I draw it We're going to go in here to script and then we're going to say let's just do 50 for right now There we go the clouds moving down now. We also want to make sure the cloud stays behind the balloons. So that's important So let's go here and for our balloons Choose our balloon go to um z index. We'll set this up to something higher like 50 And we'll go to clouds and we'll set its z index to Negative 50. It doesn't really matter how big the number is, but just want to make sure there's a difference there And uh, let's go in here back to our cloud script And for their speed, let's do a random range of 50 to 100 So our clouds all move at different speeds And then we can code it for them to show up and make it a little random But let's go ahead and just set some into our game So i'm going to put one here. Let's set our score our label here. It's index Oh, you know what it's a label so they don't use the index they use something else I'm not going to worry about that right now our clouds might be in front of unless we do this There we go that works. So I have one cloud there So the problem with manually Oops Okay, let's put this back up here for now. Actually, let's put it back down here and lock it in place Right, so I'm going to choose this and say locks. Now. I can't drag that around The problem with manually setting our clouds is we're not really taking the size of our screen into account so I'm putting this out like this But if somebody had a Screen wider than this it may not work out too well. Let's just go ahead and I'm going to add one more Right down here So they should all be moving at slightly different speeds see my screen is wider than I had anticipated and that's problem with manually doing this and uh But they should get kind of spread out over time Because they're all moving at different speeds I'm doing it. This is the cheap way. Normally I would code something like this Here we go. We got clouds all moving in the background. I don't know if I like that if that's too distracting From the balloon popping, but I'm going to leave it for now because I did it But uh, we have these clouds now if you don't like that the game's open source You know where to get the source code go ahead and remove them Uh, but that's it. Uh, I hope you enjoyed this tutorial. I hope you visit my website films by chris.com That's chris the k there's a link in the description go ahead and check that out And as always, I hope that you have a great day and I hope that you learned something Thanks again for watching and I hope to see you in the next one. Okay, so hold on. Do you remember how we increased these? Right at which the balloons appear with that and the balloons looping around it does get a little out of hand We could do something there where it counts how many balloons are on the screen and sets a max But I think I'm just going to go back into my script here my main script And change this delay back to a half a second Uh, because that seemed pretty good before it was a little slow But now that our balloons are looping around when you miss them, uh, I think it will Even out and the only way to really test this is to you know, wait a minute or two and see what the balloons do Uh, but I might tweak that number a little bit But I just wanted to go back because as soon as I stopped recording It's like all these balloons started coming on the screen So it starts off kind of slow, but we'll increase in speed again. Thanks for watching and I hope that you have a great day


All right guys, so the vlog is gonna be a little bit different. So what I created for you guys was a haircut that moves the weight, it's one length, and it shifts the weight towards the front, so you can see it starts off in the back, it's longer towards the front. The technique of that is very basic, so I wanted to go through work on that basic technique. Then the great part about this is we went through and we did a smoothing blow dry. A lot of you guys have been requesting to go over how to smooth hair to cut dry, so we're gonna go through that step by step as well, which I think you'll enjoy. And then we're gonna go through a ton of point cutting techniques, which is another thing that you guys have been requesting, so I wanted to get that in there as well. That's pretty much it, but I appreciate all the support, hundreds and hundreds of comments on the last one, all of you guys watching it all the way through, so I appreciate that. And keep those comments coming, let me know what you're feeling, how you're feeling about the vlog, how you're feeling for the day, I don't care, I love seeing the comments below. And that's pretty much it, so thank you guys so much for tuning in. Let's get started with our step by step. Here we go. Alright guys, so we're gonna start off this technique using a center parting. Like I said before, this is gonna be a very basic technique, but there's a lot of structure involved, so I wanted to definitely go through this step by step before we get into blow drying for the dry cutting portion of the haircut. So my goal is to push all the weight forward in the haircut, so I want to have the shortest point in the back, so what we're gonna do is start off sectioning from occipital bone down to behind the ear, and then just bringing that section down about a 2 inch section and just cutting it horizontal in my fingers, palm to palm. Most people would consider this zero degree elevation, for me it's not zero degrees because we're working with so many different rounds of the head, but I do consider this the lowest elevation possible. So what that's gonna do is give me a one length effect to the hair, so I'm bringing everything down. There is a slight elevation because my finger is underneath the hair, but for the most part we're gonna go in and clean that up in the dry cut anyways. So we're just going through cutting that horizontal line in the back. Everything is coming directly back to me horizontally. Now I work that diagonal forward parting all the way up the head, so you'll see me doing that, but I'm bringing everything down to the same point. So stationary guide, the only elevation is what's underneath my finger and just keeping that consistency throughout the haircut.  What that over direction is doing is pushing all that weight forward. The most important thing about hair cutting is understanding how you're shifting weight within a haircut. If I bring everything all the way back to me and at the lowest elevation possible, I'm gonna get the heaviest result in hair cutting. If I bring everything back to me and elevate it high, it's gonna be nice and light, but still have that forward growth in the front. So just understanding your degrees of elevation is gonna help with your hair cutting a lot. The reason that I wanted to do this as a one length is because I believe that you'll see the shift in the weight a lot easier than if I were to elevate it. So this isn't necessarily a haircut you're gonna do on everyone. Really, this is a basic technique and then we're gonna go through and we're gonna lighten it up using a ton of point cutting techniques at the end. So you can see everything coming straight back, creating that straight line and pushing that weight forward. So the longest point of the hair because of the over direction is gonna be in the front of the head. And we're just working our way across. Again, this is a basic haircut, but the technique that we're gonna do at the end will make it change it from a basic haircut to a more advanced haircut. The reason that we call it a basic haircut, basic haircuts are actually the hardest haircuts to do because they involve so much structure. So that's why you see a lot of people going through and doing basic shapes like this because that's the foundation of hair cutting. Going through and doing fancy point cutting, texturizing, stroking techniques, all that stuff is very simple once you learn basic structure. So still working off of that diagonal forward parting as we work our way up the head. The key part here is just to make sure that our finger angle stays consistent in the back. I think that that's the hardest thing. That's why you need to have that solid guide and why I like to make sure that I cut my straight line across the back at the very beginning so that I know that both sides are even and I have a nice clean guide throughout both sides of the haircut. All right, so what I want you guys to notice in this part of the haircut is how I shift my finger angle back to match up with the angle that I've been creating the entire cut. So I take that diagonal forward parting, but I don't keep my finger angle diagonal forward because I want to keep that zero degree elevation. So everything's coming straight back to me and keeping a flat horizontal line with my fingers. Okay, so as we finished up the last few sections, I think the key things so we don't get too repetitive here are making sure that your finger angle stays consistent. Your elevation is nice and low. And then as you work through, we're going to fix everything else in the dry cut. So what I want to do now is I want to work into how to create a smooth finish for dry cutting. So a lot of you guys have asked how do we do a smoothing blow dry, a flat wrap blow dry. So I'm using the Bercato Active Serum. This is my choice for this hair type. So just make sure you pick a product that's going to best suit the hair type that you're working with. And then I use my Ergo paddle brush. Now a lot of people like to use a bit of a tighter vent brush or smaller brushes. I like using a big brush. I like the control of it. I like the tension of it. So I work that through flat wrapping around the head. And then what we call is leafing, which is scooping up the hair. So you'll notice that I brush the hair back. And then I go back into it. So it's almost like I'm parting the hair by brushing it back. And then I go in and scoop it up and leaf it to grab that tension. Leafing is all about creating tension in the hair, because our goal when smoothing hair is to make sure that I'm working on the base to mid shaft, not the ends of the hair. So don't concentrate so much on the ends. When you're leafing just like that, you're pulling that tension tightening the hair so that you get a nice smooth finish from the scalp to the ends. Now the reason that we do a flat wrap and we wrap it back and forth, you'll notice I go forward, then I go backwards. I'm creating mobility with the base of the hair so that I can really allow the hair to fall in its most natural position and just working it back and forth. So it's also beveling the edges with the round of the head. So it's doing a lot of things at once. And then the leafing part is adding that tension like we talked about, to just get a nice smooth polish on the hair. So I really like using the paddle brush. Urgal brush is awesome. It's got a nice kind of rubber feel. So it's got a lot of grip on it. And the bristles are they have negative ions in the tip of the bristles. So it helps with smoothing the hair and laying down that cuticle. So just going through finishing up now I'm going to polish the ends just a little bit. But like I said, that's at the very end of it. And it's really just because I like to see that separation from when I bring down the top and what I've done on the bottom. So the part that I've sectioned on the top of the head that's from parietal ridge around to mid crown and then back around parietal ridge really it's just sectioning off the round that round part of the head. Now what I'm doing is going back and forth working the brush back and forth on the hair blow drying back and forth that's going to work out all calyx and then you'll see that I go through and I part the hair I hold with my pinky and then I leave the hair forward. So adding that tension again the tension is just to work the base to mid shaft of the hair and then I brush the hair back and forth diagonally which is working out any of those calyx on the top of the head like we said and just creating a smooth polish. The reason for a flat wrap blow dry is to work out and allow the hair to fall naturally around the head shape. It's going to give you your best result when doing dry cutting or also for any of those guests that have crazy hair growth patterns on their head. So working through finishing up that blow dry. Now we got our vibra straight iron. I'm going to work diagonal forward exactly like the haircut. So a lot of times when you're ironing a haircut I like to personally go through and iron the exact same way that I cut it and then go back forth just like I was cross checking a haircut and iron it back that way. So you'll notice my big focus is mid shaft to ends because I've already done the base. That's the key thing with ironing this will make your iron work go a lot faster if you're working the base to mid shaft with the brush and getting it polished and then just going through and touching it up on the ends. So just like I said same thing going through and ironing the hair just like we cut it in the haircut. You notice also that I part the hair I comb it down and then I grab it in between my fingers like I'm cutting it because that holds a lot more tension in the hair and that allows you to get a more smooth and polished finish as well. I'm using a wide tooth comb for this part of the cut because I like the 332 comb from YS Park. It just allows me to get through the hair a little bit easier and still allows me to section the hair. All right now we're going to move into our dry cutting techniques. This is one of my favorite parts you guys know I love dry cutting but we're actually going to go in with a clipper just to smooth out that edge. Now you could use your scissor as well on a mannequin it's really good to use a clipper but also on a person a clipper works really well as well. I think we have a lot of tools and we should use all of those tools if we have them. So this is the clipper that I was sent from Andis. I love it. It's very powerful. It's got a triple zero blade on it right now so it's real tight and get right to the skin and I'm going to zoom in in a second so you can really see what I'm doing but all I'm doing is I'm beveling the edge just to soften that edge and then I'm going right to the skin to make that line nice and solid. So you'll see kind of how that end of the hair right there it bevels under. That's all from the clipper just kind of grazing over the hair. You don't want to go right into it because it'll cut it right off but just daintily I guess daintily is probably not a word but going in there softly beveling that edge and then cleaning up the line at the bottom. Then I twist the head back and forth that lets me know if my guest is going to do the same. So as they're going out throughout their day they're going to be twirling their head around. I want to make sure that no matter how they twist their head the hair falls exactly back into place.  So you can see how that lays really nice. Now we're going to go in and do some point cutting. Now elevating the hair what you'll see when you elevate the hair because we had everything down at the lowest elevation you can see the heaviness around the inner part of my finger the top part of that section. You can see how heavy it is so I'm just going through and point cutting into the hair. So I want to show you guys that type of technique. Now the key to this is to make sure that everything is just coming straight back from the head exactly the way that we cut it as well so that we're removing weight but keeping the shape. So if I were to over direct this hair too much I would ruin the shape that I created.  You'll notice I'm combing the hair the same way as well. So I'm pushing the hair away from me in towards the center. That's going to help from pulling it too far out and rounding off the shape. Now I'm over directing everything straight back and just a little bit more point cutting in there.  And again I'm not creating a ton of layers in this part. What I'm doing is just softening the edge of the hair so it falls nice. So I'm going to work a horizontal section. I just want to show you guys a couple point cutting techniques. This really isn't necessarily what I would do in this haircut but I want to show you guys the technique of it. So this is more like a tap point cutting so I'm barely opening the scissor. So I'm just coming down and as I hit my finger I'm closing the blade. So definitely practice this but I'm working more in a tapping motion with the scissor so that I can quickly go through on point cut and remove just a little bit of hair at a time. So you can see that motion. So now I'm just going to go through. This is not sped up so you guys can see it's definitely a quicker point cut and I'm just tapping through the hair and removing some bulk from the mid shaft of the haircut. So you can see how that hair comes out. I'm going to do another horizontal section and show you guys another technique. This is going to be more of a deep point cut so I'll spread out the hair a little bit with my fingers and I'm going to go in and open the blade a lot more and pretty much pass the blade through and just softening those ends taking out definitely more hair in this technique to soften. And then the last point cutting technique I want to show you guys this is the same tapping technique. You could do either one but my fingers sliding up as I go so it helps remove weight kind of scattered throughout that section from mid shaft to ends. And that's the hair cut guys. I hope you guys enjoy it. This is definitely a little bit longer vlog. Let me know what you think in the comments below. I appreciate all of the feedback and I hope you guys can use these techniques in the salon. We'll see you guys on the next video. Thanks.


headline news update welcome folks we had the Dow industrials finished down 531 Nasdaq is off 10 S&Ps down 32 gold gold contract flat 1798 announced we had silver down silver up 2 cents $22 48 cents an ounce lights week crew down a buck 91 $70 45 cents a barrel notes and bonds the 10 year up one tick trading 130 104 the 30 year up 12 at 162 16 and $1.5 King dollars and juice here up 615 ticks 96 659 the euro trading out here at 112 the yen at 113 and a half and the British pound at 132 to 1 the US dollar we get open we take a look at the spy folks we have inside the spy here we're at 120 million shares traded we knew we'd get somewhere around there and the bottom line is that we're going into 127 million so this is a real close call man whether you know you're going to go down to the bottom of this consolidation first before you go after the highs my take inside the S&P is that we're going to go after the highs the reason I'm saying that is we went to a higher high yesterday and had volume when you go to a higher high and had volume you know we did the same amount of volume today almost when 119 you went to a high yesterday at 116 that says guess what you can make that high coming into the Christmas coming into the New Year holiday and the X100 now is different there's no doubt the end the QQQ's bottom line they are pushing the lows with volume and the lower range inside the Q's where right next to it it's 381 right now you're 384 so I expect what you're gonna see next week we're gonna see a market that wants higher price you have a contraction of volume we'll see whether the Q's can actually make it up to the 400 area what's gonna get intriguing with the Q's is that you don't have two lower lows yet the bottom line is we have two lower highs okay but you only have one low low low low so you are not in a downtrend yet okay the bottom line is that you know in order to get in a downtrend you're gonna need basically two or three lower lows and then we already have two lower highs so the lower highs are in place the lower lows however I'm not in place have a great weekend folks have a safe weekend come back and visit Tommy Monday morning kicks us off nine o'clock in the morning great show


and methods to deal with across Europe and indeed across the world. Our electoral wing in Greece performed an amazing feat today. We are in parliament with at least nine members of parliament. We are here to implement in practice constructive disobedience, European internationalism. We have a remarkable opportunity to break down this wall of silence the troic heavy and troic dominated politics of this land and indeed of this Europe. We are going to be fighting them in parliament, in outside parliament, in Greece and across Europe indeed, through the progressive international across the world. When I say we are going to be fighting them, I mean both the inane establishment which continues to implement socialism of the bankers and harsh austerity for everyone else and the fascists, the Euro skeptics those who want to deconstruct Europe, those who want a reactionary divided Europe, those who are turning the other, whether it is the refugee, the Jew, the Arab, the Greek, the German into the enemy. Next week I shall be with Jeremy Corbyn in London we are going to be inaugurating a new campaign, a joint campaign between DIM and the British Labour Party. Soon we are going to be branching out through the progressive international. What starts here in Greece usually ends up being big. Carpe Diem.


The Boeing 787 Dreamliner was grounded on January 16, 2013 after two incidents involving Lithium-Ion batteries. The National Transportation Safety Board, NTSB, investigation revealed that the cause of these failures could not be determined, leading to concerns about the safety and reliability of Lithium-Ion batteries in aviation applications. This paper examines the challenges associated with Lithium-Ion battery qualification, reliability assessment, and safety, as well as potential solutions such as improved testing methods and control techniques. This article was authored by Michael Pecht, Christopher Hendricks, Wei He, and others.


So those that do care can listen great Thank you. All right. We got a great Customer perspective panel And in the case of Merv independent analyst panel Matt, how you doing? Thank you Okay On the far left is Linda Apsley I love there. I love this title vice president of revenue and data engineering at time So we're gonna talk about that a little bit Linda Linda's got a you know really interesting background from the Seattle area has touched a couple of the bases up there with some of the Big companies like Amazon and Microsoft So thank you very much for making the time to come on the panel Ben Garrett is the director of platform architecture and operations at auto trader or Okay, so auto traders sort of the umbrella. So we'll talk about that And of course Merv Adrian vice president of Gartner very well known analyst pundit thinker George Gilbert is gonna join me and sort of co-moderating this panel. So then let me start with you I asked you about the title Where does that come from and we've been geeking out here? You're really you know the one of the questions that we haven't addressed is the business value piece That's kind of your job revenue in the title. Talk about the title your role and we'll get into it Here we go time started this initiative recognizing that data is our future and Interestingly enough what I heard initially when I was given this role was you need to figure out how to make time a data-driven company And what I learned really fast was the time is already a data-driven company circa 1996 and So we needed to modernize and along with this data piece my team owns the consumer marketing Tools right what is it the consumer marketing uses to drive additional revenue and also the advertising tools? So when I met with my new leaders when I came into the stroll and I put it out to the team What should we call them and call the team and I had two of my leaders say well We we drive revenue for the company because without the advertising platform and without the subscription platform We wouldn't be bringing the money in so we should claim it Let's let's just say that that's what we do and I thought okay So we took the revenue piece that speaks to the consumer marketing and the advertising platforms And then the data which really speaks to our future in predictive intelligence So the data vector and the revenue vector have come together and essentially that's how you and your team are measured That's right. That's cool. Hi Ben. I wonder if you could talk about a operations perspective and I'm going to have a little Q&A with you to those in a scenario hypothetical scenario But talk about your role and I'm specifically I saw a presentation that you gave an informatic a world And I'm specifically interested in what's changed because you had sort of this is the way it used to be This is the way it is now So I wanted to talk about your role and your role as a change agent Cox Automotive, which is the parent company for Alder Trader Kelly blue book Manhole auctions and a lot of different companies in automotive space for about two years now And I was brought on to bring in big data technologies to the organization So it's been a big change and a big transformation for the org on the whole, right? So we were very much a an MPP database and a teaser shop across the board and that's how we sort of did all of our data processing and data provisioning and You know, it's been sort of a challenge for us and almost a necessity to move to this new big data technology because You know Cox Automotive was formed from about 27 different business units in the automotive space that touches entirely the whole life cycle of the vehicle all the way through and Each of these companies generates and shares a lot of data And in fact in a lot of cases we have data that travels back and forth between orgs and gets value added throughout the chain Sort of this whirlwind of of data flow and it becomes a very difficult thing for us to manage So what we've done is built this central enterprise data hub partnering with cloud era to provide one place for us to store all the data that we that we generate Both internally and externally right so that we can all share it and provide entitlements on top of that So that all the different business units and analyst communities can get access to and leverage that data So that's been a really fun challenge because it changes the mindset of a lot of folks I mean you you go from a very traditional sequel world to this new world where you know You're doing development as opposed to just writing sequel and and the tools are sort of evolving as we go along So it's been a very cool challenge to sort of sit down and do this and I'm enjoying a lot All right, Murph. So Been a lot of discussion about the survey that you guys just did a little bit of controversy around it It's kind of survey week.  I saw that was you know a couple thousand that was kind of interesting I love survey data, right to everybody what everybody does is they they glom on to whatever You know supports their scenario and say oh here's the data But what I like to do and I'm sure you do too is to try to find the commonalities So I wonder if you could talk a little bit about what that data says what the Gartner survey says and then we want to try To relate it to what's actually happening within the practitioner community There was an interesting metaphor used a little while ago for what we do by someone from Red Hat, but but I won't go there We we collectively you us spark other people We survey population segments And how those population segments are chosen and how they describe themselves is as important as the data We get from them so in Gartner's case They're two very different specific surveys one that's about big data and one that's about Hadoop specifically The good news is we get relatively similar data back from those two separate surveys about Adoption rates which you asked about before But Sean pointed out before that the numbers that Gartner has published that said 44 percent of people that we surveyed These are I'll describe them enterprise senior executives C-level executives Not practitioner level people who tend to skew much higher by the way on these tools Sean and I kind of agree that we're at a moment where the rise is just about coming that we're getting into the early mainstream And I think nothing exemplifies that more than what these two folks just said Both of them talked about outcomes Not about bits and bytes not about the technologies or the version numbers or whether there's a new open source product That was announced yesterday that's going to replace the two that aren't ready yet that we're already using Yeah, they talked about what are we going to do with this and how are we going to measure the value of it? When an emerging technology market begins to define itself and market itself to its prospects and customers in terms of the value It's going to deliver Now we're talking This is when things start to happen and that's how you have to reach a mainstream market The audience at Strata is it's it's not brimming with geekitude the way it did a couple of years ago Right. It's about business people who are asking about value. Okay, so let's talk about some of those those outcomes So you both change agents in different roles within the organization. So everybody talks about trying to become a data driven company So what does that mean to you? Are you really a data driven company? How do you know when you become a data driven company? What do you do to create a data driven company? What's really different Linda? Can you help us like 18 questions in there? But it's it's a big topic and most companies that we talked to you know, aren't there You know, not even close and you may say that about yourself. I don't know But at least your your job is to get there. So I wonder if you could talk about that journey a little bit Yes, I'm happy to I I feel it from two perspectives I view it from analytics, which is how are we doing based upon the past and that's all about collecting data It's measuring for us how many subscriptions do we have how well of our advertisements performing How many people are viewing the ads, right? It's a it's a backwards view very very important I think for any company to understand what's happening currently and using data to determine Where we're successful and not that's where our company has done extremely well The please we need to add in now is this predictive capability. So as we tag this website What does it tell us about our customers so much of what's happening in the market today is about the individual? And I think especially in media, right?  How do we get that information to you in a way? That's that's fun that engages you in in our content and that piece really requires these predictive engines And so for my team, we've been now to take it back to the tack, you know, we've been modernizing and moving to the cloud a lot of our Backwards-looking capabilities, which are that the system analytics and at the same time We were building on the pivotal platform our predictive capability where we're bringing gathered data from all over the company Where it used to sit in silos with individual businesses using it to drive specific outcomes to look both to the past and to the future And I think that's really that the key point of where a lot of businesses are in the enterprise is Many do understand the past to varying degrees But if we don't get on this wave of understanding the future and how to engage our audience as individuals in their interests I think we'll get lost so It reminds me I heard Ray poquette. Is that his name? Analyst a gardener give a talk about hybrid IT and it was sort of these two worlds And I think the premises they've got to come together and I know I used to work at a big research company So everybody's got different scenarios, but I wanted to sort of mention that as a mental model for What we live in today this world where you've got the dev ops guys rushing hard and you've got the 19-year-old legacy apps But you deal with that every day. What's that platform look like? Is it a hybrid? IT world. Are you trying to bring those two worlds together? How do you do that? We're having those conversations now actually How do we how do we sort of move faster on the offside because we're growing from you know in leaps and bounds, you know You mentioned, you know, you asked a question about how data affects us and I'd say data is our business Right like at the core of it what we do and I'll use auto trader and Kelly blue book as prime examples for this I mean data is exactly what we do. I mean it takes the form of listings It takes the form of vehicle valuations, right? But at its core It's taking a lot of data and synthesizing it and providing it back out to the individual consumers, right? So for me, I think that's I mean that's where we need to go and and to get there requires a different kind of thinking around operations So cloud becomes a major part of our infrastructure and it's the way we're having to move in order to grow quickly I think I mean that's that's just the way we have to operate dev ops becomes a thing that is like ingrained in our Culture as a result of that. It's the only way you can move fast The only way you can develop things at rapid pace So more of we live in this hybrid world hybrid cloud hybrid it somebody emailed me for and said ask Merv about Hybrid transaction analytical processing, right? Okay? So but that's a very important. Well, yeah, that's a very please weigh in H-tap our acronym. It's about the notion that long-running activities in a business You can call them transactions if you want but the old notion of what a transaction this has changed a bit But before we get done with it there are analytics in stream We don't separate the two although many of us conceptually do in our organizational structures of the tools We choose but they come together when we really start to think about not the past because It's good to understand it. We can't change it. We can change the future. So predictive turns into proactive and If I can do the analytics within the context of whatever it is I'm trying to do that presumably delivers value. I do it differently. I change literally midstream I change the discount rate. I'm offering. I offer a different subscription. I Direct this person to a different car than the one they were thinking about just based on what I've learned while the transactions going on That's affecting transformation. That's what we're talking about here. That's what this technology All the technology we're talking about here uniquely differs from the former technologies in because the the synergies that come when you put those different kinds of data together While activity is in motion Gives you the power to change the outcome maybe serving up Kansas City Royals information as opposed to Camelot or something like that I think she meant the British Royal Opposed to come all right, I got it. I got it Okay Lynn and Ben you know one of the things that's that's become clear Is that as businesses? Digitized they're essentially going through a different channel and then it's almost like they have to reverse engineer their entire business The business changes At that at that level. Can you tell us for instance take for example the New York Times? It's like their newsroom has to change, you know because they're not on a daily cycle or whatever So the the whole notion of well, what are we going to decide for everyone? It's on the front page Changes, can you talk about how your business changed once you realize the delivery channel was new? So, I mean not for the time being thing but like for us One of the things that's been a big challenge and a big change for us is Moving to what I like to call sort of an analyst driven technology investment culture The power of the big data platform allows us to get data in front of our analyst community much faster It gives them the opportunity to go and do experiments and test things and many of those things Won't work right some do and those things that do are able to be thrown back over the wall to IT in our previous life We would build everything up front So the business would come to us and say hey We need we need these reports we need this analytics and we need to do it exactly this way And so we would spend a lot of time together in requirements We spend a lot of time building something at the end of the day We would test it and then we'd hand it off to the business and probably would be half of what they wanted in the first place Now what we get to be in a world of is we provide you with data We just plumb that into a big system We give you the tools to go off and do the job yourself, which is a big challenge It's a big change from an analyst community perspective But they're starting to get that and they see the power of being able to operate Atomously and do their own work right and then they turn back around to us and say this is a product We want to go build this it works and by the way I've built it in this tool and I can show you how to go operationalize it We turn that back around into something for them and much tighter time frame because there's much less You know requirements gathering up front it's much easier for us to figure out exactly what to build And then we can turn around and give the community back something very quickly So that's been a huge change in the way that we think about data and how we use it So we have 25 plus brands here in the United States And I think we look at each of them a little bit differently people here may not realize that time incorporated Publishes people magazine and sports illustrated and many others rather than you know, not just time And so we've needed to adapt a little bit her brand Based upon the needs so if you look at time ink for example time magazine for example You know we want to catch running headlines So what we've done with a lot of our teams is we put the engineers right in with the riders and the content creators And we've created tools that enable our content creators to quickly make changes on the website And if they get into trouble, they've got an engineer right there And then at the same time the two of them together working on these agile scrum lists, right? What's the next most important thing we need and how do we get it to market quickly? And then looking at some bigger pictures one thing I think we did that was really cool this year is We are a big presence on the red carpet, especially at the Oscars, right? And so one of the challenges we have is how do we quickly get the pictures out there people want to know You know what a J-Lo wear on the red carpet, right? And we get you know, we've got photographers there are thousands of pictures being shot a minute So we developed a tool that does images and could pull out of the pictures as they're feeding into us Everything J-Lo right by looking at the face and the dress and then we can quickly grab the ones that we think are best And the editorial team can can get them out there, right? I Just said to George I think there's an interesting technical point to make here You're looking at one large continuous stream of information and you're going to deliver it to several different constituencies based on their different set of preferences which you expect to be able to monetize in different ways and That's really an interesting analogy for the whole pivot that this conference is about from data at rest to data in motion Because because those decisions have to be made while it's happening I need Entertainment Weekly to get this shot and talk about who she was wearing I also need however to feed it over to time Which is doing a story about that particular couture house and how their finances are running right now and use the picture to illustrate that story That's a great metaphor for what we're doing with this technology right now Right it really is about learning to build the platform capabilities that can be leveraged quickly via API's right So that we have one digital asset management system that has all those digital assets tagged and other groups can get to them quickly through their UI tools and many curators well I'd say I think stream that you bring up a really good topic and stream processing because that's been a huge Differentiator for us recently right so over the past few years Altar trader and Kelly blue book both have provided back to our what we call our OEMs or original equipment manufacturers the Fords and the Chevy's of the world feedback on the ads that they run during the biggest sporting event of the year at Super Bowl and What we've done in the past is we've What we've done in the past is that we've we've taken that data overnight We processed it and we give feedback to the to these OEMs about how they're performing in their market after they run commercials Right and we're able to sort of see that You know we can see in this hour. You had some lift You know it's interesting and it definitely gives them external validation that their spend was worthwhile But I think now as of this past year what we were able to do is actually that sparked streaming on top of that data Flow as it's coming through and we were and we actually had an operations team in having a Super Bowl party there In the you know in the ops room there while this was going on and we had screens that I know right so Well, I didn't get to be at home with my wife while watching but anyway So so so we're watching the streams go and right so it's it's interesting to see right a commercial runs And then this huge hockey stick and it's compelling I mean I missed several key plays in the game because I was busy watching those those meters as they were going So that's not possible without this kind of technology So there's an example Extending what we just said where that single stream is not only being viewed multiple times by one organization But that same stream of data is being looked at by several other Organizations are they sharing that data who's providing that data who's brokering it and curating it and delivering it to multiple organizations not just yours There's where we get to monetize Okay, and that's where what's the value of all this starts to get answered and let's keep it there because in the call You said we got to talk about security, but I don't know sure we have time but That and two really interesting examples and as George whispered in my ear Let me you do basically redefining the concept of a magazine and building a you know proprietary System to make your writers more productive. I mean it's a huge competitive advantage. So hypothetical So you've got an executive who comes to you and says we need to do something that's completely changed the game Give us competitive advantage drive value Linda you speak wallet then you speak geek nerve. You're the bilingual translator, okay? So, okay, so where do I start within an organization? Maybe think about some of the you know examples without divulging, you know the big secrets But some of the folks in the audience who might want to get started on something like this Where do you start? Who do you bring in to that discussion? What capabilities do I need? How do you decide what you can even take on? Well, so let's start with the where do you start I spent my day-to-day at an off-site with executives from consumer marketing And I think this is probably the first year. They've had a technologist attend their strategy Session but this year it was important because the understanding is a lot of the strategies that need to be built are going to require Tech and so you want to understand right up front. Are we biting off something? That's so big. We won't get value this year Where can it fit into that stream? And so I think the starting is engaging in the conversation and really recognizing that there's a deeper partnership I think several years back there was an executive from Microsoft I don't remember the name that wrote a book about you know bringing IT into the business I think that's even more important now The other piece is hiring not just IT professionals. You talked about this I and I think you would ask the question I do have some folks who have very strong IT background and these are these are the core and backbone of my analytics practice But they want to become more technologists people who invent and so giving them that opportunity while also bringing in people Who have that backbone and that experience which is you know partly why Colin brought me in from Microsoft and Amazon was to bring that Capability into the company. So, you know, I don't believe you do anything great without standing on the shoulders of the people Who got you to where you are so it's having that respect for the people that are there that understand You know the the holes and the potholes that they've hit before and bringing in some new folks And then getting the two to work together and watching for the magic and then from a platform perspective Yeah, yeah, okay. I've got I've got your translation for you. What she just said. Where do you start everywhere? Seriously, seriously, everybody's involved in this get the ideas wherever they come from. That's that's my answer So it's from a platform My perspective there were when we first started down this path there were two options we could take we had two forks in the road One is leverage the analyst community work directly with them find out from them What it is they can't do today and help them do that, right? And that's that's key to adoption and success and the other was a strictly IT play Let me go after cost reduction and savings Let me offload some of the expensive overnight processing we do and move it into a platform where it's more suited And it's and it's certainly more cost-effective and as the late great yogi bearer said when you see a fork in the road take it So we went both paths at the same time, right? So so so in that respect, I think we're solving for two problems simultaneously Questions from the audience Got these Three practitioners Experts. Oh great. Thank you Give us some exercise in yourself Hello everyone, thank you for the panel Fatima Balani from UBS This is something that Dave touched on The topic of security and I'm wondering if you can talk about your your Challenges and pain points with respect to you know, anything from role-based access to metadata management as it relates to deployment That's in production. Yeah, so I'll say this when we first started down this path our initial Our initial thoughts around building this enterprise hub was that we would build a platform that was democratized and leveraged by everyone we're going to put data in this that everyone can leverage and you know, I mean No, strictly no PII included Intentionally right and that's still our motto, but we realized very quickly that not all data is created equal and Not all data can be globally accessible, right? There's data that's sometimes sensitive like financial data sales data. There's also data that contractually isn't available for everyone to access So we had to go tackle this and we spent a lot of time on security a whole lot of time on security You know in the in the Hadoop world when you sort of look at this there's a there's a Kerberos thing that comes up a lot when we start talking about this and While it's a technology spent around since the 80s I wasn't able to find anyone the organization that had real skill in this right so we had to invent this Wasn't going to hire anybody either because it's about as impossible as finding a big data architect so So we had to challenge we had a challenge to go fix this We worked with our partners at cloud era and it read hat to go solve for it But it took an enormous amount of time and it's still something that we're working through if you ask me about the things That keep me up at night security resource management or two at the top of my list and how we actually provide those Entitlements is really important some of the tools help us with it But at the end of the day, it's got to be at the base level right we've got to have Restrictions and we've got to have compliance And I'm not lying to you when I say that it has been a real challenge to do that We too have spent a lot of time in security and I would echo a lot of the same things He said it you know I always tell my team the most secure system is one that nobody can access That doesn't help us right but you know looking at every vector goes back to your everything and saying What is it that we need to do to protect in this vector and one of the things I've really pushed my team on and had a Difficult time finding a good partner to help us with was I really only want somebody to be able to log into my system for that session Right, I don't want their credentials to last longer than the session that they're sitting at because I think at the end That's my one of my greatest protections if I got my firewall down really tight And I've got you know my PII and everything so people can't penetrate in then I need to protect it at the admin level And we're been using working with Z data and we're putting that in place John Furrier and I asked Pat Gelsinger in the Cube a couple years ago is security a do-over and he just said yes Would you agree with that? security is Too often a disabler We talk about a gardener. We talk about bimodal IT a lot where there's a place where you get agile and you throw the Rules out and you you invent and you create and you and you imagine Security can enable that if it's applied correctly if there is some data that I need to make sure is not exposed I redacted I mask it I give people a sandbox where they can play with all the rest of it Now I may squeeze a few pieces out in that process that might turn out to have been valuable But I'm probably going to be busy for a while if I can provide the sandbox with some guardrails I can probably still get a lot of work done inside it security in that environment is actually an enabler because it gives Me a place where it is safe to experiment and to your point safe to fail You know if it needs me because failure won't mean exposure failure would just mean the project didn't work That's a very different value proposition Oh, please So I think part of what I heard from you that that I really that I really Believe in and we are doing is try to use your technology as much as you can as a protector Right and masking data is a big one because then you weren't inhibiting your data lake and in access in in the deeper ways Other questions we got a wrap shortly, but I want to make sure that you guys have a chance to chime in all right good We've kept you for a while here. Oh last question Gotta be a good one Hi, I'm Gokula missile from Oracle. I hear a lot of speakers talking about Collect all forms of data and everything your company creates and just keep collecting and you know put in this data lake Who knows maybe you know you'll find some value out of it and someday right? Who is going to fund this? Yeah Storage guys love that What about that you certainly do you can't be a complete pack rat with this data right? I mean it costs something and that's that's certainly a challenge I mean, I think the only way that happens is that you know You have engaged business partners that understand the value of the data and drive that Otherwise you can't just keep data for the sake of keeping it right so I think for us Joe rip really understands the value of data and we're able to make it real We were last year able to make a really good business case on the backward looking But on the forward looking he took a leap of faith with us And you know we're building tools now to demonstrate and show what can be done And I think there is a piece of that predictive that you don't know what you don't know until you get into the data And but I don't think you're going to be funded for a lot of years if you can't show that value Yeah, I go close question It's kind of the yin and the yang of value and liability You know so I would say keep it as long as you can but no longer, you know But then there's the value equation. All right, we're out of time Linda and Ben Thank you so much as practitioners for sharing your insights You know how busy you guys are and Merv at the say on behalf of the whole cube and silicon angle wikibon community We just love the collaboration with you. We appreciate your time and thank you very much All right John Furrier is here and I want to turn the mic over to John. How about a round of applause for that great customer panel great content? Merv customers great job. Okay, so we have raffle gifts. So put this over here so we have three giveaways we have Actually, I think this is the best gift because I love GoPro GoPro hero with a selfie stick kind of a GoPro stick I won't call it a selfie stick because It's one of the anti-selfie stick, but I think that's ridiculous


Hello everyone, I am Ankit and I have spent past five years in the industry across multiple roles with the sole core focus of fetching insights from the data faster. So I started off as a big data scientist where I deployed analytical models on some of the biggest databases that are available like Teradata and ATESA and right now I am working on deploying analytics at the edge on IoT devices and so today's talk is about real world number. So in this talk we will be discussing about some real world applications of number and I will help I will show you how it offers one of the path of least resistance. So you might be wondering what is the path of least resistance. So basically it is simply the path which is most traveled. So it requires the least effort especially when it comes to open source software we tend to follow a path which other people are using because it guarantees us more success. So I will be talking about this path and in respect to Python so when it comes to Python we all when we run a Python code deep down we all have this wish that I wish if my code was a bit faster. So each one of us we all have this wish and we and there is the chief question is is there a way to speed up my code without making a lot of effort. So the least amount of effort goes into making the changes to make your code faster. So is there a way and to show you this path I will take you on a journey. Basically it all started in 2010 when I was working in a project at my college at N. T. Kanpur and basically it all started there when I came across Python for the first time. So we all spent a lot of time in our in our schools learning Java C++ and it was in college when I first came across Python and had and that was the first instance when I came to know that okay you can build applications using Python full-fledged desktop applications and it was way back in 2010 I made this fraction project. You can see a lot of colorful buttons so don't judge judge me on that because there was no material design concepts back then and and basically it showed my enthusiasm. So so all I wanted to do was one of the subset was to generate a Mandelbrot set. So it is a 800 cross 600 Mandelbrot set and it took around 30 seconds to generate it. So basically there's a equation that you need to compute for each and every pixel and you can basically plot the color plots and it took around 30 seconds to do that. So I was happy with that because I had all the time on this world but my project supervisor told me to focus on speeding up this process and looking for alternatives to speed up this generation. So there were there were options like scython boost.python at that time but just like learning Python is quite easy but speeding up Python was not that easy at that time. So the only the path of least resistance I found that time was the project called psycho. It is dead now but all I need to do was write import psycho at the top of my project run psycho.full and that's it. So I brought down the speed to around 10 seconds so it was one third and I was happy with that. Then I further brought it down to one second by just reducing the size of the image. So I was fine with it because I had a lot of modules that I needed to cover like WX Python and V Python and a lot to explore. So I did not look further into this speeding up of Python. So present day. So we all are familiar with the Python 2 sunset right now and just when I heard about this Python 2 sunset I went on a frenzy of porting all my pass codes into Python 3 and I came across again I read as I discovered this old project which was built on Python 2.5. So came across this project and I thought that okay coming to this coming a decade later how can I speed it up? What are the methods available to me? So this map shows basically this Gantt chart shows the timeline I call it the two decades of timeline of basically need for speed. So this lists all the projects Python projects that have come in the past two decades the projects which still continue and the projects which gain traction gain a lot of popularity but now have disappeared and the first one was boost C++ libraries it was a pure C++ library. So then came Pyrex. So Pyrex died down but basically Scythand the Scythand that we know today was actually a fork of Pyrex so it still lives. Then Shedskin it was a famous Google project that they started but it also faded around 2013 Cyco as I told you was dead around 2012 but it was a spiritual successor of basically predecessor of Pypy and then we had some other projects like Unladen Swallow then Piston Pigeon these were also backed by some big companies which have also shifted their focus away from speeding up Python and around 2012 basically Nuitka, Namba and Python these are the three projects we started with Namba being started by the creator of Numpy so these still live on. So you can see this is an overall timeline and to tell you more about Namba I will tell you how it is different from the other projects which are still alive. So basically there are a lot of trade-offs involved in this whole process of speeding up the code. Replacement so Namba is not a replacement Python interpreter like Pypy. So Pypy has a whole different implementation it has separate modules to run Numpy and stuff so it is not a replacement interpreter to a Cpython. Also it does not translate Python code to C or C++ like Scython, Python and Nuitka does so it is also not a translator. So I am not saying that these approaches are bad it is just that it is not that easy to implement your code. So coming to Namba so Namba basically is derived from Numpy plus Mamba so Mamba is basically one of the fastest snakes on earth so they combined it and made Namba and it is an open source JIT compiler as you can see which translate a subset of Python and Numpy codes into fast machine code. So it takes the function it takes the argument the function arguments are basically it infers the type of the arguments and then it converts performs a bytecode analysis of the function then it creates the Namba intermediate representation and then it rewrites the intermediate representation and basically finally it converts into a machine code. So this is how the entire workflow looks like but if you go deeper you need to know this but right now what you can do is basically I will show you how simple it is to actually apply it in our code. So coming to the first case which is again close to my heart it is generating the Mandelbrot set so you can see this is a pure Python code so what it does is basically you have a color palette color palette that you can see right now since the plot is colorful and you have pixels basically for each and every length cross spread so you have pixels and then there are two for loops each basically the list it is a list of it is a list of list of tuples so each value pixel value is denoted by a RBG value and you assign a pixel initialize a pixel value for a particular point on the complex plane and you can see there is a complex data type that I have used to create a complex number representing a pixel and then you again perform an iteration to find out whether or not that basically complex number has jumped basically its absolute value greater than a threshold and then you plot it according to the color palette so at what iteration it jumped so this is a pure Python code using the basic data structures which are available in Python list tuple complex so how can you speed it up using number all you need to do is just do import from number import engine add a engine decorator and it will automatically convert at the runtime it will automatically compile your code into machine code and you will get a speed which in my case was around 32x so you can see you achieve this speed without applying a lot of effort and basically the engine decorator is nothing but jet decorator with with the attribute no Python is equal to true so according to this basically what happens is you come you do not want any involvement of the Python interpreter that's why you do no Python equal to two and you can only achieve perform good performance if you use this so that's why by default try to use at the rate engine decorator and you have other function arguments like parallel so it will automatically based on your system convert the code parallelize the code execution you can also include a fast math argument which will actually skip some checks for mathematical calculations and speed up your code and you can do cache equal to true so what it will do it will save your compile code on this so that you can use it later so you will save that compilation time which is not that much still you will save that time and you also have an alternative to compile ahead of time so there is an also there is also an alternative but it is a different process so coming to the second case basically which is again which is a scientific computing problem which is solving the diffusion equation so in this basically you solve the diffusion equation which is given by which is transient in time and it and you have to solve the temperature field in space in basically space and you apply for a finite difference method to compute it which is central difference method for space and forward difference for time so you have all you have a rectangular geometry you initialize some boundary conditions and then with time you try to solve it so the code so the pure python code which uses list it looks like this so you have two for loops inside that you initially you compute you basically temperature field for x across x and temperature field across y and then basically the gradients and then you basically compute the final temperature for that particular time so it is purely mathematical computation and suppose it takes speed x what you what basically I went to a conference and I met someone who said why don't you apply numpy it is fast so what I did was basically I used numpy what I did I kept the structure core structure same which was the two for loops and just replace the list of list as a numpy a numpy array and it deteriorated my speed now my speed was 0.32 times of x so it deteriorated my speed and I was like why am I using numpy so I reached out to the person again and said that okay please help me out it is the code performance has deteriorated he said you you have to use numpy in a particular way to get the optimal performance just use this vector implementation and basically you can speed up your process so he sent me the code I ran it my speed was boosted by 55 times I was quite happy that okay yeah it worked but you can see the whole structure of my code has now changed it is not that intuitive to understand what is happening all the mathematics it's not that intuitive anymore it's just a single line which computes the entire domain so I went to another conference I met someone who said okay why don't you do a thing you use numba on top of numpy it will speed up your code performance even faster I was quite happy so I did from numba import engine I added engine decorated now my speed deteriorated again so so again I was confused that okay what should I do now my speed has deteriorated what I am doing wrong right over here so I sent my code back to the guru he he did some modifications and sent me back the code looks familiar yeah so it was the path that I initially started started with and I am back to square one all I all I had to do was just do from number import engine apply the decorator and I could have maintained my code readability and have gained the performance boost of around 370 times so you can see how intuitive number is in terms of first scientific computing and data processing so even if you use numpy arrays you can basically incorporate number you can unroll unroll the follow-ups and you can gain that kind of performance so right now I will show you so I'll just go a bit deeper and show you what's the difference between the two codes and why my performance deteriorated for the numpy numpy vectorization on number so number also provides some command line utilities through which you can generate annotated stml files which will actually show you what is happening behind the scene so this was the code which had arrow operation and you can see it is calling some underlying implementations basically since it is an arrow operation now we have to call corresponding numpy array array operations in number and so it has a lot of overhead whereas if I unroll the follow-ups I'm having no overheads it analyzes the code as a whole and converts into a machine into the machine code which gives it which removes that overhead and gives you that performance so coming back yeah so coming back to the third case which is artificial neural network through this case I will show you actually since we've since we follow the class structure we we tend to create classes in python so how you can incorporate number inside your class so suppose there's a class for a neuron which has various attributes then you have some available methods like initializing the way it's setting the weights and all so one such method let's take one such method which is called update way update weights so it has a follow-up you do some certain computations now suppose I want to speed it up using number what will I do so if I just want to speed up a particular particular method I can create a static method and apply njit on top of it and basically it will compile only that method which can be used efficiently in your class but you also have an alternative which is using jit class so in jit class what you can do you have to specify the spec spec is nothing but the data types of the attributes that you initialize so the attributes that we saw class attributes so spec basically you have to tell it does not do a automatic type inferencing you have to tell him what are the attributes and what is the data type and you have to add at the rate jit class spec decorator to that class and it will compile the entire class as a number basically jitted code so so when is number a good idea so basically number is a good idea when you have numerical algorithms that is a lot of for loops and basically data is in form of numpy arrays it can be flat buffer data then you have small chunks of code it can be a lot of different codes codes but you have a handful chunks of well encapsulated codes that you can basically come compiled to machine code and speed up the process and it can also be used in your data science pipeline for example suppose you want to use k-means for scikit-lan k-means now you can do the entire k-means clustering process but what if you have compute come up with a new cluster index and you want to evaluate your clustering using that index so if scikit-lan does not have that kind of provision of automatic calculation of like that particular index you can implement your own index and the computation of your index part and you can just do a number jit and it will compile into a jitted code which will give you that kind of performance boost so it it fits well in your data science pipeline and this can be well established by the fact that Dask and Rapids so Dask is the one of the leading scalable platform for data analytics to Dask and Rapids Rapids is for CUDA so they both love Namba they have well partnership with Namba you can run your Namba codes on these platforms also if you are if you are running basically some form of computation on your IoT device you can use for example in Raspberry Pi your BerryKonda you can use you can install Namba on BerryKonda and you can use it the same Mandelbrot set that I generated earlier I computed it on basically Raspberry Pi and I got around 20x performance boost by using Namba on BerryKonda so it so you can definitely try that out if you are doing some sort of computation on IoT devices and yeah that's it any questions hi thanks for the talk and looks like a pretty powerful tool one doubt I have is about the trace back especially if you have a machine learning computations or anything like that going on so how does the Namba JIT affect the trace back so basically are you referring to basically debugging a Namba jitted code yes yeah so you can yeah definitely you can land on basically errors by using some complex data type which Namba does not understand so Namba has in right now they have an experimental GDB which you which can be called inside Python and you can also basically use external GDB toolkit which is available on the compiled Namba code so so right now the external support of GDB is there and also an inbuilt support is being experimented upon so they are working towards giving some useful trace backs yeah hello yeah hi my name is Rohit actually you mentioned about an example where you were using NumPy and then it got reduced your speed got reduced and then you use NumPy with normal for loops and it got increased to 320x so can we combine the power of say Numba with the NumPy arrays and then get more speed maybe more than 320x so the issue was so actually the issue was not about arrays so what happened was that there were operators which we were working on there is so we had basically plus minus operators which were overloaded by NumPy for to perform array operations now Namba so Namba has an basically implementation for those NumPy array operation and what it does is basically it pushes back everything to the NumPy compiled codes so that's why the the codes were isolated and you had that over it but if you use for loops unroll everything and use for loops the entire code will be analyzed by Numba and it will look it as a whole and try to basically parallelize certain processes and combine it and that's why it gives you that boost when you unroll the for loops and it's not that for example you can use NumPy sign or NumPy cost function it also has corresponding functions over here but just be careful that you compare the performance there are times when NumPy performs better there are times when NumPy jittered with Numba does not perform that better so you need to do some perform an analysis between those two and take a call. Hi so I saw in the examples you are only using pure Python functions does it also work with extended libraries or for example for example if I am using something which is backed by boost Python does it still work in that case? So I was using pure Python just to show that what data types it supports basically so right now as function arguments it supports the primitive data types that is there in Python and also NumPy data types now if I put in some complex data type in the as function argument it will not understand so you so basically it was basically a subset of Python and NumPy so it might not have support for some complex data type that you are using some other using some other basically library for example if you are trying to put in pandas data frame it will not work. Hello yeah the decorators that you used you just used a simple decorator on top of the function yes I am assuming that Numba will perform better or it needs the data types to perform well is it correct? The adderate NGIT decorator will automatically determine the types for JIT class you have to tell the types but if with NGIT you are using spec yeah you might get that for the first run that compilation you might get lesser overhead but after that it will it will infer the type and perform equally. I am thinking of a very trivial example okay let's say I have an adder function yeah it takes two parameters A and B I return A plus B yeah if I pass one and two it's going to return three in pure Python yes if I pass string A and B it will return AB yes so how does Numba help in? So basically when you will run it using Numba so for example if you are using arguments one and two for the first run it will it will determine that the arguments are intent and it will compute accordingly and return the result but if you are using string string again for the first run it will calculate the data type and give you the corresponding result now for successive run it will work for the same thing but for each different data types it will infer and give you a new result yeah. Hi yeah this side so hi I really like to talk okay then I was actually planning of porting my code to Sysin okay so I am really glad I came across this tool it's it seems to be really good too good to be true kind of thing but my question is like what what would be the other part of the other side of the story like what are the trade-offs related to it is there any pre-processing delays so so the more than pre-processing delays that will be not that much of a trade-off but since it supports a subset of Python and Numpy you might come across some operation basically for example let's take for calculating a Numpy are a mean okay it might not support an axis which is different so it might not support the full length of arguments which are there in actual Numpy documentation so but in number documentation it will clearly tell you that what all subset it supports so that you while using the code you will have to go through basically some of the tracebacks and it will tell you that okay in the error messages it clearly tells you what it supports and what it does not support so once you are running the code you will come across it but definitely if you have any issues you can ping me on JTAB or Twitter yeah hello yeah thanks that was a great talk so my doubt is so you are talking about numbers use case in Numpy and other like in case of certain for loop situations so how does it work well with pandas because in pandas certain times certain operations in columns might not be vectorized so you need certain operations for that how basically actually just I told you before so it will not work with pandas data types yeah it will not work with that you have to get the data frames values and that is an Numpy array on that you can do the computations