Thank you for coming to this presentation and good morning. This is a sponsored talk, but I'm not going to try to sell you anything, I promise, except for some new ideas. And we're going to learn a little bit about containerization and an easier way to create containers and to maintain them. So my name is Danielle Adams. I'm the Node Language Owner at Heroku. Heroku is a platform that runs hundreds of millions of applications across multiple languages and database types, including Node, Ruby, Java, Python, Kafka, and Postgres. As a language owner, it's my responsibility to make sure that our Node users have a good developer experience, which includes managing build environments, run times, documentation, and more. So like I said, today we're going to be talking about cloud-native build packs and containerization. So hopefully more seasoned Docker users will be able to learn something new, and then also beginners will be able to get started today. But first, I'm going to talk about my own experience getting started with Docker a couple of years ago. So at a previous job, I was working on some software that was rapidly scaling. The company was growing really quickly, and there were a lot of teams that were kind of moving at a very fast pace. So because we were growing so quickly, we had to cut costs to our infrastructure. And so all of these fancy platforms that would do what we would not configure and just kind of do it automatically and magically, we would have to manage that stuff and take it in-house. So at the time, all of the development teams were kind of siloed, and they were working by themselves, and they had their own processes and deployment pipelines for all of their respective services. And then it looked something like this, where everyone was kind of forced into new workflows and new processes because of the new tooling that we had to use. One of the things that we were doing was we had to take our own, we were going to bring our own job and scheduling infrastructure in-house, so the developers would have to manage and maintain their own build environments and runtime environments with help from the DevOps team. So this is where we all got kind of introduced to Docker. It wasn't a very positive experience because of the pace, like most startups that we were going at. It was a steep learning curve, so we all had to configure our own Docker files. We already had hundreds of services and applications front-end apps, and so we had to adapt Docker to all of these. There's a lot of copy and pasting, things weren't working, and it was a very hostile time in the environment in between teams. So this is an example of a Docker file. As you can see, it's not doing much. This isn't something that any Node application would be doing, installing Node and Yarn, and then running a Yarn install. And then Docker files have to go in every source code. So what we were seeing, like I said before, was we had to have Docker files for all of our JavaScript code bases, and they were all pretty much doing the same thing, but we didn't quite know how it was supposed to work, and we also had to copy and paste all these Docker files across all of our source codes. So at the same time, Heroku has been iterating over the concept of build packs. Build packs are a set of execution steps, which will create a runtime environment for any executable code. So at version two, Heroku has two things kind of wrong with the way that build packs work. So at version two, build packs will create what is called a slug. It takes all of the source code environment variables, and then dependencies like Node and Yarn, and it creates this slug. But this is a proprietary piece that you can't take this out of Heroku and run it on any environment. You actually can only run it on a Heroku dyno. So it makes it really hard for our users to debug things. If they see something running in production, they have to debug it in a production environment because they're not able to duplicate that environment. And then also, because this is something that is built internally and lives in Heroku, you're not able to run it on something like Kubernetes, which has a very open ecosystem of ways to run execution scripts and whatnot. So this is where we meet Cloud Native Build Packs, which is a project that we've been working on. So Cloud Native Build Packs is really just math. Cloud Native, in this sense, that term is kind of up for debate, but for the purposes of this, we'll just be talking about Cloud Native as a way to manage containers in an agile and a scalable way. And then Build Packs, which I've just described as a set of execution steps to input source code and output something that's runnable. You add source code and then it outputs a Docker image. So these are the steps that happen when source code is inputted into a Cloud Native Build Pack. There's first a detect script. So if you have a Build Pack, you can pretty much put any piece of source code that is runnable, but if it doesn't match the Build Pack, the build will fail. So for instance, I can't put a PHP app through the Node Build Pack because it's not going to run because PHP does not run on a Node environment. So for instance, on a Node Build Pack, it's going to use detect to look for a package JSON or some type of JavaScript file to run. Next is the build step. The build does most of the work. So it will install Node modules, dependencies like TypeScript or any scripts that needs to be run. It will run build and compile steps. And then there's an export step. This will take all the artifacts that have been created and export it for a runtime and image. And then there's the caching step. So this takes a lot of the reusable artifacts from the build and it makes it available for the next build or for other steps that need to be made after the build. So I'll talk about a little later. So it's really easy to get started using Cloud Native Build Packs. If you want to do it locally, you have to install Docker. Then you have to install the pack command line tool. This is something that came out of the Cloud Native Build Packs project, which is a tool to both build images from build packs but also to build build packs. Yeah, which is cool. And then you need some source code available on a local machine for Node. You would need a piece of source code that has package.json because that's what we use to detect Node source code. So creating an image and running a container is also pretty easy. It's only two steps. So the first step is you have to create your image. We have a flag that just passes in a build pack and then pack build. My Node server is the name of the image that will be the output image. And then the next step is to run the image. So this will just take the image that's already been created and it creates a container from the image. So as Node developers, we know that not everything just comes out of Node. We might get a package, well, we do get a package manager, but we have other package managers that we might want to install and use like Yarn. We also have tools for static typing.  And so we want to make sure that if we have a source code that also has kind of these extensions on Node and JavaScript that we're also catered to those. So this is where multi-dependency builds comes from. So one of the ways that we can cater to those environments is by using a builder. And so a builder.toml is a file that will create a builder image. And so this is kind of a step above a build pack or a build, yeah, so a build pack. It takes multiple build packs and creates an image to be run against source code. So as you can see here, these are a bunch of build packs that we've created at Heroku that we might need for a Node source code. Node, NPM, and Yarn, and might is the really important word here. Because next, so further down on a builder file, you'll see that we have two different groupings. So the thing with a build pack also is that if it fails the detection script, it will fail the build. And for reasons that because it can't detect source code. But if it's in a builder grouping, if it fails that group, it will just move on to the next group so that it can use that grouping of build packs. So for instance, our Yarn build pack looks for a Yarn.wok file. This is how we prioritize it because usually people opt out of NPM to use Yarn. So we want to detect for a Yarn lock file. And if they don't have a Yarn lock file, then it will move to and use NPM because that's the default package manager that Node developers would be using. And so this is visual of a builder image. So that builder.toml file will, when you run it through a build, it will create this builder image. So at the base, we have a Heroku stack image. We're using Heroku 18, which is based off of an Ubuntu image. And so this is the operating system that the code will run on. And then we have all of the dependencies which kind of stack onto each other, Node, Yarn, and NPM. So it's just as easy to create an image and run a container with a builder. First is instead of passing in a build pack flag, you can pass in a builder. And then the next is that you just create the container from the image that you've created. You'll see here that we have Docker run and then the image name, but there's no actual execution script. So the same way that build packs are smart enough to understand the environment that it's creating for Node, it's also smart enough to give the image a default run step because Node and NPM and Yarn applications only have so many execution steps that they're going to use. So it assigns an execution script to the image. So when it's run, it just starts it. So for instance, this will just start a Node server. I think it's just nodespaceindex.js. And so the image knows to run this step. So I kind of said a lot of words that all sound the same. So I wanted to recap some of these. So first a build pack is scripts that are run that will output a Docker image. Builds take an input of build packs and source code and then they output an image. Builder.toml and builders define multi build pack build environments. Pack is a command line tool for executing builds locally. And then Docker files are what we're trying to avoid here. Okay. So I have a demo. Hopefully, I think that's big enough. I recorded it because I don't want to put you through the torture of having to watch me mistyping. So first we are creating our builder image here. So that's what I talked about when we saw the stack of Heroku 18 node yarn. It's taking a builder config file. That's the builder.toml and then it's running no poll. So that means that it's not actually pulling from remote the Heroku stack image because I already have it locally and it just cuts down on production time if I don't have to take the stack image because it's most likely not going to be updated that often. So I've created my image. Okay. And so now I'm going to build my image from my source code. And so I am building the node server. I pass in the builder and also run node poll. And then as you can see it's run the detect scripts. It's gone through yarn. So there's a couple steps there from build as well. You can see it's downloaded node. It's downloaded yarn installed the node modules and then run the export and cash those layers. So the layers that we have that we want to make sure that we remember our node yarn and our node modules because we will be looking at those later. So the next step we can do is use pack to inspect our image. We get some metadata here like what build packs we use the run images and then the stack that we're running on. And we can see here that we have a list of images that we've just created. So our node server which is from the builder and then the builder image what we just created from yarn and PM and node. So we can run a couple scripts against our Docker image. We can look at the node version that we've that it's using the images using. We can run a test script locally and then last but not least we can run our server. So we kind of saw how the layers are built they run in the build and then they're exported and then they are cached at the very last step. And so this is an example of the layers that are created from the Docker image that we've created from this build pack. So like I said we have the Heroku base image and then this multi build pack or the builder has created an image which has node yarn a layer for node modules and then source code on top. And so the good thing about layers is that while it might seem like a stack it's actually layers that you can swap out so that they don't impact the lower layers and also the subsequent layers. So for instance if I want to swap out node 12 for node 13 and not have to rebuild my node images or touch my source code or recompile but I could just update my package.json with to say hey I want to use node 13 and then it'll read you could rebuild your image and then it'll replace that layer. So it would be nice if we could just run our production servers on our local computers but that isn't sane nor practical. So also the benefit of layers is that when you update them locally those are the only things that get pushed up. So if I'm updating something like an image that I have on Docker Hub I can rebuild my image locally and then when I push up the layers to the registry there's a delta that's analyzed between what I have remotely and what I have locally and it'll just push those updated layers up. So another great thing about layers is that you don't have to the same way that you can use them for caching you also use them for subsequent build locally. So in the first image everything's going to be slower because you're building everything for the first time but you have a cache that's available. So when I'm running a build there's three directories that I have access to so the first one is my application code then I have the build directory or the build pack directory and then there's a third directory which is our layers and so the build pack takes out the stuff that the dependencies that I might want to reuse node modules, yarn, node and it'll duplicate those over to the cache so that they can be used later. So this is configured by using a Tommel file and so we configured so that we let the build pack know that do I want to make this available for the cache? Do I want to make this available for subsequent build packs? So for instance if I'm running node and then I'm running the yarn build pack do I want to make node available to yarn? Yes, because I need it and then also do I want these dependencies available for the runtime? And so if it's a cache that's available for the next build we could take those from cache and then the second image will be built a lot faster. Here's my next demo. So right now I am tagging the node server image that I created and I'm pushing it up to Heroku's container registry so that I can run it on Heroku. This middle one is going to take forever so you can see this is really annoying. We don't want to, if we're testing something we don't want to push this every time. I also sped up this video so this is actually twice as fast as when I was doing this. So then we, oops, there we go. So now we're going to change the version of node which my video is off but so that got messed up but if anyone didn't see I changed the version of node from 12 to 13 and then I rebuilt the image from the builder. So we can see here that we're downloading and we're re-downloading node and using node 13 but we're re-using our node modules. We're going to re-tag the image that we just created and then we're going to push it up to Heroku again. So we can see here that there's only two layers being pushed and that's the new node layer and then the layer of the source code that we changed in the package JSON. Okay, so also to just show you how easy this is I do have a, I'm going to try to do a live demo and hopefully it works. So this is the server that I've been using for the image that I've just created and I put it on Heroku. So I'm going to change the color of the background of that website, the page. Okay, well it's getting messed up because I resized it so I think I'm just going to skip that. If you have any questions about that step I'll just tell you what I was going to do. So what I was doing was I was going to change the background of the image and then of this website that we have here and then I can push it up to Heroku and then release the container and then you can see that the only layer that would have changed so we saw those two layers that were changing and then so the only layer that would have changed would have been the top layer which would have been a really fast push and then it updates automatically and we released it on Heroku and then it would have been changed in seconds. So we have a couple of benefits like I've talked through for building containers with cloud-native build packs. Build packs are modular. They take advantage of Docker layers that logically map to source code components and dependencies. You can also chain build packs to suit the needs of any container. It's scalable so you can use them across projects that use the same technologies. Source code can remain free of container configuration and you don't have to maintain those over time as we saw in my story before that can get pretty overwhelming. It's also efficient because you can use Docker features to enable an agile and composable development workflow and then also build packs remove a learning curve for people that really just want to get started with containers easily and they don't have the knowledge to do that quickly. So I have some resources here. Oops, I clicked the link. So first, okay. So if you go to buildpacks.io, this is the site for cloud-native build packs and that's where you can learn more about build packs, how to use them, the different options and also you can create your own build pack. This is some more information about deploying with Docker. So everything on Heroku, so everything that I was doing, I was using containers on Docker or on Heroku and so this has some documentation around that and then this is all the source code that I used for this demo. So Heroku has a couple cloud-native build packs that we've been creating and then our builder images are at our pack images repo. The demos that I just created and if you want to go over the slides again, the slides are at this URL. Go back, yeah. Great, and that's all I have. Thank you everyone for listening. I'll be at the Heroku booth pretty much from noon until the end of the conference. So I'd love to chat about cloud-native build packs or Node or just come say hi. We have build pack stickers and Node stickers also. I also have open collective gift cards where you can contribute to open source, which I'd be happy to hand out after my talk and yeah, that's all I have. Thank you very much. I think I have a couple minutes for questions. If anyone has any, I know we ran three minutes for questions. Yes. No, that's not a good time question. No, so Heroku is... So first of all, I will give you a form to... You could try Heroku for free. We have a free tier if you're curious, but you can deploy with Docker on Heroku, but Heroku is actually... How can I describe this? So you don't need Docker to deploy, but because it does things a little bit differently, if you have a piece of source code and you just push it up to Heroku, Heroku uses Git to deploy code, it will detect the source code, so the same way that build packs use it, it detects the source code that you have, it detects the source code, and then it'll run it on Heroku for you. I know that sounds really simple, but that's pretty much how it works. Yeah, and then I can give you... If you're interested in seeing how the different ways to deploy on Heroku, I can show you how to do that. Yeah. Exactly, yeah. So for Ruby, it looks for a gem file. For PHP, it looks for a composer file. It does other stuff for the other languages. Any other questions? Cool. Well, thank you.


What's one of the key things to throwing really far? It's separation, but it's something that people do wrong all the time. One of the things we're gonna talk about is a couple of quick tips and one drill to help you figure out and feel proper separation for big throws. Here we go, check it out. Hey everybody, it's Eric Johnson from Airtate Throws Nation, and in today's video, we're gonna talk about separation. Now, many moons ago, I posted up a video that talked about separation. We just recently have done some camps and some private camps, and we're heading off to do more of our preseason events where we're teaching the throwing chain reaction. One of the things that we're doing is we've done all these events and we're seeing lots of athletes. And one of the most common things that we're really seeing is the understanding of separation. And one of the things we wanted to explain in this video is that the separation is what creates the sling. If you want any information on our drill bands, this is all kind of new content inside our system. We use these at our summer tour. The band is teaching you separation. Remember in the discus, you have two types of separation. You have the hips and the shoulder. Again, this is where the shoulders twist around the hips. If the shoulders and hips are moving together, you're gonna run into problems. So real simple tip that we're gonna have you do is we're gonna start with our feet and our hips already in the throwing direction. We're gonna take an implement and we're gonna wind back and we have to be conscious of where the chest is and we're gonna be throwing here. So we're gonna reverse the throw. And so what we're gonna do is be trying to feel that separation because separation at the finish when you're loading up and you're getting into our power position, again, we call that coming out, we have our pillar four and we have our five, six. So if we're in the shot, it's gonna be the same thing, rotational shot. We're gonna be here. We're gonna get our feet, knees, hips, everything facing into the direction of throw. You're gonna notice my block foot's just a little bit close and I'm gonna be able to get my hip thrown and push. In the discus, I'm gonna wind here that should set the long path and I'm gonna be pulling this way. So it's a real simple tip that you can do. Now, if you're a Aritae Throws Nation online member, we go through this and we'll go through a whole progression on how this works and how to get more separation. But for a lot of you, you're not understanding what our terminology is entirely, hopefully from our YouTube videos, you are learning the throw and our six pillars are helping you as well. And the idea here is to give you a tip and a simple tip to help you feel that separation. So you just wind back. So you're basically pre-finishing the hips, wind the upper body back and so you're gonna be able to feel how to put a little muscle into your lower body, your lower body's ahead. It's gonna force you to get your upper body back and to be able to come through. Super simple tip to start making sure that you're understanding the proper feeling of separation and a lot of athletes have this problem where they're moving the upper body too much and so by reversing it and putting our hips already into the direction of the throw and coming back here, this is a simple way to just kind of help you feel that slingy motion. You're not gonna throw super far because there's not a lot of motion involved but you wanna feel a stretch in the elongation and lengthening the radius, right? The distance of the implement from you, not have the implement down here but have the implement up here and slapping out or having the hip through so you can feel a better push and you feel your block side better engaged and you're feeling this versus feeling where the upper body is opening too much too soon, right? The upper body does open but it has to open in the right path. All right guys, so hopefully you found that video helpful. It is a lovely winter day here in Arizona. The sun is setting. We're having a good time. Hopefully your training's going well and we will see you on the next video. And I try to turn it on with this technique and so I literally go back to my traditional normal technique two days beforehand and I throw a creep on pain.


Let's check it out together Okay, guys as I said when I was outside We're gonna check this out this go go warmer It's a hand warmer. I got this at Walmart. It's um It's an as seen on TV product. It was 1499 It has up to eight hours per charge Okay, I'll read this for you.  Oh, man. I'm getting so upset anyway So I got to do my video in here instead of outside where it's very nice Okay, so Anyway, it says Dual-sided heats dual-sided heats in second dual-sided heats in seconds. Okay, so both sides will heat up Lithium ion rechargeable battery three heat settings USB charging cable and carry case included well You know It should come with the charging cable. Although we all have hundreds of them And what I like about it it doubles as a power bank Your phone's going dead. You can plug your phone into this and it's supposed to charge it for you or you know, give you some charge Lights, you know little flashlights things like that. So hopefully, you know, we'll see what that does All right on the back it says great for Excuse me great for sporting and spectator events hiking Hunting fishing skiing snowboarding walking the dog chili homes and offices construction workers police fire EMS Well, it doesn't say anything about camping Now I feel left out, huh? They're discriminating against me because I'm a camper Also fishing hunt, but hey, you know, and it's also great for poor circulation arthritis Ray nods, which is numb hands and stiff joints Includes velvet case and charging cable three heat settings low medium and high. So let's open this up And let's check it out together. Shall we? It's just in one of these what they call blister packs So let's get this opened up So hopefully if the storm stays away from us We will be out camping This weekend This coming weekend, I may go out Thursday night and spend the night on the boat We'll just have to see but I'm definitely I'll definitely be out Thursday while she's at work getting everything set up Okay, so All right, so here's There's this deal here's the The little USB charger charging cord Little instructions I've seen these on YouTube and that's not real velvet. So I don't want to say that but Let's just see how it works before we cut it down. But anyway Let's get this Get the unit itself out There's a little bit of weight to it it feels pretty good This is where you charge it and this is for charging other things wherever I put the So you can Plug that in and charge your phone or whatnot Okay, so let's see how this fits in here Pretty nice, huh? So yeah, it feels of decent quality. I mean better than some of the assing on TV stuff does feel pretty good quick start a Peel off sticker before use so they want you to peel this off before you use it Press once for battery charging blue LED Press and hold five seconds for heating red LED Press twice to turn off LED off Please refer to struck instruction page for more information. Okay. Well, let's go ahead Now let's peel this off like they want us to Okay, we all love peeling stuff, right? So let's set this there There's this Okay, now what I'm going to do is I'm going to read the instructions They're not very long.  Okay, I'll give you this though before I got you Go warmer usage times and temperatures on low You can it'll be 86 degrees Fahrenheit for seven hours. That's 30 degrees Celsius on medium It should be a hundred degrees Fahrenheit, which is 37 degrees Celsius three to four hours and on high a 120 degrees Fahrenheit 50 degrees Celsius for two and a half hours Okay, so I'm going to see how long it's going to take to charge this thing up We'll charge it up and I'll be back with you. I Think I've got a way to check the temperature Somewhat but I'm not sure if I I mean really I Seen a guy on YouTube do it and it was pretty Pretty close to what it was supposed to be And he just checked it with the With the laser thermometer and he's coat pocket. I think as far as I'm concerned. I mean You know if you can hold it like this, you know warm your hands and your fingers up You have to stick them in your pockets I figure if it if it if it heats up and stays heated for a while. I figure it'll be You know It'll be fine. I really don't have to check the temperature I mean I do have a way, but I just think it's going to be a waste of time Doing that so I mean I don't think I'm going to do it So let me see if it says in here how long to charge you if it does I'll let you know but I'm gonna be back with you in just a second. So hang tight. Okay guys It doesn't really tell you how long to charge it. This is what I'm going to use To charge it. You just got one of these things I'm sure if you plugged it into your computer, and I'm sure you can charge it that way it just says that Recharging go warmer use the USB it tells you where to where to plug it in at and I'll show you that here in just a second Plug the output large end into a yeah, okay, but all it says is About the charging is When you turn this on There's a little switch here on the bottom. You just push it on the side there Just push it once so if you got One light It needs to be charged if you got three lights. It's fully charged So this is about halfway charged up because there's two lights there So and to shut it off you hit the button twice Just like that now to charge it You know You'll plug it in to here Just like that and that that's how you charge and you just plug it in. Okay, so Press and hold the power button for five seconds to turn go warmer on okay So let's do this one two three. Okay, it's on So there it is it looks yellow in the camera, but it's red So it's on high and it's already getting hot Okay, so let's turn it down to low. Whoops. I shut it off We're going to turn it down to low just by pushing the button once There's medium and there's low And I'm gonna tell you what guys it That does feel good Yeah, I can feel it. It's not 80 degrees as close to it. Let's go up to medium Whoops Okay, there's medium and it's getting warmer Real warm. I Mean you could probably you know put this under in your jacket You know, I wouldn't put it up against your skin. That's really hot. Okay, so let's go to high Okay, there's high and this thing's fast really fast. Wow. Yeah I'm telling you what I'm impressed with that your hands get cold Just hold on to this Put it in your pocket switch hands get two of them 1499, you know have one in each pocket But I mean, I'm telling you what that's that is really warm. Yeah Nice, okay, let's shut this off All right now I've got a couple things here. I want to try to try to See if it'll charge and it does take the same thing as as My phone so we're gonna plug this into my phone here just like this now we're gonna plug Plug it into the bottom here just like that And it kicked on yes, it's charging it It's up there in the corner. It is charging watch when I unplug it. Oh That was me. Sorry. Okay, so let's Right up there where it says 86% there's that battery icon So let's plug this in and it is charging. That's not okay. Cool. Now We know it'll charge the phone. I just brought a couple things here. This is one of our lights for a camera So let's go ahead and plug this in. It's right here on the side Let's see if it'll charge this and it does See the blue light blinking that means it's charging it One more thing. I mean this this is gonna be handy to have Okay, so what I'm gonna do This is monkey's camera. This is the camera. I used to use all the time I used for the past couple of years this camera right here, so Charge it. You just pull this pig tail out It's got it's a it's got Kind of like an extension cord, but it is from Sony We're gonna plug it in there like that now we're gonna plug this in into The hand warmer and let's see there should be an orange light light up here if it's if it'll charge it Now it might not I don't know It doesn't seem to want to charge the camera, which would be nice If it does yeah, it does look Now when I unplug this That lights should go out and it does Takes it a second. I mean there's three items right there. I mean this thing Doesn't say how long it'll last charging things, but I mean How many times you go to do an outro or just finish a video clip? Bam your battery goes down your camera. I've changed batteries. Whatever For a while only had one battery for this camera and that kind of suck because you know when it started running low I had to get it plugged in You know how many times you just you wanted to make you had to make that last text or let's say Emergency situation, you know, I think this and put enough in your phone to get you to to get that call out So let's see is there any other thing you had just it tells you how to I just showed you how to charge The device will begin to charge automatically the battery temperature indicator lights will light up blue to indicate the charging process I Mean it's real simple guys. It's just you know you plug it in you charge it up You hold this for five seconds it automatically goes on high Say here and it's getting warm already both sides this side feels a little warmer than this side But man, I mean as far as longevity, I don't know I just got it while I bought it the other night and I forgot I even had it so I seen it today, and I thought well Shit, I'm gonna do a review on this. So I Mean, that's that's pretty hot and then of course you get down to to medium and low after that and then See oh you push it twice to shut it off There just two quick pushes That feels pretty good that that is nice I think I did read some precautions on here Important use only the charging cable provided to avoid the potential For leaking overheating or explosion We don't want that to happen. I'll do it. Okay guys. So there you go. I mean all in all 1499. This is well worth it I Think that's that's a good price for I think 20 bucks. It's too high And I think it is worth a little more than 10. So I figure you know 15 bucks. I think a fair price I mean for a You know for something that they that can charge other devices.  I mean this this thing seems to be Pretty amazing in my book. I don't know if monkey wants to do a review on her channel on it or not But yeah, I mean it is charging it. You can see my little battery icon is being charged when I unplug it There you go So Yeah, two thumbs up for me. I mean these we all know how they have seen on TV products. I Mean, let's face it guys. They're not that great You it is one of those things you get what you pay for usually But I have been pretty lucky I've I have liked a lot of stuff that the as seen on TV Company makes and puts out I've got a few things that I really like that I use daily This is going to be one that we can use camping You know it will keep your hands warm if your hands are getting cold if You had to I guess you can put them down in your socks on low to help keep your legs warm Put them in your pockets, you know, I Think it I think it's well worth it. Like I said the durability it does it does feel pretty durable It doesn't feel cheap. It's got a little weight to it yet not too heavy Yeah, I think it's going to be alright and I think all I will monkey and I will get a lot of use out of this We'll check it out this weekend. We'll charge some things and see how it does and if it does well Maybe maybe we'll get to she can have one. I can have one, but we'll share this one for now So anyway guys, let's say thanks for watching. I appreciate it. She barely met the man legend I'm going for now. Don't forget to check out monthly 1000 channel here very soon She's going to be doing a review of her early Christmas present. I've got her I ordered her a Christmas present She knows what it is But there's a reason why she's getting it early and you'll see why I will also do a full review on this item as well But anyway guys again, thanks for watching appreciate it hopefully your week's going well so far and Hopefully you guys are well as well So anyway guys, we'll chat at you soon and have a great week. Bye. Bye and take care


Cywt. Dei ateb y celebrate 영w, fel hynny eich fod yn cael ei gael. Yn cael. Mae'r gylraeth nhw. Yn cwysbeth, ddweud gitaeth, a'r cwun ymryd. Mae'r bobl maen nhw. Mae'r bobl ydy'n gwybod yn directi'r putrefau. Roedd o'n ffriddio'n cael ei fod yn ymryd yn allanio. Neu rwy'n wedi'n rhoi wneud yn cael ei wneud, ond mae'n unaill yn dweud o'r rai. Felly mae'r safadau i chi'n siwr yn y ystyried, a ddim yn arnynt yn erbyn fod y peth. No, it doesn't. It could have been better if I scored a penalty like, but I'll take how we won the game and hopefully it's one of the kick-starter runs that we all won. Is that the hope, try and get better in the league, get a better form going? No, of course I hope. I mean everyone wants that. We don't want to be at the end of the table that we have been at. I know what I can do is take up the positives from that game and go into the game on Tuesday and hope you play well and perform and see if you can get the three points again. How does it feel to make your full debut for Bradford T? Yeah, very good. We enjoyed the game, it was a tough test, they're a decent team. They won a good position in the league, we're also a decent team and I think we challenge well and we don't want to get them today. And then obviously it does a performance today, sure how resilient this team is, obviously having to defend a lot in the first half when they're scoring late on. Yeah, I think there's moments in football where you just need to stick in and we had a few of them moments in the first half and we battled through the adversity and we got through it to the first half. And we had the second half and we just done the same and we battled adding but we didn't know if we got the win at the end. Yeah, I think we've always had that, especially over the last couple of months. That's something that's really been ingrained with us to stick together and really fight for each other and keep the ball out of the back of the net. So this has probably been a game where we've given up more opportunities than normal but I think we've still felt comfortable because we're working so hard to keep it away from the ball. Yeah, they put us under pressure. I thought we, as a team, we defended well and we kept on going until the end and we got the win. And is it a ploy if we can build on trying to improve our league form a little bit? Absolutely, like you said, we know our form hasn't been the greatest in the league for a good time now. So we're hoping it's going to be a turning point for us and we can move on to more games. Thank you. Thank you. Cheers, mate.


For example, from going to gym, and sometimes, I mean, you see all the ladies in the gym are not wearing baggy clothes. Everybody wears as tight as possible. You're like, geez, prophetically. A lot of people wear prophetically too. Like that's how I want to look in 10 years.  It's gonna slap. But the point is this is that people who go to gym, and we have a lot of men who do go to gym, you must understand when you're working out and you see somebody who comes in, or maybe sometimes even some girls in church who would walk in and you're like, whoa, what is that happening? When you look second time, what happens is that image goes straight into your head subconscious. At first, nothing might happen. But then, you're tempted with another image a little bit later, from a movie. There was maybe some scene that you should have not watched in the first place, the movie, or maybe something that instead of churning your head, you're like, well, I just want to see what happens. And you saw what happens. Boom, another thought went into your subconscious. And then you got those little lyrics of the music that, oh man, it's about the beat. I know it has all of these sexual, explicit information, but it's all about the beat. Trust me, I'm just a musician. I know about music and this is a good music. The fact that it has everything about sexual, oh, it's fine, you don't realize you have the stuff going into your subconscious. In the moment of temptation, guess what Satan will use to cook up lust in your head? Every information you permitted to come there. Satan cannot use Playboy magazines you didn't watch. Satan cannot use nude pictures you didn't open. He can only use the things you looked at to cook up something in your head where your palms begin to sweat, you begin to masturbate, you begin to do sinful things and you're like, man, feel guilty again, I should have not done it. Where does it all start with? It starts with this, when a person walks throughout the day and instead of saying, no, this doesn't belong in my head, you're cutting away from Satan having material to cook during your temptation. And during your temptation, he throws things, but there's nothing to throw, why? Because not that you're perfect, not that you never saw anything bad, but it just when something would come up, you would click away, you would look away. You would say, no, I'm not gonna look at that.  I'm not gonna watch the movie because before watching a movie you have to go on Google, type the movie and type parental guide and it will tell you every questionable scene it has, the cost words it has. You don't go into a movie theater watching a movie and well, if it's something bad, I'll turn away. Really?  And then you come, oh please pray for me, I just get flooded with lost full thoughts. Lost full thoughts you pick up during the day without filtering your head. You have to protect your head by watching, it's the minor things that when you protect it and temptation comes in and there's nothing to stir you unless because there is nothing there.  For gross you have to protect your head also from novels because gross pornography is not what they watch, it's what they read. The 50 shades of stupid, 50 shades of gray, oh yeah, 50 shades of gray, they came out.  For pornography for women. And the 50 shades of gray is just the beginning. It's a women's pornography, that's what it is. What pornography does to the mind of men? Erotic material does to the heart of a woman. And men or women who will say, well watching pornography is nothing wrong, I'm not doing anything bad, you know, if I masturbate there's nothing wrong, I'm not herming anybody, I'm satisfying my own needs. People sometimes say that. Or if I read that, it won't do me any damage. Or sometimes people would watch Bachelor, famous show, Bachelor. Why would you wanna watch Bachelor? You have one guy dating 13 girls at the same time. That's polygamy.  What is cute, the guy dating 13 girls at the same time? That's insane. Now, please understand, I know there's probably awesome guys over there, but please understand if you watch that, like that, don't be surprised if the guy who dates you also dates 20 other people. The only thing you're lacking is a video camera. And somehow it is wrong when a guy treats you like that, but it is not wrong for you to treat yourself like that by filling yourself with other examples. Because if he does that, it is wrong. But the fact that I feel myself with that completely accepted is because although they knew God, they did not glorify him as God, nor were thankful. So this is what it means. They didn't develop their spirit by coming under influence of the Holy Spirit. They didn't connect with God. This is what happened. The second thing, but became futile in their thoughts and their foolish hearts were darkened. What does it mean? When a person didn't develop their spirit, their mind went out of control. Anyone who is ruled by their mind will be ruined by their mind.    Therefore, make it your servant.  Don't do this, but think about doing this.  Treat your body to the same degree you treat your soul. How would you feel? You'll get sick. That's exactly how your soul is right now. Sick. The only bad part is a lot of people don't care about their soul.  Allow whatever comes in, mis-treat. They will never in their wildest dreams will treat their body to that degree that they will allow their soul to be treated. Watch whatever comes into it. And you will see you'll be victorious.


Everybody forced here ripping 2021 obsidian football hobby 12 box full case number 16 It's a random team style break The results link is in chat. You can always find these at late and sports cards comm as well Thanks for joining everybody and good luck. I got a Terry McLauren up first to 75 for Washington.  We got Andre Cisco rookie for the Jags Bucks Galaxy Gear Chris Godwin to 50 Jersey number 14 at 50 on the Godwin 49ers to 40 atomic Joe Montana Jersey card there Bears Aurora auto Mike single Terry to 50 solid single Terry and auto Browns Matrix material auto electric edge orange Nick Chubb That orange will look great with a browns card. There you go Cleveland, I'm not sure they might have a Justin Jefferson. I would just check the checklist if you're curious It's been a while since I've looked at the 2021 obsidian football checklist So we're starting off with a base Marquise Brown. We got white coming up got a Marquise Brown purple should be to 100 Yo and white Darius Leonard Nice one there Thanks Felix Darius Leonard What are those called again? They're not called white. I don't know what they're called to 50 rookie eruption patch card Vikings Kellen Mont Titans to 199 Mackay Sargent rookie auto Contra, thank you Felix coming in the clutch over there, man Rookie auto for Washington D'Ambi Brown to 50 Buccaneers to 99 rookie dual Jersey auto Kyle Trask electric edge orange Solid hit for the bucks. Got David Montgomery Purple rookie for the Lions. I'm in Ross St. Brown To 100 Vikings Kirk Cousins green to 50 Chiefs atomic Jersey Marcus Allen to 50 chiefs Marcus Allen a little weird every time we see that Bangles rookie eruption Jersey Jamar chase to 100 bangles Washington Aurora auto Joe Thysman to 50 and Eagles Kenneth gain well to 150 rookie dual relic auto There was a numbered cousins. Just a second ago. Yeah, cousins to 50 base parallel base Vitreous die-cut Buccaneers Tom Brady 10 of 10 Boom the goats Hello there.  We will get that mags Contra rookie Lions Jamar Jefferson extra card in this one Base Cooper cup extra contra hand Giants to 50 rookie triple rally Cadarius Tony. They see it done Have a good one Falcons a Ritchie Grant rookie auto to 199 UCF legend sub Kemper Titans Caleb Farley look rookie auto to 75 and the Jets So 50 rookie dual Jersey auto electric edge orange Zach Wilson boom Heck yes, we Wilson Get that one magged for you. I'm not sure it's Horry cuz I know in the years past they've been numbered and Here and there for low numbered we pulled a nice AJ Brown last week in the mixer actually Kurt Cousins base any civil lions rookie red to 10 There we go. You go Lions and Cooper cup to 25 on the yellow for the Rams one of one trifecta material blue finite Chiefs rookie Cornell pow bow Oh Three laundry tags a player's association a swoosh and a shield Blue finite one of one that is sick. There you go chiefs It's been a really good case out of 25 rookie eruption patch Jags Trevor Lawrence eyes Raiders auto Sebastian Janikowski to 75 Nice see bass Yeah, you have 400 points ran into all the ends Sean and see bass go way back Got orange Cleo Herbert bears rookie to 75 Supernova Mac Jones Hatriots to 35 You this case is awesome.  Vikings patch card is Adam Thielen to 25 400 points Random to all the ends Cowboys auto Bob Lily to 25. I think practice squad. I can't remember Ken and one will rookie Jersey Auto Vikings out 150 great first half of this case Let's keep it going Rookie Remand Ray Stevenson for the Pats Yummy brown rookie orange to 75 Washington and a purple Seahawks Tyler Lockett to 100 Galaxy Gear Chargers Austin Eckler Jersey Also to 100 eagles volcanic Jersey or patch excuse me nice patch there Devante Smith to 50 Chargers lightning strike auto green is Sean Merriman to 50 and Jaguars to 150 rookie dual Jersey Auto Travis etn jr. All games almost over We're gonna watch Najee Harris rookie for the Steelers Jake funk Rams to 100 quity paid Colts to 75 Volcanic patch card Patriots rookie Remand Ray Stevenson out of 50 There's a four color patch for you Pats. Oh, you go Titans CJ 2k auto to 100 Chris Johnson local legend Broncos lightning strike auto orange nice color match Clinton Portis to 50 Beast and Jets out of 150 rookie dual Jersey Auto Michael Carter. All right. We've got a uke base a Patriots rookie Mac Jones green to 50 go Pats 19 to 50 nice card Darius Leonard Colts number to 75 Panthers volcanic patch terrace Marshall jr. To 75 Sorry to 100 100 rounds cutting edge Jersey Nick Chubb to 75 All fans rookie auto Jalen waddle to 150 solid hit there Miami and Chiefs rookie Jersey Auto Cornell Powell To 150. I hope so Kemper Hope we've got a color glass coming soon Baker base darnold to 100 Panthers and Bill's green is Devon single Terry to 50 Trel Davis atomic patch card Broncos to 50 dolphins another hit here Zabean Howard auto to 25 Texans rookie auto Nico Collins to 199 Rams rookie Jersey Auto Orange Jacob Harris Number two. Where is it to 99 you go Rams? Well, let's see a big car last couple boxes here Get everybody. We've got flawless coming up next in the mixer Personals afterwards and personals are full AJ Brown base orange rookie Steelers Najee Harris to 75 and Dishon a Watson to 100 Texans Falcons cap really Jersey card to 100 Do you know what it sold for Mike Rams to to at well rookie Jersey card to 75 Broncos set Williams rookie auto to 75 40 Niners rookie dual Jersey Auto Trey Lance boom to 75 Grads Niners There we go. Hey, you called the camper. He said big quarterback coming. There he is Alright, come on. Let's see that color blast. Got Giants rookie Aaron Robinson Got Devonte Smith Eagles rookie Orange to 75 Purple TJ Watt Steelers to 100. I guess there wasn't a color blast in the case Steelers Pat Freibuth rookie patch card to 100 Jags 20 Bosselli auto to 100 back to back. Oh lineman hits here. I got Steelers Alan Fannica auto to 100 and Washington DME Brown rookie dual patch auto to 50 Yep, I'll call it glass. Not the first case you've seen like that. It's definitely possible Still a bummer we got two points cards only two points cards is pretty low for obsidian to be honest though So that's pretty good side. There were also some really nice hits in this in this break. So still a good case I would say Let me get these names copied over Here you go 400 points random to all top two spots in this random. We're getting points Three times one two three Jason L Eric I All right, we got our relics first Pat Freibuth Calvin Ridley Tutu Atwell Terrell Davis Teres Marshall Jr. Nick Chubb from Andre Stevenson Austin Eckler Devontae Smith Adam Thielen Trevor Lawrence Kaderius Tony Jamar Chase Marcus Allen as a chief Kellen Mond Joe Montana Chris Godwin Autos Alan Fannica Diami Brown Tony Bosselli Seth Williams Jacob Harris Nico Collins Evian Howard Jalen waddle Cornell Powell Michael Carter Clinton Portis Chris Johnson Sean Merriman Travis E. T. and Jr Kenan Wang Wu Bob Lilly Sebastian Janikowski Richie Grants Caleb Farley Joe Thysman Kenneth Gainwell Diami Brown Kyle Trask Mackay Sargent Mike Singletary and a Brown's redemption was Nick Chubb a one-of-one trifecta Cornell Powell chiefs Rookie triple relic tunnel vision gold Joe Burrow to 10 for the Bengals Dual Jersey Auto Zach Wilson Jets out of 50 Vitria's die cut gold the 10 was Tom Brady for the Bucks Dual Jersey Auto Trey Lance to 75 Niners and a supernova was Mack Jones at 35. There we go. Pretty good case. Thanks again, everybody We've got flawless coming up


It's well-brained! The Pepsi Super Bowl halftime show! Due to the Pepsi Super Bowl 53 halftime show!


I've got two main questions and that's if you have a seat in the middle next to you. Take it and get out of people from the side and the other one is please exit fire that way and run fire that way and we can all stream through because it's really popular apparently. Thank you. Would someone have lost some gloves? If so, they are on the desk. What does it work? No. It works for the previous one. I don't think so. There is no focus. It's funny. The previous one works.  No, English. I can switch with that. I'm French. That's fine. So, we'll speak now about the password manager. This is Rémo Berthot and he will introduce you with PassVault. Let's applaud him. Thank you. I would like to start by saying thank you to the volunteers and the organizer for us them. They are doing a good job every year. So, if we can give them a little applause there. So, today I'm going to talk about an open source password manager that we developed. So, it's 2017. We have self-driving cars and jetpacks. And what is the most used password in the world still? Like, can someone know? Hazerti 1234567, that type of password, yes. 80% of security incidents are due to weak passwords that are reused in multiple systems and that people share on post-it notes. So, it's very likely that if your organization is not using a password manager, you're wasting a lot of time resetting the password for your users instead of doing more important things than, for example, like voting pictures of cats on the Internet. So, this is why we started developing PassVault because we could not find a password manager that was web-based and easy to use and that was designed for collaboration. So, we estimated in 2012 that it would take us four months to develop that software and because we are very experienced web developers, we were right. It took us four months and four years. So, PassVault is a free open source because it's designed for collaboration. For collaboration, we choose to use an asymmetric encryption model and we wanted to work on standards. So, we choose open PGP as a standard for storing and exchanging secrets. So, PassVault is based on web technology. So, the best way to make it extensible is to design an API. So, we choose to have a JSON API to do that. And we like to think it's fairly easy to use. So, I don't know how many of you have tried PassVault. Yeah, I know that you've tried PassVault because you're part of the development team. So, this is the login screen. As you can see, we are asking the master password of the user, which is the private key password. But actually, we are not sending this secret to the server. We use a challenge-based authentication system, which I will describe a little bit more in details. You can see also on the screen that we verified the server identity and that's also part of the authentication mechanism. So, this is the password workspace where you can see the list of passwords. You can create a new password. You can copy it to the clipboard, share it with your friends. Pretty straightforward. Then we have the edit dialog. So, you can see on that screen that we have this orange-looking field, which is actually a mechanism that helps prevent phishing. So, this is to make sure that this field is actually managed by the plugin and inserted on the page in an iFrame and controlled by the plugin. So, that way, no other JavaScript running on the page can actually access this data. And the color and the tree letters are actually selected by the user during the setup and can be changed. This is a mechanism that we have not invented. That's what other plugins are doing. For example, if you know Mailvelop that enables open PGP-based email encryption, they use a fairly different system, but the principle is the same. So, this is what you get when you share a password with someone. So, you can select the right if someone can read or update that sort of thing. This is the user workspace where you can see the list of users that are actually on the system. And we will add more functionalities because we'll be soon supporting groups. So, this is pre-empty, but it will become a little bit more busy. So, this is the edit profile screen where you can change your picture and manage your keys. Obviously, we'll have more settings coming up here in the screen right now. It's fairly simple. So, this is the command line interface. It's a proof of concept that we develop in Node.js and we receive very positive feedback from the community as you can see in the testimonials. So, yeah, people were not too happy about us doing it in Node.js, so we might as well redo it in technology in the future. But I was more proof of concept to show that you can extend passwords. So, that's another feedback that we got. Can you please develop faster? Yes, Laura will think about it, especially if you help us and contribute. So, what is in progress right now? As I mentioned, we are working on groups. We are working on API documentation and doing a risk analysis, but we have actually done a risk analysis, but it's more like making it more available for everyone and making it tidy so that you know what is the threat model, what are the compromises that we made and the countermeasure that we've put in place for some other elements. And then in the next quarter, we'll work on importing export, audit logs and email notification. So, I don't know why there is a disclaimer at the bottom here because we are pretty good at estimating timelines. So, we have the group screen. So, right now the specs are available. So, we have wireframes. All the user acceptance scenarios are also described there. So, if you want to check out on our website and give us some comments, we started building last week, but you know, you can still comment. And after that, we're going to work on security audit categories and tags and mobile support and all sorts of other features that have been requested by the community. So, I would like to spend the next seven minutes or so, hopefully, about how does Passbolt work. So, getting a little bit in the details of how we've built Passbolt. So, we use an open source stack, which is based on KKPHP in the back end, which is compatible with MariaDB and MySQL. Next week, we're going to make a release that hopefully make it compatible with PostgreSQL. We use on the front end, CanJS, which was called JavaScript MVC in the past. And now we use in the front end also OpenPGPJS, which is an open source implementation of OpenPGP, which is used by other clients like ProtonMail, I don't know if you've heard of them, or MailVelop. On the back end, we also use GNU-PG, obviously, and we use the GPGB mining bindings for PHP. And yeah, we also use Docker and all sorts of other goodies, which you can check on our website. So, this is the database model. I didn't put the details for the tables because there's not much space. And what is interesting to see is that we are actually storing the GPG keys in the database, which have security implications. We don't use a key server for that. So, if you're interested about finding, like discussing why we did that, we can talk about a little bit at the end. We also store the secrets each time for each user, so we don't store like a multi-part GPG secret. So, one PGP message doesn't include all the passwords for all the users. We store one GPG message for each user. And every time someone edits the secret, we also keep the previous version. And we have all sorts of other information there, like authentication logs and tokens and all that. So, this is the KPHP architecture for lifecycle or for request, more like. So, if you use Django in the past or something like Ruby on Rails, you'll feel at home. I'm not going to describe that because I've been told this is pretty like standard now. So, this is the GPG authentication sequence diagram. So, go, you know. So, we have... It's pretty much if you use SSH and your key to log in into SSH is pretty much the same principle. So, it's a challenge-based authentication where you will have to prove your identity by decrypting a secret and sending it back to the server. So, what is interesting is that because the server also have that key, it has its own key and the client key and vice versa, we can do the authentication both ways. So, we can authenticate the server and we can authenticate the client. These have several advantages compared to a normal password, the password for each authentication round change and you're not limited to the size of the passphrase. So, you can use a very, very long authentication token that is unique every session and that is not linked to the length of the passphrase of the user. So, this is the architecture for the plugin. So, I'm not sure many of you are familiar with developing browser extension, but basically you have two parts. You have the add-on code which have access to the interesting functionalities like high-level APIs like toolbar or clipboard or that sort of privilege APIs and you have the content code. So, the add-on code cannot modify the HTML in a page and the content code cannot access the clipboard or that sort of thing. So, you need to interact between these two sandboxes using a service worker that basically send messages and back and forth in both directions and what is interesting in this model is that even the content strip is in a different sandbox than the JavaScript running on the page. So, for example, if I'm running Passball.js on a particular page where we inject a script from the plugin, the Passball.js cannot access the data or modify the script that is running in the content script sandbox. So, this is interesting in terms of security because it makes things a little bit easier. So, we have quite an extensive test suit to test all the different scenarios. We have around 300 Selenium tests.  So, we have 300 of them and we have a PHP unit test to test the API. We have a Chai and Mocha test to test the JavaScript framework that we use and we have two continuous integration stacks. So, if you run these tests in a normal setup that will take around two hours to run them all. So, at the end, we've built a little bit more clever stack where we distribute the load across like 10 nodes so we can run all these tests in 10 minutes so that Cedric doesn't have any excuse for not coding. And we also have a style guide. For example, we have a website. We have a browser extension. We have the Passable.js running on the page. How do we maintain all this look and feel consistent across all these different products is by using an NPM package. In this NPM package, you also have like test screens and we also have wireframes that you can... It's based on Actio, so it's not open source but it's out there if you want to help us make wireframes. So, I would like to thank you for your time and you are welcome to help us contribute to Passbolt. You can, in whatever capacity that you're interested in, you can also just give us a review on the Chrome Web Store or Mozilla browser extension. Thank you very much. Thank you for the call. Would someone have a quick question? Yes, you can... Passbolt is 100% open source.