Today we are opening another special edition box. What's up guys? We're back with another epic video. Today we're going to be opening a special edition box inside of this brown box. You guys will see what it is in just a second. But first, I have a giveaway. I'll be giving away this Korean secret rare Spell Striker from the video the other day. It's still sealed.  Let me know what you want to see out of the special edition. Let's get this box open. Inside the box we have a Storm of Ragnarok special edition. This is an entire display. We have opened like three of these now. We have still not pulled the Odin. This was sent in by Robert to be open for and hopefully we can pull him that Ghost Rare. Now I'm going to open the packaging up off camera. You guys know how long it takes to open these. It amazes me every time how long it takes to open those. So here are the promos. We've got the Six Samurai, Light and Darkness. We've got two of those. Three, four, five to three, four, five. All right, even five, five. That's not bad. Now let's see what we can get from these 30 packs for Robert. We have seen some amazing special editions. We've seen some terrible ones. What we're hoping for is the Ghost Rare Odin. Did you guys know I've never pulled it? Also, Maxi is in here as a secret rare. There's Ultimate Rare Odin. There's Ultra Rare Odin as well. And then there's a lot of other Epic Ultimate Rears as well. So let's see what we can pull in here. Something Epic. We've got the Worm, Jettel Clips. I think the Six Samurai, what is it? She-In Ultimate. There's a Valkyrie of Nordic Ascendant. I'm struggling already. She-In's Daredevil. We've got the Shanae and Cyber Shield. Okay, Super Rare right off the bat. That's a good start. We once pulled multiple Maxis. There was two in one opening. I've seen someone. They posted it on the Reddit. If you guys watched the Reddit videos, he posted or he pulled two Ghost Rears. I think it was a Maxi too. So it was crazy. So that's kind of what we're hoping for, something in that range, one of those amazing openings. Cosmic Compass, Cyber Shield, Barrier Resonator. Can we pull some fire for Robert? He sent the send to be opened. He wants the magic from the channel. You guys got to support by liking the video. All right, also into that giveaway if you guys are interested. Bloodsucker, Tyrant's Tyrate. Hope for escape and Cyber Shield again for like the 50th pack in a row. All right, so Odin. One day. Like it doesn't even need to be my Odin. I just want to pull the Odin. Look, we broke the streak. We pulled the BLS. If you guys missed that video, go check it out. Even if it's a spoiler, if you haven't seen it, there's a lot of other amazing pulls. So go watch that video. It wasn't just the BLS, but I will hopefully remember to link it. Oh, we wrecked it especially. All right, Triple Impact. Go check that video out. We broke that. Now can we break the Odin streak? I've probably opened more of these than Invasion Cast. I feel like I've opened... No, I've probably opened more Invasion Cast, but I've opened a lot of these. Like, we're talking... I mean, we've opened hundreds of these packs at this point, I feel like. Maybe like two or 300 Watt Key. The ratio's one and two 88. So I guess that's... I reckon special again. I guess we're right around that ratio at this point if I'm right about that. So far, just a super. Well, we got 10 other supers. So technically we have 11 foils already. Because we got 10 super air promos. We got Shin Squire. Got a Demoron. Mimir of the Nordic Ascendant. Watt Hydra. Literally in every storm of Ragnarok opening. I mean, the card looks pretty cool, but it's not very valuable. And we pull it every time. So, yeah, not the most exciting. Still cool that it's a super air. We got Blackwing, Kalima the Haze, and Token Stampede. Next pack. Can we pull the legendary Odin? I don't even know if he's considered a legend. Like, Odin's not even that great of a ghost rare, like for a lot of people. I just want to pull... I couldn't remember the stats. What is he like? I think he's like 4k. All right, Atomic Scrap Dragon. We got an ultra rare. I saw Synchro. I was like... And I saw three. So I couldn't remember what... I think he's 4k, though. All right, 3,200. So that's not gonna... You know, that's not gonna do it. It's just a nice ultra rare pull, though. We will take that for sure. Can we break the streak of Odin? Odinlessness. Have you ever pulled the Ulti? I can't remember. I have an Ulti. I don't remember if I've pulled it. We definitely pulled the Ultra a couple of times. We got the Worm and Jettel Clips. The Garmer of the Nordic Beast. And Token Sunday. We've got the Tangamaskir.  Those... There's so many sheep in this. It's just... They're just tough. No more sheep. Give us the Nordic Gods. We want to pull... We want to pull Thor, Zeus, and Odin. Thor's one, right? Yeah, Thor. She and Squire. Nordic Aurelic. Okay. Garmer. And the Wat Bayrinks. Bayrinks? Okay. Token Stampede, Scrap Shark, and Barrier. Resonator. Let's go, Jack. Storm of Ragnarok. Store. Let's go.  Terminal World. She and Skink. We just hit a Gosher Ancient Fairy the other day, by the way. If you guys did not see that, go watch it. So maybe that'll, you know, carry over here. Stardust Shimmer. Okay. We've got another Super Rare. Stardust Shimmer. Pretty cool card. I think it was not too bad. I'll say that. It's going to be 10 cents. That's what happens every time. Like it's not too bad. And then I added in the price. I'm like, that's pretty bad. We've still got a lot of packs to go. So what have we pulled? Three Supers and an Ultra? Not terrible. We're just waiting for those high rarity. Last time we opened one of these, we got like nothing until the very end. And then we pulled Max C. It was just crazy. Black Boost and like two Olties or something nuts. Oh, she in. Come on. If this was Oltie. This is the one I was talking about earlier. I don't think I ever finished that thought, but that happens a lot. But she in ultimate rare. It looks absolutely amazing. This is a really cool Ultra as well. I think it's still like several dollars, which is still pretty good for an unlimited Ultra rare. It's just a nice card. Just annoying card to deal with. Two Ultras. What, three Supers? Is that right? Three, four Supers? I don't know. Something like that. We've got a Wattmole. Wattkey. Oh, we've got a little print dot on there, which is interesting. Doesn't really add much to the volume in the mirror of the Nordic Ascendant. Nordic Relic. Hope for Escape and Resonator Engine. Now we go to the next store pack. Can you please give us the Odin? Solemn Authority. God of Demorone. Blackwing Bristow. Yaksha. And she in smoke signal. Wow. This is Cognition of the Sixth Hammer, right? Very cool. Not the most amazing opening. Not the worst, I would say.  Like, that's it. So it's better than that, I guess. That's nice. We've got she in scheme. Why does this feel like it has extra cards? That's one, two. We've got the Bloodsucker. Three. Maybe it's the Secret Rare. The Golden Apples. You guys remember this from Duel Links? This was a Duel Links card for a while. That's four, five, six, seven, eight, nine. Same right about a card. It's just that Secret Rare I was feeling, I guess. This card was in a very annoying stall deck, like, early Duel Links. We're talking, like, several years ago. It's crazy that Duel Links is, like, five years old now. Because, like, remembering stuff from the original Duel Links is, like, nostalgic. That's how old it is. The Gold and Golden Apples is a bad nostalgia. It was awful to play against. Weevil. You got Lavagol and Golden Apples. You know, Golden Ladybug and all that stuff. Where are my Jettel Kips? Oh, Ultimate Rare. Karakuri Musso Mdl818. Hypa. That's a long name. I'd probably mispronounce a lot of... I don't... What's the Mdl mean? Should I know that middle? Is that short for middle? 818? What's... What are these things? I don't even know what the point of this is, but cool. Ultimate Rare. We're now up to a Secret and an Ulti, which is not bad. Now we have every Rare. In the set. Except for the Ghost Rare. So could we possibly get it? So sometimes you will not get Ultis or even secrets. So this is not too terrible. We're hoping for some better ones. These aren't the best, but... You know, it's something. Vylon Matter. We've got the Tiki Soul. The Zvartalf of the Nordic Alphar. Okay. Zvartalf. Very nice to see you, Super Rare. Another foil. We've pulled a lot of foils. Like, there's only 30 packs and we've pulled, like, what? Like, 8-9 so far, which is crazy good. I think it is 8. I think it's 8. Still pretty good. 18 total. If you count those 10 ones, you get... All right. Solemn Authority. Got it in my room. Blackwing Bristo. Yaksha. Sheen's Smoke Signal. Pretty decent card. Card, Curry. Gold Dust. Odin's Eye. And the Cosmic Updose. I mean, we're probably, like, barely over halfway. We've pulled 8 foils. I mean, that's pretty good. If we can keep that rate up, we're going to be doing pretty nice on this thing. Give us that Ghost Rare Terminal World. Sheen's Scheme. Blackwing Bristo. Oh, Card, Curry, Steel, Shogun. The Synchro got me. That's not 28. I was like, I don't know what this is. We get this, like, every time, too. It's not always an Ulti. Sometimes just an Ultra. Wow. Another Ultimate Rare. That's two Ultimate Rares. A Secret Rare. We've got four Supers. We've got two Ultras. This is a pretty good opening so far. Wow. It just doesn't stop. Hopefully it doesn't, at least. I don't want it to stop because this is very enjoyable. I love pulling Fire Cards. Let's get some big Rarities. Okay, Ghost Rare. Let's get a Ghost Rare. Hourglass of Courage. Card, Curry, Ninja. Token Sunday. Watt Mole. Okay. Look at this artwork. What is that? What is that? The Kaigeki. All right. Nice. Sticky Curse. Card, Curry. Watch out. Next pack. Some of Ragnarok. All right. Bristo. Yaksha. Card, Curry, Ninja. Vylon Matter. Foolish Return. Kagemusha, Zero Force, and Scrapshark. Next pack. Here we go. Vylon Matter. She and Squire. Nordic Relic. Game Mirror. Game Mirror. And the Scrap Worm. All right. We're on a little bit of a cold streak here. Can we bring it back? Can we get something bit? We've already gotten so many good cards. I don't... I just want to ask for that Ghost Rare. We've got to get Robert that. Let's get it for him. Vylon Matter. T. Sol. She and Ski. Bloodsucker. Dverge of the Nordic Alphar. All right. We're hitting all the dud packs now. All right. Can we bring it back? Can we get back to those insane pulls that we were pulling early on? We have a She and Squire. Nordic Relic. Lavatine. Gamer. Legendary Six Samurai. Mizzahoe. And Scrap Worm. All right. Mutable. Okay. All right. There's some sort of alarm going off down there. I don't know what that was. So we're just going to keep going here. Hopefully it was not something bad, I guess. She and Squire. Nordic Relic. The Aesthetist says I want the Six Samurai. Okay. Token Sunday. Wait. Token Sunday. Stampede. This is a different card. All right. We've still got like six packs left. Can we pull anything else? I mean, we pulled a really pretty good ratio. I wouldn't say really good at this point, but pretty good. And so anything else is just a plus. This kind of reminds me of a Super Battle Droid from Star Wars. Wattkey. We got the Worm Jet Clips. Stardust Shimmer. Makes another appearance. Second Stardust Shimmer. Then we've got ourselves the Goldfake. All right. The Goldfake and the Karakuri Watchdog. Still a few more packs. Can we get that Ghost Rare? The Ever-Allusive. Odin Ghost Rare. Been eluding us for many years. Sheen Scheme. Bloodsucker. We've got a Trap, Black Boost. And a Diverge. Okay. Zero Force and Legendary Six Samurai. Where are you? Hello. Bring us some luck. We've got the Gamir. Six Samurai and Mazuhou. Cash Cash. Bloodsucker. Oh, I haven't brought up Cash Cash the whole time, which is one of the most epic cards. Three packs remain in this opening. We've got to get Robert some... I mean, we've got him some good stuff, but let's get him something better to end. Got it on my own. Bristow. Yaksha. Legendary Six Samurai keys on. This is a pretty decent one. I think it's like $5 super. That's pretty good. It was like 10 for a while. I think it may have gotten either reprinted or just gone down naturally. We will take that. That's not a bad Super Rare. Now can we end it with a Ghost Rare? Two more packs in the opening. Let's see what we can do. Black Boost. Mazuhou. Hourglass. Top Runner. Nordic Relic. Gungnir. Okay. NTEers. The final pack of the opening. Bless us with luck. We need to pull the Ghost Rare. Top Runner. Wattkey. Warm Jackalips. Hourglass of Courage. And she in Smoke. Oh, all right. No Ghost Rare again. If you guys enjoyed the video, make sure to subscribe for more epic content because we're going to have more awesome videos like this in the future. Shout out to TCG, Trusty Cards, Toe & Foe Show, Tomato Juice, Noah J, Hawaiian Yu-Gi-Oh, Stanley, Mike, Nance, Mimic, Gekko, Duelist Kingdom Cards, Spanky, Minfarlin. Thank you guys for supporting the channel, and I'll see you guys next time. Peace.


All right, good afternoon, everybody. My name is David Lu, and I am the Python Technical Consultant Engineer at Intel. So normally, a lot of my focus is on the numerical and scientific side. But occasionally, I have a big past in my work in infrastructure. So on that topic, I've come up with some interesting ways of using Buildbot. And so I thought I'd give you a chat on how I've done that. So just kind of as an overview, we're going to just talk about what you can do and what I mean by infrastructure design patterns, what Buildbot is. We're going to talk about hooking things up in unusual ways with ports and multi-masters and pseudo remote procedure calls. And then drop into when to use containers, putting it all together with Python, and then talking about some more live examples and things that I've actually implemented in the real world. So just on the term of infrastructure, I know this term gets thrown around a lot. So what exactly is infrastructure? Is it automation? Is it orchestration? Are you talking task runners or distributed task runners? I think there's a lot of confusion as to what this actually is. And many options actually exist in the Python world for what you may need. So you can have Dask, IPyparallel, and Jabla, which are more distributed task runners for numerical work. You have orchestration with Chef and Puppet. You have Celering Kafka, which are also heavily tied in with Python that are more automated task scheduler runners. So many of these examples are very heavy-handed. So they'll do a lot, but you have a lot of setup because they're not necessarily meant for this specific task. So you usually have one solution that's way, way too complicated for the job that you're actually using it for. So some examples of these really odd things where it's too heavy-handed would be a distributed task system such as Dask, which I really, really love, to run a cron job, which is completely out of the scope of what it's supposed to be doing. So it's not a good use case. Trying to get Celery to do a MapReduce operation, which it generally doesn't like to do, or trying to get Puppet to make a task graph. So these are all examples of when you basically have competing features that don't exactly fit under the paradigm of whatever task you're doing. So you're using these frameworks against what they were designed for. So to get out of that mentality of using just those big pieces, just to kind of force them into a certain direction of what you want, the way that I've approached it is to take other frameworks that are loose enough that you can use as building blocks to get that. So one of the ones that I use is BuildBot, which is normally used for continuous integration. It's written in Python and uses Twisted as its backend. It's been pretty popular because it builds the actual Python language. And I think a few of the languages like Rust. And you can construct elements of it in really weird ways. So just like Lego blocks, you can just take pieces, bits and pieces, and arrange them in an odd order to get the job done. So continuous integration or CI tasks generally incorporate a lot of interesting pieces. You have a scheduler, you have dependencies, and you usually have some sort of result at the end that you're trying to achieve. But the main task components are actually composed of other primitives that you can break up into smaller pieces and utilize if you choose the right pieces. So some of the examples of these pieces are what you see up here. Some of the more notable ones are triggers, resource pools, distributed to some communications, the scheduler itself, build steps. So a lot of these you've probably seen if you've ever done any type of continuous integration or build. So when you look at these components in your head, you think, okay, this is meant for this, this is meant for this, but what I'm gonna hopefully show you today is that you can do a lot more with some of the components that I'm demonstrating up here. So one of the things that is unusual about Buildbot is that because all of the things are split up, they give you the option to wire them in unusual ways. And that's when they reveal the upper layer to you, normally you're like, for Jenkins or Team City, you're like, okay, I'm just using it in this format. But if you start to break out the pieces and say, well, I want the scheduler reporting to another scheduler, then reporting to something else, then you achieve some design flexibility. So before I go on to, there's a huge, huge warning as someone who is formally in the security field, the examples I'm about to show implement zero security. And before you ever put this in production or anywhere internally, just understand that there is very, very little security or orchestration that's going on. So just understand that before. And this is considered a very off use of Buildbot. So don't go asking the Buildbot people, hey, how can I set it up for this really weird off the wall configuration? Because it's probably not a supported use case. So the first steps in breaking out of just the CI mindset would be that the design patterns are most, you take the most common tasks and roles and interconnects that occur in software deployment. So you take a look and say, well, what type of roles are always there? And Buildbot is, again, just one way of solving this. So if you use it, you can just prototype something and then develop something else when you go to production. So some examples of what I've actually implemented and what I'll show you as an example, I've listed up here, enterprise application deployment and license management has been two of the most popular uses that I've made proof of concepts for. So we'll go into that in a sec, but there's other things that have been done before. So let's talk about what you actually need to start doing this. So Buildbot has a lot of interesting components when you need to actually work with a worker and a master. And one of the things it exposes is ports, but you can use the way that it exposes it in a non-standard way. So what I actually do is the change port in Buildbot allows you to normally say, well, I want to trigger a build from an external source, but what I'm gonna show you is that you can use a sim link call to a Python script, which then gives you a kind of a user level trigger to trigger a whatever you want. So it gives you that very much like a, like if you map something to user bin to it, you could actually launch an application. So by passing the argument, I can use of those through that Python script, I can also kind of remote procedure call into the worker because the worker is just interpreting it as Python and the port through the password. So you can actually inject Python code, again, you know, sanitize your inputs here, but you can do some really weird things with it. And most of that logic is controlled to the master.cfg, which is majority interpreted as Python code. So here's an example of what it actually looks like. In the Python, in the master.cfg, you normally have a change source, right? And you usually ask it to pull from a repository, oh, I'm pulling this repository all the time. Okay, that's great, you know, if someone checks something, it'll update. But then you can actually add a secondary change source and that's the method that I'm about to show you is I'm adding that secondary change source on a port and then injecting commands into it. So one of the files that you can use is the fakechange.py that they ship in the buildbot contrib and what it does is it accesses that port and sends the actual build command to the specific keyword project. So if you create the scheduler for it and you create the change request for it and match the two together, then you can send that change to the scheduler and then you can trigger whatever you want, be it an application, be it, you know, a task of some type. So I know this has been a lot of talking, I know you guys would probably like to see it in action. So here's kind of an example of it running. So in this case, I've actually sim-linked some commands to the Linux, sorry, to the Python script and I'm calling it and it's giving me a result back and in this case, it's actually running one of these, what I would consider a Linux-ish shell in Docker on a different worker. So in this case, from one space, I've actually triggered the ability to land a Linux session host or whatever, you know, in a big compute center right from just this simple pattern of injecting that code all the way into there and I'm then asking it to then build but in the build I'm calling the containerized application to then run to the user and in that example that just flashed before you, I showed the actual project command that was being used in it, which I think was right here.  Next, you can think outside of just the standard build process as you can start going into multi-master which creates some really, really odd situations. So you can go from one worker then being load balanced into another worker through either a multi-master setup or a resource pool-like situation. So one of the things that I like to say is don't hesitate to kick off another one of the subsets of build bot instances. You kind of have to just trust that. You've created an abstraction that mostly works and you can just kind of play around in that space but occasionally you will have to break out of just a single scheduler or master to achieve the task at hand. To also expand upon what I just said, what type of commands I'm actually injecting into the build bot worker is this example. So in this case I am hard setting this display variable so you can see if someone's display was passed as an argument during that fake change script over, you then assign that to the command that you're calling on the worker and then you will be able to call the entire Docker command. In this case, the top one is for Emacs and the bottom one is for the kind of retro terminal that I was showing just a second ago. So again, I can have these intermix even on the same worker with the same build script because you're essentially tying each of the commands to a different project of what build bot will consider a buildable project. So the reason that I'm even showing parts of Linux containers is that they have the advantage of being great abstractions to things that don't normally fit. So when something really doesn't wanna fit together or you have a bunch of dependencies, you can actually use the Linux container systems put together to actually equal a task and you can do that through Docker, you can do that through any like Rocket or any of the classic container technologies. And in the case that I was showing, I was actually showing Docker with clear containers underneath that prevent it from getting out of the KVM escalation. So with containers, typically what you wanna do is you wanna cordon off the riskier bit. So if you don't want things escalating out or you don't want users mapping things to the volume when you're using the container then or the application in this case, then this is one way of going it. And another thing that you can actually use is to provide privilege and non-privilege barriers to separate users. So you can make sure that that's an application that's very dangerous to something can't escalate out into something else. And at some point you may need orchestration to pull off tasks. So just know what responsibilities you want and what technologies and depending on the problem it depends. Orchestration, you could, most of the situations I've never had to actually use orchestration to pull something off because I've seen some dangerous things with Puppet. But if you need it or if your organization uses it then it's something you can consider and like what I was saying before, if all else fails just bundle everything up in a container and automate that as a single component. So in the concept of Python, the reason that this does have a critical component in Python is that the code that you're passing from even your script level application that I was showing the fake change that was sim linked, you can pass in Python code that gets passed into master which then gets passed in all the way down to the worker. So you're essentially hopping that code from two or three machines to wherever the resources are. So if you have a very specific build of Python or NumPy, you can pull it off pretty easily to get that command over and Python is, as we know, one of the best glue code capabilities in infrastructure. So that's another reason that I think Python has been a very critical piece in a lot of the stuff that I've designed. So I'm gonna show off two things. I'm gonna show off the how a company-wide server application deployment works and that's actually, again, using the same mechanism which is sim linked Python scripts and then we have the license server for a floating license. So if you have, say, an application that has a floating license, but it can't get out because of a company proxy or firewall, then this is one way that you can actually balance that license without having contention on the given application resource. So the way that I've designed this first example is that you have something, a user bin that's mapped to the port change that I just demonstrated and that talks to another server. So not like your user computer or the login node, you're talking with something with full privileges and it's running the application for you and handing back the x-forwarded screen which becomes your application screen and you can update the applications basically on the back end through any type of repository system. In this case, I'm doing it through Docker repository and stuff and you can spin up new workers if you need more instances. So that's kind of where I've heard orchestration comes in handy is if you can do pseudo load balancing with it as you detect stuff. So in this case, what I'm gonna show you is how I set this entire example up and the first thing I do is I run the, I have a Docker compose of the three containers that are running both the master and one of the builders. So I have both a master, a builder and then I have two workers that I'll individually start up. But in this case, I'll start showing you what the worker looks like and the fact that Buildbot does come with a GUI. So when you wanna look at the dashboard, you can actually see what's going on and interact directly with it. So for your users, if they're doing stuff that requires direct application launch, it might be useful. And in this case, I'm going to, it's local, it's local page and you can look at which one of your workers are up, which tasks can be accomplished with which workers. The concept within Buildbot is that you tie very much the resources and the capabilities of giving a worker to a specific job. So in some cases, maybe one worker can do two of the jobs or one worker can do three of the jobs depending on what application you want it for. And so in this case, you can actually see that I've started it up, but the workers are offline. So really I can't do anything until the workers come up. And so you can simulate that as saying, well, I don't have any privileged resources of where those application servers are actually running. And so I have to go start those up. So in this next part, I'm then going to start this up and notice how dangerous this exhost plus is. I'm just gonna point that out here. I'm starting up each of the workers and you'll notice that they'll connect to the master instance. And so in this case, they're communicating with each other and hopefully when you look at the main page, I think I screwed up over here somewhere. Yeah, okay. When you look at the main page, you'll see that both of the workers are online. They're now green and they're showing that they're capable and ready to work. And I think, yeah. So you can see the two names of the workers. So say you have a given application that can only run with that particular machine or has a given processor or mechanical or computer setup, then yes, you would need that. And then I can actually start the job through either the change port or I can start it from the GUI. And in this case, I'm running Emacs and you say, okay, that's cool. That's just Emacs. Well, actually this is running inside of a Docker container that's then being controlled from the actual build bot worker. So its ability to manage these is really useful when trying to load balancer applications or prevent or being able to administer your applications if you're an IT administrator of some type. So let's see. So the next one, hopefully, will show a little bit more information about what you can actually see from this side. So say your application, you can see who ran it for how long. You can see how many times it was run and who's currently running and how many things are being used. So I think all those are really important. And again, you can see the SIM link to call. So in this case, instead of calling it directly from the GUI from the dashboard, I'm then going to call it from the same way through the command line that's been SIM linked all the way through. And again, you can see it's started up and it's running and you can see the current state. So in terms of being able to make proof of concepts very quickly with this, it's super useful when you want to see what's going on underneath the hood especially with the dashboard. But again, I want to stress that this is really, really just super useful for proof of concepts and that maybe this would be better if you migrated to something else as you figure out what your needs are as you go into a production system. So again, you can see that these are two completely different Docker instances of Emacs running. And as we close them, you can start seeing them cordoned off and everything. Cool. So in terms of a floating license, right? So you don't have to do too much different in that previous case to now do a floating license. So the license can either be held by the database that's attached to the Buildbot master instance or you can use some type of actual build logic within your build scripts to accomplish that. So again, it doesn't seem too different from the previous example. And I'll hopefully show it here. I'll see if I might have to fast forward this in the sake of time. Okay, so I'm gonna force one of them to start immediately. And so let's just assume I have two pools or I guess I have one pool with two slots, right? So instead of those being machines, they're now instances cause you can start up the Buildbot workers on your whim. So maybe you have one machine that has 50 of these workers and that becomes your resource pool, right? So now I have one started up and now I'm gonna try to start up a second. Let's see, I might have to fast forward through it. Okay, do I get it eventually? All right, cool. So once the second one starts up, you'll notice that both of the workers have now been taken up. And so right now they're flashing yellow because they're both being taken up. So if this was your resource pool or this was your license, the amount of licenses that you had for the given application, you can then block the next time and queue to the next person that actually accesses it. And then when that other person closes it, the next person in line gets it. So in terms of queuing for the users, this is really useful in kind of an enterprise-ish environment where maybe someone says, okay, they're gonna be using the application until lunch, I'm just gonna queue myself, I'm gonna go to lunch, come back, and hopefully I'll have landed my session by then, right? So if I take one out, I can then queue one, which I just showed, and then the next one will start up and now both people, again, the next person in line has it. So you can use, again, the thought of this pattern, what exactly here is abstract? The workers are abstract as either pieces of the resource pool or they can be used as another part of the whole as a license server or how many licenses you have or you can spin them up on demand based upon load. So the types of things that I've actually done in industry to create a proof of concept or give maybe a small company one way of actually creating their own internal infrastructure is by using something like this. So we've done it, I've done a session, a compute session Linux handler. So you can then use the X1140 like I just showed to pull that off. I actually have like a home machine learning server which I use to kick off jobs and it constantly computes geographic data as it's updated. And so to go back to the previous example of one that worked, the compute server was a little more complicated than the one that I showed in the video. So we did have a login node that we had to model that was a smaller machine that had smaller processes and then we had one that was a large server farm and we used those that had full resources and privilege to have there with the workers and then with BuildBot Master and the session queue you would keep those for the people who are logging into that node. And so with the landed sessions, we were able to scale this I think to maybe about, I think the most I've ever seen was maybe three or 400 users and this was on a very small setup like with a login node of maybe one machine. So I think that in terms of making a proof of concept for what your infrastructure should be like then it would be useful at that point and then as you try to scale it up to something else you can look at other types of infrastructure components to pull that off. The machine learning server that I implemented utilizes more of the continuous integration components. So I actually have a BuildBot Master again with the session queue. The worker that's basically running all the time actually pulls from a live data source and then when things have updated correctly and it gets enough aggregate data it then sends it off to the compute workers and then posts that back on my screen and that's all automated on my like, right above my couch I have this monitor that runs all this stuff so I can see what the aggregate data for that thing is. So again this is another utilization of the components but for a completely different purpose. So in summary with a little bit of ingenuity and creative use of components you can really pull together a lot of infrastructure design patterns that appear in like software and IT with creative freedoms because as more of these weird frameworks and technologies get released your ability to create new and exciting infrastructure patterns just get better. So being able to rapidly design these things with this method allows you to look at inherent problems and maybe the way you've set things up before you go to a full scale set up and I'd also like to state that remember the examples here are not shown with any security or orchestration so just be very wary of that and then one of the things that you can do also is just keep an eye on the upcoming technologies that show up. I remember trying to do this before the days of really trendy livings containers and it was pretty difficult in some instances and that just opened the doors up for other things. The orchestration technologies opened up another door of things you can possibly choose to do and then you can experiment with new tools often and see what patterns can be made next. Okay, that's just the build bot and questions. No questions? Questions. Okay, we have one question. Thanks. Do you have any experience with a build bot Travis which is providing a Travis YAML file integration into build bot? No, but I have started looking at experimenting with it. I was really excited when I wanted to make some of my own open source projects built with it and I haven't really gotten the chance to experiment with it but I do look forward to experimenting with it. Another question? There's one here. Great talk, thanks. You mentioned that a lot of these are proof of concept and the security needs to be worked on. Are you gonna pursue that at all to give people tips on how they could secure it or is that kind of left to the user to figure out? I mean, I think with how different, a lot of infrastructures are with different companies and this is more in the domain of IT security which is less of an area that I was in. I would really just, I don't have that many tips to give. I just know that I've left a lot of holes open and I'd like to trust my network IT guys and security guys about what they think should be done in this case. Any more questions? Thanks David. Give him a hand.