le and we're going to set it to true and then in our update function instead of saying game dot physics dot arcade dot collide with adam and platform group as our two arguments we can actually just make this second argument an array and just add platform group to that array so now adam will collide with platform and platform group so i'm going to save my code refresh and it looks like he's colliding with the platform groups so this concludes okay so now we're going to start state six the end result will look something like this so here's state six you can see that it's a volcano and it erupts every half second you will also notice that there's a two second delay between starting the game state and the volcano actually erupting so for this example all we're using is time events and a particle emitter so that's state six i've already preloaded my images so we have so we have these two balls that we're going to use for lava and this volcano so to start let's just add our volcano to our game so i'm going to make a variable called volcano and set it to a sprite and then i'm going to set the anchor point of our volcano so that it appears at the bottom of our screen there we go so that's pretty much it for the volcano now we just have to add the time events and the particles so actually we can just chain these two lines and i don't think and delete this variable so it all looks the same okay so now let's add the emitter to our game okay so now let's add particles to our game so i'm going to make a variable called emitter and we're going to set that to game dot add dot emitter parentheses so an emitter is basically just like a point for particles to appear so our arguments will just be the location of our emitter so x and y and then our third argument will be the maximum number of particles so we'll just give this guy 2000 particles next we're going to make our emitter emit particles and i misspelled it right here so i'll fix that so to make our emitter emit particles we'll say emitter dot make particles and then our first argument will be the particle that we want to use so if we wanted to just use one particle we would say something like red ball so this emitter would only emit red ball particles but we want to emit the red and orange ball particles so we're going to put this in an array and it will be an array of the keys of the images that we want to use so we'll use red ball and orange ball the next argument is the frame that we want to use so if you had something like a sprite sheet you could pick what frame you want to use but because we have an array here it's going to be picked by random so we can just make it zero so we can just say zero because because that's the default value and the particles are going to be picked at random so it doesn't really matter the next argument will be the number of particles to generate so we can just say 5000 and then the next arguments are if you want the particles to collide with other arcade bodies so we don't have any arcade bodies for this example so we'll just say false and then the last argument will be if the particles can collide with the world so we'll make that true okay so now we can just start our emitter and we can do so with just emitter dot start parentheses and then our arguments will be if the particles explode at once so we don't want that so we'll say false because we want the particles to come out like a stream the next argument will be how long the particles will last for so each particle will last five seconds so 5000 milliseconds and then the third argument will be how frequent we want to emit a single particle so we're going to emit a particle every 20 milliseconds saber code refresh and now our emitter is emitting particles so let's make our particles jump up in the air more so that they can arc and it just looks like the volcano is having a more violent eruption so we can set the speed of the particles with emitter dot max particle speed dot set parentheses and then we can just set the maximum horizontal and vertical speeds of the particles so for this example the horizontal speed of the particles doesn't really matter so i'll just set it to 300 but we do want the particles of our emitter to always go up so i'll set the maximum speed to negative 300 so it will have a velocity of negative 300 when the particle is first emitted and then we'll set the minimum speed to negative 100 so now the y velocity of our particles will always be between negative 100 and negative 300 so it's always going to go up and then we'll just set the minimum x value to negative 300 so that looks a little better we can also add gravity to the particles with emitter dot gravity and we can just set that to 300 so that the particles will fall down faster so now that we have our emitter working we can add the time events so we can change the way our volcano erupts so for our first time event we'll give the volcano a two second delay between first starting the game state and the volcano actually erupting so we'll say game dot time dot events dot add and then we'll say 2000 for 2000 milliseconds and then the second argument will be a callback function so we'll just give it an anonymous function and let's take this line right here and paste it inside the callback function so if we save our code refresh and go to state six you can see that it takes two seconds for the volcano to start erupting so this event is only added once so after two seconds it calls this function right here and it never calls this function ever again so let's add an infinitely looping time event with game dot time dot events dot loop parentheses and our first argument will be how often we want to loop this time event so we'll say every half second or every 500 milliseconds and then we'll give it a callback function and in our callback function we're just going to check if our emitter is on and if it is on we're going to turn it off and if it's off we're going to turn it back on so we can just do that with a simple if and else statement so to check if the emitter is on we can just say emitter dot on and if emitter dot on is true we'll set it to false else we'll set emitter dot on to true let's save our code refresh and there goes our volcano so this concludes state six okay so now we're going to work on state seven the final result will look something like this so here's state seven all it is is a arrow that will point in the direction that you swipe and and one thing to take note of is that if you just click a swipe doesn't register you have to swipe a certain distance for it to register as a swipe and if we change this variable called leeway our code will have a higher tolerance on what will be considered a swipe so that state seven so it looks kind of simple because it kind of is but this game state is more focused on algorithms which are important when you're making games so to start let's just add the arrow to our game so here i've already preloaded our arrow image so i'll make a variable called arrow at the top and we're going to set arrow to a sprite and we're going to put it in the center of our game so there we go and now what we want to do is we want to add event listeners so that whenever our mouse is down or let up we want to call a certain function so the way we can do this is we can just say game dot input dot on down dot add and we'll have a function called start swipe so here we can just say start swipe is a function and for now we can just console dot log where our mouse is or where or where our finger is pressing down if we're on a touch screen so to get the position of the pointer you can just say game dot input dot x and game dot input dot y so i'll save the code refresh have a extra t there now you can see that whenever i click you get the position of our pointer which in this case is our mouse but it will also work if you're using your phone and you just tap the screen with your finger so now let's make a function that gets the swipe direction whenever our input is up so we'll say game dot input dot on up dot add and we're going to make a function called get swipe direction and we can just console dot log the end points here by copying the start swipe method so now whenever i press down on the screen we get the location of our pointer and whenever i let up we get the location again okay so now we're going to make a few variables and we're going to call them start point x start point y end point x and end point y and then in our start swipe and get swipe direction methods we will just set these variables to the x and y position of game dot input so now that our code knows where we're pressing down with our mouse and where we're letting up with our mouse we can add if statements in our get swipe direction method to determine what direction we just swiped in so the way i approached this was if the change in x is greater than the change in y then we know for sure that the swipe was horizontal else if the change in y between the start and end points was greater than the change in x then we know for sure that it was a vertical swipe so let's just code that now so i'll make an if statement and an else statement and in our if statement we'll just console.log if it was horizontal or vertical so here we're going to console.log horizontal if the swipe was horizontal and else we're just going to console.log vertical so now between the parentheses i'm just going to check if the change in y is less than the change in x because if the change in x is greater than the change in y then we know it's horizontal so we're going to use the abs method or absolute value so that way it doesn't matter if the number is negative or positive because if you swipe from left to right then the change in x is going to be a positive number but if you swipe from right to left the number is going to be negative but the distance of the swipe was still the same so that's why we're going to use the absolute value method so i'll just say end point y minus end point start point y less than the difference between the x value of our start point and our end point okay so i'm going to save the code refresh so when i swipe horizontally we get horizontal and actually we can just delete these console.logs now so when i swipe horizontally we get horizontal and if i swipe vertically we get vertical okay so now we're going to make our arrow point in the direction that we swiped to so i'm going to make a variable called swipe direction and that's going to be the angle that our arrow points at so right now the angle is zero but if it's pointing to the right it'd be 90 if it's pointing down it'd be 180 and if it's pointing to the left that would be 270 so the last line of our get swipe direction method will be arrow dot angle equals swipe direction so now let's set swipe direction to to whatever direction that we swiped in so for horizontal let's make an if and analysis statement so if we're swiping horizontally and our start point is less than our end point then we know that we swiped right so if my swipe starts here and ends here the x value of my start point will be less than the x value of the end points so in code we can just say if end point x is greater than start point x then swipe direction equals 90 so this is pointing right and if this isn't true and we know that our swipe is horizontal then the only other direction would be left so that would be 270 so i'll save my code refresh and now you can see that we can have the arrow point in the left or the right direction so now i'm just going to take this if and else statement and put it in vertical and then i'll switch out the x for y's and then i'll switch out the x's for y's so if our end point was here and then our end point was here then that would be down so we can just set this to 180 and if it's not down then it's up so then our angle would just be zero so i'll save my code refresh and now we can swipe in all four directions so one issue here is that if i just click the arrow is going to point up that's because when i click the starting points and the ending points are the same so if we start at this if statement because our start and end points are the same one is not less than or greater than the other so it defaults to the else statement and again here the start points are the same so one isn't greater than the other and so it just defaults to up so one way to fix this is to just have our get swipe direction return false if we are just clicking on the screen so if the change in x or the change in y is not greater than a certain threshold then we won't do anything so near the beginning of our function above our if and else statement we'll just say if and then we're just going to return false so now i'm just going to take the absolute value of the change in y and say if it is less than a certain threshold so let's say 10 so it's less than 10 and the change in x is also less than 10 then we're just going to do nothing and return false so here i'm clicking and nothing's happening let's actually change 10 to a variable called leeway and now everything is working fine so again this state wasn't necessarily focused on phaser but more of but more about algorithms and i thought that this example would be really helpful if you were going to make a mobile specific game that incorporated swiping okay now we're going to work on state eight the final result will look something like this so this is state eight it's just a state that spells out text for you in a specified width so it's very useful for speech boxes or if you're just telling a story in your game but it's also just pretty cool to look at so adding text to your game is actually pretty simple so this this state focuses more on algorithms which are which are important so this is state eight so adding text to your game is pretty straightforward all you have to do is say game dot add dot text parentheses and then the arguments will be the x and y position of your text and then the third argument is what you want the text to say so pretty straightforward so now we're going to make it more complex by having the text type itself out which will be really useful for speech bubbles or telling a story in your game or just making your game look more dynamic so here i have some lorm ipsum text which is just latin filler text it doesn't mean anything and it's just text to fill up space which will later be replaced with actual sentences so let's make a method called spell out text so we don't actually need our update function for this so i'll just replace update with spell out text and what our method will take will be the x and y position of our text the width of our text so how wide the text box is the actual text that we want to display the font size the speed at which the text is spelled out and we can have an optional font so when we call our spell out text method it's going to first display one character and then it's going to display the next character and then the next character and then the next character etc so it's going to be a loop so let's make a variable called loop and let's set it to game dot time dot events dot loop parentheses and the first argument will be the speed so how often this loop event is going to loop and then the second argument will be the function that we're going to call and we are going to make a function called add char so here i'll just say function add char and the add char function will append one character to the text that it's supposed to be displaying so up here let's make a variable called sentence and we're going to set it to some kind of text so our first argument will be the x and y position which we'll get from these two arguments here initially sentence will have no text in it so we can just make an empty string and because of this loop event it will append a character to this empty string every however many seconds it will append a character to this empty string every time this event loops so after this empty string we'll make another argument and that argument will be an object and this object carries anything related to the font of your text so for example i can change the font size of the text with font size and here you have a pretty big font i can also change the color of the text with phil so if i wanted it to be white i could put in the hex code for a specific color and there are a few more options but we're just going to use font size phil and the actual font of the text in this example so going back to this argument inside this object we are going to set font size to font size plus px which is or which is short for pixels we're going to make phil the phil color so i guess we should add phil here and then we're going to add the font so this font will correspond to this font this phil will correspond to this phil etc so now we have to write some code that appends each character to our sentence variable so let's make a variable called index and the index will be the index of where we are in terms of how much of the sentence we've typed out so initially index will be zero because the first character that you want to pronounce is index zero so in add char we can just say sentence dot text plus equals text brackets index and then we are going to increment index by one every time we call the add char function so now let's call the spell out text method so we'll say this dot spell out text and now we'll just put in some arguments we haven't done anything with width yet so any number will do and we will use this lorm ip sum text and we're going to add a character every and our font size will be 30 and we're going to add a character to this text every 40 milliseconds and phil can just be white and we haven't added anything for font so the font will just default to phasers default font so let's save the code refresh and there it is now it's typing itself out except it goes off the screen and also when our text is finished typing itself out you can see that we get this error because right here once the index is greater than the length of the text string it's out of bounds and so we have to stop this loop from looping once we're at the last index so let's first fix the issue with the text going off the screen my solution to this was to make an invisible text that you couldn't see and once it was a certain width we would know to add another line to this text that we can't so i'm going to make a variable called current line and let's just put it at the top of our game and because we want our text to be invisible we don't need phil and now we can add logic to see when we can add another line to our sentence so you'll notice that if sentence was a global variable text and phaser have a width in pixels so while we're adding characters to our sentence we can check the width of our invisible line at the top and if it's greater than the specified width then we'll just make the text from sentence go to another line so current line will have the same text as sentence the only difference is is once it reaches the specified width then we will delete the text that it currently has but it will still keep typing out the next text that is being added to sentence so let's make an if statement and in it we are going to check if the width of current line is greater than width so this width up here that is so this width right here so if the width of current line is greater than width we are going to make sentence go to another line i mean and we can do so with a backslash n so backslash n will just mean go to another line in javascript and we are going to set the text of current line to an empty string so let's save our code refresh and now our text is working except you can see that once we ran out of text the character that's supposed to be added to sentence and current line is undefined but you'll also notice another issue is that we'll go down to another line regardless if it's in the middle of a word or not so let's just add some more logic here that checks if the current character is a space so we'll say text bracket index equals a space so that way only if the current character that's being appended to sentence is a space then we'll go down to a line otherwise it will finish that word until it reaches a space and then we'll go down to another line so let's run our code forgot a another equal sign and sorry for not making this english but but the words are being printed out in full so sentence is not going down to the next line when it's in the middle of a word so now let's fix this issue of printing out an undefined character and again that's because once index is greater than the length of our text string this character at text bracket index does not exist so that's why it's printing out undefined so now let's make another if statement that checks if we are on the last index of our text string so if index is greater than or equal to text dot length minus one then we're going to stop this game loop i mean and we can do so with game dot time dot events dot remove and we can remove the variable that corresponds to the game loop and let's also console dot log stop so let's save our code refresh and it looks like it worked pretty well so now let's make the text of current line invisible because we don't need to see it anymore and we can simply do that with current line dot alpha and alpha is just the opacity of something so let's just set it to zero which means you can see right through it so there we go okay so now let's add some different fonts because phaser has this one default font and you don't want your font to look like everyone else's font and you don't want your game to have the same font as everyone else's game so we're going to use google fonts so if you head over to google fonts there's an array of different fonts so i'm just going to pick two of them and once you found your fonts you want to click this button and then you want to scroll down and hit the javascript tag and you want to copy this line right here so you don't want to include the https colon next in your preload function we have to load that script so we'll just say game dot load dot script and then our first argument will be web font in quotes and then the second argument will be what we just copied in quotes and once and once you have this line written down you only need to include this line once even if you have multiple fonts so go back to google fonts and you also want to copy this object web web font config so just copy it and paste it there and what this object is for is so that this script knows what fonts to load so now if we want to use this font we can just take this word right here and we don't need to include these two colons in fact we don't even need these so we can just delete them and let's give this text some font and let's change the font of this text to the google font that we just loaded and let's make the font size a little bigger so now you can see that we have a different font so now let's get another font this one looks cool and we could just take the font go to the javascript tag and we can just copy this part and add it to the family's array and let's call spell out text again except we'll change the font and let's change the color and let's change the speed so actually that's pretty hard to read so let's just make it black so there we go that's state eight okay now we're going to work on state nine and the final result will look something like this okay here's state nine it is a high score system that uses firebase and firebase is basically just a database that updates in real time there are two buttons button one generates a score between zero and a hundred and it takes the array from our database sorts it and then pushes it back to the database and button two just clears the database so if we open up another window and go to the same url you can see that when i change the score here it also changes in the other window and just to prove that this that these high scores are connecting to the same database and that the input that i'm putting in my computer is not going to both windows i'll go to state zero and you can see that only one window is affected at a time so this high score system is actually being connected to a database so that's state nine so first let's make some test data so that we get the text to work in our game and then we'll connect to firebase later so up here i'm going to make two variables hs text which will be the text representing the high scores and we'll set it to an array and you'll see why later and then the second variable will be hs or just high scores and we'll make this an array that goes from 10 to 1 and now in our create function let's make a for loop and our for loop will loop 10 times and here we're just going to add text that shows the ranking of each score so our so we can just say game dot add dot text parentheses then we'll put the x position and then the y position so the first number which is one will be put at the y position of 100 which is around here and then every time we loop we want to increase the y position so we will just add i times 90 so each loop will put the text 90 pixels lower than the previous text and the text that we will display is i plus a dot and let's give this text a font size of 40 pixels save record refresh okay it looks like we're cutting off the 10 so let's just change this 100 to 20 okay so you'll notice that all the numbers are in line until we reach the number 10 and that's just because 10 has one extra character so we can change the anchor point of the text so that they are drawn from the right side to the left so we can just say anchor dot set to and so we'll put one so it will be drawn from the very right side of the text and we don't really care about the y so we'll just put zero okay so now all the numbers are in line now let's make another for loop and what this for loop will do is it will iterate through every element in the high score array so bar i equals zero is less than 10 and then we'll increment i by one after every loop so every time we loop we are going to add an object to this to the high score text array and that object represents a line of text in phaser so I'll just take this line right here and paste it and then for the text we will just have the hs array and then we'll get the element from that array so we'll just put in i and it looks like it's offset because we are not incrementing i because i in this for loop is one less than the i in this for loop so we'll just say i plus one and put them in parentheses okay now we have our high scores displayed properly okay so now let's connect to firebase so what you want to do is you want to go to firebase.com and log in and then once you're at the dashboard you want to create an app so I'll just name this phaser demo and then click create new app and then click manage app so this is our database okay so now we have to download firebase and put it in our app so I already have everything installed on my computer but to start using firebase what you need is to install node js so just go to node js.org and download it and after you've done that you want to go to bower.io and when you install node js they also install npm which stands for node package manager and we're going to use bower to install firebase so what you want to do is copy this command right here and then open up your terminal and then you want to paste the command here and press enter if it gives you an error what you have to do is say sudo npm install dash g bower and then it will prompt you for your password and then it should download properly but you need to have node installed to use npm so just write this command down and press enter I'm not going to do it because I already have it installed next what you want to do is you want to use this command right here so so you can just type it out or go to this url on github and then in terminal you want to change directories to your project so I'll just say cd space and then I'll drag in my folder to get the path enter and then you want to paste the command here and press enter and now we have a bower components folder in our directory with firebase in it now what we have to do is load firebase as a script in our index.html file so at the top right below phaser.min.js we'll create another script tag and we will set the source to bower components firebase and then firebase.js and close the tag now over in state nine we want to create a variable called ref which is short for reference and then in our create function let's set ref to new firebase parentheses and then you want to take this url right here which will be different because everyone will have a different name for their app and then you want to paste it between the parentheses just like that so I'll save the code go to state nine and then open up your console and if I type in ref you can see that there's some code it's kind of hard to understand but it's just a reference to your database so now what you want to do is create a variable called object and we want to set it to an object with a property of hs or highscores and it will just contain 10 zeros in an array so now we can just send this array over to firebase so what you want to say is ref dot set parentheses and our object will be the argument so I'll press enter and now if you go over to firebase you can see that we have now saved our highscore object with our 10 zeros next we're going to get the data from firebase and we're going to replace this text with the actual data so in the create function let's say ref dot on and then our first argument will be value so whenever we get a new value we are going to call this callback function which will be our second argument and then our callback function will take one argument and we'll just call that snapshot which will be all the data that's in our database so whenever we get a new value and we call this callback function our callback function should re-render the text so we have to make a function called update highscore text and what we're going to pass it is snapshot and then to get the actual value of what's in snapshot we have to call the val method and val will be this entire object so we have to say dot hs to access the highscore property so I'm just going to comment this line out first and then I'll just console.log what snapshot is to get a better understanding of how firebase works so I'm going to save the code and refresh the local server and when I go to state nine oh I spelled console wrong okay so this right here is what snapshot is so a lot of this information is just stuff we don't need so we have to say snapshot dot val and then the parentheses so now this is what's being console.logged and you could see that it's an object with our highscore array and so we just have to say dot hs at the end to get the array of highscores and if I go over to firebase I can manually change the data so if I wanted the first one to be 82 I could just type it in press enter notice that we have a new value in our database and then we'll just call this callback function again so I'll delete this console.log and uncomment this line and now we're going to make our update highscore method and this method will take an array of highscores and what we're going to do is just change the text of hs text so I'm going to take this for loop copy it and just paste it here and then we can just say hs text bracket I dot text equals an element in the highscore array so now if we try to call this update highscore text method with this dot update highscore text you can see that update hs text is not a function so if we console.log this inside this callback function you can see that this is the window of our browser so one way to fix this is to just create a variable outside of this callback function and we'll just call it update hs text and we will set it to this dot update hs text and we'll delete the this here so I'll save my code refresh and there you go now we're connected to firebase now I can just change the data here and it re-renders the text now let's add some buttons so that we can simulate sending a score to to firebase and re-rendering the text and we'll have a second button that just clears all the highscores so in our preload method let's load some button images that I made earlier and now let's just add those buttons to our game with game dot add dot button so there's our two buttons and now let's add some functionality to them so button two is just going to clear our database of all the highscores which is pretty easy all you have to do is say ref dot set parentheses and then we'll just set an object with an hs property and an array of 10 zeros so let's save the code refresh so right now our database has 82 and three but if I press button two you can see that our text went back to zero and now our highscore array is all zeros so pretty simple now what button one will do is it will simulate sending a score to firebase so let's make a variable called score and we're going to set it to math dot round and between the parentheses we'll say math dot random parentheses times 100 and then let's just console dot log our score so let's save the code refresh and now whenever I press one you can see that we get a random score every time I click on it so now we have to get the object that we get from firebase so I'm just going to make a variable up here called fb object or firebase object and we are going to set fb object to snapshot dot val dot hs and because firebase object is a global variable we can use the same reference here in this callback function and here in this callback function so after we create a random score let's take fb object so fb object is kind of a bad name for our highscore array so and you might want to add other stuff to your to this object so I'll just delete dot hs right here and I'll just put it here and then in this callback function we will take fb object dot hs and we will push our score to it and then we'll send fb object back to firebase with ref dot set parentheses fb object save our code refresh so now when I click one a random score is 54 and now you can see that we have an array with 54 added to the end so now we have to sort our array and we have to cut it to the length of 10 because we're only going to have 10 highscores so right after we push score to the highscore array in fb object we have to set fb object dot hs to fb object dot hs dot sort and then sort we'll take a callback function that takes two arguments a and b and it will return b minus a and this will sort the array from largest number to smallest number so for example if I had an array of random numbers and I just did sort without a callback function you can see that it sorts in a way that's kind of like alphabetically so you can see that it sorts by the first number so two three four four five so by adding this callback function we're having it sort from greatest number to lowest number so actually we can just take this sort right here and put it here so now it sorts from highest to lowest and if we switch b minus a with a minus b you can see it sorts from lowest to highest so this part sorts the highscore array now we just have to cut it so that it's always the length of 10 and we can do so with slice and it will start at zero so it will include index zero and it will stop at index 10 but it won't include index 10 so this will slice the array from zero to 10 including index zero but not including index 10 it stops at nine so let's save our code refresh and now whenever I click the one button you can see that we are adding a score to our firebase highscore array and it also sorts the scores so here we're creating scores that are lower than the last highscore and so you can see that they're not being appended to the highscore array and if we click two it resets the highscore and then you'll also notice that when we first go to our state for a split second you can see our original highscores so we actually don't need this highscore array and we can just replace that text with an empty string and i'll just delete it so there we go now we're going to add some security to our database because anyone with firebase installed on their project can just use this line right here and read and write data to firebase so the simplest way to secure your database is to use a custom token so if you go over to your dashboard for your app we want to set security rules and we'll just set read the read and write properties to off or authorized not equal to null and this just says people can only read and write data to this database if off exists so i'll save those rules and now when i restart state nine you can see that nothing happens because we're not authorized to read data from the database so now we have to so now we have to authorize ourselves so that we can read and write data so if we go back to the dashboard and click secrets you'll you'll see this key and what you want to do is copy this key which you should never share with anyone except people working on the project and then to get authorized we'll say ref dot off with custom token parentheses and our first argument will be that key so in quotes just paste it there and then our second argument will be a callback function and all this function is going to do is say if you were authorized or not so it will take one argument which is just error and if error exists then we'll console dot log error else if there is no error then we'll just console dot log authorized so now with the correct code we can see that we were authorized and now we have access to the database however if our code is incorrect so i'll just add a zero at the end so it's not the correct custom token you can see that we get an error and we can't read or write from our database so i'll change this back to the correct custom token and that's it and because firebase is real time data you can see that the code from firebase changes in real time whenever i click the button that adds a new score as well as deleting the scores and i can change the score here and it will also change in real time so that concludes state nine hello it's come to my attention that the firebase portion of this tutorial is out of date so in this video i'm going to teach you how to update the uh state nine of this phaser demo so that it uses the latest version of firebase which looks like this now so the first thing you want to do is you want to delete bower components um you don't you no longer need bower or node next thing you want to do is in index.html you want to delete that line that imports the uh the firebase component from the bower components folder in state nine you can delete this url as well as make firebase lowercase and then to get the database you just say dot database call that method and then you have to say ref for like where in the database you want to store this data which for now it will just be at the root of the database so you just use a forward slash so after you've done that you can delete this block of code which authenticates the firebase stuff for you and if we save our code it's not going to work because there's a lot of stuff that needs to be done on the console so once you log into the firebase console you want to create a new project i'll just call this state nine create project and i'm just going to set up the debugger console stuff here while that's loading okay so we're getting this error firebase is not defined makes sense okay so this is the console first thing you want to do is in database once you click the database tab go to rules and this these two lines right here basically just say if the if the client sidecode has not authorized uh their firebase database it means they can't read or write so if authentication does not exist then you cannot read or write so this tutorial doesn't focus purely on firebase it's this is just an example of how you can use firebase in phaser so i'm going to ignore this whole authentication part and just say true and this is dangerous because this means that anyone who connects to your database can read and write and that's not good but again this isn't really a tutorial on firebase and and this is just for the sake of showing you how you can use firebase in phaser so now that we have set these two true you can publish them next in overview you can select what platform you want to use firebase in so we're using the web so click that web button next you want to copy this block of code and paste it right here so if we save this and run our code and it says it cannot read the hs property of null and that's because in our database there is no hs property it is null so we have to add a property in our database called hs and one way to do that is to just do it in our console so if we in our console we can type in ref and we can see that it is connected to firebase because it returns this object so to create the hs property just do ref dot set and that's a method that takes an object and in this object we'll have the hs property and it's a high score it's a high score list so we'll use an array and we'll just pass in 10 zeros so that's 10 zeros I think and just press enter okay so you can see that we now have zeros here and in our database we have the hs property and we have 10 zeros so I think that's all we need to do so if we just refresh everything go to state nine you can see that it is now populating our database with simulated scores so hopefully that was helpful and please leave your comments on these videos if you have any questions or would like to give me any feedback thanks


What's up everyone? It's your girl Kenzie here from Layton Sports Cards and I'm ripping a couple of personals here for Matthew T. We've got a 2021 Panini Playoff Football Hobby, a 2022 Panini Select WWE Hobby Box as well as a 2022 Bowman Baseball Hobby. Oh, excuse me, got pickups. Alrighty here Matthew. Thanks again for hopping in. Let's see what we can get you. We're going to start with the Select. Good luck. I'm doing good Card Lover. How are you doing? How's your weekend going? Sub-Derek, what's up Parker? Trying Bradley. Trying. That's cold Dean. Yeah, he had some nice ones there. I'm looking forward to ripping some more for you. Herschel's Fire, yeah. Global to Giant. We've got Scope of Omus. Hi. That's nice of you, Dean. It's in a gifted mood this weekend I guess, huh? Appreciate that Mills. Absolutely. We got Shry-Color of Dolph Ziggler, Roman Reigns, John Cena. We've got Silver Otis on the Premier level. Excited for Select. Popaul release Wednesday. We do have those up on the site and they've been spotsmen coming in fast for those. McIntyre, we've got Purple Premier level of Siampa. That is 15 of 75. Nice little one there and Diesel on the ringside. From Breaker Rookie Hall of Fame of the British Bulldog. We've got Red Concourse Bailey out of 249 Indy Hartwell ringside. Appreciate it. Gonna have to look that over, might be going to PSA. We've got a ringside action signatures Robert Road, like the design of the ringside signatures. Shry-Color Premier level Dave Mastiff. Brooke. What's up, TikTok? Everyone's having a great Sunday, great weekend so far. Ricochet, Silver, Roman Reigns, Premier level. Box. We've got Annaker on the next 2.0. What do we have here? Lime, Green, Bruno, Sammartino. That is one of 49 on the Premier level. Little throwback on the Neon Dream. Jimmy Hart. Jason Goldberg. We've got a filler. Shry-Color, the godfather. Piampa. Thanks for the likes, Thomas. What do we have here? Damien Priest on the patch. That'll be your patch card for you, Matthew. Silver, Jinder Mahal. Hitman. Couple packs left. We've got Aqua of Ray Ripley on the Premier, or sorry, Concourse level, the 2.99. Montez Ford and last pack of the select. So we'll get into your playoff football. What do we have here? A Cora Jade, rookie ringside action signatures. Nice rookie auto there for you, Matthew. There's that. Silver, Tony D'Angelo and Wolfgang. Solid box there for you, Matthew. Now we're going to get into your football. Let's do playoff. Dan? Hey, Dan. Stay in the man in the building. Yeah, I believe he is, Dan. I think he's in WPRISM as well, if I'm not mistaken. I could be wrong on that, but... All right, playoff here. Let me double check real quick. I believe VetBase is not a ship out of this. Yeah, I can't find it on there real quick. Okay, yeah. So no VetBase ship out of this. Your rookies will, but VetBase like that will not. We've got Richie Grant rookie. For the bills, we've got rookie auto, Greg Russo. Bill's rookie auto. What's up, Rosie? Yeah, tomorrow morning. And thunder and lightning, Donald and Ramsey for the Rams. Yeah, everyone, be sure to go over to our new YouTube channel, Layton Baseball Breaks. Magic Mat will be live starting tomorrow on that channel with all baseball. What's up, Rosie? Robin, Aaron Robinson. We've got Silver Rookie Wave, Terrace Marshall Jr. 10 a.m. tomorrow morning. Got your girl Cox rookie. A Jalen Darden rookie wave, Silver. No, Joshua. Really? Thought he did. Got rookie Simi Fajoco. First down out of 100, Mike Esecki and call to honor him Silver Aaron or Sam Darnall. Aaron Darnall. Maybe I was thinking of Revolution. Rookie of Seth Williams and Silver behind the numbers of Shannon Sharp. Triple H. Got Joe Tryon-Shranker rookie. Silver Levesque Chanel Jr. and Thunder and Lightning of Najee Harris and Chase Claypool. Let's heat up a little bit here. Let's do something bad. We got Elijah Moore rookie. Here we go. We got Scridge. That is one of 10 on the purple foil. There's the numbered Scridge. Yep. There you go, Matthew. Nice Scridge there and Rookie Wave, Silver, Kyle Trask. Solid pack there. Freakin' Caleb took Scridge. That's not for the culture right there. That's funny. Javante Williams rookie. We have here for the Bears. Reception perfection patch. Allen Robinson seconds. Bears. Thunder and Lightning Derek Henry and Julio Jones. Dude, I was so surprised that I got CMC at 11. Yeah. At 11. I probably wouldn't have picked him if I had the top three picks either, but to get him at 11, I logged into the draft late and I was like, oh man, I already picked. I saw, I said, CMC. I'm like, what? Michael Carter rookie. I'll take him from my first pick, I guess, you know, out of 100 rookie Brevin Jordan and Heinz Ward behind the numbers. You're stacked. You have him and Aaron Jones. I'm looking forward to it. I think I got a pretty big team if I must say so. Feral rookie. Oh, what do we have here? Zach Wilson, eight of 10. Rookie ticket auto. The color match. Wow. Wow. Color match in all two. You got CMC at 11, did 10 people miss? I don't know. I don't know. We got Silver, Call to Arms, Patrick Mahomes. I like mine. Hey, you know what? Because my mindset was, let me not, like if I get the number one defense or kicker in that round, rather than a wide receiver or running back that I'm probably not going to use, I'm going to get more points off of that. I mean, I don't know if that was correct thinking or not, but I'll take the number two defense and number one kicker over someone I probably won't use. Oh, yeah. PS2 rookie and rookie wave, Silver, Rashad Bateman. Yeah, I did. I had to, I picked the second defense in the draft and then I had the first kicker. I think that was what, round eight or nine? Eight or nine, yeah. Yeah. We've got Zach Wilson rookie base and Julio Jones out of 35 and Silver, Dante, Cole Pepper. I'm pretty content with my team actually. Yeah, I like my team. Like, I was worried going in because I'm like, geez, I work at the. Oh man. Ed McAfrey died yesterday. What? Oh, I'm sorry. I totally read that wrong. What's his dad? I thought you said he died. So to say, oh my gosh. Yes. Yeah, that's his dad. Yeah. Oh man. Then you said for like a half a second. Poor Ed McAfrey. He's not dead. He's not dead. I'm sorry. I can't see. All right. Now we got our bullman. What were you saying? I'm sorry. Because my big thing is like, I'm pretty much make or break with Henry. Like, if he gets hurt, I'm done. That's what I'm thinking about CMC. Exactly. But at 11, he's a league winner if he stays healthy. Yeah, I got CMC was my first pick and then my second pick, I think was Mark Andrews, which is the number one title. Yeah, for sure. So in this one, Matthew, base paper does not shit, by the way. No base paper. Ricky O'Neill Cruiser Fractor projected like numbers two, I think. Right now after the draft, Rich is in first, expected first. And I'm second. We've got Christian Hernandez, but yeah, I'm very happy with my team. Yeah, I got I love my second pick. I every time I can get him, I'll take Mike Evans because he is a PPR machine. Yeah, and he'll get 1000 yards. Brandon Davis, Refractor. Martinez. 100% I am unless he gets hurt, I'm confident Mike Evans will get 100,000 yards this year. We've got gold first auto mariners, Adam Mako. Nice gold first auto. There you go, Matthew, pulling some nice hits out of each one of these boxes so far. Congrats on that. We'll say gold. Any Super Bowl predictions? Ask Nick. Lawler Refractor. That's a tough one. James Wood, we've got Artega on the first way rave out of 399. Nice one. They're giants. I don't know, I have a feeling that Bree's coming back for a vengeance to try and win, you know, and then actually retire for good this time. Henry Davis, you know, it should be cool to see. I'm not a Bucks fan in any aspect. Let's see like Bucks bills, Rams bills. Yeah, I'd like to see the bills too. Yeah. Got Torque Vibrations Refractor. Valera, Jay Allen. What do you guys think? Any Super Bowl predictions? Arizona card. That's a hot take, bow knows. Kalil Watson. We've got Purple Paper first, Luis Verdugo. Nice one there for the Cubbies out of 250 on the paper. Ramirez, Couser. You got to make it to the playoffs first, which they probably will because the NFC is garbage right now. Bobby Whitford Refractor. We've got Atomic, Christian Hernandez. Nice to see her in there. Yeah, no, that makes sense. Hackers, Bradley says Broncos. I think the Broncos are going to do well. Yeah. Yeah, definitely a team to keep an eye out on for sure. Hackers, Cole, I don't know about the Colts. They'll probably win that division. I just don't know how good they're going to be in the playoffs. Yeah, Louis Gill. Bellow, Martin Jr. Yeah, I probably have a hot take on my backup quarterback too. We've got Torque Hi-Fi. I have Maddie Ice from my backup. I took him over like Fields. There was like maybe three or four quarterbacks that were ranked higher than him.  Shoot, I'll take that as a backup quarterback for fantasy. Well done. Ryan's a huge check down the guys. Yeah, we've got Nelson Cruz on this guy, Bluto 499. I have Lamar at starter, which I love because the running, he gets so much. And obviously, I'm a homer when it comes to him, but I have Carson Wentz at my back. He was ranked higher than Matt Ryan was. I was like, are you serious? Yeah, no. Yeah, I got George Pickens in what, like the 10th round, I think. It was something crazy like that. He's going to be so good after seeing him in person last night. Heston Kirstad Refractor. Got a ton of rookie backs too. What's up, Jonathan? What's up, Jonathan? Got Hi-Fi Refractor Marcella Meyer. I picked up James Cook for the Bills. I saw that. You picked him, I think, right before me. I was there right after me. Nick Gonzalez. He was catching my eye, but I went with someone else instead. I think I went with CEH over him. That's not bad. I like CEH. Yeah, I'm surprised he was ranked so low. I mean, he was nervous all the last year. I think just injuries are what people shy away from, and I think it's going to be more of a committee back there this year. Yeah, Rodolfo Castro Refractor, but else is back there. They've got Rojo and something to shake out. He's been taking first reps and practice. We've got Invicta Christian Hernandez. Armstrong and Howard. A couple packs left. CEH will still be the future guy for sure. Let's put Rojo in. I'm like third down, I imagine. Yeah. Cabina, Taylor, and last pack here for you, Matthew. Very solid three-box personal here, especially with that Wilson. Jason Dominguez, Hi-Fi. Salas and Lawler. Alrighty, Matthew. That'll do it for your three boxes. Thanks again for hopping in. Congrats on that Wilson to 10 again, man. That was a huge card. We'll get that magged and right out to you. Thank you.


Greetings, Foothill High School Seniors. Congratulations on your upcoming baccalaureate and graduation. We're very proud of you. My name is Hennachan Mukhtar, and I am speaking on behalf of the Muslim Community Center in Pleasanton. It's a huge honor to be part of your celebration. I was asked to speak to you about the concept of gratitude and what the Islamic perspective is on it. So I wanted to share a few very deep quotes from our tradition. The first one is from the Holy Qur'an, which is our scripture, our holy scripture, which is believed to be the direct word of God as revealed to the Prophet Muhammad, peace be upon him.   Which we understand to mean that, as long as we're showing gratitude for all of our blessings, God will continue to increase us in those blessings. And a saying of the Prophet Muhammad, peace be upon him, is he who has not thanked people has not thanked God. He who has not thanked people has not thanked God. Meaning that in order to really have gratitude, it's going to be very important to acknowledge the people and the circumstances who've brought those blessings and those benefits into our lives in the first place. And then a quote by the best-selling poet in America today, Malana Jalaluddin Rumi. Many people know him to be a poet, and they see his lines on Valentine's Day cards where people express their love for one another, and they use his lines to express that love. What they don't realize is Rumi was actually a scholar, a Muslim scholar and a poet who spent a lot of time expressing his love for God and to God. And he said, Should you not gain your wants, my soul, then be not grieved. Only by contentment is the heart relieved. Should you not gain your wants, my soul, then be not grieved. Only by contentment is the heart relieved. And showing contentment is just another form of showing gratitude in action. And the other concept that Muslims have is that the way to respond to all the different blessings in our lives is to show gratitude for them. But showing gratitude for our blessings doesn't mean to just say, Thanks, this is great, keep it coming. I love it. Showing gratitude actually means to then use those blessings in accordance with what God expects of us and to use our blessings in a way that would be pleasing to God. So if we're grateful for the gift, the blessing of eyesight, then we make it a point to only look at that which is pleasing to God. If we're grateful for the ability to speak and to have a tongue that can articulate our innermost thoughts, then we use our voice and our tongues to only express that which we know would be pleasing to God. So I wanted to remind you of that. You seniors are going out into the world now that we are praying for you all to continue to be increased in blessings. And we pray that you're able to use those blessings in a way that would be pleasing to your Creator.  Super happy for you for your graduation as you enter the rest of your lives. And just know that we are sending you our best. We're very, very happy for you. Congratulations.


Live from Boston, Massachusetts, extracting the signal from the noise. It's theCUBE, covering HP Big Data Conference 2015, brought to you by HP Software. Now your hosts, John Furrier and Dave Vellante. Okay, welcome back everyone. We are live here in Boston, Massachusetts for Silicon Angles theCUBE, our flagship program. We go out to the events and extract the signal from the noise. This is part of HP's Big Data Conference, HP Big Data 2015. Great conference here. I'm John Furrier with Silicon Angles. Join my co-host Dave Vellante. Our next guest is Jeff Beese, VP of Marketing at Big Data Business Group at HP. Welcome back to theCUBE. Good to see you. Great to be here. Great to see you again. A little bit different than HP Discover. This conference kind of grew out of the vertical days and now really HP Software now has the whole platform coming together across the company, the new HP Enterprise, the new, you know, separate company happening. Great vibe here. I mean, tell us a little about the conference. I mean, great feel, large scale is the theme.  They have large volumes. It's the real deal. It's the real deal. Give us the update on the conference and what's happening here and what's your take on it all? Well, what you point out we're actually really proud of and that is, it's talking about the heritage of this and there's lots of conferences clearly out there. You could go to a Big Data Conference every week if you wanted to, I imagine. Of course, HP has a marquee customer event Discover. We all have 10, 20,000 people that we do around the world but this conference is different. This conference origins are about real engineers, real engineering, real problem solving, engaging and talking with each other. So we say with pride and I'm a marketing guy so I can say this, no marketing pitches. We just don't allow it. Every session has a customer and engineer delivering on it. You know, Jeff, Dave and I always use the ESPN analogy because we always like to say the cubes the ESPN of tech and what you're basically saying is let your game do the talking and that's really the marketing is the anti-marketing. It's saying, hey, we have great customers they're talking about the big problems that are real not hyped up as we guys dressed on your keynote. That seemed to be part of the keynote theme here and you have real big names from Facebook to emerging organizations really getting their hands on the engine of innovation. Well, I think some of the speakers that we brought up and what we talked about, of course we announced some amazing products and I think you've been discussing and I'm happy to discuss it. We took our core product Vertica, took it to another level so we can address data in motion but we didn't just talk about products inspect. We talked about what people were doing, the challenges they're facing and how people are really making an impact and how big data and just delivering insights, that's not the finish line. The finish line is that you really made a difference and having guys like the head of analytics Ken Rudin at Facebook be able to talk about how analytics is not just a service at Facebook but at the core of it. That gives you an example, kind of customers we have and what people are doing with our technology. So it has been a gas from beginning. It seems to be much more comprehensive. I mean, you're seeing the customers that are here and in the industry too, they want a comprehensive platform. There's a lot of tooling out there. Yeah, the right tool for the job is ethos that we've heard but at the same time, platform is something that they also want as well. In some cases they want multi-vendor. I don't want to have to reinvent the streaming engine if there's already one out there or hey, I'll use, I'm a startup, I'm going to build on Vertica or hey, I want to use some visualization, I'll use a partner. You guys have kind of this interesting dynamic going on where you get the best of your channel and your partners. You get the HP homegrown stuff and you got a bunch of new stuff. Break this down. Is that part of the strategy? You kind of pulled everything together. What is this new messaging? It's pretty tight. Well, three core tenants to it and in some way it's simple but I think it's really unique. Number one core technology, okay? HP Labs is about innovation. We are back hardcore. We are pushing out new technology. Some of it we push out to open source it. Some comes into our technology and that's job one. Job number two is our embracement of open source and the developer community. And that's not just so we can say we check the box. We truly believe, I truly believe that the market has flipped. The innovation direction in many organizations is coming from the developer off, if you will. Not from the C level town. C level writes the checks. We respect that. Clearly sets the strategy for companies but it is a developer first mindset when you're talking about harnessing big data. And the third aspect and we made some announcements about it is we got to make this easy. You know, there's companies and vendors that are talking to do an amazing thing. Curing cancer with big data, changing the pivot of the planet with big data and that's great. We have companies like Facebook running on big data. Companies like Etsy running on it, doing amazing things. But it's about making real difference in the real world. And what we're seeing is that companies again and again are saying it's not one or two big data projects, now it's 20 or 30. And so there needs to be a new model that makes that simpler and easier. So we close that gap. I like to talk about a canyon between build from scratch and limited custom locked and siloed solutions. The world needs to fill that gap. And our big focus with Haven Application Framework was to hit that and that ties directly into the real system. So that's your easy button, right? The Haven Application Framework, excavator. Well, I think it's our smart button. You know, yes it does make it easier so I'll go with that. But we want our developers, our ecosystem to be smart. And that means be able to leverage what's been done. Do 30 people need to write a Kafka connector when we've come out with an enterprise class capability that we can offer and our customers can leverage so that they can put their IP in and their development in areas that are really going to differentiate. I'll tell you, as people move to big data, as they move and adopt new technologies like Kadoop, for example, which we're a big supporter of. In fact, we just announced that working closely with our partner, Hortonworks, we've optimized the Orc file system to get huge leaps in performance. We wanted to be able to do that so others could leverage that. And that is what that's about. And that's working smart so that you don't have to compromise when you adopt a new technology. You know, I'm seeing a number of customers are saying it's like one step forward, two steps back. I've adopted this new technology, X, Y, Z, but now I got to get it to work. And I'm proud of it and I had to put all those cycles in. Well, we got to get off that treadmill of one step forward, two steps back. It's about acceleration, it's about taking big data into the mainstream and allowing companies to exploit it across the enterprise and to do that, what we saw is we need our core technology and now with the application's framework, ways that are going to make it a lot quicker and easier to do it. So talk a little bit more about the content agenda for the event. There are a couple of interesting things that you did. You had Stonebreaker up there interviewing him. You never know what Stonebreaker's going to say. Yeah, they broke the mold. You know what? They didn't even make the mold with Stonebreaker, okay? Because he is obviously a pretty unique gentleman. Right, and you never know what he's going to say. He threw all of us marketing people under the bus. I think everybody's thrown under the bus. I think he had Mother Teresa under the bus. Right, exactly. Then he threw all the big data practitioners under the bus which creates a lot of conversation. And that's kind of, as the head of marketing, that's really what you want. You want people to be engaged and conversing even if it's controversial, right?  And you know, it's not just Stonebreaker in his comments, but it was Robert Young-John's, the head of HV Software Marketing, very bullishly saying, hey, we are about putting out technology that people can use today that are going to make a difference. We're about engaging developers and opening up our technology, and when we have flaws and gaps in it, we want that feedback on day one. So, I don't know if authentic is the right word, but we wanted to talk about what is the real deal, and you know what, the real deal is not always pretty. It's a lot of fast forward erroring, correcting and learning from that, and that's what the vibe of this conference has been. It is not a pretty box with a bow on it, solving every problem, and simply open up the box. It's about rolling up your sleeves, implying this technology, and taking it forward, and that's what this exchange has been about.  He asked the audience, what's your big data strategy? He says he talks to a lot of customers, and they say, well, we get this a dupe cluster. Yeah, but what's your big data strategy? What's your strategy? And he kept coming back to that, sort of challenging the audience to think about that. The other notable thing here is John and I were talking, we had Shilpa on. Shilpa's a tech guru, which is also a GM. We had one of your customers on. He was saying, well, I'm talking to the GM of the division, who really is trying to drive the business, but at the same time, she could converse with me about my problems and drive change in the architecture. I also want to talk about Nate Silver. So Nate, you know, everybody knows Nate Silver, does a great job, but the best part I thought was the Q&A. It wasn't just like two questions. I mean, he exhausted the audience in Q&A. There was some great interaction there. What were your thoughts on Nate Silver's comments? Well, I think, you know, Nate from a distance, you know, here's this guy that's kind of the oracle, right? He is able to see things that other people can't with his predictions. But what you heard from Nate was so many times, he didn't use the word common sense, but it was that when you're looking at the data, you still have to keep on thinking. And you can't let the data have you over correct. And he used that analogy that on the news every day, Canada Day is up. Canada Day is out of the race, you know? Because you got a different data point. You have to still think. The gray matter still matters. And I think his point to everybody in the audience is this is a tool, some of the tools are really powerful, but you got to mix the tools in the real world. Does data, data science, statistics, does it sort of demystify some of that? You know, what you called Nostradamus, right? The mystical Nostradamus who made some unbelievable predictions. Yeah, he was pretty good. For a guy that, you know, was walking around in the 1500s to be able to predict some things over 400 year period, he had a pretty good track record. So does data and new techniques, does it sort of demystify that? What, well, you know, I think you're touching on a really important thing is that big data is opening up the fact that with the data and the insights we can really think about our businesses differently. But to do that, we have to understand. We really have to understand the insights. We can't be slaves to the reporting. We can't, there is no one answer. I think big data is more about being at ask. And this was mentioned by several speakers. It's the ability to ask the right question. And not just the first question, because if you ask the right question, I don't know about you.  If I ask the question, I am going to get some information that's going to draw me to ask another question. What was interesting about on that point though, this trill down on this, this has come up as a recurring theme on theCUBE. Well, yeah, everyone wants the answers. They want to ask the right questions. They want to iterate through fail before you can succeed, that kind of thing. I totally buy that. But the question is, everyone we talk to says it's a company-wide issue. It's not a BI tool that can be used for good reports over here. That might be a use case and an outcome of solution. But most of the people that are here are engineering corporate-wide solutions because the people change. The hiring and the corporate culture to be data-driven is completely different. Facebook, for instance, you mentioned Ken Bruden. That is complete data-driven culture.  They don't just want the data, they're deep. But as companies want to become data-driven, it is a company-wide thing. That's a platform. That is an architectural issue. So, how are you guys marketing that? I mean, it's a challenge. And you guys have big accounts. Well, you hit on two things. One, Hewlett-Packard Enterprise. I almost said HPE, but the formal name is Hewlett-Packard Enterprise, which will be the new separated company that focuses entirely on enterprise computing. And that'll be official November 1 when we go into official fact, but we've announced it. We have four transformational areas, and one of them is about empowering the data-driven organization. And we called it that. It's not about driving data-driven technology. It's about that final mile that it's got to make a difference in the organization. And that has soft and hard components, too. And we see that. And we see the fact that data is something that- Explain that soft and hard components. Just clarify what you mean by that. Well- I know what you mean, but let's just expand that. Just define that.  The people that are consuming the data, frankly, have different functions at different velocities. And I'll assert that many organizations are actually, they have more data, but they're less data-driven. And the reason why is the velocity of data and the velocity of business is forcing that. And what we're not going to do is solve that with traditional ways of building one grand data warehouse. That ship has sailed, sunk, is under sediments of rock and layer, and is never coming back to the surface. So now it is about how can we go and provide those insights, but at that speed of business, but in ways that the different parts of the organization need to consume it. Sometimes it's driving a business process. Sometimes it's about being able to engage that customer as I'm engaging them online. Sometimes it's making a strategic decision of should I buy that company. Those are very different use cases. And that brings me to a point you brought up, the P word, which is why do we talk about a platform? This is really important to Hewlett-Packard. A platform is not a monolithic. We want to sell you everything, laundry list. We make it all, so buy it from us. This is not trying to be the home depot of technology.  The idea is you want to be at a harness 100% of your data. You're not going to use it all the time. In fact, as you define your data, a lot of it may physically be sitting out in the cloud, maybe running across the internet, not even under your control. But you never want to be limited of what data, whether it is human data or structured data that you can harness. So you want a platform that doesn't just let you do one project, but lets you use that data multiple ways. And without starting from scratch again and again. And the multiplier effect means that I put 10 units in to get project one done, but the next project I do, maybe instead of servicing manufacturing, I'm servicing marketing, maybe I can do that with six units. And then the next one I can do with four because as I have my platform in place, I'm able to leverage it and build off of it. And that's why companies are moving to having a data platform, a big data platform approach to it, rather than a widget or siloed approach. That's the game changer. I can count on one hand, and if I had less than one hand, the companies that are in the space that have the capabilities, the technology and the vision to do it. That's the game, that's the Bulls-I-HP is going on and we're dead set on it and it's our big focus. Talk about this event and how you keep it intimate. I think that's one of your big challenges. Well, we're going to stop inviting you and all the people that watch this, way too many people know about the event. It's like exclusive means, very few, the joke if I don't want to be part of a country club that would let me in. So you know what I'm saying though, this is an intimate conference, it's practitioners talking to practitioners, very peer-based, very content-driven, big company, HP. How do you keep that flavor alive? It's a good question, it's a challenge. We now have exceeded over 1,000 people here, almost 1,500 people that are attending and it is a challenge because it is about engagement. The really rich conversations are not happening between the vendor, Hula Packard, of course our sponsors are here and that's valuable, but the real richness is all the interactions that are happening. So I think in two ways. One, we stay honest with the content here and we make sure the content from A to C is about what real people are doing about, big data as we talked about. Number two, we are just pushing the envelope on the things we're doing. I don't know if you heard it, but we had speed dating, like speed dating where you can gum and you get two minutes to meet with one of our engineers, ask a question, then move on. I saw it on the agenda, but I didn't hear anything about it. It's out of that cable. It's wicked cool because you can go and ask 10 different engineers from us the same question and you're probably going to get 10 different answers.  We think it is great because we're solving problems and we're peeling onions. I had one customer from a really large telecommunication say I love talking to other customers. And I'm like, well, why are you talking to ones that are doing big, bold things that you are? And he said, no, I'm talking to customers. We have 50,000, 100,000 people work for us. I'm talking to companies with 200, but they're asking me questions about what I'm doing that nobody's ever asked me before because those questions don't get asked in my own customers. And so that exchange is absolutely key. Now, I think what you're going to see is we're going to start taking this and throw this on an airplane and taking around a globe. You know, it's a global event. We had over 22 company countries represented here. We picked, and your listeners have to note this, literally the worst time possible to hold an event, the middle of August. The word insane comes up every time somebody sees a date. Non-conventional is the new normal. I mean, this is what people want. They don't want the same old rinse and repeat feel when they need real things done. Yeah, there's not one teleprompter here. I banned them. And if you're not, if you need a teleprompter to talk to somebody, I could use one with my wife. And I think there's a huge market for husbands to say the right things or wives at the right time. Say sorry. You're right. No, no, you're right, I'm sorry. Yes, dear, those were. But on a serious note here, we don't have teleprompters. And a lot of the keynotes... It's not superscripted. It's not a teleprompter. There's no conversations. Even on the stage, yesterday, tomorrow, we're going to have four customers up on the stage while our executives are on the stage and they're having conversations because that's when people... It's real, conversations are the new content acquisition. People are making decisions based on what their peers are, to your point. We've heard that as well from people last night at dinner and at the events. Hey, I'm talking to my peers. This is almost like refreshing. You're one of us. It's a community feel where conversations are the content. You can harness them up. So really awesome job. So plan is keeping it in August, keeping it in Boston. That's part of the... Yeah, we've announced the date. Now we are, you know, the planets will shift on this. We've moved it two weeks later. So I believe it is August 29th to September 1st, which of course won't impact anybody's vacation schedule at all. So we're keeping it in August. We're keeping it in Boston. Let me mention why Boston, you know? And why Boston is because the core development of the Big Data Business Unit is seven miles away, right over in Cambridge, Massachusetts. And we bring those engineers here. Every one of those engineers staffs the developer lounge. Our customers meet them. I have gone to conferences where they ban the developers and the engineers to even be within the same country. Because developers do this horrible thing. They tell you the truth. I was going to say that. You know what? And... No, that won't work. That won't work. Yeah, we shipped that and that was horrible product. But that is why people come to this event. Trust is a huge thing right now. In the market, people get information in all over the place. Certainly there's a lot of noise. There's some signal blended in there. But when you have this kind of interaction, trust is huge. Because there's a lot of stakes on the table. So congratulations. Final questions for me is HP Software. Vertica now all part of one big HP software organization. Very focused. The new HP Enterprise operating as a separate entity up until November 1st for regulations. So you guys are kind of getting the groove swing going. What's it like? Give us a peek behind the curtain. What's going on? The messaging, what are you tightening up? I mean, I'll see platforms key. You hit on some of those. What's going on in software? Because software is the future. And relative to revenues, HP software, it's a hardware company, but software is big pillar of focus. How are you guys going to change that? What's the plan? Give us some tips. Well, number one, the food in the cafeteria is like, I don't know what they did, but it is incredible now. No. On a serious note, there are changes going on. And as an insider, with the four transformational areas that we announced and discovered, one being empowered, the big data division, and an organization's admittedly announced framework and visions all the time. But what I see happening, perhaps with the focus, perhaps with the new culture, with the reinvention that is occurring, is that the mojo is not only back, it's kicking in a high gear. People are motivated to just show all the jewels, right? I mean, that's my sense. It's a pride of, hey, you know what? We want to come out punchin' hard. That's my sense. And we want to tell our story. I think some people that may not know HP well or know HP software, when they hear JP Morgan, and they hear Citigroup, and they hear Facebook, and they hear Twitter, and Etsy, are running the most demanding applications on our software. Of course on our hardware, we have a predigree there. I think people take notice on why. But the other thing that's happening, I think you'll note, and this is me being Nostradamus, is the connection across HP. And of course, there was always teaming in HP. I think it's been part of the HP culture, but that's coming back stronger than ever. A lot of our customers value, and they're looking for solutions. And they're looking for choice. You start off being funded by tier one VCs using your technology, products. Absolutely. Off-the-shelf products, by the way. Not just the other stuff. And you have a startup program, that's good news. But interesting, right? I mean, 10 years ago, VC be like, whoa, whoa, whoa. No, you're not going to OEM from HP, but now the world's changed. Well, that was part, you know, just to show you the new HP, if you will. We announced a startup essentials just for startups so they can consume top grade big data software from us and consume it. We have our APIs that we make available for free. We just, we have hackathons around the country where we kick our competition's butts all the time. Just had over 450 engineers in Sunnyvale at a hackathon two weeks ago. That's HP doing that. And we are taking that technology out, contributing it to open source, leveraging it. And it's about choice. And you know what? This may sound weird to the audience and weird to you guys, but we're disruptor. Because when you're a software company that maybe doesn't have a heritage of you've been shipping this data warehouse for 30 years or this canned app for 40 years, you can go and disrupt and mix it up. So our vertical product, you want to run it on enterprise? You want to run it on demand and pay with a credit card? You want to run it on Amazon EC2, somebody else's cloud capability? We support that. And what that's about is disrupting in choice. Yeah, choice is critical. You want Hadoop distributions from any of the top Hadoop distribution vendors? We offer them. We decided very strategically not to do our own Hadoop distribution because it had to be the HP you want. Good decision. I mean, again, looking back, little Notre Dame section, that's a good call. Look at Intel. They had to abandon their whole effort. And there's a few other. I won't mention them. We knew they are. Maybe it wasn't such a great idea because you know what? At the end of the day, customers, you got to give them credit for being smart. Because they are smart. And they want vision. They want a company behind them, but they understand where you can bring them value. And that's where they cut through the hype. Ultimately, the customers vote with their wallet. And the hype is cut by the customer. Are they buying? Are they deploying in production? That ultimately is the test, right? I mean, look at the customer. And that's why I like this practical keynote. Kind of, you guys shoot this practical approach saying, yeah, yeah, we love hype. We love to market to the future proofing, but like the reality is, where's the rubber meeting the road? Where's the meat on the bone? Absolutely, you know, it's a balancing act of being able to provide a comprehensive capability. And that takes you off into big companies, admittedly. And there's a lot of value to be able to bring the pieces together. But often you'll see big companies say, I bring you all those pieces, so it's my way or the highway. And the thing about HP is we bring those pieces, but we inject it with the innovation and the flexibility and the choice. And I think we're the only ones doing that dance. We're having fun with it. And the customers seem to be reacting to it. Jeff, thanks so much for taking the time out of your busy schedule here to speak with us. I'll give you the final word. Share it with the folks out there. You're heading up to marketing, which means you got to tell the story in a new unconventional, looks like way here and other vehicles. What's the plan? What should they expect to see from HP software and the big data piece? What should they expect to see from you? What's going on? Well, number one, I think you're going to see us do some groundbreaking things, both on-premise and in the cloud. And we're going to be not an aggressive follower, but we're going to be breaking new ground. We've started to do that and that's gearing up. Number one, number two, and I've touched on it, is we of course are going to support the practitioners that operate and run the world's greatest data centers. That's HP's heritage. We do that better than anybody else. We're an infrastructure company. But now, when we're talking about big data and where we're going, it's about talking to the builders. The guys that are going to build the services and the capabilities that are going to drive what we call the idea economy. And that is the focus now. We're walking the talk on it. We're going to be second to none on it. And the customers are reacting to it and... Storytelling, let the customers do the talking. Is that going to be the main storytelling vibe or what? What's the marketing plan? I think you see what happened here infuse into Hewlett Packard Enterprise. Because if your customers can tell the story about how you actually help their business, there's no better marketing. So you guys are listening to the customers. You're creating conversations. They could join and you're interacting. Yeah, and so it's an imitation. The last thing I'll leave you with is go to havenondemand.com, go to Haven Big Data. And there are communities that your listeners that can join right now. That they can learn. They can interact. It's open and transparent. So this is not a participatory sport. It's come on the playing field with HP and rock and roll with us on the ground. That's what we want to do. If we're screwing up, let us know. If we're doing some good things, let us know. What we want to do is set the mark in Big Data and make a difference. Are you at havenondemand.com? What was the other one? Havenondemand.com or hp.com slash Big Data. Well, you certainly get the tools to listen to the conversation. We saw some of the command center stuff. And of course, we get the conversations out there all over the web. We're trying to share the story. Jeff, thanks so much. This is theCUBE live in Boston. Go to crowdchat.net slash HP Big Data. Join the conversation. Go to hp.com slash Big Data. Again, join the conversation. HP's engaging. They're open. They're listening. And we'll be right back more live in Boston after this short break.