I see it. I see it. I see it. It was like a movie. I got shot right here in the shoulder. I can show you. I got a bullet. You can see it's kind of like sticking out my back right here. So it came out. So no, the first time I got shot was right here through my shoulder. Boom. And it came out. What did you do? You went to the doctor. Went to the hospital and I got checked out. Nahumia discharged me the same day. Yeah, we on boss talk one on one. One on one. Yeah, we gon' talk. So let's talk about the first time you got shot. I got shot. I got shot in my hood. The first time I got shot was in my hood. Why in your hood do you think that you'd be protected? I'm six foot nine. But you think that you'd be protected by the people around you. Six foot nine. You ain't six nine. I'm six foot nine. I'm six eight and a half. I'm six eight and a half. I'm six eight and a half. My brothers are six eight and six nine. I'm six eight and a half. So you in between both of them. So you mean to tell me if, so just imagine this. Okay, so growing up, you know how it was easy for like, the dudes on the block to sell work and get that off or sell weed, whatever they was doing.   Exactly. The police see me down the street.  They gon' see me. Yeah.  You know what? That nigga is getting caught every time. Everybody else get away. Yeah. This big tall nigga trying to run.  That nigga know we know is him.  You probably wasn't fast. I play college football. Hold on, we gon' talk about it. Before I got shot up, so my first time I got shot, I was in my hood. How old were you? I was like, this was like the summer of, this was like, I was in high school, but this the summer of when you finished high school. Like it was that summer. Getting ready to go to college. That summer. You know what I'm saying? You know? It wasn't for you or was it? It wasn't for me. So let me explain to you. So what happened was, it's this dude, right? So he come over, he's not from my hood. So he come over, he see his, he gon' see his baby mama. So I see him. He say what's up to me every time, okay? He not from around here. Boom. One day one of my homeboys that's not from my hood, he chillin' in my hood with me. He robbed the dude. What?   I'm a young dude at the time, but I'm not in that business, bro. That ain't got nothing to do with me. You're gettin' robbed. That's on you. That's how I was. I'm not about to save you or nothin'. So he lookin' at me like, come on, bro. You see me all the time every day. You letting this nigga rob me? I wasn't lookin' at it like that. So he came back shootin'. He came back shootin' and he shot me. Because you was around in there. I was right. He felt like, bro, come on, bro. Yeah, I shoulda stopped it. Right. Right. Exactly. You coulda stopped it. I coulda stopped it. But I'm one of them dudes that, one of my own business, I ain't got nothing to do with that. That's on you. I wanted them doin' that time. I was like that. You know what I'm sayin'? And I didn't really have a super personal relationship with this dude. Yeah, I seen him. He gon' see his baby mom. He was cool. That's it. But you know what I mean? You ain't from Hoover. You ain't from Hoover. You ain't from Hoover, nigga. You know what I mean? So I'm not about to... That's Hoover that got you over there. And I know them dudes, too. Come on. You know? See, he didn't see coming. So he came back the very next morning. I'm talkin' about, I got shot. Every time I got shot was in the morning. Oh, bright and early. I got shot like at seven in the morning. No, so you didn't see it. Man, he came in the morning time. Oh, so you... It was seven in the morning. How did you know it was him?  He come out the one more time. Somebody was drivin'. I seen it. You ain't doin' it. I seen it. I seen it. It was like a movie. I got shot right here in the shoulder. I can show y'all, but I got a bullet. You can see it's kinda like sticking out my back right here. So it came out. So, no, the first time I got shot, it was right here through my shoulder. Boom. And it came out. What did you do? You went to the doctor? Went to the hospital and I got checked out. And the homie discharged me the same day. It didn't hit no vital organ. No, thank God. Thank God. And then that was that one time. That was shot. Did you see him again after that?  His baby mama moved out. Everything. They left. They knew what time it was. They knew what time it was. No, they knew what time it was.  Let's get this done. But he came back like he posed to. Yeah, almost that. He came back. He had to come back. I respect it. So what did Robbin for, though? Do you know?  Wallets. That's what I'm saying. Nothing. Miscellaneous.  So as he getting robbed, the homie like, you know, give me your wallet. Check your pockets. Checking his pockets. I'm sitting here looking like, damn. You know what I mean?  You know what I'm saying? I'm looking like, damn. You need to do that, nigga, too. Nah, he wasn't around. You know what I'm saying? So he just got to. Because the homie that was robbing him ain't from Hoover. He was just a homie that my- You should have stopped it, bro. Yeah, yeah. You knew you were wrong after what- But the homie that was robbing him, he was like older than me. You know what I'm saying? I was cool with him. Kind of looked up to him. You know what I'm saying? So I didn't really, I could have been like, come on, man, I know Duke. You know, it was just like a tight situation. So I didn't, I didn't, I didn't, I didn't, I didn't.  You learned your lesson from it, though. Yeah, I learned the lesson.


What is going on guys welcome back to the channel and I appreciate you being here today We're going to take a closer look at the latest roadmap for destiny 2 now We got one just after the patch 1.1.2, which is about a month back last night They released an updated version of changes coming through the game. So let's get into it on February 27th We will get nightfall scoring and high score tracking Destination emblem variants crucible emblem variants and nightfall emblem variants these variants I do believe offer a certain team wide buff and they're also the new home to rework to others This I'm going to gather more information on and bring you a video explaining exactly what this is pretty soon So stay tuned Fireteam members on destination maps this allows you to bring up your world map and it will show you exactly what area of That planet your fireteam members are on PC public text chat ups in companion mud shader interactions and prestige nightfall challenge cards version one With the 1.1.4 updates to the sandbox and crucible on March 27th We receive the following weapon and ability sandbox changes This is without doubt one of the biggest and most anticipated updates people want to see so details here will be Extremely interesting Heroic strike modifiers. I am banner 6v6. I cannot wait for this 6v6 in PvP will be absolutely epic I am absolute certain weekly crucible playlist featuring mayhem and rumble I know many people here will be happy about this me personally I wasn't really a massive fan of rumble, but I did indeed love mayhem Crucible ammo and gameplay tuning crucible quitter penalties repeat map and strike protection This was annoying and getting the same PvP map five times in a row was a bit much to be honest Exotic repetition reduction. Now. This was supposed to drop on February 27th It has obviously been delayed along with nightfall strike unique rewards and companion vendor viewing These also were supposed to drop on February 27th moving on to the 1.2.0 update Which drops in May eat of worlds prestige mold seasonal crucible rankings Private matches vault space increase multi-emote exotic masterworks Season of vendor progression faction rally improvements and exotic weapon and armor sandbox changes Interestingly these sandbox changes were noted within the last roadmap to becoming in March Obviously, they're not happy with a certain set number of things and obviously have decided to delay them even further Now these road map changes are not set in stone with these updates as we have learned from the first roadmap To this one things can be delayed Also important to note the changes coming in May with the 1.2.0 update Could be up to two months after the march update But in all honesty people in my opinion, that's fine The changes they mentioned here coming over the next month could be enough to see many people head back into the game The sandbox changes are the real important thing here What people want to see is faster movement speed and quicker ability cooldowns that paid with 636 pvp And the changes coming to ammo and such could be great making it fun and fast paced like d1 was Also with the addition of mayhem and rumble these changes could be indeed quite good But i know what you're thinking they are great for the pvp player What about pve player such as myself? Although some of these changes do seem great such as the emblem variants and the all reworking around them Also the nightfall scorn and so forth they seem good But i still don't feel there is much here to bring the pvp players back In may we get the next dlc this for me logically is the time some pvp players might come back and see what's happening with the game With the addition of some of these changes made within these updates it could be good We will see i've said it before though these changes seem to be built into a better end product That end product should be in place within that dlc expansion too and when that drops from there on it should be onwards and upwards But on that note guys i am Out if you guys did enjoy the video leaving a like really does help me out Thanks as always for stopping by if you're new around here and enjoy daily destiny videos Even though it's dry be sure to subscribe But thanks as always for stopping by and hopefully people i will see you on that next one


What's up, everyone? Take down here, welcome back to another comic book video. Today I'm gonna be going through some comics that I do have to sell. They're all holographic or foil covers or just special comics that are worth more than my typical one to two dollar comics that I have been selling for the most parts. A few of these are $5, some of them are $10 to $15. So around that price range, but it is some X-Men, Spider-Man, and a whole bunch of others, mostly foil and holographic covers as well. So let's just get straight into this. And again, these are ones that I have to sell. Some of these I already have in my personal collection. They're just doubles that I do have now to sell. And eventually I will show you guys what is in my personal collection because there's a lot more than what I'm gonna be showing you guys in this video. This is just from some of the lots that I've picked up, some of the doubles that I have found, and I've decided to finally go ahead and sell them. So first we have Web of Spider-Man, issue 90. I absolutely love this. I have a complete set of this in my personal collection. I think for the ones that I have to sell, I'm only missing the black cover. I can't remember which one it is. This is the Spectacular Spider-Man 189. Absolutely love them. They just, to me, look amazing. Spider-Man 26. And then we have another issue, 90. This one's kind of gold compared to the last one, but. And then another blue 189 Spectacular Spider-Man. So the one I'm missing is the black one. I think it's the first appearance of a Spider-Man 2099, which I do have in my personal collection. It's the first appearance of them anyways. This one here is the Infinity Crusade issue one. A nice gold foil. Absolutely love that. Then we have the X Factor issue 10. This is the 25th anniversary border comics that I'm actually on the hunt for. I'm gonna be trying to, in the next couple of years, find them and add them to my collection. I've already went through my collection and seen which ones I have and wrote them down. Now I know which ones I need. I went through the list and found them. So I do have this one here and I do have another one as well. So those, again, hopefully, I know some of them for the border ones. They're really hard to find, especially Care Bears and ones like that that were more tailored towards kids. Some of them are extremely expensive and they're in rough conditions. So those ones that are expensive are probably gonna be one of the last ones that I purchased for myself, but we will see what we do find. Next is Guardians of the Galaxy issue 25. I actually already sold this one, but I'm just making the video before I go and ship it. This one did sell for $10. It's a nice foil cover. I almost have a complete run of the Guardians of the Galaxy. So this one here was for my personal collection because I did keep an extra copy of 25 for my foil comics, but I decided to go ahead and sell it since I do have an almost complete run. Next, we do have a Turok Dinosaur Hunter yearbook issue one. I think this one I have listed for about $5. And then we also have another Turok Son of Stone issue one. Really cool. Ghost Rider Wolverine Punisher, Hearts of Darkness. Now this one here, I think I have a few copies of. I don't know where the other one is, but I decided to go ahead and list this one in case I do find the other copies. I think I do have one in my personal collection as well. Next is Venom, the Madness part one of three. This is issue one. That just looks amazing. Juggernaut in the eye of Venom. That just looks really cool. And this is another one I'm on the hunt for my personal collection that I want part two and three as well. So I gotta start looking for those. Then we have some sealed comics, which I do have a few more for X-Men and a few other ones that I just forgot to include in this video. So these ones here, it's not a complete set. I think it's missing Morbius issue one that's sealed. This is Rise of the Midnight Suns. This is Night Stalker's issue one. Sealed with the poster. These ones here I'm selling for about $20 each or a deal if somebody buys them all. Rise of the Midnight Suns, Ghost Rider in Blaze, Spirit of Vengeance issue one. Darkhold issue one. All of them have the poster on the back. Ghost Rider 31 and Ghost Rider 28. So absolutely love these. I actually have a complete set in my personal collection just to read. Some of them include the posters. I think Morbius issue one, it does not include the poster, but I decided because I wanted something in my personal collection that I could still read. I decided to go ahead and sell the sealed ones instead of looking for a sealed Morbius. That to me was just a better decision to have ones that eventually I could read but also keep in my personal collection. Next are amazing foil comics that I actually have a complete set in my personal collection. This is Avengers 369, which that just looks amazing to me. A complete foil cover, absolutely loved it. This one here, I actually listed it for 15, but I did sell it for $10 along with the rest of the Avengers ones I'm gonna be showing you guys here. So 363, looks really cool. Another one that sold for 10. Avengers 360, this is the bronze one, which I don't know, that just looks amazing to me with vision on the front. And then you guys have the gold one, that is 366. The only one that is missing to have this complete set is the red West Coast Avengers, so it's a red foil. This looks really cool though. All of those did sell for $10 as well as War Machine number one. I think I have War Machine 126 in my personal collection, so this one here was a double so I decided to finally list it. It's all War Machine is foil. It's kind of hard to tell. Then we have X-Men issue 300 with the X-Men symbol in the back, which is kind of like a rainbow foil. Looks really cool. This one I already picked up a couple months ago from my personal collection, possibly on a deal on eBay, but then I ended up finding it in one of the locks that I did purchase to flip. We do have X-Men 2099 issue one. This one here, I might have a whole bunch of copies for. This one here, I think I only have it for $5 because I think it's only around $5 to $10. But yeah, I already have this one in my personal collection as well. This one here I recently just found. Avengers The Crossing. It's just a different kind of foil comic on it. Really, really cool comic though. We have X-Men Alpha issue one. Again, a nice foil on it. Nice shine to it. This one here is Strayfee's Strikefile. Not really familiar with it, so I did, sorry if I did butcher it, but this is issue one. He kind of has a shine to it. That's why I included it in it. And then we have some nice hologram ones. So this is X-Factor 92. Looks amazing. I have a complete set of this in my personal collection. So these are just doubles that I did find in different locks that I did buy. We do have a second copy of that one. We have X-Force issue 25 as well. Looks really cool. We have X, and Kani X-Men 304. And we have X-Men 25. No one we're missing for this set is X-Caliber. I wanna say 25, but I might be wrong. But I do have that one in my personal collection. So I have a complete set of this in my personal collection as well. But these are the doubles that I do have to sell. So these are the comics that I do have that are all foil holographic ones or other special ones that I decided to list them individually instead of putting them in my big lots that I usually do sell or even putting them in mystery boxes just because I knew I'd get a little bit more money out of them as my typical boxes would get. Now in the future, I will show you guys my personal collection of all the special foil comics which include Fantastic Four, Thor, Incredible Hulk, and a whole bunch of other ones that I didn't share in this video along with possibly some of the ones that I did share like the Spider-Man, I have a complete set of that. Venom, Lethal Protector, I do have a complete set of that which is amazing, I absolutely love that. And a complete set of this X-Men set as well. So I'll show you guys that in the future, but these are the ones that I do have to sell. Now I did sell I think six of them for 60 bucks so far and hopefully I will sell the rest hopefully fairly quick. But I'll leave this video here. Hope you guys enjoyed it. I'll see you guys in the next video. Please take care. Peace.


14th, 1775, the birth of the United States Army. For three centuries, soldiers defended a nation younger than itself, answering the call to serve and protect the American way of life. With an increased demand for support across the globe and a demanding training regimen, it's precious resources and higher demand than ever before. We must invest in our most valuable asset, soldiers, by utilizing the next generation of health and fitness to win our nation's wars.  Technically and tactically proficient and masters of their craft, soldiers defied the odds in the face of adversity. Holistic health and fitness launched in October 2020, and we have fully immersed our soldiers into this new standard of living that combines all aspects of physical and non-physical human performance, changing the culture for the demand of close combat, increasing readiness and legality in America's fighting force. We have a responsibility to ensure soldier readiness, both physically and mentally, for the demand of real world missions at home and abroad, while creating a roadmap for peak performance, readiness and resilience. We must educate our soldiers on the resources to influence positive, self-sustaining cultural change across the force. This investment ensures soldier lethality and readiness, optimizing performance, reduce injury rates, rapidly rehabilitating, and improve overall soldier morale and effectiveness. The Army battlefield operates across five domains, and a victory doesn't reside in one alone. Building Army strong tactical athletes fit and capable of meeting the intense demands of combat, maintaining character, interpersonal skills, and emotional control with resilience in the face of risk or adversity, developing personal values soldiers need to sustain them in times of stress, hardship, and tragedy to ensure maximum readiness. To educate soldiers on the importance of properly fueling and hydrating prior to every mission. Giving soldiers principles and techniques for maintaining the most important part of the body, the grain. H2F is a constantly involving program that gives soldiers the best guidance for training, nutrition, recovery, and overall well-being. It keeps our soldiers ready for anything, and possibly affects performance on and off duty, striving for a healthier and stronger Army.


Hello and welcome to this webinar on Reddit Quay and OpenShift, how to run Quay on and how to use Quay with OpenShift. My name is Dr. Cameron, I'm the product manager of Quay, and I have with me Andy Block, who is one of our leading experts in delivering Quay in real-life deployment in customer environments. And at the same time, he wrote a couple of things. He wrote the initial prototypes for some of the stuff we will talk about in this presentation. And again, he's one of the experts for both OpenShift and Quay. With that, let me start with a high-level slide explaining why OpenShift is one of our focus areas looking at it from a Quay site. So OpenShift is our enterprise company's distribution provided by Red Hat, and it's our primary target destination. And we want to ensure that although Quay runs on any infrastructure, it runs best on OpenShift. So all the integration and improvements we did in order to deploy and manage and operate Quay, of course, are focusing on the Kubernetes capabilities and the OpenShift capabilities built on top of it. So the Quay operator is supposed to ensure a seamless deployment and ongoing management of Quay if it runs on OpenShift. We also added to other operators, we will talk about a little bit more detail in this presentation, such as the Container Security Operator, which brings the Quay and Clare vulnerability data into Kubernetes or OpenShift, and then expose it within the OpenShift console. And another operator we just introduced yesterday is the Quay Bridge Operator, which is supposed to ensure a seamless integration and user experience for all the different OpenShift workflows. By default, Quay has been written to serve content to one or more OpenShift clusters. So the more OpenShift cluster is probably the more appropriate use case for Quay, wherever they're running. So this doesn't matter. Quay runs on any infrastructure, both on-prem and public load, OpenShift the same. So it's a perfect fit if both are used together. There are a couple of benefits of Quay running on OpenShift compared with Quay running on standalone container hosts. This is still possible, it's still supported. But of course, running on OpenShift means running on Kubernetes and there are a couple of great benefits coming out. So you can effectively, from zero to zero, you can simplify your deployment and get started to use the product effectively immediately. Scalability, you can leverage all the cluster compute capacity management coming out of Kubernetes and OpenShift to automatically scale up and scale down. You have a simplified configuration for networking storage, all the entities which are managed by the orchestration platform in the OpenShift in this case. You have a better way to deal with all the configurations which are centrally stored in HCD. And of course, everything you do once, you typically do it more than once. So repeatability is another important point. And then we of course try also to leverage all the expanded options of OpenShift. So all the great capabilities OpenShift provides which are not by default included in a plain upstream Kubernetes environment but provided by OpenShift that's why it's worse for us to leverage them. Our focus, and as I mentioned, you can run Quay on standalone host. You can use it on standalone host as a matter. However, our focus for deploying and managing and container-wise application are operators. So this is really a company-wide focus and OpenShift is the leading element driving this container or Kubernetes operator adoption and we are following it. So the focus and direction of the product are Kubernetes operators. That's why we built the three operators we have in the meantime, the third one is what we launched yesterday and we can't afford to maintain another solution for standalone host, it's probably not worth the time. And probably with the next major release of Quay, Quay version four, it will be Kubernetes only because we really believe that Kubernetes is the future for container-wise applications. There isn't any other option or choice anymore. In the meantime, we have three different operators. We have the Quay operator we introduced with Sweden one. We have the container security operator and we have the Bridge operator. The Quay operator is really for the deployment and ongoing management of Quay and it's supposed to run on the cluster, on the OpenShift cluster Quay is running on. In contrast to the container security operator and Quay Bridge operator, those are two operators which are supposed to run on all the OpenShift clusters Quay serving content to, which could be the same in the single cluster setup. But typically, as I said, Quay is used to serve content to many clusters across the globe. And that's why the container security operator and Quay Bridge operator are probably running on more than one cluster. It's worth to be called out that the container security operator works perfectly fine with Quay though, but the Quay Bridge operator does not as of today. It's also important to mention that all the operators we developed, although they partially might work with OpenShift 3, we are only provide full support on OpenShift 4 primarily because some of the backend dependencies such as OLM are still in tech previous state for OpenShift 3. So we basically made the decision to ensure that we are developing against the most recent and most up-to-date version of our OpenShift container platform and that's OpenShift 4, which also means that future features we will introduce sometimes depend on newest capabilities we just added to most recent versions of OpenShift. So let's start to have a look how to run Quay on OpenShift. But before we talk about the Bridge operator, the Quay operator, which is supposed to do the deployment, let's quickly talk about some of the prerequisites and there is a dedicated recording available which talks about several prerequisites and options, architectural patterns and deployment options and we will get it out to YouTube pretty quickly as well. Just from an overall standpoint, so Quay can run as I said on OpenShift or standalone host and the default use case again is that Quay is serving content to many OpenShift clusters. So this is the default, this is how Quay has been designed and built to really work at scale across different regions, data centers and whatever. There was a clear line we need to draw between the components which are supposed to run on cluster versus the ones who are supposed off cluster and I will dive a little bit deeper into the details on the next slides but before I talk about the specifics for database and storage, let's have a very quick view on the Reddit Quay architecture. So effectively the product consists of a couple of container or three in the meantime four images and three operators and those are containers running on OpenShift in this case. So it's the Quay container, it's the Clare container, it could be the Quay builders, this is an optional component and the same with mirroring workers or those are other container instances which could run if repo mirroring is used. In front of Quay and Clare, you typically use a load balancer, it could be the HA proxy which is included in OpenShift, it could be also your own load balancer which already exists in your environment. The backend dependencies or all the containers of Reddit Quay are status components and the backend dependency is therefore critical, especially for HA and those are storage and database primarily. So all the metadata is stored in a database backend and only the binary blocks itself are stored in the storage backend. And then there's a third component which is worth to be called out but less critical, which is the latest cache. Effectively the tutorial and the build logs, so the Quay build automation logs are stored in the latest cache and that's why it's probably less critical than the database and storage. And then underneath there was an infrastructure and all the clients and UI, ECLI, API interactions happens typically via a load balancer to Quay and Clare and all the other components do not need to expose to the outside world. And then again, if the destination target for Quay and its content is an OpenShift container platform, typically on this platform, then the container security operator and the bridge operator is running and then connects on the same way and connection to Quay and Clare or to Quay mostly. I already mentioned that the Quay builders are supposed to run off cluster as of today. They require the runtime, the Docker runtime and they don't work with builder yet. It's a roadmap item which is not there yet. As of today, they can't run. So technically we got it up and running but we haven't missed the opportunity to document and also QE test yet. So we will probably add the ability to run the Quay builders on OpenShift on bare metal with the upcoming 3.4 version. Technically, as I said, it can run but we don't recommend to do today primarily also for security reasons. So builders should run outside. The database is effectively somewhat similar. So the database backend, we have a little bit more degree of freedom for Quay but Clare is currently limited to Postgres and that's why we recommend to use Postgres for both Quay and Clare. Since Postgres or any database is a stateful application if a stateful application is running on Kubernetes, we strongly recommend to use an operator. Since we as Red Hat do not ship in operator, we therefore recommend to use one of this party offerings such as the crunchy data Postgres operator which is one of the operators we are actively testing against during our QE cycle. So it's fully supported and tested by us and the joint vendor support as part of the Red Hat operator certification provides additional benefits for customers. If you run Quay on public cloud infrastructure we recommend to use the Postgres service which is provided by your cloud provider which by the way also applies to storage, Redis cache and anything else the cloud provider typically offers because then you automatically get the HA capabilities included. One short comment on disconnected or ergot environment. So although Quay runs perfectly fine in an ergot environment, Clare as of today does not because it needs to fetch the CVE metadata from all the different metadata sources we are leveraging within Quay, which includes in Clare. This hopefully will go away with the next release because ergot support for Clare is one of the top priority features for the next release. And with hopefully in other future releases we will introduce additional capabilities for ergot environments such as repormeuring, to-disk, export to and import from disk and so on. One of the other prerequisites I mentioned is the storage backend. We have a lot of different backend or storage backends we support AWS S3, Azure Blob, et cetera. And the recommended storage backend especially if Quay runs an OpenShift is of course OpenShift container storage, first to be called out that we are not directly connecting to the IH OCS backend but we are using the Numa multi-cloud object gateway object service instead. So this is an S3 layer on top of the underlying storage technology which provides a lot of additional capabilities we are leveraging and this is pretty important especially for HA setups. And again, the mission critical components for HA setups is the database and storage. And that's why this is probably important. How to use the OCS 4 version in conjunction with Quay is pretty well documented. So there's a cables article in the customer portal which explains step by step how to set up this configuration. It's fairly easy to use because both products are managed by an operator in the meantime. And this brings me so after you've satisfied the prerequisites you can start to deploy Quay and the way how we recommend to do so is using the Quay operator. It's worth to be called out that we formerly called it the Quay setup operator but obviously we wanted to change it because the primary purpose of an operator is not the initial deployment only but really the day two management and stuff and with the newest release of Reddit Quay we introduced a couple of feature we will explain in a minute which cost also we name it 2D Quay operator. And since Andy has written the original prototype of this operator, let me hand over to Andy to explain what the operator does. Thanks, Derek. So like most of any operator in OpenShift it is recommended and that you use the operator life of manager to an operator hub to be able to deploy Quay to your environments. This facilitates the integration of a lot of the role-based access control policies any dependencies that need to be resolved as well as the upgrade of the operator itself as soon as a new version becomes available for your cluster to be able to consume. Future versions of the Quay operator will be working to enhance more of the day two operations that are found in a typical Quay deployment. I will be walking through some of those aspects throughout the course of the presentation today. So to be able to deploy the Quay operator on OpenShift now number one the operator itself like most operators will only run on an OpenShift environment. So that is the first pre-work that you need to have a OpenShift environment. For those of you who have deployed Quay off of OpenShift you may be familiar with some of the challenges or lengthy processes for not only setting up and configuring Quay but also if you are looking to integrate Clare it also is a bit of a challenge to get all of those pieces all wired up together. Obviously once they are all wired up you get the benefits of the solution but some of that initial configuration can be a bit of a burden. The operator really goes ahead and facilitates and streamlines all of that and it is customizable. I work with a lot of customer environments where they have their own certificate management systems need to integrate their customer provided certificates. The Quay operator does provide options for being able to inject those configurations through OpenShift and Kubernetes native services like Secrets to be able to inject into the operator configuration. In addition it will also go ahead and deploy the Postgres databases that will be able to be served by Quay and Clare if you look to deploy that optional configuration as well as you can provide your own database if you have one already in your environment. It continues to use a lot of other Kubernetes native features like health checks and monitors and it will also set up the appropriate route external ingress points into the OpenShift environment. A lot of good features that the Quay operator does automate for you. Now in version 3.3 we have a lot of new enhancements to the Quay operator. Some of those that I called out earlier was new external ingress points. So if you're running obviously we want you to run an OpenShift but if you are running for the upstream community I know a lot of customers who like to, who don't really know anything about OpenShift they know about Kubernetes, they wanna get their hands on it. We do provide some more Kubernetes and friendly components like node ports and ingresses as external entry ports into Quay. Other enhancements that were added as part of version 3.3 is the configuration application does continue to run by default in prior versions we spun down the configuration pod by default but now we keep it running so that you can have ready to access to that part of the ecosystem for you to be able to access it if you need to. User configuration changes can be made after the initial deployment. You can use the config operator, the config app pardon me for entities that the operator does mark as read only but I have seen some individuals go in and modify the config.yaml file which is embedded into a secret in OpenShift. We do not recommend that because it will potentially burn into an issue where the operator will override some of the features and configurations that you do sets so I would not recommend that but you can go ahead and after deployment modify some of the components of the Quay ecosystem custom resources. Other enhancements regarding some of those enhancements to the Quay custom resources are now automatically reconciled by the operator such as the image, the replica account, the CPU and memory request for the various components of the Quay ecosystem as well as some of the Quay clear configurations and it means that if the configuration is changed the Quay operator can be configured to automatically redeploy your Quay components. Like all documentation for all Rehab products the latest and greatest can be found within the Red Hat Customer Portal and the documentation for the Quay operator consists of the installation of the operator itself how to deploy the Quay ecosystem resource, how you go ahead and customize that as well as some of the configurations that you can perform once the configuration has the operator has been deployed and Quay has been running for some time. All right, so now the most important thing for those of you in more of a delivery function is how to use the Quay Red Hat Quay with OpenShift. This is important, I've been working with OpenShift for about five, six years before Kubernetes even came out so I've seen everything from all the great features that OpenShift has provided that Kubernetes didn't have so that we can go ahead and now show you how to make use of those components using Quay itself and like any container registry Quay is just another external registry that OpenShift can consume from. So some of the things that you can leverage from Quay is to use it for the source and destination for builds that are produced within OpenShift. But most importantly, you're most likely going to be using Quay for your runtime content. This is your operational containers, they're gonna be running on a daily basis. Now you look at Quida.io, Quida.io is basically the source for a good majority of the foundational components for OpenShift itself as well as a number of the images that come with OpenShift. In addition, from OpenShift's point of view, Quay is just another external registry which means that you don't, which it means it is a bit of a difference from running and using images that are served by Quay externally versus the internal registry which means that if you are running a Quay itself, pardon me, you do not have the automatic RBAC isolation based on OpenShift cluster permissions with OpenShift's internal registry, you do have automatic isolation between the different components based on main spaces. That is not true when it comes to Quay, we're gonna call it some of the differences as we look at the presentation as well as if you're leveraging an image stream as a source for an image that's stored in Quay, you're not gonna have some of the automated components that you would if you were running an image that is being served by OpenShift internal registry. So if you're using Quay with or without the internal registry, Quay can be used with yes an external registry in front of an entire OpenShift cluster with its registry which means that you can go ahead and just leverage it like any other registry itself which is basically it's a source of image content and that you use and source appropriately from your different resources within OpenShift. Now what you can do is you can try to make the first steps towards a progression towards replacing the internal registry and part of this can be facilitated by a new operator that was released as part of version 3.3, the Quay bridge operator and we'll talk about that in a little bit. It basically tries to automate a lot of the components that are found within the OpenShift internal registry and with an OpenShift itself to be able to manage it all within Quay. Next we have, and this continues to bite me in the field constantly and if it's not proxies, it's going to be certificates at customer delivery sites. Certificate, almost every enterprise customer I have has their own certificate authority or one that is not trusted by a public entity. So you need to tell Quay and OpenShift to be able to trust these entities before you can source content. So there are different areas within OpenShift that you need to configure to have the platform be able to trust any external image registry and this is going to be everything from the underlying Krayo container runtime to be able to communicate with the external entity when communicating over a secure socket. You need to explicitly trust these certificates and then if you're leveraging the image stream feature with an OpenShift, you then must be configured additional areas within the platform for you to be able to have the platform itself trust Quay for being able to import content from it. This is all configurable and you can configure the registry itself to be specified as insecure, which means that it will bypass certificate validation, but this of course is not recommended. You should go through steps within OpenShift documentation to configure the platform to be able to trust OpenShift or Quay itself from an OpenShift standpoint. Now, one of the benefits of OpenShift is to be able to use and build images on the platform and you can go ahead and leverage Quay as part of this entire process. You can use Quay as a source for images. You can also use for it to be used as the base for any brand new image that you are building on the platform, as well as most importantly, you can use it as a destination for any build that is produced by the platform itself. There's a great documentation within Natal and the OpenShift documentation but also in the community it talks about the different configurations that you need to make to leverage Quay or any external registry as a source of content or destination for an OpenShift build. Two of the areas of concern that you need to be cognizant about are going to be the source and destination locations whether you're using a direct Docker image reference or an image stream. You cannot use a destination image stream with any registry except for the internal registry unless you are using the Quay Bridge Operator. So you would only be able to use a Docker image by default as a kind for a output from an OpenShift build to a Quay environment. But most importantly, if you are leveraging Quay itself you then would need to config and that Quay registry is protected. The authentication and RBAC mechanisms within Quay you need to configure the applicable push and pull secrets within your built configuration. Now if you do want to use Quay as a registry for OpenShift there are a number of things that you need to be cognizant about and this is going to be being able to change some of the configurations around the set of image custom resources that are found in any OpenShift environment. You can then begin to list the trust the list of trusted registries as well as I mentioned previously you can configure it to specify that Quay is an insecure registry and part of this configuration after you define it within the custom resource is driven by the machine config operator which will go ahead and configure the underlying cryo metadata and configurations within each individual node. As I mentioned previously as well, image pull and push secrets must be able to be configured if accessing any protected image registries as well as being able to leverage the Quay bridge operator to be being the first step towards that journey of tighter integration of OpenShift's registry within Quay. Now there are a number of common terms between Quay and OpenShift. I want to start a moment to kind of give a, some of you might be coming from more of a Quay background some of you might be coming from more of an OpenShift background I want to kind of do a one-to-one match in between the different components an organization within Quay is very analogous to a project for namespace within OpenShift a repository within Quay itself is similar to an image stream they see a collection of image tags that point to a single source. Image streams are a bit of a, it's very much like a proxy where it's kind of a view over a set of related images these images within OpenShift can actually come from different sources but in Quay they're obviously all going to be sourced from within Quay itself. Being able to manage access from a non-human perspective robot accounts are available within Quay for you to be able to integrate into external systems like a CI-CD system or for OpenShift itself being able to have platform talk to Quay you would use a robot account that is configured within OpenShift within Quay itself. Within OpenShift a non-user account is known as a service account being able to in the Quay bridge operator will actually take the service accounts that are configured in OpenShift and automatically go ahead and create the robot accounts. A Quay team is analogous to a group within OpenShift and then a build, both components have a very similar build functionality that is available in terms of function, you obviously have a Docker based build which is going to be in Quay and then you have various types of build components within OpenShift you have your Docker, your S2I, your Jenkins and your tech time based builds along with a whole new array of build options that are coming in the most recent versions of OpenShift. I'm going to turn it over to Dirk who's going to talk more about the container security operator and some integration with the OpenShift console. Thanks Andy, so I just realized that the order of the presentation isn't perfect we should have talked about the QBO right here because many of the things Andy just explained are at least partially automated by the QBO we will talk about them in just consider what I'm talking about here as a small disruption of the flow Andy kicked off. So let me talk about the second operator which has been mentioned on the original slide this is the container security operator. In case you didn't know, so Quay features are built in vulnerability scanning. Originally the previous version, version two has been limited to operating system package managers for various operating system types such as Reddit Enterprise Linux, obviously Ubuntu, Debian, MSLinux and other distributions, Alpine as well. And with the newest version of Reddit Quay we just introduced the initial support for programming language package managers limited to Python as of today as a tech preview feature. So we wanna run it in more testing environments we wanna get some additional feedback and input and then stabilize it in the next few months and then market SGA with the upcoming versions V.4. So Clare is a scanning engine effectively which has been developed by chorus for Quay. So it's really a very specific implementation of a very powerful scanner which is really supposed to run at scale because you need to keep in mind the same software we ship as the product Reddit Quay is what we use also for the hosted self-styled as a service offering called Quedo. One of the five biggest registries out there and that's why it really matters to us that whatever we do for both Quay and Clare it needs to run at the scale of our Quater.org deployment because this is something which really also differentiates us with from other vendors who are doing registry product as well. So Clare is a very powerful scanner. It's not only used by Quay, Quater.org and Project Quay it's also used by several other as a party projects and open source projects. So you might have seen that AWS started to use Clare as the backend scanner for AWS ECR and of last year as well. It's open source as Quay is. There was an upstream repository under the Quay umbrella in GitHub as well. And the scan results are shown by default in the Quay UI. So there was a deep integration between Quay and Clare. And what we try to achieve is that from within OpenShift so let's assume that the majorities of the cluster admin and the developers and the guys who are deploying containerized application on OpenShift they are mostly using the OpenShift console and not all of them automatically want to have access to just another UI which then contains even more information on various images, security, vulnerability, information and stuff like this. So basically we introduced already with Sweeter 2 and another operator, the container security operator which runs on OpenShift so on the OpenShift cluster Quay is serving content to and effectively what it does it fetches the vulnerability information from Quay and Clare and then stores it within the clusters or in the CR and then visualize it in the OpenShift console. So what it does, it's an operator which is running on OpenShift and watches the pod objects and each time a pod object is changing then it reaches out to the registry the image has been pulled from and tries to fetch the information from an API from a security data API currently this is limited to Quay as of today and Quay does, it also works with the hosted version but we are working with several partners on allowing them to plug in where the same concept into OpenShift as well. Yeah, so it's a custom resource which is stored into the data is there you can query the custom resource also via a CLI command I will talk about in a minute and then the information it's also shown in the console so how to deploy the container security operator is fairly easy so it's shown in the embedded operator hub as part of OpenShift you can simply deploy it on your OpenShift cluster and all M takes care so the operator life sector management takes care of all the prerequisites and everything else you need to do it as I said it automatically looks at where the image has been pulled from so you don't need to configure whether what the URL of your Quay or Quay registry is. As I mentioned in various views within the OpenShift console so we initially started with the cluster admin dashboard but with the most recent OpenShift version which came out last week we added a couple of additional views to the OpenShift console to show the vulnerability information. So you can see a subset of the data which is also shown within the Quay UI and there's also a link to directly hop to the corresponding view within Quay so from the OpenShift console you can see the vulnerability data for all the software you are using in your pods in a particular project and also on a cluster level so there are many different views it's pretty powerful and it addresses needs probably of many different target personas who are supposed to use the OpenShift console and there are at least two great blocks out there written by our user experience team who helped us with the design and the visualization layout within the OpenShift console so there's pretty a lot of information and those are just a few new views we added with OpenShift for just a week back so we continue to enhance the operator and the console integration over time and as I mentioned you can query the same information which is stored directly in the CR so keep in mind originally we considered to use pod annotations but then we changed the way based on the feedback primarily from security teams both internal and external ones that we shouldn't expose vulnerability information to the entire set of users of an OpenShift cluster so that's why it requires permission so you won't have access by default but once you have the corresponding permission to query the custom resource then there are a couple of commands to query the same information via CLI as well one thing I want to call out before I move on to the next slide is that we do not directly interact with Clare because I mentioned earlier just from a network and security standpoint Clare doesn't need to be exposed to the outside world so we are connecting against a Quay API and then Quay fetches the data from Clare so this is also supposed to make it easier especially in multi-cluster environments where you really want to limit the allowed entry points into your environment so this is the container security operator or the console integration we did as another key aspect so the second operator and with that let me hand over to the third operator and again as I said at the very beginning of the presentation and they helped us helping working with the internal community and the customer community to write the initial prototype so we worked very closely with customers in the external community really looking at what are their target use cases what are the things they really want to achieve and then we started to write the prototype and over time we stabilized and extended this operator and now we just introduced it as one of the top priority feature of Quay 3.3 and with that let me hand over to Andy to explain it in further detail Thanks Derek so for those of you who want to be able to leverage Quay as the internal registry for OpenShift you can go ahead and use the Quay Bridge operator to facilitate a number of the steps that you would have to manually configure within Quay itself to have similar parity from OpenShift to Quay when you do enable this feature any new namespace within OpenShift automatically results in a new organization within Quay each image stream that gets created within that namespace creates an analogous repository within Quay and then the three key service accounts that are created with any new OpenShift project automatically get synchronized as robot accounts within Quay itself and that allows you to be able to push and pull images from the Quay repository automatically with an OpenShift without any additional configurations from your standpoint we do support multi-cluster setups through a namespace mapping feature so based or a cluster mapping feature you basically give a prefix that is added to every new organization within Quay that allows you to separate and segregate the different organizations within OpenShift any new as I mentioned all secrets in each robot account within an org are automatically created in an OpenShift project the service accounts are really being are really leveraged within OpenShift to be able to facilitate being able to pull Quay images as part of a source for a build a source for a runtime or as the destination or be able to trust Quay and push to Quay as a result of a build from OpenShift and really that's one of the benefits of the Quay Bridge Operator as I mentioned way back early in the presentation that by default OpenShift does not allow image stream destination is part of a build output in OpenShift the Quay Bridge Operator uses a functionality with an OpenShift called a mutating webflow configuration to automatically wire up Quay as the destination for any new build that is leveraging image stream in OpenShift and that's really just the beginning of the tighter integration in OpenShift regarding Quay itself now OpenShift and the Quay the operator as we mentioned is another automated feature within OpenShift it does require some initial configuration to get going out of the box it does require a little bit of manual setup but once you get the manual setup complete you can then be able to leverage it to its full functionality a simple use case is I created a new project in OpenShift brand new organization gets created in Quay all the robot accounts gets configured along with the poll and push secrets if you wanna go ahead and create a brand new app I just happen to pick my favorite my the .NET example application is the one that I always use for a lot of my demos not a lot of dependencies that come along with it you will go ahead and perform the new build in OpenShift pull the build image from the red container catalog go ahead and perform that build get the dependencies for the image itself as well as then push the resulting image to the brand new organization in Quay into the repository that was created as a result of image stream creation that is also created automatically as part of the sample app in OpenShift that new deployment that is generated by the sample application automatically then references the image stream which points to Quay which then allows it to be triggered automatically at the result of the end of a build which will then result in the deployment of the image in Quay and then once you're all done we went from zero to hero and wanna clean up the resources you can go ahead and be able to delete the project in OpenShift which will then delete the associated organization in Quay very much like the Quay operator itself the Quay bridge operator is deployed using the operator hub and the OLM which is part of OpenShift and as I mentioned there is a bit of a setup process that you will need to go through some of it has to do with the configuration of that mutating multiple configuration this allows you to be able to have the operator intercept some of the build in triggering and wire up to talk to Quay automatically now it's part of that it's really being able to rewire and kind of hack image streams in the underlying components of OpenShift and that's really where the functionality of that I wanna call out is this functionality of image streams so image streams is basically an abstraction of a container image repositories within OpenShift images referenced within an image stream can reside either in the internal registry or an external registry like Quay.io or a on-prem Quay that we've been talking about throughout the course of this presentation however when you do leverage a external registry you lose some of the functionality that are found as part of the internal native OpenShift registry this is gonna be the automatic our Robase Access Control configuration that is automatically defined as part of any new project in OpenShift as well as the automatic notifications when new images and tags are available from the image source so if I push a new image to Quay OpenShift won't automatically be able to determine or only even know if a new image is available you must be able to tell OpenShift that a new image is available for its use so one of the benefits one of the features that it's found in OpenShift is that you can configure an image stream to be scheduled which means that it will go out and pull a remote source at a given interval so that is one way to get around that or at least one enhancement that you can look if you don't want to manually import an image stream from a remote source now the Quay ecosystem the entire ecosystem this is everything from Quay and Claire is can be integrated into a CI and CD pipeline and as I demonstrate here in this slide you can integrate Quay at number of different in the ecosystem at different points everything from being able to pull the golden image that you have within your organization as a source for a new built in OpenShift you can then use it as a destination as part of the result of a build you can then use Claire to be able to scan that image and then you can go ahead and obviously use it for deployment time once you've gone ahead and you've gone through the appropriate approval processes that any organization will have as part of their software-defined lifecycle through its various environments whether it be a dev, stage or production environment you can put that, you can integrate all those steps checks and balances and approval processes that are front of most organizations into a full flow to be able to govern which images are deployed as part of your OpenShift deployment now Quay and how it being able to trigger new deployments on OpenShift the bridge operator will automatically go in and trigger a new deployment when a new image is pushed to Quay itself and then that's obviously if Quay itself is used as a destination for or the source for that image on OpenShift as I mentioned if you aren't using the bridge operator and you are just using an external registry by default images that you push to Quay will not result in a new triggered deployment on OpenShift if you're using an image stream they must be either manually imported through the OC import image feature which can be integrated into a CI CD flow or you can configure the image stream to be scheduled additional configurations and integrations can be also included to be able to notify OpenShift that a new image has been pushed to Quay as well as other actions that have been found in a repository through Quay's feature rich assortment of notifications you can integrate that directly into a CI process as well as being able to integrate it into other solutions I've actually gone ahead and integrated into Ansible tower new images pushed to Quay go ahead and call Ansible tower to perform certain actions so really the notification feature in Quay allows you to integrate with a number of red hats feature rich solutions very similar to how Quay can trigger deployment and OpenShift they can trigger builds on OpenShift especially if you're using image streams very much the similar process that I had mentioned on my prior slide which is basically if you're using an image stream it will not trigger a new build automatically you must import the image stream or have it scheduled and being able to and then the obviously the image that you can build on OpenShift can be pushed to Quay itself as the destination I'm gonna turn it over to Dirk who's gonna talk a little bit more about Quay's garbage collection feature and OpenShift Dirk. Yeah, thank you. So one of the other great features of Quay is that it features a serial downtime garbage collection as though you have tech retention policies and it automatically cleans up the underlying images over time the challenge here is obviously that OpenShift doesn't know that Quay effectively deleted the tech and deleted the finally blobs so there's a certain risk that you will go into delete something which is still in use by some of the clusters Quay is serving content to and that's why we started to develop a couple of features to address this. Yeah, so as of today it's really that if the image gets deleted or the tech gets deleted obviously if the image is still in use then it might break an existing deployment. We developed a feature which unfortunately slipped the current release but hopefully it will be in one of the future leases which is the image awareness in Quay. So with the operators we already have we developed something which allows you if you are going to Quay and start to manually delete an image or a tech then it shows you where this image or the layers underneath are still in use both inside the registry but also in the clusters Quay is serving content to. Yeah, so basically the other way around that what Cesar does we have the information was in Quay where this image is still in use and based on this knowledge we can effectively prevent that we accidentally or intentionally delete an image which is still in use by any of your running pods or reference by a CR. So this is a pretty powerful feature which is also part of this large umbrella of features we're developing to deeper integrate Quay into the Kubernetes platform and to provide a superior value coming out of the Quay features plus the integration into the corresponding platform. And this brings me to the last slide of this presentation and I probably need to update this slide again based on a couple of brainstorming sessions we had just this week as a list of slide I took from the Quay roadmap that so the deeper integration into the Kubernetes and the OpenShift platform this has been and will be the top priority for us on the Quay side. And as you can see on the slide we already delivered a bunch of great features and those that have been the features we talked about in this presentation there was a lot of progress we made in the past few months but still we have plenty of stuff we wanna do in the midterm and also in our longterm planning such as more deeply integrating into all the extended capabilities which are part of OpenShift such as the full platform monitoring stack the alerting stack, logging and dashboards. We have a community contribution coming up on the OAuth integration for OpenShift. I already mentioned the image users advantage we introduced with Quay 3.3 as clearly marked as experimental the OCI artifacts back support which allows us to store Helm charts and obviously Helm charts are a thing as well on the OpenShift side. So there's plenty of room for improvements there to deeply integrate Helm based workflows into OpenShift. We already touched the pipeline integration and we are working with the builds and pipeline teams on OpenShift our deeper integration into the pipeline and build automation in OpenShift could look like. And then we have a couple of other stuff we are working on with both internal and external community such as the Notary V2 efforts to bring in signing into both in Quay and OpenShift. We have a very powerful epic designed and which is explained in further detail was in the roadmap deck which is quota management and enforcement and one of the blocker for quota management and enforcement and automated pruning has been this image awareness I mentioned and then I also briefly touched the so enhanced support for ARC environment. So there's plenty of stuff coming up in future leases but we believe already today we provide a very great integration of those two products into each other and hopefully this will satisfy the majority of requirements of both our Quay and OpenShift customers. Andy, any final words you wanna say before we close the session? I just wanna let you know everyone who has the opportunity to be able to work with Quay especially on OpenShift go ahead and try it out. I know there are a number of courses in the GPTE team has out there regarding being able to never use OpenShift in Quay itself going ahead and leveraging some of the courses that are available for you to learn more about the Quay ecosystem and have fun, it's a great tool. I love it, I work on it on a daily basis. I work on it with my customers, they love it. Go ahead, learn about it, learn about the features and I know that there's gonna be a lot more tighter integration with Quay and OpenShift moving forward and it's gonna be a great ride. So once again, thanks a lot for attending today's session. And it was a great point and I forgot to mention for our external open source community and customer community, of course there is a free evaluation form for Reddit Quay on all the Quay product pages and the Reddit customer portal at retter.com and at OpenShift.com. And of course we also have a very strong open source community, so project Quay.io and we are shipping at the end of each sprint we are shipping the final builds as the sprint results to the open source community, those are available as well. So there's plenty of ways to play around with Quay and all the features we mentioned and also the upcoming features which are under development. So don't hesitate to join our internal and external communities, ask questions, contribute, ask for features, provide us feedback. We really appreciate your input and feedback there. Many thanks for watching, enjoy your day.


The fourth throw in last Thursday, last year's finalists had a plethora of changes on their starting team. The move of the second half came with Roland Burke ran in towards the goal and rocked the ball to the top right hand corner of the net. To the latter stage of the second half DCU started to roll their bench with John Donnelly and Rory O'Connor scoring two points apiece. After the game we talked Dublin and Kilmacud Croakes, they are further widely at his top three. So Fargo, what's your thoughts on the game there, a good one against CIT? Yeah, it was a tough game there on a heavy pitch, we're happy to get to the next round. We saw there were a few surprise results earlier in the fits game with a couple of the games so yeah we're just happy to get the win, it's the main thing. Obviously there's a few big teams, definitely NUIG and that's where you're looking ahead now to the top three final head free in the fit's given. Yeah, we hadn't really thought about it, it was already just geared towards tonight. I think it's UCC next, so yeah it's another battle and yeah we're looking forward to I think next Tuesday. The team obviously looked to the bench, looked to make a big impact and they came off in the second half really pulling away from DIT. How important is the penalty in your set up? Yeah it's very important like you see the Intercounty or the mental lads that play Intercounty on the bench so yeah like you saw the difference it made and it really gave us a kick in the second half. DCU run our 2-19 to 12 point winners against DIT in St Clairs. John Donnelly of CUNN and Kelly was a big impact substitute for them in the second half as they pulled away from DIT. Other Intercounty players such as John and Brock made a great impact for the DCU side. They will move on to play UCC in the Fitzgibbon Cup Semi Final. I'm John Morley reporting from St Clairs for DCU TV News.


Okay, so thank you very much for the introduction, Leaman, for having me today. So, yeah, as Leaman highlighted, I'm going to talk today about WasunWorker server or how to write portable serverless applications thanks to WebAssembly. This was supposed to be a joint talk with my teammate, Rafael. He couldn't make it on the last minute change last week, but, I mean, he's doing an amazing job also on the project and wanted to put it here too. So, the first thing I usually get the question is, what's WasunWorker server? So, WasunWorker server is a tool to develop and run serverless applications. That's what it's important for developers and for the people that are going to use it. Internally, it uses WebAssembly, enabling you to combine multiple languages and run your applications almost anywhere. But the interesting part on every project is to understand why we built it or why we decided one year ago to start creating this project instead of using another one, for example. So, starting a new project is an exciting, but a rough task. You need to decide what the language that you want to use and if you're in a team, you need to coordinate what are the languages that we understand, how we want to start this project, architecture, patterns, frameworks, all of the stuff. What are the tooling that we plan to use for this specific project? The developing environment? Everyone has preferences on this, so it sometimes gets complex to get all the different developers working on the same project using the right tools to collaborate and contribute together. How do you plan to distribute the application? That's also something important that affects the way you develop the project. Also, how do you plan to deploy it? All those things happen at the beginning of the project some of the responses to this question get written into stone when you start the project and you need to carry them over during all the time of the project lifecycle. So, based on this, we started to talk together and discuss is there is something we can do for this and trying to make projects more flexible in the sense that we can start with a language, we can implement some part of the application using a different language, for example, that may be better for that specific case. Can we provide a simple way to run different languages together without having to install Node.js, Ruby interpreter, Python, all the different tools together in your laptop? Container solved a lot in the past but could move it like one step farther and simplify this even more. So, to solve all these questions, we started creating WasunWorker server and we decided to do it based on four principles. The first one is that it should be an easy to use CLI. So, developers should focus on the code while using the languages they already know. This is a critical part for us because we don't want developers to have to learn a new language to use our tool. We want to use for them to reuse the knowledge they already have and start continue writing the applications that they want. We want it to be compatible. All of us felt like at some point that you created a project, we started maybe doing some specific implementation that is tied to a specific platform or a specific service and it gets complicated to move away from it. So, you need to spend a lot of time working to change it and adapt. This is why we wanted to make it compatible. So, the code you run today, it will run in a different place if you need for some reason to change the way that you deploy the code, for example. It should be portable in the sense that the applications as today, they run in many, many different environments. Actually, in the previous presentation, the Cosmonitane show like there are many different pieces in which you can run the applications. That goes from cloud to your laptop and either devices like your phone, for example. And we want to keep this. So, the code that you write can run in all the different environments and adapt to provide the best experience that you can provide to your users. And then it should be secure. By default, the code that you write only have access to the resources it needs. When we were discussing about all these features, we noticed that WebAssembly is a really good fit because it matches all the different principles that we wanted and decided to start working on this project. So, how it looks actually. For Wasm Worker Server, a project is a set of files as you would do for any other project. In this example, we have four different files in a magnetic folder like hello.js, ID, brackets, Wasm, the Tommel file, and the GTignore. When you run Wasm Worker Server, the CLI, it detects the files that it considers as independent functions that can reply to requests or how we call them workers. It also identifies the related configuration files for those workers. So, you can enable specific features and provide access to specific resources only for the workers that need it. So, you avoid if one worker needs to talk, for example, to an external service using HTTP calls. You avoid the other one calling a service if it's not meant to do it. And once it detects the different files, it expose them as an HTTP API. In the case of the hello.js file, it will detect it as hello. And in the case of the brackets notation, it will use a parametrized root. So, it means that any root slash whatever will be managed by the ID Wasm except the slash hello root, which has a higher priority than the parametrized roots. And that's all you need to know to start working with Wasm Worker Server. And I'm going to show you one, for example, about how you can run your first worker in just one minute. So, here, the first thing that you need to do is you need to install Wasm Worker Server, which is this singles command. It's already installed in my laptop, so I'm just going to run the help command. And now, I have one folder, which is my project, that contains an index.js file. This index.js file exports a function which exports an object that contains a fetch function that returns a response with some specific body and append some headers. If you are familiar with the front environment and platform like Cloudflare, Bercel, and this Netlify, you may be familiar with this specific source code. And this is part of the promise that we wanted to create with Wasm Worker Server. And it's that this same exact file run on all those platforms without having to change a single line of code. So, we want that, that you can take your code and run it where it makes sense for you. So, in this specific example, I have two files in that folder, same as the example I was showing before, the ID, which is a parametrize root, and then the index. So, now we run WWS, pass the folder, and if we do a get request, then we get the information from the Worker. We get the body here, and we also get the header that we configure in the Worker. We can also query the parametrize root. And then we have here similar one, but in this case, it's taking the parameter from the root and showing that information in the body. Another thing that we are also exploring is that for Wasm Worker Server, the only thing that you need is a specific folder. But folder could be, for example, a remote repository. So, you don't need to actually download CLOM manually, but you can point to 13 artifacts that are remote, and then you can pull them locally and automatically spin that specific project. In this case, we are supporting a remote repository, but in the future, the idea is that we will support more and more targets, so you just need to run the command, the specific location, and it will run the project for you. In this case, we are running it from our own repository in which we have an example folder that contains many different examples, and in this case, we are using the JS Basic. So now, if I call to the same URL, I get the response from that example. And the good thing is that in our repository, we have in this folder in the example one, four examples in six different languages that you can try to start working with Wasm Worker Server. So you have a good base to start creating your projects with Wasm Worker Server. So, how it works internally. Now that you've got a taste about what you can do with it, let's see how the data passes between the different boundaries and why we decided to do it in that way. So we have on one side Wasm Worker Server, which is the CLI and the server that is listening for requests, and then we have my worker Wasm, which is a specific worker that could be written in Rust or Go that will reply to the URL. The first thing that happens that Wasm Worker Server receives an HTTP request, it identifies the target worker based on the different list of file. It detects what's the one that should reply to that route. Prepare the Wasm environment. That is done also by the configuration, so it enables the feature that you granted for that specific worker. And then serialize the request and pass the data via the STDM. The worker does the job, provide the response, and then send the data in a serialized way back to Wasm Worker Server using STD out and then Wasm Worker Server returns the response. So that's the kind of very, very basic flow of data inside the project. If we add an interpreted language, as I was using before with JavaScript, there is one intermediate step because we need an actual interpreter to run this code for you. So there is this element in the middle that takes the information from Wasm Worker Server, convert it, run the user code like the JavaScript script, and then return the response back. This approach, as you may imagine, has benefits but it also has challenges. So the first thing is that using this approach with data management on STDM and STD out, help us to add new languages and version of the language quite rapidly. So we didn't have to wait to implement very custom features because any interpreter that can be compiled into WebAssembly comes with basic features like STDM, serialization, and all that stuff. So it means that in one week, I think we created three SDKs for three different languages without having to deal and to spend a lot of time on this. So we can grow later on. Interpreter languages are transparent for users. They don't need to compile in a single line of code. They didn't have to call any other tool for compiling, for example, the JavaScript code. It just dropped the file and then it runs and responds directly. And also that workers have independent permissions. You can configure every worker with its own sets of resources that can access and the other won't be able to do that. But there are also challenges. The first one is performance, of course, because all these data boundaries with serialization all that stuff increase the response time, which is something that shouldn't be there, but it's something that we are working on and trying to find ways in which we can keep this promise about being easy to use while not affecting to the performance of the server. It's also a challenge about being compatible with other platforms because for data passing the request and respond information, it's simple to make it compatible with others, but for other features that we will see later, we still have to create this glue code or this way in which we pass those features that are different from other platforms. So it's not simple to make it. The other part is that the more language we support, the more features we need to implement in all the languages. So at the beginning, all the languages supported all the versions, but once we are adding more and more complex features, like we will see later AI inference, for example, it's not trivial to add all those features to the workers. However, with all the work happening in the component model that we, I think, since one month ago, we support components in WasunWorker Server, we'll simplify how we can add those bindings to support all the features. I'm also debugging, but I think this is something common to WebAssembly. It's not something specific to WasunWorker Server. And just an example about how simple it was to add a language to WasunWorker Server. One teammate created a brain whatever SDK for WasunWorker Server. Here you have an example, which is a super weird language, the first time I saw that. And if you run this after compiling it to Wasun to a Wasun model, it returns hello, Wasun, which for me is pretty amazing. And it represents how simple it is to add new languages SDKs for WasunWorker Server. So let's talk about the features. What are the features embedded in this specific tool? We have an in-memory key value store, which anyone can use, it's really simple and it's available in all the languages. We have external HTTP requests, so you can call third-party services by allowing the domains configuring what can be reached from inside the worker. You have also dynamic routing, as we saw. We not only have parametrized route, but we also got in external contribution what we call catch all routes, which means that you are not only taking one portion of the full path, but just all the sub-paths from that one. This is a pretty cool use case that I will talk later. We also have AI inference with WasunM. Thank you, Andrew, the no-if is here, yeah. Thank you for all the leadership and the work here. We just take leverage of all this amazing technology. We also have static asset management, which is something pretty common for some specific use cases. And much more. And you can check all these features in the official documentation, but let me show you some examples about how this works. So here I have a different project, which is this demo tool, but in reality what it's inside is a tic-tac-toe game that uses the in-memory key value store to provide the functionality. So here I just want to show you that by default, workers doesn't have access to any key value store and you need to configure it manually. You need to give it an in-space and then you can start using it directly. So if I now run the demo, let me open here, okay. So I have the first one. Now I need to open it in a different tab. I will try to do it in the same. Okay, yeah, that could be a good feature for the example. So here, as you can see, you can start playing tic-tac-toe. It works pretty well. We have also the other example, which is the AI inference with Watson Worker Server. For this specific one, I first need to initialize the open vinyl, which is the runtime behind this example. So I just configured it in my environment, so Watson Worker Server can find it. Now, if we check the inference.toml file, which is the one configuring the worker, we see here that we have more features that we can configure in Watson Worker Server. On one side, we can configure the models that we were to preload. This is a pretty new feature in the Wasian N specification in which we are passing the already existing models that you can pull from inside the worker. And then we're also more in certain folders inside. So the worker can store the images for later usage, and it can provide some specific data that is required for the worker to provide the labels for the images. So if I run this example, now I can open this one. It's an image classification example that I forgot to mention. So if I put here an ambulance, it works. So it's really easy to start working with all these features together and just put everything and start using the ones that make sense for your application. And this are all the supported languages that we have as today. We support Ruby, JavaScript, Python, they in the interpreted side, and we also support Rust, Go, and SICK. And the cool thing about this is that these two languages, Go and SICK, were external contributions. So it means that some people decide that they want to have these languages inside WassonWorker server and pursue to create SDKs. So it's a good sign that people want to use specific languages as they create their projects. And one of the things that I usually highlight with WassonWorker server is that it allows you to create polyglot applications, and especially to integrate multiple existing applications into one project. So in this example, we have kind of a full JavaScript UI project that renders some pages outside and we mount everything in the root. So it means that by default, any root will be captured by this worker and will provide similar to a single page application in the terms from them. We want, for example, add a new API to this project and we want to use Python. So it's simple. Just put this specific file inside the API using the same approach, and now everything under slash API will be managed by the Python application. You can use Flask or any framework that you want. But now, if you won't even want to go a step farther, you say, okay, it's fine that I'm using Python, but I want to start migrating some of the endpoints to go. That's simple in WassonWorker server. You can take, create a resource, which is a fixed one, and then that specific URL will be replied by a completely different language and everything works together. And you have a path for migrating stuff. It's not like you have to start from a scratch on the entire project. You can take a 16 project, put together, and start migrating step by step if it makes sense for you. And what about deployments? This is a hot topic. Since I mentioned before, run almost anywhere, how can we reply to that specific bet for the project? So in reality, WassonWorker server is a very thin layer on top of an existing Wasson runtime. In this case, Wasson time. So for us, the best way to approach the deployment of WassonWorker server today is not having opinions about it. We are still in learning mode. We want to understand where users, customers want to put the projects, how they want to deploy it before taking any decision. So you can deploy WassonWorker server as any other kind of service that you deploy your infrastructure today. You can put it in virtual machines, but totally fine, cloud server, it's a container directly put in the binary side. You can run through container D in Docker and Kubernetes. Thanks to the Punguasi project. Actually, we have a talk tomorrow about how to run applications with WassonWorker server and Kubernetes. You can even put them in small devices if you want, like Raspberry Pi. And we're exploring crazy ideas like why not to run WassonWorker server in the browser, for example, but that's something that may come later. So what about the future for the project? What do we plan to do next? So the first thing is that we want to add more languages and improve the existing support for them, because this is something that keep in all the conversations that we have about WebAssembly, people want to use the language they know. We also want to add more features. For example, we want to add persistent. For now, we're having memory key value store, but we want to make it persistent. We want to think about SQL databases, those kinds of things that keep coming in different conversations. We want to improve the platform compatibility. And at this point, one of the things that we are exploring and it looks promising is the component model and the Wassy Cloud Core, which is a set of standards for accessing common resources, like key value stores, SQL, HDDP hundreds. So if we can provide this as an alternative that work with the other workers in Wasson Worker Server, those will be automatically deployable in other platforms that are compatible with these interfaces. And we also want to think of standard deployment. It's cool that we have a theme runtime, but can we make something on top of that that makes sense for the entire project and provides you a better experience when deploying, like pushing a project, putting multiple projects under the same host and managing it for you in a better way so you don't need to manage it as independent processes in your infrastructure. And if you have any other crazy ideas, we are pretty open about discussing it. So if you want, feel free to go to the repository under the discussion section in GitHub and feel free to drop any ideas that you want for discussion with the team. That's a feature, but what you can do today is to try it. So here you have the QR code that goes to the documentation side. You will get access to all the examples that like the tic-tac-toe and the ones that I played today, you can use them, you can try combining all the different languages. Of course, opening an issue that you find with the project, continue dropping ideas for the team. Yeah, that's all that I have for today. Another phenomenal presentation, thank you. Questions? No questions, so I will be around. So in any case, feel free to ping me here. Thank you very much.


Hello and welcome to the session. In this session we will discuss a question which says that a game is played by Ellie and Archie. In this game two dice are rolled. If a total of three or two comes then Ellie gets a point and if a total of eight or nine comes then Archie gets a point and if any other total comes on the two dice nobody receives a point. The player who gets first thirty points wins the game. Do you think one player have better chance of winning the game or both the players have equal chance explain using probability. Now before starting the solution of this question we should know a result and that is in a non uniform probability model all outcomes are not equally likely. Now this result will work out as a key idea for solving out the given question. Now let us start with the solution of the given question. Now in this question a game is being played between Ellie and Archie with two dice and here it is given that Ellie gets a point when a total of three or two appears on the dice and Archie gets a point when a total of eight or nine appears on the dice. Now let us discuss the sample space of rolling two dice. Now we do that whenever we roll a die then total number of outcomes are six that is the number one two three four five and six. Now here we are rolling two dice simultaneously. So here we can get any of the numbers from one to six on the first dice and on the second dice. So here the first outcome that we can have is getting a number one on the first dice and getting, again a number one on the second dice and the second outcome that we can have is getting a number one on the first die and getting a getting a number 2 on the second row and the third outcome that we can have is getting a number 1 on the first row and getting a number 3 on the second row get all these outcomes when two guys are rolled simultaneously and here the total number of outcomes are 36. Now first of all let us find the number of favorable outcomes for any. Now any gets a point when a total of 3 or 2 appears on the dice. Now here these are the three outcomes in which total of the two numbers is either 3 or 2.  So for any number of favorable outcomes is equal to 3 that is these three outcomes. So the probability P of getting a total of 2 or 3 on the dice is equal to number of favorable outcomes which is 3 upon total number of outcomes which is 36 so this is equal to 0.083. Now let us find the number of favorable outcomes for Archie. Now we know that Archie gets a point when a total of 8 or 9 appears on the dice. Now from here you can see that these are the outcomes in which total of the two numbers is either 8 or 9. Now here you can see that 2 plus 6 is 8, 3 plus 6 is 9, 3 plus 5 is 8, 4 plus 5 is 9, 4 plus 4 is 8, 5 plus 4 is 9, 5 plus 3 is 8, 6 plus 2 is 8, 6 plus 3 is 9. So number of favorable outcomes for Archie is 1, 2, 3, 4, 5, 6, 7, 8 and 9. So probability P of getting a total of 8 or 9 on the dice is equal to number of favorable outcomes which is 9 upon total number of outcomes which is 36. So this is equal to 0.25. Now from here you can see that 0.25 is greater than 0.083. It means probability of getting a total of 8 or 9 is greater than probability of getting a total of 2 or 3. It means the chances of getting a total of 8 or 9 are greater than the chances of getting a total of 2 or 3. So both Annie and Archie do not have equal chance of winning. Also it is given in the question that the player who gets first 30 points wins the game and also we know that Archie gets a point when a total of 8 or 9 appears on the dice and Annie gets a point when a total of 3 or 2 comes on the dice. Now here as the chances of coming a total of 8 or 9 are greater so we will collect 30 points much earlier than Annie therefore Archie is more likely to win the game. And this is the solution of the given question. That's all for this session hope you all have enjoyed the session.


Open your ears. I changed I changed all of you in here are capable of being unreal I know who you are. I know how you feel, but you're not Changing what the I get paid to solve people's problems, and I solve them very fast You know before I could solve anybody else's problem.      I physically don't freaking care neither does anybody else So what's your future look like everybody write this down the future looks bright Because it does that is my perspective write this down My perspective that is the only perspective that matters Okay, it doesn't matter what what mine is what Trevor's is it doesn't matter what Zeus is it doesn't matter what kins is I don't give it Okay, what's your perspective and a lot of people right now They have a bad perspective and they don't realize that the future is bright You're gonna regret it. No, you know what I regret thinking that it's not possible back in the old days I know it's possible now. I want you to ask yourself. Why aren't you going where you want to go right now? And if your answer was because of me That's why Average people look at everything else before they look at themselves average people do winners The first place they go is in their mind. I'm gonna look in the mirror. What's the problem? Okay, this ain't anybody else. This is me. This is a problem with me. Are you your own problem in every instance? Yes, or no Somebody's screwing with you. Why are you hanging out with them? Somebody burns you. Why are you still with them cut your losses and roll dude?  There's lots of people's lives.  So you just like you just do it.   So there's two problems right now number one Either you don't know what your dream is, right a lot of you guys would everybody agree dreams come with a price Yes, or no, if you're not willing to pay the price, you'll never get the dream number two most people don't have a dream What do you want? What do you want? How are you gonna get there? You need to be crystal concrete clear on exactly what you want If you're not you'll go join the confused people over here that never get anything.  Are you willing to pay the price? Are you if you are get ready for war?