We can get started. Yes. Yeah. So yes So for the ceviche The trick is number one trick is has to be ocean fish. You cannot use lake fish It has to be ocean preferably white fish. You can pick mostly any fish you want as long as it's from the ocean is white Typically, I'll either pick mahi mahi or tilapia Both of them are pretty tender pretty lights pretty white fish and they're very easy to work on Do you suppose we in Wisconsin? We could use bluegills or walleye freshly caught. I've never tried But why not? It's white meat. It's white flesh. You could okay. Do you how many of you are gonna do that? Okay, go ahead Yeah, I suppose purge my work. Yeah So First to start with what we're gonna do is dice the fish And depending how tough the fish is and how fast you want it to cook per se, right? So a smaller piece of fish is gonna cook faster, but it's also gonna lose a lot more texture to the lime juice So depending what kind of fish it is you might get a feel for what size to cut it into You might want to go half inch by half inch or maybe inch by inch Somewhere in between that So that's what we're gonna do the Ugly parts of the fish if you will the stuff that might have veins or discoloration or might be a little tougher You want to cut out but we don't throw them out We'll set them aside because we're gonna use them for something else later on So we'll cut the fish I suppose I don't have to cut all of this But it must and it cuts more easily if it's partial partially frozen. Correct. Otherwise, you know cutting fish slips around So we're gonna save some of these small ugly pieces I'm gonna put them over here and then the nicer looking stuff that I want to use I'm gonna put on a different bowl and you want to salt it right away before you do anything else to it I have some salt over here And the reason for that is that once the lime juice hits the fish It cures the skin so the flavor of everything else that you want to put on it won't go in it, right?  This is the demo. We have some already completed. Yeah There's more. You don't all have to share this piece and then we're gonna get some cilantro and Chop it very finely and what we want to do with the cilantro on top of the color Or on top of the flavor is give the fish some Some color and some personality right because otherwise the fish is just plain white fish. It doesn't look like much so the cilantro and then The pepper which I believe I have somewhere. It's right here The cilantro and the pepper you want to pick Obviously the cilantro is gonna be green you want to pick a pepper that has a lot of color Yellow is typically not a good choice because it blends in with the fish. So you want to do something red Usually I opt for this is from my garden. This is called Rocotto. It's a Peruvian type of pepper that is pretty spicy That's not the one we put in the what the The bigger bowl has red bell pepper in it for color. So there are some of the spicy pepper on the sauce Okay, but the the fish itself has a lot of red pepper because the the taste of this might be a little bit Can I taste a little bit?  So if if any of you is interested in having some pepper, let me know I can get you some seeds through Emily So now we're gonna mix the fish the pepper the salt on the ball with the cilantro and just to Give it give it a good appearance, right? We're gonna mix everything together So the salt goes in it we're gonna mix the pepper in the cilantro and And both of those are mainly to give it some color and give it some nice aroma nice smell to it We're gonna set that aside and we're gonna work on what is the sauce On top of the lime juice we make a lime juice type of sauce that has a lot more flavor to it than just the lime Otherwise, it'll be a little sour. So to do that we go to the blender and we use the ugly scraps of the fish that we had We're gonna throw some of those in We're gonna throw in a small piece of ginger We're gonna throw a couple of celery sticks and we're gonna throw in some cilantro and some more Spicy pepper So now depending on how you want it you might want to throw in some jalapeno or some habanero or some other kind of pepper Any kind of pepper that you might have available to you And then what we're gonna do is throw some Ice in the mix and that is to keep everything fresh and also to give it some liquid Right give some liquid to the mixture and we're gonna blend this for We're gonna blend this for a little bit and we have already done this and this needs to be Strained because you don't want the chunks of the vegetables in there where we want to get is get the juice Alternatively if you want to you can mullet Try to get the juices that way, but you always want to strain it You don't want to get any of the actual raw vegetables into the fish Especially the ginger is getting it's nice for flavor But if you get a chunk of ginger and you bite on it, you'll notice right away So after that is done We're gonna make some Onions which I already have prepared here So but the trick is you want to cut the onion you want to take the heart out of the onion and then Thinly slice the onion so you don't want any big chunks that are gonna have the typical Onion taste to it right that is a little overpowering that is a little bit bitter You'll see the thinly sliced onions when we bring out the finished ceviche. You'll see them. Yeah And then so I have some here that you can you can see how thinly we have sliced them now the other trick to get some of the Flavor out of the onion and make them more tasty more appealing we soak them in cold salty water So salty water Okay, that would add some more flavor right and you don't want to use hot water because if you do then the onion cooks And it loses the flavor and it loses the texture right we want that crunchiness on the onion That is gonna go well with the fish So now once we have done and I'm not do it gonna do it here because we don't have a good strainer Once we have done this we're gonna strain this We're gonna add it to the fish and on top of that we're gonna add lime juice to it and Some of the onions that have already been cut and soaked in lime and we're gonna let it sit there for about 15 to 20 minutes depending on what kind of fish it is You have to keep an eye on the fish Right now this fish is pretty pink You're gonna see when the big plate of fish comes out the fish is gonna be white. Yep white So that's gonna be your indication that the fish is cured is gonna change colors And it's also gonna change texture and firmness So on the ball to plate the ceviche you're gonna put a bed of lettuce if you will on the plate And then we'll put the ceviche on top and that's the lettuce really is not meant to be eaten But it's more of a Visual to make again add some color to the plate mercantile appealing and and not make it to Blend from an appearance standpoint Saviche raw fish Saviche raw fish with salt the most basic ceviche you can make fish salt and lime and that's it three ingredients But you're making fancy ceviche, right? Okay, and the ceviche really goes back historically to the fishing communities, right when when the Fisher Fishermen people fishing historically were on the boat. The only thing they had was fish and salt water Yeah, go ahead You can but it cannot be raw So this is a curiosity the lime only cooks fish. It doesn't cook any other seafood So yes, you can add whatever you want, but typically you want to pan fry it or do something to it for So even a little few little boiled shrimp thrown in at the end. Mm-hmm, okay Exactly, and and if you go to a ceviche restaurant, you can get a variety of Seafood you can get squid you can get mussels you can get shrimp Are they but they have to be cooked separately also exactly all right They have to be cooked separately the lime juice will not cure that kind of it's not shellfish. Yeah, great question. Thank you So personally the ones I've been to there's one in Milwaukee Called that chef pass which is actually West Alice P.A.S. P.A.C. P.A.C. Yeah, and she is Peruvian. She's from the rainforest I'm not sure how long she's been in Milwaukee, but she has a full menu of Peruvian food chef pass P.A.C. P.A.C. as in zebra and that's her last name Z CS in zebra zebra not see as in cow Thank goodness we keep talking Just a minute Yep chef pass P.A.C. as in zebra. There is a one in Madison for sure Josh might know the name It used to be called inca heritage, but that closed and changed names Downtown Madison, okay Yeah, and there's one more in Milwaukee that I've never been to I believe is called Seabass Maybe Yeah, so yeah, there's plenty of restaurants in the Milwaukee Madison area that would make this So we've given them lots of information on ceviche and how many people are going to eat ceviche other than today. Oh A few yeah few okay, okay All right I've done both Yeah, the frozen is a little bit easier to handle at the very stages of the prep So if you have a frozen piece of fish and you move it from the freezer to the fridge the night before The morning off it'll be thought enough that it's easy to handle, but still it Stiff enough that it's easier to cut right and by the time you put the salt in and you leave it out a little bit It'll finish and I think in Wisconsin the so-called fresh fish that we find at the stores are simply frozen fish that they thought So I always buy it frozen because the fishermen on the ocean They catch it they freeze it on the boat and that's as fresh as you're going to get rather than thought at the grocery store That's my personal I Mean it's typically a summer summer dish Yeah, yeah, it's typically a lunch a lunch summer dish, right you rarely would make this for dinner It's it's always served cold.  They rarely make anything else. There is specialty ceviche and seafood You won't find meat. You won't find chicken. You won't find anything else. There are experts on this stuff Okay Any other questions today tilapia? Otherwise I have used maji maji and I have used flounder as well Just the either of the three works well depending on what's available at the store No, I do all my fishing at the grocery store My hunting too, I'm not I like being outdoors, but I don't fish and I don't hunt so And you can see here the ceviche that we've had Resting on the lime juice for about 20 minutes now in the color of it It's it's already way different than what we started with it's a lot of whiter the texture is a lot firmer So that's your indication that the fish is ready to go and on here again We've mixed it with cilantro we put a bell pepper on it to give it some color some personality And we threw some of the onions on top of it So when we serve it will plate it over a bed of lettuce you want me to put that on here No, usually we put this on the ball, and then you would put a scoop of so everybody We got a piece of lettuce. All right So we'll put that over here I Don't believe we need to blend there anymore. We don't So now we can do the chicken do the chicken. Okay So now we're gonna do actually the third dish. I talked about is the the chicken dishes. Ahida gallina is called And for this fish Probably the night before or maybe the morning off you want to cook some chicken breast Just some water with some Celery carrot and salted water. Thank you Just like a chicken soup, but you know and we want to save the broth from that after the chicken is cooked We want to pull it off let it cool for a little bit and then shred it You can shred it by hand you can put it on a food processor as long as you get small pieces out of it And now we're gonna reserve that chicken the sauce is made from Bread so go to the store. I typically buy Whatever store brand it is of a local brand wonder bread style exactly And what we want to do with the bread is take off the crust Mainly because it gives the dish Not as good as an appearance because you can see the crumbs They don't blend very well and usually kids don't like them.  Why it was tasty That's a great idea sugar sticks We should try that at home Yeah, because I'm usually the one eating the caps and yeah in the ends and everything The best part is the end of the loaf. Yeah, I like them. Yeah So We're gonna soak the bread after we've removed the crust We're gonna soak it on some of the broth and that we're gonna do so it's easier to blend it easier to handle later on On top of that, we're gonna chop up some onion. Just chop it very finely like you would on a food processor We have the shredded chicken and we're going to need also some garlic Here are two things that you may or may not find everywhere. This is called yellow pepper. It's a Peruvian pepper I have a plant at home. It hasn't produced anything yet. So it's the first year. I try growing it Typically, I'm able to get this at the Mexican stores La conquistadora in town will typically carry it so this is a I Would say fairly hot pepper. It's not as hot as as the one you have But I wouldn't put a scoop of this in a sandwich, right? I typically would water it down with something else But we'll use it for cooking this and the other thing is turmeric, which I think is more readily available But this is mainly for color. So we turn the white bread into a more of a yellowish Try to give it this appearance right the original color of what the pepper was so in order to do that on a Saucepan of some sort we're gonna brown the onion first With a little bit of oil and then we have the onion already chopped up We have the bread already chopped up and with the bread typically what I'll do I'll blend the bread Just to get it to be more like a paste You don't have to blend it if you work it enough in the pot You'll get that texture that you need mushy. Yeah, okay exactly We want it to be almost like a puree of some sort right almost like mashed potato type texture and then we're gonna put some Walnuts in some evaporated milk on it as well. Walnuts and evaporated milk and wonder bread to make it creamy That's exactly it At the end of the day, it's a pretty simple sure We would not think of putting soaked wonder bread walnuts and evaporated milk together With chicken with chicken and who knows where the idea came from right? That one. I don't know. No. Well, you could make up a story and it might be true I'm guessing it might be similar to bread pudding that somebody had bread left over and Added chicken Well, I just saw a recipe. No, no, it was oh gosh. What was it? Something and then they added condensed. Oh, it was corn and bacon like mucket chew But they added condensed milk to it. So I'm gonna try that someday for the family Who knows condensed milk and corn and bacon. So what what we want to do is get the onion Nice and brown and soft. We don't really want to burn it We just want to give it some color and give it some Texture just soften it So we'll let the onion cook on here for a couple of minutes and Just plain vegetable oil you can use any kind of oil you want peanut oil or Olive oil. I don't know what else is out there lard. Yeah Bacon drippings. So once we have the onion mostly browned We're gonna add a little bit of garlic And we're gonna work that into the mix Nice aroma Yeah, you said that would give a good aroma and blowing and it is a good aroma Once you got those two Nice and soft we can add a little bit of the yellow pepper And that is gonna depend again on how hot you want this thing to be right? Yellow pepper paste yellow pepper paste Hot yellow pepper paste and you can actually smell the pepper. It's I Can't hear it. Can anybody out there smell? Oh, you can good You can almost smell how hot it is, right? and That's the bread and on top of that we're gonna add the bread and Work the bread into it now on this once you add the bread we want to water it down with some of the chicken broth and The risk here is that the bread is gonna burn at the bottom of the pan, right? So you want to turn down the heat and you want to constantly move this and the Secret is when you put the bread in It smells like bread, right?  So the bread is already cooked but And I guess if you ask my mom or my grandma, they can probably tell you why the smell goes away I don't know. I just know that I Just know that we work the puree over a Medium heat until the smell goes away and it smells like a new food. Mm-hmm exactly And every once in a while you want to check the level of broth and if you need additional broth because it's drying up You can throw broth in there It's usually better than have it too wet than to have it too dry Sure, because it's going into the chicken anyway. Yeah, and that's a good point The chicken will soak up some of the water once you put it in there In August we'll be at back at Kiwanis Fieldhouse. We'll be doing zucchini and What else well a couple of things I don't know exactly what will be in abundance at the end of August Because that will be the unknown ingredient, but you know by the end of August. We're gonna have zucchini zucchini zucchini We'll make zucchini burgers not zucchini bread. You've all made zucchini bread and zucchini muffins for 40 years We're not going to do that. We'll do other things with zucchini. Maybe we'll fry some we'll see and then I've been saving all my Peelings and garlic extra garlic and old herbs And I'll mix well I'll show you how to make stock in front of you And then it'll be stock and the unknown and zucchini burgers, and I don't know what else Oh, yeah. Oh, yes. Yes. I've got my reputation. It's better taste good So now that the bread is mostly cooked and the smell has gone away I'm gonna add a little bit more broth To thin out the mix and I'm gonna add the turmeric and this is something that you're gonna have to add by eye Depending on how much color you want. This really doesn't have a lot of flavor to it If you did put a lot of the pepper in there the pepper is gonna give the bread flavor So the turmeric is not as necessary But if you didn't have a lot of pepper in there to begin with You might have to add a little bit more and I'm guessing maybe a teaspoon or two Will do the trick When Lee and I had COVID last October Well, while we were waiting for our food first booster We both lost the sense of smell and I would have cut back in a week or two, but I always opened my clothes Oh, I can smell the clothes which I love to smell anyway So now you have a more of a sauce that has Has more of a pureed texture to it because the bread Has softened and now we've added the color. So the white color of the bread went away and now we have a nicer yellow or oh, yes Yes, yes And when you get any color chickeny color and when you get it to this point What we're gonna do is add the shredded chicken and You can add as much chicken as you want depending on what kind of Ratio you want of chicken to sauce and then we're just gonna mix the chicken in And warm it up at this point, right because everything is already cooked oil onion bread and The seasonings have you put in the evaporated milk yet? Not yet. Not yet. Okay No, yeah, that will go on at the end along with the walnuts Well, oh, yes and walnuts walnuts And It is up to you if you want to put the walnuts in whole or if you want to blend them That way some of the crunchiness of the walnuts goes away. Yeah, some people like smoother some people like crunchier, right? I'd put them in whole But that's me And one thing that we didn't add is salt and pepper right you can add those at the very end of the process depending on what kind of Flavor you're looking for Yeah, sometimes you do I don't have any cheese. No, but Wisconsin cheddar or what? Parmesan cheese, okay? Or some other kind of dry cheese. Yeah, right So now we'll just sprinkle some walnuts on it and And I guess I just want to plate this to give everybody a okay an idea of how what it looks like Right of like after we've mixed all the all the ingredients, okay? Hmm sure say the name of that again Andres I see the guy you know He I hear the guy you know. Oh, he is he like pepper is this This is a key. I'm a real exactly yellow pepper. Ah, he Guy you know, mm-hmm. Yeah, you nice hand, right? Yeah, but we're using chicken. We're using chicken, right, right? I'm doing some Peruvian cooking now. I'm putting the sliced onions in the bowl. I'm putting the Cut up tomato in the bowl I'm putting the He's gonna chop the cilantro. I was gonna put it in whole will will mince the cilantro And what are we doing now? It's a small onion tomato salad that we're gonna serve with the pork sandwiches Peruvian pulled pork Peruvian pulled pork. That's it. Do you try it? His wife is Peruvian so he's had I think a gain a lot and he was just saying that when whatever he has it in Lima It's typically served with a few Sides, do you want to mention those? Well, I know it served with rice and potatoes That are he going to the garnishes the garnish eggs Harbour legs Yeah, yeah, we have harbour legs in the back the goal is goes with what with the Chicken the chicken garnish. Okay, and then sometimes there'll be also a piece of lettuce on there, right? Lettuce or some sort of green as a bed Okay Yep Yes, and we do have olives and we have eggs Yeah, they're in a can. Okay, I don't think we open them. Okay So the salad this salad is for the sandwiches It's just a small garnish that we're gonna put on top of the pork before we close up the sandwich Onions tomatoes in a little bit of Mincelantra just to give it some color and some flavor in this we're gonna season with a little bit of salt and Then a little bit of lime juice a fancy schmancy Peruvian pulled pork sandwich And we can probably mix all of that up now Usually I would use my hands, but we're going to be cutting pork. So I'm keeping my gloves fairly dry So does anybody else have any other questions about the chicken? Thank you Are we finished with the line and gate making some room for us? Maybe maybe okay, we're definitely with the one we're finished finished with all that we might need And I guess if anybody is interested you can see I don't know how long we've been cooking But you can you can see the chicken or the fish has started to change color us already So some of the stuff that was very pink and you can see how the thinner pieces half Cooked or cured a little bit faster than the than the other stuff. We're ready for the pork. Yeah, okay I guess I gotta go get my fish back Thank you. Oh Look at that My grandfather who lived to be 102 you've heard me talk about him anytime the one who loves Who loved overripe bananas Also ate a little bit of beef a little bit of chicken, but most of the time it was pork And the fattier the better 102 Born in 1889 so this is the pork This is Pork tenderloin you can use shoulder rolls you can use but rose you can use pretty much any part of the pork You want by the way, but roast has nothing to do with the back of the pig It's the part up here that butts up against the shoulder roast That's good to know So we did with the pork typically the fattier the better because we want to release the grease Right, we want to release that lard that we're gonna use later to fry this on I'm not gonna do the whole cooking demonstration here because it takes about two hours to do So what we would do the night before we would take the pork that is being thawed And I this look bigger before we cook them. Well, no kidding But we season them again with a Peruvian pepper called panka pepper, right? It's very mild is similar to paprika. It doesn't have a lot of heat to it It has some flavor to it. So we're gonna cover the pork with it with the paprika, which is a red pepper We're also gonna cover it with minced garlic And we're gonna cover it with a little bit of cumin and we're just gonna smear it on the outside if in this case this pork had a fatty layer on it, right, which is the The lard or we're gonna cut into it And that's gonna let some of that grease come through and get released and some of the flavors to come out We're gonna let it sit overnight and then the next day. We're gonna put it in a pot with about a cup and a half of just plain water and Lime juice so about half a lime to a lime of lime juice in there The lime is gonna make it a little bit more crunchy And we're gonna let it cook on low heat You're gonna want to simmer it So you're gonna cook it for about 30 minutes per side So 30 minutes turn it 30 minutes if you see that you're running out of water you're gonna add more water to it This boiling process is really gonna cook the meat through and soften it right because we don't want the tough meat of the pork But then at the same time what you're trying to do is to Get the juices the fat from the pork to start flowing out So if the water evaporates you're gonna have the lard come out of the pork And you're gonna be out of water and now you're gonna have a small amount of lard in the pot So it's something that you have to keep close attention to You know set the timer 30 minutes then flip it around if you need more water and more water In about an hour into it You're gonna want to open the pot turn the heat high to get the rest of the water to evaporate And then just keep the lard in the pot And then you're gonna start hearing the typical frying sound right like it's no longer a boiling But it's more like a deep fryer type sound to it and at that point all you have to do is Turn it a few times and try to get the skin to get some color and get some texture to it and then you're done so Usually if you go to a restaurant, you'll get a couple of pieces of pork Maybe on the bone maybe not if you do a shoulder roast You'll have a bone and then it'll be served with either potatoes or corn or rice or some other type of Side Today we're gonna go do sandwiches. I like them And to do that we're gonna serve these on a bone with a little bit of the onion salad with tomatoes and In the green sauce Yeah, so while Emily is getting the green sauce we can start cutting this up So we'll put the the slices down because that's the fatty part Okay, and then We can just I mean and this should fall apart right and I suppose I've never tried making pulled pork out of this Which I should try to That that business of cooking it in water and then it renders its own fat That's sort of like doing browned potatoes in a large skillet with fat and Water and then you cook it until the water evaporates the by that time the potatoes are done And then they brown in that left over butter that's been in there all the time And it works perfectly most of the time and Then the other times it sticks fiercely Yeah And this is why you have to be careful with this right because some some cuts of pork will not have enough fat To do the frying trick. Yeah, the shoulder and the butt are nice and fatty What I like to do is after I'm done doing this and I'll do it again today I'll strain the lard and save it just throw it in the freezer So the next time I need to do one of these I'll scoop a couple of scoops of the lard from the freezer and put them in the pot when the water has evaporated Otherwise you can buy Lard right you can get a kind of what is a crystal or well that That's shortening, but lard will be more L or Hormel any other brands besides more L and Hormel Those are the only two I can think of armor That's right armor. Yep and Mother always said one of them was better for pie crust than the other but of course I don't know which one it was do you use that for pie crust not shortening some I yeah I do okay Because when I make empanadas I usually use shortening, but maybe lard it would be better sure sure. I would think so Look at these lovely chunks of yumminess.  Yeah No, so there should be some that are really brown and really crunchy. Oh, yes They're usually the cook gets those but I didn't get any today Okay, so while we keep Slicing how about Vicki or Emily? Can you set up the buffet because this is That is for the sandwiches. Okay. I have to start at that end start with the ceviche and then the chicky and then the buns Okay Yeah, so this is more of a that we're not gonna That's the one for the sous chef which is me today. Yeah. Oh You're doing a great job with those Well, let's Emily can you put the buns maybe on top of the stove so that they get the bun before they get to the sandwich and Maybe the ceviche down there and then the chicken But well just use your use your imagination and as you go through you're gonna see two bowls of green sauce The one closest to me. It's a little bit more spicy not very much Like a medium. Thank you. And So that sauce is a mix of cilantro parsley green onions oil yellow pepper And a little bit of mayo all blended together and also a little bit of milk to thin it out, but it's it's got a really nice Taste that is gonna really complement the The pork and I guess it's unlike anything else. You've probably tried before right? It's got its own flavor to it


Staphylococcus aureus, S aureus, is a challenging bacterial pathogen that causes a range of diseases, including deep or organ-space surgical site infections and life-threatening bacteremia. Despite current infection control measures, the burden of disease remains high. A four-antigen S aureus vaccine, SA4-AG, candidate is being evaluated in a phase 2B3 efficacy study in patients undergoing elective spinal fusion surgery. SA4-AG has been shown to be generally safe and well tolerated, and to induce high levels of bactericidal antibodies in healthy adults. The results of the Strive efficacy study are likely generalizable to a broad elective orthopedic surgery population due to the common pathophysiology of invasive S aureus disease and patient and procedural risk factors for developing post-operative S aureus surgical site infections. This article was authored by a Gertman, Ibagaya, N-Mohammed, and others.


Okay, everybody. We're back. We're live in Santa Clara, California strata Day one. This is our second year at the strata conference and I'm here with Alex Williams and Jeff Kelly Alex of course is the editor-in-chief of services angle and Jeff is wiki bonds Lead big data analyst gentlemen. Welcome back. Thanks for hanging with us here. It's It's nine o'clock East Coast time. So thank you for hanging with us as well and We've covered a little bit of ground today We did a lot of sort of setting up for the the day we talked about the the marketplace and Alex We just had a really interesting guest on Ron former quad cast now would think big analytics talking about some of the important services aspects of Big data and Jeff in your report services was I think you know 40 45 percent of the pie. Yeah, so Services always the biggest business, isn't it? It's gonna play a huge role in big data because as we all know there's a huge talent shortage Both that kind of the Hadoop the engineering level as well as data science So service is gonna play a huge role both on a technical Technical areas as well as I'm actually doing some of the analytics talk a little bit about that in what Shape and form are you and Alex you seeing services and how is it different from the kind of traditional break-fix stuff? well you know, I was just out talking to some folks from impetus and they're a consulting group and they focus on big data and doing analytics and they've been doing it for a few years and What's interesting is like they have this big, you know, they O'Reilly actually has You know a something you can put on your lanyard that says we're hiring and every one of them had it Oh, I need one of those. Yeah, and and I want I walked out. I say you don't want to hire me but listen I got some questions for you and What what they're saying is that there is just just a huge huge shortage and I think what it goes back to what we were hearing Said earlier with some of the guests that education is just critical and There's a there's a lacking ecosystem out there And those two things combined make it Very difficult for companies to adopt big data really at all and so we're you know It's may sound cliche, but yes, we are right at the beginning here Yeah, I mean I would agree with that. I think I mean one of the one of the big one of the things holding big data back is a lack of understanding just confusion among traditional enterprise what is big data? How is it going to fit into my? current Data infrastructure because you know these big companies have invested millions and millions of dollars in data warehousing bi technology And they don't want to just throw that out So you know there's a lot of confusion about how big data is going to fit into your current landscape You know what use cases are big or big data use cases what use cases are maybe more traditional data warehousing use cases so yeah, I mean there's just a Lack of education around big data and that that needs to needs to education needs to happen I think there's a there's a very much of a large cultural shift though that will Make this much more accessible and I think you see it in such things as and May seem like Abstract but like the maker movement and the maker movement is all about bringing the software into like Tables and chairs and and you know in vehicles and doing all these different kinds of things They really require very sophisticated technologies But also using lots and lots of data and so really this culture of Doing which is really about the web this culture of doing and of creating things That's going to really going to be the imbattis it and and it'll have to grow organically So we have a number of guests tomorrow. We're going to kick it off with Mike Olson of cloud era. He's the CEO Mike Olson was one of the first people that I interviewed with my co-host John Furrier down at Hadoop world in 2000 and when was that 2010 and Mike gave me an education on Hadoop and I said wow after being at Hadoop world This is something that we really have to invest in at Wikibon That's really how we brought on Jeff Kelly and and you know, it's exploded since then with Wikibon and silicon angle So Mike's coming on and we're going to have Amy O'Connor of Nokia who was on at Hadoop world in Last fall in New York City a practitioner of Hadoop and She's coming on Chris Moody from Gnip Gnip sells data like the Twitter firehose So excited about having those guys on some of the other folks Data stacks is coming on Sandy Steyer of 1010 data Rob Metcalf not the Bob Metcalf a different Bob Metcalf of digital reasoning Pentaho is going to be on talent Shmarzo's coming back for another appearance Jack Norris VP of marketing at map bar We got some really interesting discussions. We've had with him and excited to have him on Talking about that whole ecosystem development at what's happening there revolution analytics Dave rich who's the CEO is coming on James Phillips who's been on before couch base. They're doing some interesting things and and a number of other guests VCs will be on some some drive-bys no doubt people that we we see we've got some room in the schedule And then spotlights Jeff we got some couple of spotlights coming up this week talk about those a little bit Right well one you mentioned cladera Is a spotlight sponsor the cube so we're gonna we're gonna speaking with Mike as we mentioned as you mentioned We're gonna talk a little bit about some of the news that cladera has made in the last couple of days But it's gonna move into kind of gonna explore the the real-world use cases for Hadoop at this point They're really being you how they're really being used so spotlights are topical and as Jeff said they're sponsored So we're gonna talk about real-world use cases. What's what's the other spotlight? Who's sponsoring it? What's the other spotlight we're also talking to a digital reasoning now They do some very interesting work their product their platform called synthesis essentially Automates the process of understanding human communication whether it be emails texts whatever it may be they work with a lot of three letter agencies Intelligence agencies with the government which I can't tell you what they are I'd have to kill you But they do some really interesting stuff and they're looking they're starting to expand into the enterprise So I think we're gonna talk a little bit about how that technology can be applied To more to two enterprise use cases beyond just kind of what we're here seeing in the intelligence community Hey, John Furrier was talking earlier today. He said that you know, we had talked about 2010 was the year of what is Hadoop? 2011 is you know big data is sort of the new economy big data monetization is sort of the future of our business and John said that 2012 is good about two things platform maturity and application innovation and and so I Would like to hear you guys hear your opinion of that. What what does that mean? So so I think he's right, but but let's peel the onion skin on that a little bit Let's start with with platform Maturity, what are you guys thinking about platform maturity? Where are we at with platform maturity and and and why is 2012 gonna be special if Furrier's prediction is correct Platform maturity in terms of platform as a service, you know providers we're seeing a you know just a blossoming of that of that part of the market and I think so far. We're seeing leaders like cloud foundry really taking taking a charge Heroku is still an established player there and You know, you have companies like engine yard Plus you have others like Tier tier 3 and these companies I think really do represent the feet Represent the future though their their revenues are really quite small, but what they're doing essentially is there They're abstracting a lot of the complexity that comes with developing applications and so there's that real connection there and when those But the problem is and I think it's still when we see a lot is this this misunderstanding about how platforms actually relate to the way that you would you know in in in more traditional senses, you know build your own stack and so There's this issue really what it comes down to is latency and latency is is really becoming the big issue because You may think, you know, oh, yeah As you know as the platform for oh, yeah It's so much easier to you know to use our you know use our platform But if it's if there's any kind of latency people relating that to like Any website when it's slow, you know, so they think it's not really working that well and they don't really see the contextual difference between provisioning their own stack and seeing another website how per compares to the platform so That's gonna be I think there's gonna be some need to really mature that platform technology So the application development doesn't seem like a laborious process So Jeff in your big data predictions post last year you said that applications We're gonna be where all the action is application innovation Doesn't the platform have to mature before that can happen or can they happen in parallel? Well, I think they can happen in parallel You know, I think Hadoop is a mature enough Platform at this point that you are you're already seeing a lot of big data startup big data application startups start at the market developing Applications that leverage all this unstructured data that we're seeing proliferate on the web and mobile devices sensors, etc you know in terms of Bringing Hadoop into a more traditional enterprise environment. I think that's that's one area where this this year is very important We're we're gonna see a lot of proof of concept Hadoop deployments Go into production this year or try to go into production this year So dealing with all the scale scalability issues the security issues user access things like that uptime requirements That is where Hadoop needs to prove itself and I think that's where we're gonna see this year It's kind of kind of gonna be a make-or-break in a lot of ways for Hadoop as a platform in an enterprise environment as a stable and reliable platform Okay, and then of course the other thing is that John mentioned is that 2013 would be the year of monetization I don't know if he said it that way, but the year of making money Now Jeff if you look at your s-curve in you know your ogive curve ogive curve in the In the wiki bond report on big data.  I think it could take a little bit longer, but So here's your curve right the so based on this the steep part of the s really comes in a little later 2014 2015 so Furrier's calling it 2013. I guess in beyond What's your take on that? You know I think You know we are gonna see a significant uptick and as you as you can see in our our report But I think it is gonna take a little bit longer in terms of really monetizing Big data because as I said, this is the year where we're really so gonna start to see Use cases or I should say deployments that are at scale and production and and that is where we need to prove ourselves once that is proven and we get to a point where Hadoop is not a unknown when it comes to Enterprise readiness then we're gonna see I believe a pretty steep steep climb as you see there in our in our report in terms of vendors actually Making a significant amount of money on this technology. The other thing of course is the you know the application Development space. I mean, there's just so many opportunities One of the you know the most exciting thing to me about this market is so many opportunities I mean sky's the limit in terms of what you can do with this data You know not all these big data applications startups are gonna are gonna succeed and certainly Many of them won't but some will and there's gonna be some really interesting applications coming out over the next couple years As those start to mature You're really gonna start to see them The ones that do kind of succeed the one that find really impactful business problems they can solve You're gonna see them making some significant money in this market. So Alex you wrote a post her guess earlier today So that's some of the demographics and the stats of people traveling to the event here at strata You said developers travel an average of two thousand three hundred forty six miles to attend the conference That's something I was surprised. I'm too. I think it shows kind of the Worldwide community that you have here. I think you probably have people coming from all corners of the world here 83% of the attendees are male. It's not so unusual, but it's typical tech conference 33% of the attendees said the organization stores an average of one terabyte of data per day Produced each. It doesn't say day. Yeah to update that each day. Yeah each terabyte of data per day Yeah, yeah now. That's more like it. Yeah, cuz we produce how much data we produce today mark Hey mark Hopkins, how much data we produce today and an average day of the cube a Quarter terabyte a day and that's today Today was like half day half day of broadcasting is a quarter of a terabyte so full day half terabyte right and That's pretty good. That's pretty significant Yeah So this is yeah, this is the data conference, you know, you can tell by those numbers Yeah, good. What else are you guys working on over at services angle and DevOps angle at services angle Working on a few stories and doing more profiles on the storage players. I think the storage is the is an interesting You know, it's just an interesting story overall There's a lot of interesting companies out there and it relates so much to the the competitive landscape Writing about Hadoop and big data writing more writing a longer post on Hadoop services We interviewed the emcee a data scientist and and we're starting looking to look for some customers here in particular Plus we're also, you know, continue to work on, you know, those stories that are about, you know, that what's happening With these leading edge cloud services providers or even these service providers that offer or software providers offer for instance No SQL, you know databases and because that's really Interesting in terms of what's really catching on and seems like no SQL is really catching on do you think the The data lifecycle is changing as a result of all this this big data, you know Kind of used to be okay I I use it and and you know, maybe I Maybe I use it over, you know, every every month or every quarter and I use the data But but and then I archive it or you know back it up archive it. Is that data cycle? Changing because of the ability to ingest all this information into something like Hadoop or is there a similar paradigm? I'll just say something quickly than Jeff can add it I mean definitely the tearing of data is really happening We're really seeing that and with that tearing of data. We're seeing different, you know methods for networking Network virtualization, you know, so I definitely think that data is much more present in the daily conversation and we're really figuring out ways for instance to use technologies like Hadoop To be a backup, you know environment for for data itself So it it just I think it really is it kind of a consuming topic for People on a much more frequent basis Yeah, I would agree I mean One of the beauties of Hadoop is it allows you to store pretty much all your data and make it available to access for Historical analysis When it will whenever you want as opposed to kind of archiving your data and it kind of sits there and isn't used anymore So in that sense Absolutely it changes the life cycle and it also changes with the other thing we need to change However, of course as our friend Abby met it from Triseta pointed out to me You know people have this mindset that you know We only have a Limited mindset in terms of what is available for analysis and it's gonna we need to break through and and continue the education To make people understand what to do. Well, you can store everything if you want to theoretically so absolutely it's gonna change The data life cycle, but that has to be coupled with people understanding that change Understanding all the new possibilities And understanding that now, you know, you don't have to sample data You can take all your historical data And run through it and in myriad ways in the words of Bobby meta. It's game-changing man Is he here? He is I haven't spoken to him yet, but he will be here for sure. He's coming on the queue He's he doesn't he doesn't have a definite slight yet, but he is definitely coming on He's committed to come on the queue. He's committed to come on the queue. He's keynoting tomorrow morning So I'm gonna see if I can round him up. I think also talk to him. He says yes, I'll be I'll come on I'll get some time and come on. Oh, yeah, absolutely. All right, so it wouldn't be a big day to come I think there's there's also the opportunity this come this this conference to really find some of these hidden gems these Practitioners out there who are doing some really innovative stuff the people linked in the people who are at Bosho You know these companies that are really very very innovative and their practitioners are living this stuff every day Well Twitter's coming on right? We've got one of the lead engineers at Twitter coming on the Yeah, Nathan Mars, who's the who's the gentleman who actually authored storm, so that'll be Okay, that's good their real-time Analytics ended so that'll be very interesting. Yeah, I agree I mean that one of the things about the market a young market like this is those early adopters that are really pushing the envelope are By almost by definition doing innovative new things So anytime you can you can talk to some people that are actually doing doing this using this technology in the real World as such an early part early Area in terms of adoption You're gonna see some really interesting use cases some innovative approaches


I'm on this song, it's for you. Welcome back to the 18th Channel to Boy Mr Ghana Baby and I'm back again with another video. And to this video, I mean, from the title, you know that it's about to go down. It's about to surprise. I mean, this is actually not a surprise, but actually here to break a record in my family generation. I mean, we've never used a washing machine before. I mean, this huge house in here does not have a washing machine because we believe in manpower. But my mom is growing and I feel like it's time she washed her stouts with water, washing machine. But anyway, first of all, I want to wish all mothers watching me right now. I mean, mothers of this world and happy Mother's Day. What will we do without mothers?  You know what? Let's do this together. I mean, anyone out there was born by a woman, which means that you have a mother, right? Whether dead or alive. So let's do this together.  For me, I'm just gonna do it by example by saying that Hello Margaret's Answer currently here for. I just want to say that I love you so much, mom. And thanks for the love and support. I mean, my mom has been my number one fan and I just want to say I love you so much, mom.  And I promise that from today onward, I'm not gonna wear this slippers again.  So, I mean, I promise today, after this video, no more slippers. Hey, but wait, before I forget, I think the world's most famous Paul Barris have a message for all mothers in the world. Hello, hello, mothers. Happy Mother's Day to you, all mothers in the world. Please, Nanota Frigia, Paul Barris, you know, we're waiting service. You know, me and my crew want to know. I'm saying hi, happy Mother's Day to everybody. Enjoy to the fullest. I don't enjoy, I don't enjoy too much. Otherwise, we are gonna dance with you. My mothers, please give me the chance to also celebrate potential mothers. I mean, today is actually a special day to someone special, who is so special to me.  Happy birthday, enjoy the rest of your day. I mean, it's so beautiful, just like your soul. Have a wonderful day, and I'm gonna see you very soon. All right, so she's out there. This is the washing machine, and yeah, I'm gonna carry it up there, and then, I don't know, I don't really expect any reaction from her. Just wanna break the family record. I hear from her, yeah. A few moments later. Happy Mother's Day to you, all mothers in the world. I don't know what to say. Happy Mother's Day to you, all mothers in the world. Happy Mother's Day to you, all mothers in the world. Happy Mother's Day. Why? Happy Mother's Day. You're with her, yeah? Grandma's village, this is where my father was born. I mean, he built a house in here for the mum, but I don't know why the mum is still not using the house. But if my dad was alive, he would have done this, but since he's no more, I gotta do it, you know? So I just wanna tell each and everyone out there, mothers are so precious, mothers are very important. I mean, celebrate them today. Don't wait for them to leave us before you start celebrating there. I mean, I love my mum so much, knowing that she's the only one that I have right now. I mean, every day, it's a Mother's Day to me. Yeah. I mean, come follow me, let's go see my grandma for the first time.


ion on this issue we have Alderman Hannah would you like to I would just like to call the question so we can second we have a motion and a second on calling the question the question being the resolution do we have wait a second we have a motion to second on calling the question all in favor say aye aye opposed motion carries we have a vote on resolution number five dash or item number five fat dash 56 resolution 27 10 11 roll call please one of them in no born no folk no Bowers no Decker aye Yasha aye him aye Hannah aye Heidemann no Kev no Hilsen aye Montemay or aye Ratky no Rimflash aye Renderwheel aye Versi no 88 it's a tie vote as I've stated before the chair for all reasons I've stated votes aye motion carries moving on five dash 60 resolution number 28 dash 10 11 dash 11 by Alder persons Gisha Boren Radke Hammond and Bulk establishing the community budget goals and objectives and specific guidelines for the 2011 city of Sheboygan budget President Kisha thank you your honor this is kind of anti-climactic after the last one but it's it's pretty important we begin put together a a budget resolution that contains goals and objectives which last year I was very heartened to see that all but one of those goals and objectives were met and then we put together the second part of it as specific guidelines so we wanted to give some will of the council regarding goals and objectives and an overall theme and then specific budget guidelines I'll just point out the specific guidelines that the city of Sheboygan budget be produced via zero based budgeting a lot of people don't know what that is it is basically starting with zero and building your departments that's it in the purest sense it makes you examine every single little thing you do rather than starting with your your clay that's already been set as the year before this makes you create it from the bottom up the capital improvement program to begin to again be at the two million dollar level as we did last year to again put back into our capital improvements into our community and that would be for bonding purposes and maybe the one that always everybody wants to know about what what do you suggest we do on taxes well this specific document calls for a zero levy increase for 2011 levy is the most important thing rate means nothing it's what you spend year over year and in this case this budget resolution is calling for the city of shaboygon not spending a nickel more than it spent in 2011 not a nickel living with our means like families have to do all across the city right now that will put downward pressure on our employees paying benefit structure it should send a signal as alderman balk has talked about in the past as the previous budget resolution that i authored last year with the help of the finance committee moving us down to now sub 80 percent of pay and benefits as part of our budget this resolution based on the the flatness of the spending we'll we'll force that to happen even further and uh i move that the resolution be put upon its passage second we have a motion in a second under discussion alderman born thank you may ryan uh alderman gish i have a question would it be appropriate to add another goal tonight or is that sure you can okay i would i would make a motion that by november 1st a plan be presented to the common council on the future of the fire department and the ambulance service for the citizens of shavuagon second you just gave me two months off of my i would agree with that myself just you're on just so everybody understood i don't think this is a significant change but the rest of the resolution kind of talks about the 2011 budget i don't think that really messes it up putting that in there at all so i would i would welcome that that i will second we have a motion in a second on an amendment to put in there that the long-term fire department plan be presented to the council by november 1st right 2010 under discussion alderperson montemire thank you mr. mayor as wonderful as that sounds that does stop us from having 60 days of planning and i think we need all of the time we can get if we could bring it forth november 1st if it's ready yes but to force us to bring it forward with 60 days less planning i won't vote yes on that if i could clarify president kisha if i'm not mistaken alderman borne you suggested it under goals and objectives right so it is not a so it would be it would be a goal i would agree if it was in the second half of the document but i believe this gives us enough wiggle room as a goal as i said last year very heartened that those those goals and objectives which didn't have to be acted upon were virtually all acted upon thank you president kisha and alderperson montemire one more time thank you again and we did have goals and objectives last year that we were hoping to be nudged forward well they were a lot more than nudged forward and if i thought these goals and objectives going to be nudged forward i would agree with that but i think they again will be slammed forward thank you thank you all to person montemire and i might add that i hope they are and thank you president kisha and alderman rackey would you like to speak on this issue yeah i just like the proposal of amendment to number five on the second page replace them we need to act on the first amendment first oh i'm sorry so we're still under discussion on on the first amendment anybody would like and anybody that would like to speak on the first amendment if there is none all in favor say aye aye opposed aye person montemire opposed motion carries on the amendment alderman rackey thank you mayor i would just like to offer an amendment to under number five replace the words fraud hotline with community eyes and ears hotline the word fraud is a very negative connotation and i'd also like to thank alderman kisha for the suggestion community eyes and ears hotline C community eyes and ears C oh okay that's another acronym acronym dot com acronym dot com there you go number five second page that serious consideration be given to establishing a fraud hotline fraud will be replaced by the words community eyes and ears also known as C hotline the C hotline did we have a second on that amendment second we have a second we have a second on a do we need a five on that C nope maybe a third okay so we have a new acronym that friendly amendment for another acronym under discussion on the new acronym all in favor say I I opposed congratulations we have another acronym okay now getting back to the amended resolution your honor I move that the resolution the amendment as the resolution as amended be put upon its pass second we have a motion and a second to put the resolution as amended upon its passage under discussion if there is no roll call please borne aye bauke aye Bowers aye Decker aye Gisha aye Hammond aye Hanna aye Heidemann aye Kev aye Hiddleston aye Montemayor aye Bradkey aye Vin Flesch aye Vanderweal aye Bursey aye Longamon aye 16 ayes motion carries ah 5-75 general ordinance number 3-10-11 by Alderpersons Hanna, Gisha and Vanderweal amending sections of the code so as to change the class grade for the plumbing slash environmental inspector in the city development department table of organization Alderpersons Hanna I would move that the general ordinance be put upon its passage second we have a motion and a second under discussion if there is no roll call please borne aye Bowers aye Decker aye Gisha aye Hammond aye Hanna aye Heidemann aye Pat aye Hiddleston aye Montemayor aye Bradkey aye Rin Flesch aye Vanderweal aye Bursey aye Longamon aye 16 ayes I didn't vote I didn't vote on that aye oh I'm sorry Jim my second one I did that too it's the thunder motion carries other matters authorized by law 6-69 will be referred to public protection and safety 6-70 also to public protection and safety and 6-71 to public protection and safety you all have those documents other matters authorized by the law attorney McLean thank you your honor 6-72 is an arrow by the city clerk submitting a communication from Richard Kummer and Laura Lawrence of route 43 Harley-Davidson making various requests from the city to hold the Rohr and Chabuigan short motorcycle rally that will be referred to finance and public works 6-73 is communication from older person Bowers on behalf of the Southpere Market Association requesting permission to establish a once or twice a week outdoor market to be held on Southpere that will go to the RDA 6-74 is an arrow by the city clerk submitting a notice of sheriff's sale in the foreclosure matter of U.S. Bank National Association ours is John Eisner at all we'll go to risk management 675 is an arrow by the purchasing agent submitting a report related to the provision and installation of an energy saving building control system for the municipal service building utilizing direct digital control technology in accordance with city's foreign request for proposal number 1873-10 will be referred to public works 6-73 is a resolution authorizing the purchasing agent entering the contract for the installation of energy efficient digital building control system for the municipal service 6-76 I believe that was we'll go to public works 677 is an arrow by the city clerk submitting a communication from Susie Patterson of Allen Owes Steinhaus and the Tavern making various requests of the city for their 2010 celebration of German heritage October fest 2010 will be referred to public works 678 is communication from Marilyn Cooley requesting the truck route be changed in the area of the Regency House as there is a noise issue this area used to be an industrial area but is now residential we'll go to PPNS 679 is an arrow by the city clerk submitting various license applications for the period ending June 30, 2011 law and licensing 6-80 is a communication from Patrick Drainan executive director of Sheboygan County Economic Development Corporation wanting to initiate the process for a project plan amendment and border amendment for tax increment district number six to improve the economic well-being and long-term prosperity of Sheboygan County will be referred to city planning do we have a motion to adjourn we do second all in favor say aye aye opposed motion carries thank you


So this is advanced JavaScript unit testing, or advanced advanced JavaScript unit testing if you read the printout. We had to change the name, just kidding. I'm Matt Grill. I'm a JavaScript engineer at Aquia. I work on REST, JavaScript, I work at Waterwheel. You can find me on Twitter, always working, I am, sorry. Or you can send me an email at nattoachgrillataquia.com if you want to get anything more about anything that you hear today. I love testing. I have been writing tests for in JavaScript for maybe a year now. Before that I was like, screw that, don't write tests, it's not worth it. And now I love it, and I can't go back and I can't imagine doing it any other way. So I also love emoji, and you'll see a ton of emoji throughout this presentation. So those are two of my favorites. So we're going to talk about unit tests today, brief introduction, what they are, they're not functional tests or integration tests. We're going to talk about AVA, and if you're not familiar with anything in the JavaScript world, everything has these really funny names. We just pick random words, and that's the name of your project. We're going to talk about generating code coverage with NYC slash Istanbul. Again, weird names, I'm sorry. We're going to talk about mocking functions. If you have a REST API that you don't want to keep online all the time, or you have this huge stub file that does all kinds of crazy things, we'll just mock a little part of it. We're going to talk about nightmare, not those kind of nightmares. I can't help you. We're going to talk about a browser automation library that automates with Electron and is way better than Phantom. And we're going to talk about hooking all this stuff up with Travis.  So before we get started, everybody always asks me why write tests, why do this? And, you know, tests allow you to make big changes to your code base quickly or relatively quickly, right? You can make a change, run your tests, see what broke, and keep moving after that, or adjust your test or adjust your code if you change something you didn't expect. Tests allow you to understand the design of the code you're working on. If you show up to a big complicated project and you don't know what's going on, and the previous developer didn't write any documentation, but he wrote tests, you can look at these tests and get an idea of what, you know, what's going on. People say you write tests, this is like writing twice as much code. Sure, it's additional code, it's additional work you have to do to make everything you do work, right? But test code is usually trivial, it can be trivial if done well, and it doesn't add that much overhead. And I hope that by the end of this you'll see that this is true. Really it's something you're going to get when, you know, when the end, after you've been writing tests for a while, you realize that you shouldn't go back the other way. And tests, in reality, provide documentation, they provide you a how-to guide for your code. So just quick introduction, JavaScript unit tests. Functional tests are, you know, code that describes how to use interacts, these are tests that happen in the browser, stuff we do in triple core right now where, you know, we simulate a browser environment and click around and catch that result and make sure that the stuff we're doing works.  This allows you to very precisely target what you're testing. So AVA, this is a test runner and an assertion library. And if you're familiar with like Mocha or Chai or any of those other JavaScript-based test pieces, AVA is like that, but from the future. It is literally the best. So, you know, JavaScript is single threaded in most instances, right? There's one thing, one event loop, one thing that happens. But one of the neat things you can do with JavaScript here is execute IO in parallel, right? If you have a bunch of tests, we can spawn child processes and run all your tests in those things, and that's what AVA does. If you have a ton of tests, like many thousands of tests spread across many files, AVA takes all those things and splits them up and allows you to run all of your tests in parallel. Yeah, AVA takes advantage of this, right? This allows you to run, you know, IO heavy tasks if you need to, like, do a bunch of disk or database or network access on your tests. You can do all that and not slow down everything.  So that's pretty amazing, right?  Yeah, this is great. I think this is, like, the biggest advantage for using AVA. And whenever, if you've used another assertion library, another test library, you know, people, right, tests are running parallel. Each one of these files is a separate process. There's no shared state. You don't get leaky tests. You don't get, like, weird. Like, you set some variables, set some state piece, and you run another test and it affects that and throws it off and you get, you know, a false pass. That's not something that's going to happen here. If you want to live even further in the future, AVA sports async await functions, I'm not really going to get into that and those things, but you need to use Babel and all those things to make those work. Most people won't. So let's take a look at some pretty sweet examples. So, here, we just want to test to see if this unicorn is, in fact, a unicorn, right? And if you're not familiar with this syntax, right, don't worry, it's fine. It's ES6. It'll be coming eventually. But, essentially, AVA tests have two parts and only one of them is really required and that's the actual test body. Right here, what we're doing is essentially just returning a function that is a promise that resolves with the value unicorn. And then we check to see is you equal to the unicorn, right? This is like a very sort of contrived example to test this, but AVA is very simple. You don't have to do a whole bunch of setup to start writing your tests. You just have to require it and keep moving. Yep, testing the coins. Do they exist? I don't know. When you run this, there you go. We just have this GIF on repeat. It's pretty amazing. Essentially, each test has a pass or a fail state and when you run these, you can continue to execute your tests if some of them fail.  Let's check to see if two unicorns exist and do two unicorns equal one unicorn. I guess you can probably guess the answer is probably no. So, there you go. Nice stack message and you can see assertion error two unicorns not equal one. AVA prints a very concise error message for what's happening, what failed, and where it failed. This gives you an easy target to look at to see where something is gonna fail and then what you can do to fix it. I love these GIFs. I love not having to do live coding demos. This is fantastic. AVA gives you a really interesting set of tools. This is before and after. Every time you run a test, you might wanna set up a state. You might want to supply some base data. That's a function in AVA that's called every single time before each test is run. If you need to require something or any kind of state that needs to be managed, this happens before and after happens after everything else is run, after your test is done, after it's cleaned up, whether or not it's failed or not, AVA will clean these pieces up for you and this is gonna be incredibly useful so you don't get sort of leaky shared state. Again, in the demo, we talked about promises. If you're in sort of a callback state, you can't use promises for some piece, a callback style API, you can use callback mode which allows you to just wait for a callback. If you have an API that goes out and does something and then returns a piece, you can test those as well. Test this heart emoji again. This is basically the same example from the first set except instead of returning that promise, we're actually gonna wait for that promise to resolve and test to see there, right? Same exact style. Same set of results, same environment. There's no... Callback mode doesn't really change anything to the end user. If you have to write tests, you can write mixed callback and non-callback tests like our unicorns. The one thing to be aware of here is that callback mode has to always end with test.end. If you don't, your test will hang and it will hang infinitely. So yep, you have to use t.end.  So, ABA has plenty of methods. It has plenty of things to check. You can check for false or false, which they're not the same. You can check to see if things are regexes or not regexes. This is really useful if you're gonna test a wide variety, a wide gamut of things in JavaScript. You can force tests to pass with test.pass even if you know that it failed. Please don't do that. You can check to see if a test is gonna throw an error. One of the main things that you may have is if you're gonna create an object or create a new class and you wanna see if this is gonna throw an error if you don't pass the correct thing, t.throws will trap that and give you what you want. So, that's great. Testing is really easy with ABA. You can do all kinds of stuff. You have a big API, a big external dependency on another service, another library, another sort of node module or another piece of JavaScript, right? And you wanna subvert it. Basically, what requires subvert allows you to replace a very narrow piece of functionality in any part of your stack with something else, sort of a mock, a stub that can do what you want to do. You can change the behavior of something. Requires subvert is incredibly simple to use. It just takes one parameter when you start and that's a special key in Node that just tells you where you are. Stir name. This helps require subvert know where all of your modules are, knows your path. So, let's come up with a really easy example here. This is request.js. And we're going to have one tiny method that gets Google.com slash foo. And this doesn't exist, right? I don't think it does. So, let's test to see if this works, right? Here, we're gonna require lib request and we're gonna call request.git and check to see that the status is 200 and the value is the little lightning bolt emoji, right? As you can expect, it didn't work and we printed that nice error stack trace, right? Google slash foo doesn't exist. So, it's bad, right? We need to make sure that, you know, if your API is down, if you want to pretend something else exists, you need to subvert that piece. So, here we are. This is an example of using require subvert and if you remember, in our original example, we require axios, this is just a HTTP client. Great. What we're gonna do is we're subvert axios, right? And is anybody familiar with how, like, module dependencies happened in Node.js at all? Cool, some people. So, basically, what we're gonna do here, and require subvert allows you to do this, is to subvert any small slice of a module. You could, what we're doing here is require request, which requires axios, but we're gonna subvert axios. So, here we're not going to subvert just request, because then you're not actually testing the functionality you have. Require subvert can mock and subvert any piece of your dependency tree all the way down to the smallest piece, even something you didn't even write that's in, you know, ten modules deep and sort of... But we'll see what happens here. This should work, right? The status is 200 and the data is this amazing lighting bold emoji. Here's the thing, that's not gonna work. In require cache, you need to tell, require subvert to replace axios before you require the thing that's going to require it. So in this instance, lib request has to come after axios, right? If you have a whole bunch of files and you need to subvert them, this has to happen in this order. This is kind of a little bit of a pain point for doing this. So, essentially, this subversion, because we know how axios works and we know what the call signature looks like, we can essentially just return a promise which does what it's supposed to do. And you can see, there you go. And then this isn't, again, this is not a callback style API, this is just a promise based one. And you can see, there we go, we're still running these tests, they all work. And now we know that Google.com slash foo returns a lighting bold emoji. So let's take a look at the next piece of this puzzle, right? And that is getting coverage report, right? If you don't have coverage, like insight into how much of your code is tested, how much you need to do, how much is left to do, what is available for you to write tests for, it's going to be really hard. You might write duplicate tests, you might do too much work in one area, not enough in the other. That's where NYC comes in. NYC is all about instrumenting your code. It's about providing feedback on what you've done so far. It's about providing feedback on where you need to focus your efforts on writing tests. Istanbul, which is what NYC is based around, is here to help you understand what you've already done. It's a ES6-based line counter, essentially. It looks at what you've done on each line of code and returns a count for how far you need to go. How many times does this run? Has this been run?  So it's very easy. Just put NYC in front of AVA in your test-package.json, and there you go. You're set. This is extremely easy to set up. I can't stress this enough. This is really useful to see what you're doing already. So I'll just give a quick example here. You can see here, I wish this would just pause. But this is just a report. You can see that we didn't actually cover all lines in this test originally. There's not full coverage. There's some uncovered lines. You know, this is not very good coverage, right? So NYC and Istanbul also provide a HTML interface. This is code that's generated after each pass. Each piece of coverage exists. This is that request.js. This is a fully covered example, but as you can see, it knows that we required Axios. It knows that we tested this exports and this git. We can see that this happens each time. This is 100% coverage. Good job, Self. But let's say we add something else. We add a post method here, and we don't write any tests for it. All this is basically going to do is show you what parts of this is not covered. This post method is not covered. We don't check to see whether or not we went and got foo.dev. That doesn't exist. Extend this even further. Post data. We don't check to see if post data is an object, and we don't even check this return statement here. Every time you make a change, the statements, branches, functions, and lines covered change. This is a per project. We're going down here, only 75% statements, 50% functions, and 75% lines. Here we're getting even worse, and they go. Each time you can see, each time we required this file, this four times, we require this file in our test four times, we check that if statement three times and all the way down on that return just once. This gives you a really good insight into what your code is doing, what, you know, how you can better test your code. 100% is important. So, next up, we'll talk about Nightmare. I know it's really scary. Nightmare is a high-level browser automation library. It's not a web driver library. This is a JavaScript interface for, like, Chromium and Electron. That's the name. Electron is what Adam's based on if you're familiar with that, but this helps you write tests that exist in the browser. So, let's just take a quick look here. Nightmare is a really super simple API. Every method is just a plain, a simple command, right? There's not a complex syntax. There's not complex callbacks for each piece. You can, you know, do things very simply with Nightmare, and the goal here is to just expose a few simple methods that allow you to interact with a browser library. If you've ever used Phantom, you know, you kind of get into this deeply nested callback environment, and that's sort of unfortunate and unfun. So, basically, just some simple examples. It's go to, refresh, click, type. These are all just methods that Nightmare supports. There are more, but I only put a couple of more up here. Basically, go to a page, refresh the page, click on an item, and, you know, check to see its type, right? These sort of basic English commands allow you to easily interact with the page and, you know, get what you want without having to write really complex examples. So, if you're familiar with Phantom, this might seem a little bit strange coming up, but hopefully not. Nightmare is pretty easy to use. Like we said, go to, we're going to go to the page on triple.org for this session. We're going to go and evaluate, allows you to run JS on the page that you've just requested, right? And so, we're going to go out here and pull the title of the session here, right? We want to see if this actually, if the session title is what I think it is on the page. And that blinks real fast because the Wi-Fi here is amazing, but they go, we load the page and we pull the session title down and it's JavaScript unit testing, not advanced advanced JavaScript unit testing. Is that pretty easy? That makes sense to everybody. So, this is an actual, oh, yep. No, it's not Selenium. It's a, this is a JavaScript API to communicate with the electron, which is the wrapper for Chromium. It's just, so that's a good point. This is just for Chrome testing or Chromium-based tests. It's not going to test IE, it's not going to test Firefox. Hopefully, we can get there at some point. So, that was pretty easy. But, you know, one of the things, one of the problems you might run into is if you have a library that exists on the server and in the browser, right? How do you make sure that those two pieces are the same, right? And you want to test that automatically. So, Nightmare can allow you to do that, right? We can start a local server. We can, if you're familiar with Waterwheel, if you aren't, that's great too. Basically, Waterwheel's library that works in the server and the browser. In the browser environment, we want to test to make sure that it behaves the same way when we create a new instance of it, right? So, here we're going to use AVA and Nightmare to test to make sure that that happens. And so, we're going to create a new instance of Waterwheel in this server page, and then we're going to check to see if the tables that get returned are the same. And then we're going to end because this is a callback style test. So, start the demo server down there in the bottom tab and go ahead and run this test. And you can see this past. That page is pulled. We start a demo server automatically to host this sort of test page content and then run this test. And this test exists outside of those other ones. There you go. It's very easy to get really complex examples. And once we're done here in the slides, I can show you some more examples. So, Daydream is sort of a browser tool that allows you to browse pages and record nightmare actions and events. So, kind of like, I think there's one for Selenium or something that allows you to record actions as you go. Daydream has that same functionality. So, you can click around your complex website and complex interactions and get those pieces and then paste them in the nightmare and just go forth. This is pretty cool. I use that actually to make this demo. So, here we go. This is all the tests altogether. This shows everything we did up to this point. You can see we got to the point of 100% test coverage. We spawned the server in the background. We went to the demo page and we have 100% test coverage across the board. So, all of this is great if you can run this on your local machine, but what if you want to get to the point where you want to run this automatically? You want to run this on every PR, every branch, right? Travis, CircleCI, any of those tools, they can all basically do exactly the same thing. So, Travis runs JS tests automatically. It'll start NPM tests for you automatically. You don't have to set up anything special. You can just run this by default, right? But the one thing that Travis doesn't do very well is handle Hellis browsing. It doesn't handle nightmare very well. If you have ever tried to run any other phantom JS tests, you might have run it in some issues. So, this is an example of the Travis from another project. One of the main things that you need to make sure you do here to get nightmare running is X Virtual Frame Buffer. It's a virtual X Windows environment that Electron can spawn in. This is pretty important because otherwise your tests will just completely crash and not work at all. So, we can set the window size, do that. Yeah, X Virtual Frame Buffer. This nightmare is pretty new and this kind of only came around a little while ago, but this needs to be installed in the Travis container. If it is, this will work great. Any questions so far? This kind of ran through these slides quite a bit. Yep, it stands for X Virtual Frame Buffer. It's a virtual X Windows graphic user interface that's installed in your container so you can start a nightmare browser instance virtually on your test container. Yep. Do you have the... There's a mic right there. I didn't realize it was on. Thanks to you. So, I guess the question basically is what's my experience with X Virtual Frame Buffer? That's your question. I haven't had any problems with XVFB so far. We use this on another project and pull requests and all the commits all spawn the tests on Travis and haven't had any trouble so far. It might be more stable now. I don't know when... We only just started using it, so... Okay, so the question was, why do we need another test runner slash assertion library, right? So, the main reason why I would say this is here is all those are great and I think if you're using them and you're writing tests with them, that's fantastic. That's better than not writing tests at all. I chose ABA because of its sort of process isolation for its spawning of child processes to run tests in sort of their own isolated environments. I like the syntax of ABA personally. I think it feels more natural than another library. There's nothing wrong with any of those other tools. I think it's great if you're writing tests. This just feels good. So, let's say a big open source project needs to have some JavaScript tests. How stable is this tool set? How stable is this stack of pieces? I worked on another project for a big company that used a big open source project, and we had 4,000 tests running on every commit using this exact stack right here, and it worked great. It takes a lot longer than like three seconds to run, but yeah. Is it Linux only? What was that? Linux only. Does it run on Windows? Windows, I don't know. I don't have a Windows computer. I would love to know. But yes, Linux, Mac OS. Yeah, it will run on those easily. Yeah. So the question was if you have, I think that if you have Windows and you have Node.js, it should run, yes, technically it should. I don't know if Expertful Frame Buffer will work with some other kind of adapter if you wanted to run an automated Windows test bot infrastructure. But I don't have Windows. I'm sorry, I can't answer that question more specifically. Anybody else? So the question was whether or not I had to do instrumentation to do code coverage. And the question is this, come on, this happens automatically. He does the instrumentation for you underneath the covers to return these values. The HTML reporter is just one of the reporters that's available. You can get the Linux coverage, LCov format if you want. But this instrumentation happens automatically. So, yep. Is there any way to specify in your unit tests that you're testing a particular function or method? So you don't accidentally mark something as covered just because you're passing through it? If you do not... So, yes, but it's not always clear where that specific method's being covered. If it's being called by something else and that method then gets called by another method, it could potentially be tested just not directly. You could go to sort of an indirect test. Hopefully... Yeah, okay. Any other questions? These are good. Nope? Okay. So, I put this presentation up on my own CDN. Feel free to download it if you want. It has everything you'll need. All the stuff's in there. So, come to Sprints. If you want, please feel free to evaluate. I'm going to switch off the presentation and just show some more examples if that's all right, if everybody wants to see. So, where's that? Where's my mouse? Hey, thanks. Thank you. Thank you. Make this, like, huge. There we go. Yeah, yeah, yeah. So, if you're not familiar with waterwheels or projects I work on at Acquia, it's a large JavaScript library for doing interactions with the REST API in CoreRest. And we use this stack to test that project. And this runs a whole series of tests. We run build environment tests, and we run a lot sort of... Does this work in the same way in the browser that it does in the server, right? Because that's a big piece. This is sort of a JavaScript library that's spread across both environments. Yeah, this... I think this is important and storing tests. So, is there any other questions? Nope, yep. That's fine. I'd be really close. The output of the tests of nightmare tests is very similar to Selenium. And basically, I see you can use it as a test runner and just use it pass or fail and basically keep going. But did you try to actually use it for something else, for example, test reports, in terms of sending them by email or using them, you know, aggregating them, providing statistics, like actually extending the report of the tool rather than just relying on it as a one-off test runner? So the question was, have I extended the reporting from nightmare? No, I haven't done any sort of advanced reporting from a nightmare's environment. Basically, we use nightmare as a sort of browser control environment to run our unit tests in the browser again just to make sure that we didn't change anything during the compile time process. So that's it. Yep. So I think the question was, why use this test reporter? Or how do I get to my computer? Yeah, there are a number, so you don't need to necessarily use the test runner or the test reporter format that comes with NYC. You can plug in whatever format you might want to or additional actions that can happen at the end of your test execution environment.  Any other questions? Yep. For mocking. Oh, again, let me bring the slides back up real fast. ABA specifically doesn't have anything for mocking, but there was a tool here. Code requires subvert. This tool allows you to hook into the require cache in any layer of your JavaScript project and replace that piece with your own code. And as long as you can write JavaScript that matches whatever signature of the thing that you are mocking, require subvert will very happily replace it for you. Sorry, yeah, it's... Yep. Yeah, it's...  They work basically mostly the same way. Nodes require caches, you know, ridiculous, this helps you wrangle that piece. Any other questions? Sorry, on the same vein, you're recommending require subvert over sign-on, both? You can use both of them. And what's the difference or the gain? Sign-on, so what I just mentioned, sign-on is a library that allows you to mock things like timers and time-out sessions. You can use both of those here. There's no requirement to use sign-on or require subvert. Here, this is just like a simple example of a simple subversion from the require cache. You can use both of these pieces without issue. Did I answer that? My recommendation is just use require subvert. I think it's a simpler syntax and a simpler library. Any other questions? Yep. Absolute JS beginners? No, is it like an absolute JavaScript beginner or like an absolute testing beginner? Yeah. See me after this. I can point you to some resources. But yeah, definitely. These are the tools that I have been using for like the last year, eight months. You can kind of go simpler down the stack and do less pieces, but I can point you to some right places after this. So awesome. Anybody else? Okay, great. Thank you.