Hello. Please welcome our next speaker, Adam Miller from Fedora Engineering at Red Hat, who will be talking about Deploying OpenShift Build Service aka OSBS. Thank you. Oh, clicker. Okay, so I want to talk about first what the presentation is gonna be out the format we're gonna go in through and if any of this does not look interesting to you please feel free to go find a talk that is interesting you will not offend me all this be fun for everybody I'm gonna start off by telling a fun history lesson a little bit of a narrative of how this came to be in the Fedora space lessons learned there which is kind of the premise for the talk from there I'll go a little bit into the technology involved I want to take a quick moment to define what containers are and what we mean by container build images and layered images versus base images I'm gonna very quickly go over what is OpenShift and describe it from an architectural standpoint and why that is important I also want to define what release engineering is because that will provide context around why certain decisions were made the way they were the way that the why the image build system was designed as it is and then actually go into what OSBS is the Koji container build plug-in anatomic reactor and how those all kind of feed into and power what became the layered image build system so the history lesson once upon a time a very long time ago like 18 months not that long ago Matt Miller the fearless project our fearless leader randomly said in a meeting somewhere like hey so there's this open-source layered image build system we should deploy one for Fedora I don't remember the exact quote but that was roughly the paraphrase and what the misconception was that this was a finished product that somebody done and released upon the world and was ready ready for use so we kind of sat around and kind of talked about that and looked over the architecture design and discussed it from a high-level abstract and we said probably gonna take about four weeks to accomplish we need to you know first deploy it in stage we need to figure out where the integration points are for our message bus for our build system make sure it ties into our testing pipeline our release tooling that kind of stuff for weeks and this was an incorrect assumption because the layered image build system and its various components were were rightfully so following the release early release often so this is what actually happened we started off with a whole bunch of GitHub issues and tickets and in the early time when we were not yet familiar as a Fedora group we're not yet familiar with the code base we were just frantically submitting issues because we had no idea was going on and why why nothing was working the way that we thought it was going to it wasn't so much that it wasn't working it's that we were trying to introduce new use cases or new workflows to the environment that that the team that had originally written it had not taken into account or were not necessarily targeting so what I kind of flip through here wow that jump okay so we have a bunch of issues mixed in there are pull requests more of those yay and we have a production environment now and so we actually released just this last December so it's been live for about a month now so phase one was the single node builder and this was finished last November and I don't mean like three months ago November I mean a year ago November and and it went pretty well it went pretty quickly things worked however then image format v2 registry v2 and manifest v2 happened and this broke the original implementation and the reason for that is because fundamental components of the API or the specification for the image changed and they changed in non-backwards compatible ways and then actually during the journey of refactoring and reorienting the build system to handle these more changes happened that were also incompatible but because of the fact that the changes to the architecture and the code had been made to cater to the fact that we were broken previously was much easier to pivot this time and pick up these changes because we did not collectively make similar mistakes of relying on fundamental truths to remain true because we got bit what was it what once bitten twice something I don't know anyways I forget the saying but we tried we tried very hard not to make the same mistake twice so phase two was the scale-out deployment and this is what finished in December and and what we were able to get out and publish to the community such that people can start building containers and for those who aren't familiar the Fedora atomic working group which is focused around all things container you know atomic host container running technology container orchestration within the Fedora project we are going to host our first virtual effect for activity day this coming Thursday yes this coming Thursday and we'll actually be moving I think our initial goal is 50 container images from the the current Fedora cloud GitHub working space into the official Fedora build system so we have all that done it's it's fully compatible with all the new stuff we can run it on the latest versions of Docker and run C and and anything that can do OCI compatible images we have automated tests currently in staging that's going to be going out to production very soon so that we can actually automate the pipeline and then we have the ability to promote images to production release from there in the future we want to do image registry scale out so right now our registry is not as scaled as we like it to be we're going to create a front-end endpoint allow multiple registries on the back end to answer for registry out for our project org and this will give us more site reliability and we're looking also looking into ways to handle geo IP so when you do a you know a pool operation on an image you can get a a local instance of a registry or a local mirror to get the content from you know something that's geographically close to lower download speeds latency those kinds of good things search and advertisement of images there are very few options for searching and advertising images out of a registry and zero of them are native to the registry so each one has kind of that fear of the future where something will change again some fundamental truth that we want to accept it to be true will be removed out from under us and we'll have to pivot again so we're that's being discussed and we're gonna have that coming up very soon and then we're also trying to figure out a good way to do CVE and security metadata release and distribute distribution so when you're on your Fedora or system and use DNF or if you're on your rail or sent off system use yum you can check security info you can do you know update info and check security and see CVE data and read about change logs right now there's no what not any way to do that for Docker or or any of the OCI runtimes but Docker pull being Docker pull and Docker search being kind of the de facto standards in the community space for those kind of things and it's difficult because this is a desired feature and we but we want to find a good way a good balance of doing it without trying to lock anybody to a specific tool chain and have a good way so that's something we're trying to figure out as well because we absolutely want that it's just an interesting problem space and anybody who has a suggestion for it please come participate in the atomic working group because it's basically an arbitrary pile of metadata attached to a tar ball with some JSON and and there's no concept of versions or releases and we're trying to kind of define abstractions for that so lessons learned I want to I want to take two line item moments to tip of the hat and say some thanks to the upstream OSBS team is fantastic in the first few months when we were doing this and we had no idea what we were doing in terms of trying to touch the code base because there's a pretty respectable amount of code involved in all of this we were just frantically running to them thinking the world was on fire and everything was just you know falling the tire the wheels were falling off the cart kind of thing and again we later learned that it wasn't the wheels were falling off the car it's that we were trying to make the system do something that it wasn't originally designed to do so we you know kind of dug in and you know gotta gotta roll up our sleeves and learn the code and started trying to contribute patches but aside from that they were very gracious and originally taking on more work to cater to some of some of the early requirements for the system and I want to say thanks for that publicly also OpenShift team we had a similar scenario with with some of their stuff they there was a lot of a lot of the work was targeting kind of targeting sets of containers and and network components that weren't necessarily all that stable yet in Fedora and all of our build system stuff runs on Fedora so I want to say thanks because they were very responsive to again us running to them and saying oh my gosh the sky is falling and so it was really powerful and and what I mean and I don't mean that to be just kind of like some weird under him not trying to like sell you anything but it was it was very fascinating to to actually get to a point where we were deploying a system that had the ability to have a custom build specification and you just have this pile of JSON and some YAML files and you throw it at the system and within the cluster it would provide you everything you wanted out of it and that was just kind of really cool but also with that power came a little bit of learning curve trying to figure out how to handle that as a new workflow how to handle the system and I'll actually the web I have some slides a little later on that kind of explains what OpenShift is and and I'll have a little bit more specifics on examples of how that was so for those who who don't know I used to work on the OpenShift team but when it was when architecture v2 was a thing so I had actually moved over to the Fedora team around the time that architecture v3 was being hammered out and they were starting developing on it and basically rewriting everything and basing on Kubernetes so it was a huge learning curve for me so it went from this you know Ruby broker based thing with SC Linux sandboxing and you know their own implementation of C groups management with mCollective and now a sudden it was Kubernetes and all these things so it was it was really cool to learn how the build pipeline worked and be able to integrate that into the build system another thing that we learned almost in a trial by fire is that the container ecosystem moves fast nothing is guaranteed nothing is set in stone because the fact that the environment or I guess the the underlying technologies that for what I'll consider a traditional application runtime they're pretty they're pretty standard they're pretty set there are certain components about the system or certain things about general you know GNU Linux distributions that you can kind of rely on being kind of stable none of that is true in the container space everything is constantly evolving and it's it's very it's very exciting it's very fun to be a part of but it's also very difficult to track when you're trying to build something so we learned kind of the hard way that APIs are not always going to stay stable and they will not always stay relevant there was a certain point in time where there was an announcement about an API specification change and we had three months to update because the old version was going to no longer support I'm sorry the old version of the API was no longer going to be supported by the you know the the upstream so yeah and don't expect backwards compatibility that's kind of the the follow-on to that like breakage in API there was at some point of the cutoff where image v1 just was a thing of the past so containers really quick what are containers kind of talked about it from an abstract talked about building them but what is what are they is a thing operating system virtualization and if anybody attended my talk last year actually this is a repeat slide mostly because I'm a huge fan of it I borrowed some of the content from some other people much smarter than I and and I've been trying to kind of level set what it is in the sense that a lot of people out in the ecosystem have I guess what I would call like a marketing opinion of what containers are but they're basically operating system level virtualization it's the idea of multi-tenant isolation the ability to present an environment to an application run time such that it thinks that the environment which in is it exists is a system is a system it has a root file system it has you know various libraries it has various utilities that it needs it can you know for whatever reason inspect the process tree or proc file system however it wants to but it's not it's not a full system you know you couldn't boot it doesn't it's most times it's going to be lacking things probably doesn't have an in it system in it those kinds of things so containers are not new they've been around for a long time I always like to argue that the charoot was the original container in the context context that you can lie to the application run time and and it will execute and run like it would otherwise on a base system but it is not and they sure it was very unsfisticated and there's a brief lineage of Unix like container or operating system level virtualization technology whereas LXC was kind of the first thing and Linux got really interesting IBM released a tool chain that provided that somewhere around 2011 system DN spawn was created and system DN spawn as I understand it was just created so that the system D team could test system D without having to reboot systems all the time and it added a lot of sophisticated features that we didn't previously have dot cloud now known as Docker incorporated then release Docker a year later core s released rocket a year later the open container project also known as the OCI open container initiative happened started defining specifications because a lot of this technology was was in a lot of ways trying to describe similar patterns similar execution environments similar images but there was no real consensus around it so a bunch a bunch companies got together including Red Hat and and are trying to standardize on that so we can get to a point where we have these these image formats and these API's that are stable and bring bring some cohesion and and I guess stability to to the different areas was a year later same year yeah same year shortly after the OCI was created run C came out it's kind of the reference implementation of being able to execute images from the OCI specification then just as past year container D came out which is a OCI compliant daemon to kind of manage run run C execution run dimes sorry so that was just a brief history to kind of give the idea or make sure that is is understood that there's not one there's not just one runtime in town there's not one solution for this and something that fedora is trying to aim for is we're trying to aim for providing OCI compliant images such that our end users can run and use these images in any way that they choose we in fedora are all about freedom all about friends we are all about trying to be first try to bring the new features first so if we can provide the ability for our end users to run our images in any way that they can more all the better but really quick the reason it's called the layered image build system is because the idea is to allow fedora contributors to maintain and build layered images much like they build RPMs today but you need to understand first what the difference between a base image and a layered images so a base image is going to be the thing that provides kind of the core platform shim for lack of a vocabulary term to a layered image and that base component is going to provide things that you would kind of expect out of a containerized runtime that would come from a distribution so probably going to be things like glibc and maybe a shell you know bash for the fedora use case probably DNF probably want to package manager in there those kinds of things so we'll provide that in as small of a package as we can we want to keep that lightweight as possible and then a layered image is going to build on top of that that will add functionality for a specific use case and let's just say for example you wanted a web server you want a web server in a container so we'll just say you know Apache HPD or nginx or I don't know Lighty or I don't know what's cool these days what's we'll go with that we'll just we'll Apache I'm gonna stick with it so you run Apache and you basically have you know a build configuration that would say you know I want to add Apache to this and I want to be based on a certain layer and what's interesting about that is because this actually enables the ability to decouple our desired runtime from our base platform operating system so we could potentially run a piece of software from fedora 24 inside of a container on fedora 25 and what's cool about that is if you're running certain application stacks let's say Ruby on Rails or Node.js or Django some some framework for something and there's a giant leap so there was a I think those it was Rails 3 to 4 a few years ago Ruby on Rails 3 to 4 very non-trivial for most people to port between the major revisions and this kind of thing would have made that transition period a lot easier because you could go ahead and upgrade to the newer operating system take advantage of the new functionality the new speed increases the new you know kernel support for the various things new libraries and that sort of thing for the host but you can go and bring along your new your new image so what we're targeting here with the the layered image build service is the layered images fedora release engineering provides the base image must like we provide ISOs and you know cloud images and those kind of things and then contributors throughout the community will add to that also a side note for the release engineering isn't some kind of like weird close room cabal all open as well we have community contributors there as well there's just a little bit more structure and in the tool chain for for what the base image is produced so open shift really quick open shift is a container platform built on top of Kubernetes has advanced features such as build pipelines image streams application life cycle management and you know various other things that are great for developers the piece that we care about is build pipelines there is a concept in open shift of a build it's kind of a primitive data type to open shift it provides the ability to use pre pre prescribed build strategies or you can provide a custom one we do a custom one so this is kind of the the huge layout in the green section second from the top or I'm sorry second from the bottom to the left the build automation that's the piece we care about fedora we run open shift origin that's the upstream project for open shifts that's where we would participate this is the basic architecture overview it's effectively you have your client talks to the rest API there's a schedule scheduler on the on the master and the master talks to the nodes inside the nodes there are pods and inside the pods are multiple containers and the reason that's important or at least note worthy is because this architecture and by using open shift we have an ability to actually scale our build system pretty easily so we use ansible to deploy the entire build system internally at any point in time we realize we are low on capacity all we need to do from an administrative standpoint is add nodes to the inventory and rerun our ansible playbook and it will be able to provision more more capacity for us and that would be the node so we provision more nodes so release engineering what is release engineering I want to I want to go through this very very briefly just to kind of explain why some of the things that we do are the way that they are instead of just saying you know run Docker build on your laptop and ship it because yeah why not so it making software and a pipeline a production pipeline that is reproducible auditable definable and deliverable and auditable and the definable components I think are important as opposed to the other ones because I'm sorry reproducible and auditable definable and deliverable definable and deliverable you can do on your laptop but the reproducible and auditable are the components that we care about so that we can make sure to have a well established trust chain with with the user base so when we say that we've shipped something and it contains these things we can verify that so layer image build service OSBS open shift build service so what the open shift build services is actually a loosely coupled set of components the main one of it which is the OSBS client the OSBS client takes advantage of the open shift build pipeline by creating a custom build strategy and we have this build configuration and it defines the inputs that we must provide on top of that it also provides a python API and that python API is also presented to the user as a command line so you can enter the inputs that you want through the command line or you can do it via the API and we chose to do it as the API so we can automate it programmatically those kinds of things OSBS enforces the build inputs if you attempt to do something you're not supposed to it will fail we have a build route which currently is a limited docker runtime we're also toying with prototypes of other runtime backends for the build pipeline and you know trying trying to again explore more of the container ecosystem find things that are more performant or that are potentially more performant make sure that we're providing the best solution we can so it is far well constrained and we also have input verifications as far as input sources of content so if you do a docker build and and and you read stack overflow I don't know it's four in the afternoon you haven't enough coffee and you're just I don't know Facebook got boring and somebody is like hey you should just curl pipe this to bash his route you're like sure that sounds like a great idea let's slap that in a docker file and then let's ship it to Fedora users and while that is debatable as a deployment install strategy the problem comes in is the verification and the reproducibility let's say that the point that you did the curl from disappears at the end where we we resulted with basically a source input that says curl this thing pipe it to bash and that's going to do some stuff we might have some build logs but we lack the ability to audit the trail of content and find out where that came from what it's actually doing because we may we may never have stored the actual the actual install script so those kinds of things so if you attempt that curl pipe to bash inside of our build route the build will fail because the the input source would not be verified we use open shift image streams to detect the input sources to a build route so anytime things happen there and this is actually going to be the kind of the inflection point in the future where we will do automated rebuild so in the event that we update the base image things that directly need the base image will automatically be rebuilt as layers so let's say for example you're building or you want to put WordPress in a container and you started that WordPress off of the maybe the PHP container so you're not directly relating you're not directly depending on the base image but at some point you will in the event that the PHP container were to get updated then the inside of the build system would know to cascade up a build to the WordPress and those kinds of things so while that's not you know as it is today that is that work is is underway and will be will be getting there soon we're we're also going to have a factory to component so for those who have heard of factory 2.0 or have seen the factory 2.0 talk with there will also be a component of the build environment that will have a record of all of the content that's going to go into a layered image and then in the event that there is an update noticed within the Fedora update system and it would it would then require I'm sorry there will be a manifest of the RPMs for layered image build service or a layered a container layered image and in the event that one of the RPMs that go into that layer gets an update the system will automatically notify the various tools that need to and update them because right now we basically just need to update the base image and then cause cascading rebuild which will then pull that in and we do that on a on a regular cadence except when there's a security update then we do it we break cadence and we get it out as soon as possible for for the security update so atomic reactor so inside of that build route that I talked about there's a component called atomic reactor it's a single pass build tool does all sorts of really really cool stuff it's got a pile of plugins we wrote some of our own and this is what allows us to tie this directly into the rest of our environment we're also able to gate updates so again we can promote images when it comes time so all of the bills as they go through our system automatically land in a candidate registry and you can pull them as soon as we're done building you can test them you can even you know share them out with with friends and and say hey check this out and then we will you know we will gate and verify once that verification validation happens we can send it out something else to note is when a build completes there is actually a metadata import that contains information about how the image was built how the image was built the sources that went into the image and all of the content that is within the manifest that belong that is in that and given that we can actually reproduce not not bit like we haven't mathematically proven that it will be bit for bit but we can verify that the manifest name version release of every rpm that goes into an image can be reproduced and each of those rpms themselves can be checked some and verify because they're signed and there and all that so anyways so this is this is the the system and this is kind of why I wanted to mention earlier the OpenShift architecture because in here it's just kind of like this this box you can't really see how how well scaled out the environment is but for those who are fedora contributors the the idea of kind of coming into disk it and putting in a spec file and then submitting a build to Koji and having the code have Koji build go through and then you submit an update to Bodhi and that go out to the users like that's pretty par for the course you're used to that workflow so what we did is we tried to mirror that as much as possible to keep this as consistent as possible for for the fedora users so a layered image maintainer comes in and they'll have their docker file and potentially their service and it scripts and those kind of things and then tests and documentation instead of doing a fed package pack a fed package build they'll do a fed package container build and then that will fire off in Koji and Koji will schedule that build inside the OSBS system and then OSBS will perform the build and import so the logs are actually brought in to Koji on the fly it really kind of as it goes and then when it's done all the metadata will be imported and then from there a message gets sent out so actually I don't don't have this diagram I probably should have but from there actually a fed message gets sent out task storm will pick it up and and we'll actually be able to do testing everything from the candidate registry before we distribute to the users so disk it for those who are not familiar this is a distro get structure set up by fedora it's used to provide versioning for all the input sources that result in becoming fedora there's a branch for each release master branch is rawhide rawhide is our development version for those who don't know fed package is the maintainers build tool allows us to have kind of some niceties for disk it and initiate builds locally remotely if anybody wants to do mock builds locally you can do that koji is fedora's authoritative build system everything that we would potentially need to know is in koji and why that's an interesting point is because if at any point in the time we want to just blow away the entire OSBS system we can because we have one touch deployment in the ansible playbooks inside the footer infrastructure this is something we do in staging periodically just to make sure that it still works and we haven't broken anything and because koji is authoritative and it does contain all the metadata required to reproduce any of the layered builds we can actually just remove it and since it is disjoint from the registry we don't actually lose anything and since all the logs are imported in koji we don't actually lose anything but I wanted to kind of point that out because it is interesting to note that koji is where everything happens not just for layered image build system but also through all artifacts of fedora so rpms live images cloud images isos the distribution stuff things that you get on the little USB sticks of conferences all that koji container build is the plugin that enables fedora fed package container build the thing that allows us to actually do the integration point in koji with OSBS and then the registry is our upload destination so I spoke really fast when I so we're actually done if you have any questions I'll be happy to field them if not I'll give you a little bit of time back I ran through this and it took me 40 minutes last time and I did it did it much quicker yes okay so the okay so the question was are there hooks to get notifications upon build failures in the event of an automatic rebuild okay so the question was when a layer rebuild loan a lay automatic layered rebuild happens because the base image changes will you as a layered layered image maintainer get a notification in the case of a failure or will those be validated in some way can you get feedback on the new rebuild at just a notification period so two things one you can because fed message will be capable of that we will have to define something that would contact you as a image maintainer but to you can't because the other rebuilds don't fully exist yet but that's something we should absolutely do I think that's good a good idea I think it's good feedback in terms of something that would probably be useful to to maintainers but as far as validation we will absolutely so the fed message will go out task a trial will pick it up and run the test so we actually have a document that kind of lays out how you should how you should have tests to define within within our environment so they can be run so we can at least once the layer rebuild happens get the test and the tests will define what is released so when we do the gated release we will be able to query the historic test data and we won't push anything out that didn't didn't pass the tests but yeah so notifying you in the event of a layered an automatic rebuild causing a failure is probably something we should look into so not today but we'll yeah let's we should yes take us through the process of the next shell shock and how long that will take so shell shock happens we'll call it shell shock to some super inventive that fix will go into the rpm that rpm will go into Bodie that rpm will come out of Bodie into the updates repository then automatically a build will be triggered well okay so today something relinch will go trigger a build hopefully in a few months a trigger a build will automatically be triggered that will go through and it will cascade rebuilds throughout anything that relies on it which is going to be everything because that would be in the base image those would chew through and as they come out of the build system it would go through the testing and have verification right now builds take on average two to five minutes depending on how big of a how big of a you know task list is in the docker file define tests are going to again depend on specific specific images and and how what level of testing they require and all those things so we'll say 10 minutes and then once those are done we can trigger an automatic release based on the latest tested and those can be done in parallel we can we can right now build 16 images 16 images concurrently and we can scale up from that if we need to pretty quickly like within 20 minutes we can add multiple extra nodes we can we're we're right now we're averaging eight concurrent image builds per node and we have two nodes currently because there are five layered images and just get at the moment so we didn't feel the need to increase capacity yet so I mean that would be kind of the workflow as far as timeframe a lot of us can have to do with how many layered images we have so let's just guesstimate that we have a hundred layered images and if we divide that hundred by 16 we're looking at what 32 32 you make me do so six so yeah we'll say you know so six point two times we'll say worst case scenario 10 minutes per build which is potentially you know realistic given the the added load and it's a little bit outside of the average so it would be an hour for builds and then as they get done you know kickoff test so we'll say again worst case scenario for 10 minutes a piece so we'll be looking at essentially two hours once the once the updated RPM hits stable and all of that uses the internal RPM repose so we actually don't have to wait for the mirror network to cat to update so let's say four hours just just to not just to be a little bit you know safe side not lie to you terribly it was four hours we can probably do turn around time on something like shell shock in the future yes okay so the question was how many image flavors do we plan to have and what's the goal for the applications so initially this was kind of kicked off through the Fedora atomic working group which used to be the Fedora cloud working group we kind of move towards the idea of targeting project atomic as our as our upstream and trying to deliver that across cloud platforms and and native hardware so the original target is to bring container applications on top of the atomic host as as a runtime platform as we kind of but with with the subtext that it doesn't have to run on the atomic host I mean it can run on you know bare Fedora anywhere realistically anywhere you can run OCI images the the goal or the initial hope is that we can we can deliver something that is very useful as a you know a server platform you know either in cloud environments or locally for container workloads whether it be single host or multi host orchestrated and those kinds of things so the initial goal is this coming up Thursday our virtual activity day we're going to move roughly 50 of of various services that are that have historically been on GitHub and distributed through the the the Docker hub we're going to try to bring that into our build system and and actually work on that so it's I mean it's very standard things like htbd engine X you know PHP Python I believe there's a Python flask there's a Django there's a rails like just kind of trying to get those those application stacks or the you know in in container images our syslog you know things that you would nest you know would probably want in an environment and that's the initial goal from there I think a lot of it's going to evolve but something that we're currently scoping out with the workstation group is flat packs so one of the things that flat pack is is aiming to do is also being able to distribute their images as OCI compliant images so if we can get there we can probably integrate some of that with with this similar build pipeline testing would need to be a little bit different just because of the nature of flat pack but we want to be able to leverage the work that was done here for some of the future things that we want to do same similar thing with modularity so the modularity group is is hoping to distribute modules both as you know traditional sets of RPMs as well as images and we'll have we'll have those in there as well so kind of a lot I mean like it like in by by a lot I mean like spread out amongst different initiatives but yeah the initial goal is to target the atomic coast and provide content for for a useful I guess a useful word I'm looking for just something like a useful solution for the problem or the desire of having a fully containerized environment for so the question was is is something we want to do is ship Firefox in the container so for desktop applications for graphical environments flat pack is the preferred solution from a Fedora standpoint so that is something that we absolutely target we are we are aiming for that I don't know how soon on the timeline that's going to be but that is something we're definitely working towards we actually so the for atomic working group a handful of members of us as well as members from the floor release engineering team met with the desktop team just earlier this week to try and come up with kind of a precursor plan for what work needs to be accomplished to allow exactly that so allowing Firefox you know lever office those kinds of things to be distributed as containers and run as a flat pack runtime yes okay so the question was everything that I talked about in the scenario of shell shock was targeted on a Fedora released version and the follow-up question or I guess the follow-up question that premise is are we doing any of this release rebuilds or anything for rawhide the answer is not yet that is something that we actually need factory chado to to exist to power because of some of the some of the kind of tracking of all of the you know I guess the funnel of content coming into rawhide we need something to to have an idea of what's going on there and right now we're able to kind of get that from Bodi but there's no Bodi for rawhide so yeah so not yet but that is planned like we absolutely want to keep rawhide in in the in scope there was yeah okay so there was a comment and then a question the comment was right now with the redhead images there's roughly 120 so that's probably a good estimate for you know a relatively initial offering since this is available and a lot of people in the redhead community participate in fedora will probably be in that ballpark pretty soon the question was for builds are we hooking to things like maven and the answer is no not yet right now we're only doing rpm content allowable in docker in the docker file for the image build and we plan to do better for that in the future the big thing is is to track the ability to audit and reproduce the build we need some way to curate that content stream and with rpms we have that because we have that tooling because we as a distribution have been doing that forever but for things like maven npm ruby gems you know pi pi peckle pair all of those things we we want to get to a point we have that we just don't yet and but it is on the roadmap so if you go so my last to do to do laptop sleeping maybe bealer there we go so I have a reference page so once this talk is up in PDF format or however they want the dev comp folks like exported on the wiki page for for the initial proposal down in there we actually talk about the future of wanting to do curated content we just don't have it yet I didn't mention maven but yes maven along with npm and ruby gem all those things we we absolutely want to do that yes retention policy for images the question was what is the retention policy for images going to be like we're going to keep n and n minus one so whatever the rate the latest release of a particular image and its previous release will be in the registry we're going to continuously be cleaning out the registry because it's just a lot of data and we but we want to keep current release and minus one to allow for quick rollback because that's kind of a big functionality or a big of new feature that we have that we used to have is the ability to atomically update our operating system with atomic host and then also our application stack with you know the container images because they're immutable so yes we'll keep the latest and minus one there's been discussions of possibly doing minus two and I mean we can we can hash that out in the in the working groups as a community we're open to it it's just to start off with we figured current minus one okay I believe that was we're pretty close to time and I don't see any other questions thank you all very much


在這個時候,我們收到這個一點ARY vitaminemale excellenciesdimientois delegatesladies and gentlemenI bring greetings and wishes for happinessfrom the government of Bhutan Information and communication technologyhahas become indispensable for developmentacross the globeMore than ever before, technologistsare impacting the life of our citizensButan has given a lot of emphasis to our ISCC  bona fajit dharma                                          不                                                                                narabharesh Blog hai c lift cm ɍ 수 r o r int a company narcissism  Communications ʰ ʰ r ʰ ʰ ʰ r r ʰ ʰ ʰ su prepared ʰ à r ʰ ʰ Ö


Marta how lovely to see you again after all these years and I wonder if you could tell us something about what you've been doing since you left us. Sure, yeah, no thank you so much and it's really great to see you as well and so it's been quite a while since I graduated from King's. And I immediately went into the sort of human rights and humanitarian sector so I had various placements in different NGOs immediately after graduating I started with an organization called the Euro Mediterranean Human Rights Network that works mainly across North Africa and Middle Eastern countries with civil society organizations forming this big human rights network so for that particular placement that was in Brussels and I was with the EU advocacy office but later on I spent some time in Lebanon. And this was basically after a few years of working for different human rights organizations, including girls not brides that works on girls rights girls education and seeks alternatives to child marriage and other harmful practices so after that I took a very early we can say career break even though I hadn't worked for very long. And I did a second masters. I applied for a scholarship quite randomly at the European Inter-University Center for Human Rights. I got the scholarships I just jumped on board, and my masters there was focused on human rights in the Middle East and North African region. While based in Lebanon, I conducted, I did that master's thesis on Syrian refugees, but more specifically Syrian-led efforts to rebuild to sort of self-empower and so yeah Syrian-led efforts in Lebanon so I conducted field work along the Syrian Lebanese border there. I think that was one of my highlights. Wow, wow, that is amazing. Because I remember looking down on some of those borders from the Golan Heights way back when, and it's remarkably atmospheric place and I think you must have enjoyed working there. I'm particularly thrilled that you're working in the field of human rights because as you know, you know I've been teaching on ethics and human rights in world politics, and it's hugely rewarding to find students going into this field. And what are you doing now, I mean after that wonderful break now that you've come back to your major career. Yeah, no, great. And also just to to mention on that that obviously you're the modules that you taught at King's at the time of my masters there, they were really, they gave me a lot of inspiration and hope that it is possible to achieve change, because being able to conceptualize that and you know conceptualize the space for ethics in international politics is so important and quite or very rare. So your work really laid an amazing kind of foundation for that work and also, yeah, made it seem possible to achieve change. Well, you can imagine how delighted I am to hear that. And your current position, what are you doing now five years ago I incidentally founded an NGO refugee rights Europe. I say incidentally, it was an incident because it was supposed to just be a one off project. So basically in reaction to the situation at the UK France border in Calais and the surrounding area. To existing and yours to see if there was any way I could be useful to advocacy efforts around human rights for displaced people trapped in that border zone. At the time, there wasn't really any appetite for that sort of work in existing groups.  So we set out to conduct a large scale research study in Calais. So we recruited student researchers train them in field work and and deployed them to Calais and we interviewed and surveyed nearly 900 camp residents in Calais at the time. The overarching objective of that was of course to conduct advocacy so we went to find out exactly what's going on and to collect evidence of, you know, the shortcomings in the state response. And then we published a report had quite a lot of media coverage around it and conducted parliamentary advocacy and, yeah, in different forms and today it's a relatively established human rights NGO advocating for the human rights of all individuals on European territory irrespective of legal status really. Now that is is a story to inspire future generations of students. But anyway listen, I want to wish you everything of the best and congratulate you once again on an absolutely well deserved award I can't think of a better recipient so congratulations and I do look forward to speaking to you again soon I hope. Thanks ever so much. It means a lot to hear those words from you really great to catch up. Thank you.


Jeff, if you want to let me know when it's recording recording, all right. Thank you. And so, welcome to the Cunningham street roadway and drainage improvements community meeting. It's February 9th and that's 605 right now. I'm Justin Taylor. I've been the project manager for the city of Fort Worth also on the line. We have Michael Crenshaw who's been helping helping me with these projects. And then we also have our project development engineer Justin also all the three nickels and our project engineer. We'll be taking this project moving forward, Jim D on the line. And so, this project is being brought to you through the transportation public works department through the storm water management division is the sponsor of the project. I work in the capital delivery division, which is responsible for delivering capital projects. Specifically, this comes out of the hazardous roadway over topping mitigation program or the program. And this is one of our highest priorities with our storm water funding because it addresses the high priority life safety issues when flooding might overtop the roadway. Currently, this project is in what we call project development, which seeks to define effective, affordable and acceptable solutions. And so, within that we it's making sure that the projects that we're proposing are feasible. We don't want to turn the project loose and only to find out later on after we've extended a lot of effort to find out that it just can't be built and it can't be addressed. So, it's also making sure that we're coordinating with any city plans, coordinating with any existing utilities. We, as a city, while we require permits of builders and businesses, we are required to get permits for some of our projects, usually that's going to result in a permit with potential with the Army Corps of Engineers or coordinating with FEMA. And we just want to make sure that we have a really good handle on other site constraints. So, currently this project is kind of nearing the end of project development. And I'll talk a little bit more about that towards the end of the presentation on our plan moving forward. So, the reason that this project is being looked at for possible improvements is because Cunningham Street at this tributary, which is Stream SC7, we know that it has a documented history of flooding events. It even has two high water rescues as well as three other recorded events, which are going to be instances when maybe we get a call from a resident or possibly from the fire department and we need to set barricades out. So, we do have some documented history of flooding in this area even just back in November. Keeping in mind that the dates on these pictures are in British or kind of European with the date first, even back in November with about an inch and a quarter of rain or so this roadway was over top, not significantly. But that was just an inch and a quarter over about two days. So, anything that's much more intense is going to result in much higher flooding and dislocation. And so that's where this project, now that's why we're looking at this project that is ranked very highly within our program. And just to give another view of the area, the project limits are roughly from Crowley to just shy of Blakely. And there on the screen is a star representing the existing crossing. The shading on this represents the FEMA floodplain, which is a regulatory device that kind of helps us get a handle on how wide and potentially how deep the flooding is during a design event. So again, just some additional pictures of what the area looks like today. As you can see in the screen, the box, the culverts that are in the, that are in the roadway were recently extended by city crews and coming up in the next few months out. The street department is going to be adding some additional pavement over those. Also, there will be some additional flood signage being put up soon too. Just on the flood signage is going to be temporary just to let everybody know about the hazard. Just in case somebody drives by and they're not aware of it. And then the widening of the street is really just temporary to make it a little bit safer in the interim while we're working on designing these potential improvements. And so again, just another picture, this was closer to Blakely Drive looking towards the crossing. So what we're looking at is basically a bridge. So these next few slides are going to be kind of a series of showing what we're looking at for potential improvements and kind of an early phasing of what that might, what that construction might look like. Here, just so you can kind of get an idea of what the footprint of this project is. You see Blakely over on the left side of the screen and Crowley Road over to the right side of the screen. And with the stream with the channel that we're crossing there in blue. So the first thing that would want to likely go in would be the bridge piers. That's going to be the structure that's going to support the actual bridge. And then there would be filling in the, you know, filling in the slope area underneath where the roadway is. This roadway is going to have to ramp up to the elevation of the new bridge. So it would be filling the land underneath there as well as putting down some rock riprap to help protect from erosion and protect the the embankments that are going to be placed. There would also be some drainage improvements and some sanitary sewer improvements to reroute an existing sanitary sewer drainage to convey runoff that's within the street. And then we would also, we then wind up constructing concrete pavement over the new bridge and five foot sidewalks on both sides of the roadway. The sidewalk on the, on the west side would connect to Blakely and would terminate in the Crowley Road right away. Ready for any future sidewalk extensions along Crowley Road. Now, one of the big questions that I think if you live in the area, you're going to be concerned about is what's it going to look like during construction? Is it going to be open while construction is taking place? And so what I've shown here, this road that's kind of shown to the north in a great in area is a temporary detour route or a temporary road for, you know, one so the contractor can reach both sides of the of the project as well as so that we can maybe potentially keep traffic open for as long as possible. I do anticipate that at some point there will likely be a closure of the roadway, but I wouldn't be at this point in the project to be able to tell you how long or estimate how long that might be. Working in our favor though is the neighborhood to the west does have an exit onto Crowley Road just a little bit further north off of this screen. Additionally, assuming this project moves forward, there will be further community or additional community meetings at the 60% set of plans, the 90% set of plans. And then finally, whenever we have a contractor on board for a pre-construction meeting and we'll be providing updates on the on this detour and ideas on how this might look during construction at each of those meetings. So this is something that we're aware of and we want to be very sensitive to because it would be a disruption. So we just want to make sure that you know that we're we're looking into this and we're designing with this in mind. So just to kind of summarize, you know, project benefits, this is going to reduce the likelihood of Cunningham being overtopped. It's going to improve road safety because it's going to be a wider roadway than it is today. It'll be concrete pavement, which is going to be an improved driving surface. So assuming this one, this project does move forward, which it looks like it will. The anticipated schedule, the anticipated complete design in the summer of 2023. Bidding and awarding in the fall of 2023 with construction to begin in winter of 2023-24 and lasting for about a year after that. This, like I mentioned before, this is the stormwater revenue bond funded project. Our current estimated cost is about six and a half million to construct this bridge and improve the life safety concerns over there over on Cunningham Street. And so with that, I'll open it up to any questions. I don't I don't see any in the chat right now. Michael, do you see? I don't see any to you. No, no, I do not right now. Okay, so with that, I'll open it up to anybody who's called in if they want to unmute and and asking any questions. I'll go and read out my contact information. So if anybody has any questions. Are they going to give me a call or shoot me an email? And my phone number is<PHONE_NUMBER>. And my email address is Justin dot nailer. That's in as a Nancy. A Y L O R at Fort Worth, Texas dot gov. Justin, are you going to need some easements or right of way? Yes, it does look like we will need to acquire some right of way and easement. And the once we get the design going, that'll be one of the first tests that we will do. We'll start working with our real property division or with the city's real property division to to get appraisals and to start negotiating the purchase of those easements and right of way in order to accommodate this project. And where can this recording be found? We will post it to the city's website once we get a project page set up. And so that that information will be on the city's website. So when you go to Fort Worth, Texas dot gov. And you should be able to then search for Cunningham Road. And we anticipate getting the website set up in the next few weeks. I see we have a couple of calling users that calling users feel free to unmute yourself and ask any questions if you have any. If you are muted and would like to speak, I believe, unless your phone is actually muted, I think star six will unmute you in the WebEx platform. Justin, can you go back a slide to the dates? Yeah. So how long did you say construction was anticipated? We're currently anticipating about a year.  So depending on how wet of a year it is, that's going to affect the total construction duration, but we're currently estimating about a year. Okay, thanks. And if anyone has questions afterwards, they can just email or call you. Right. And I believe my contact information was also on the mailer. So more than likely, if you're on this call, then you got some notification through this mailer. So feel free to use that information as well. I'm not hearing any comments, any additional comments coming in or seeing any questions in the chat. So with that, I think we can go ahead and adjourn the meeting here. I thank you for your time and if you have any questions, feel free to give me a call or shoot me an email. And again, this will be this recording will be posted on the city's website in the next few weeks. The next meeting you said would be roughly 60 percent? Yes. So a little bit more meat on the plans at that point. A few additional details to share at that point. So possibly six months from now, roughly or so fall of this year, 2022. Yeah, that seems realistic.


Hello, this is Christian in this episode. We're going to look at web forms and Laravel mainly want to do some just the Service side form validation and how do you set up a form? Okay, so first thing is that We need to go in here. We're going to just use the Forms which we created for the contact page right here Okay, so this is a really simple form that has three fields and we want to process this form and then you know Sent it back in. So I'm going to open this also in the routes page and open up the web PHP and it's going to go into this contact page right here. So this is what I'm going to clean up this a little bit Okay, I'm going to remove this thing here. It makes a little bit Too messy to look at I'm going to do a format to clean this up a little bit. All right now Let's move this down a little bit. What I'm going to do is I'm going to create another round here to process a post Request. Okay, so I'm going to copy this and put it right below it. We'll make this as a post Now the first thing you want to do is That if you are submitting form to the back end, you need to be able to retrieve the data From the form and you do that by doing something called the dependency injection It's a really early early stage in dependency injection or DI for that matter So what do is when you inject a request object to this function here, right? So You know, as far as I know, like since PHP 5 or 7 you can actually do using type hint to allow Certain type to inject to a function. So we're going to use a request class in here If you type that in here uppercase R. Remember, you're going to get that from the HTTP from the support HTTP Client, okay, so make sure you hit that and on the right top here, you're going to see HTTP request if you don't see that you probably got the wrong one So make sure you grab the right one for that and then you will go ahead and then we need to add an object call request This is just a variable copy question call. Whatever you want can be ABC doesn't matter. This is not so important What's important is this type here Okay, so now when we load the form using the post method is going to load this as opposed to this I'm going to use the same URL. Okay, you can make it differently if you want to I use the same URL But the content here will be different and then when I submit the form go to this page I'm not going to return the user back to the same view. I'm going to go to a different view Let's say we call this is a thank you view. Okay, so thank you And I'm going to create a view just a minute. So if we're here, thank you And then we're going to create a very simple view. Maybe just copy the one that we have Contact is okay. It doesn't matter Copy that and paste it right back and we name it to say thank you dot blade PHP and then here we're going to just put a message in here Um to say Thank you Let's put into a p tag Thank you, and then put the name right here. So wherever this is. So we're going to put the name in here And and you can put whatever message you want to put in here. It doesn't really matter. You can say something like thank you for um See to your Message and it will be in touch Something like that. Okay, so we know this is the user and a very simple form Okay, so save that form there now back here. I think we are almost done Now, so let's go to the form first. I want to show you something here Um that when you submit forms using Laravel by default the Laravel engine requires you to include Something what's called a cs um cs rf token What that is is really just a token Which is called um, let me let me go right here. Okay, I'll put it right here need to include that in the form Okay, so it's really the app symbol followed by cs rf Now this is a token that Will be generated by Laravel to prevent your form from being submitted from a different site Okay, um, you know because a user can create these forms in any site they want and they can direct that to Action to your site, right? They can put like htp here and then your site something.com and then whatever the form is Okay, very dangerous and sometimes so you want to prevent that from happening and only this form That is submitted from your server from your site will be allowed And that is what this cs rf is for okay to prevent the exploitation of unauthorized commands or Form submissions from a robot or from another user home hacker for that sort. Okay, just a security layer really important And you can turn this off if you want to but I highly recommend that too Okay, so this one here is going to go back to the same page which is the contact page Right and then the method is it's going to be a pose as opposed to the fork of gap Okay, um everything here is will be the same we'll leave it as is And I'll show you without this one here. Let me turn this off. Okay if I say that and Now if you go and launch the application, let me show you run that first So again report eight thousand And go to the site and refresh it Okay, so here's a form here. Okay, so notice I did not have the CRF install if you go into the store view you can see there's no token here I'll leave this open for now And if you try to submit your form without nothing I didn't record anything here So submit you're gonna get error or something like this. This is page expired. Why because Of the token right so that token actually general is session That is managed by laravel. So if the session or token is not matched It expired that form data and so therefore it does not accept any form coming into your site. Okay Very very very useful um An example to do that is that you can send any form to google and google will take it, right? So That's something that you want to think about so now if I turn this on Like that Okay, and save it and go back and try to submit it again And just click okay, and you see that See probably didn't do something correctly. Let's try again and submit Okay, so you can see that it goes it did work Except I didn't include the name here because of the form I submitted to the thank you right here I didn't include it right so it does work now, which is good So let's go and fill up our form for the mclose Down here go to the thank you. This is good in the url here. We go to the thank you here We need to include the variable for the name as well So the name here is can be mapped to a variable called name. We will get that name from The request okay, so the form data comes in it's going to be attached to the request object This is an object by the way and so it has all the fields attached to it I have three fields So you can just grab the name they will create a variable called name And it's going to be assigned with the value coming from the request And request here is an object so you can use The arrow function method to get the name of your field Okay, the name here is the field of your form. I have the name field Email and message right either one of those will which should be here So I just want to get the name and I'll do that And I pass that to the form and that should be okay So let's go back to the browser and refresh. You just refresh it. You should still take it But there's no name attached. So it's empty really. Okay. So now if I go back again Now I put my name here And I'll leave the rest blank. I didn't require that so you can see that pass the mining over And it goes to the thank you page again the URL is still the same Right, even though the same URL I can load a different view if I want to which is pretty nice, right Okay, so you can see how that works now the next thing I want to do is I want to validate these fields here I'm just really simple validation You can do front end validation using html like the require and all this stuff You can also use javascript. Both of those are front end validation Which are usually really good to do and then you have another layer on the back end which is the server side validation So I'm going to do just in server side the front end. I'll leave that to you. You already know how Well, let's say when I require All three fields and then email should be an email of that email type. Okay Now I'll do you want to point out here and their Documentation on the larval side if you go to this link here under validation and they're very towards like the middle of the way here. You have a Rule of validation for all your different types of fields. So there's a lot of them here for a date You know, whatever it is Um, we're going to do one for the email. So if you click email, you're going to do something like this Um, maybe just the email and then it'll be very simple here. I'm not going to do too much about it Um, okay, so all the rules are here if you want to look into that further So let's go back to our code And validate this form again. I'm not going to touch anything in the front end. Okay. I've managed everything in the back end So back here when the data comes in Okay Before I submit, you know assigning status data, I want to make sure they're required now to do that You can call the request And then request has a function called a validate Okay This function will run if you Run this first if this validation fails Then all these here will not this data will not be set It will By default it will redirect the user back to the same view where they came from Whatever that site is Not only that it will also Let you display some error messages Okay, so What do you validate here inside here is a array or a list of all the fields you want to validate I have only three fields. The first field is called the name. So I want that name to be validated using Some key terms in here one of these called required Okay, just like that in like html I wanted that to be required. I want to do a control Alt Shift down just to copy that down Email is also required and the message is also required But the email also want to include the type of email. So you put the type symbol like that You make it so that it's email. Okay, it will validate that make sure it's an email format There are the rules, you know Number of characters the minimum maximum Lowcase uppercase all the stuff again. It's in the url. I mentioned earlier Okay, so what this one does is it will run this function And validate that for you if it passes all the validation are required Then it's good to go and then we'll proceed down here and then go back to the thank you page. All right Now this function here returns an object Well, I'm not actually an array Of this one of you including here Okay in three fields. So you can do that by setting to another You know call it data. We call it validate data doesn't matter. We call it form data Okay, and then now once it's been Validated the data here contains all these data you set from the form field Which is the same as the request. So it's kind of duplicated Only difference is that this is an array. This is an object What is the difference? Well, quite a lot. So for example an object notation I can do one of these let me duplicate this again You can use the arrow like like that. You can use the array method, which is this Racket or you can use a function called get You get the name so I get her. Okay. So these three options are available for the request Object, whereas the data here is just an array name. So you have to use this method here Okay, so entirely up to you which one we use it So I'm just to make sure it does work and in these in these should should work Okay So now once we've got a dated if you don't intend to use the data You don't have to set it here. You can just leave a blank, you know request and and be done with it But I just want to show you that you know these should work as well all right Now let's go and get this a test drive. Now they are all required if you do We load the page If you try to submit it Right notice it doesn't load because we didn't put any error messages If I type in something here like that Okay, how do we know that it's going to show any messages? We don't know because we didn't include the error messages So let's fix the error messages first so we can see what's going on Now when you create this validation Once you require it what happens when it's seen is that it includes an errors variable This errors variable is available in the view So all your views will have this error variable if you go out here doing the blade page here You can display the error messages um, you know to the view and that is a A An instant. I mean the error message. So it would look something like this right here Maybe kind of div here Okay, and then we can put a class here for like alert and then alert using mixing with Bootstrap here. Okay, and we'll put here a list of messages. So ul You know what? Let me do this ul and then here I have a bunch of allies, right? And you can use a loop to go through Each of the error messages. So it's again error and its error here has a function to get all or get all of them and the error goes actually Goes into a Actually it's an instance of if I remember correctly Let's see if you go to the Uh, web. What is it at the vendor? I'll show you really quick vendor Uh, the lurevo Bring work. We've seen this before src under the illuminate. There is a um, a support Function, I mean class folder in here is a message bag class Okay, this message bag If you can see has a lot of functions that actually capture all the type of error You can see if I go and open the outline here. You can see that would be better And let me collapse these Okay, so you can see here that you can get the error messages from If it has any a particular type of error message if it has any error message the first message get a particular type of message Um, you get all the messages to do a give you account Um, all or Another way is any here if it has any messages it will return account if it's greater than zero and You know, so so use this to check your if I wait your data. So back here on the Contact page I can say if all the error messages return as this is called the error for each type of error, right and make sure we end Here I'm going to put the end Okay, so inside here that I want to display the error messages Whatever they are will be displayed here All right, so if I say this and go to the browser And refresh the page Um, here, okay. I think uh, it's called errors not error. I should be plural Errors Yeah errors and not error Okay, so refresh this again. Remember. I already submitted earlier What lost my data by using this box here, right? This is what error messages is But if I go to about come back again The box is here. I only want to show when the error is triggered But I want to show you that if I tell you something like this hit submit You can see that the error is here. This is the email is invalid and I don't include everything you should Have all three messages. Okay. So again, I only want to show if I have an error So you can do that by using another, um, class, which is the if right only show this box right above here if the errors Any It's true. Right. If it has any Then go ahead and show the error messages. Otherwise Don't show it Okay, let me go ahead and put this like that and then now it's Much nicer And refresh the page again if I go back you see that it's not there until I submit that and has the error messages Great. So now again, we'll go here for something here chr.com and then test and submit and there it is All right, perfect The last thing I want to do is sessions. Okay, it's really important to us and as well as we move forward into doing You know collaborations. So let's say that I once I contact send us contact form. I want to add the name to The message up here instead of saying guess they should say welcome christian or whoever that name is. Okay, so we do that really quickly Now session is quite simple in php. If you know that already it's also really simple in blade It's almost the same same method here So let's say that once I submitted the form and everything once has been validated I get the name already filled and then I want to pass that to a session variable So in here you can also use the global session if you want to if you do the php method like like that right remember that one That that's okay too if you do that you have to go and Turn on the session and things like that or you can use the level method, which is also called the session function And it's this available globally you can pass in here as a key value pairs an array it looks like this And the key is going to be a calling name a user or user name as a matter as a map to the name here Okay, so I set the session From here on so after this the session is active and how do we true the name back? You just call the session function followed by the key So let's say I set a session and then now I'm going to go to the partial be a navigation here And right in here instead of saying guess I want to load my name or whatever name is So you can do an if and else block above your anywhere else, but you can use a shortcut as well Just by going here and do the um, you know the add symbol So in here like that I'll do something like if the session Of the name Now it's called you so name a user user user right call the user Yeah user so if the user exists if that is true Then go ahead and load the session of the user Right, otherwise Load the word yes, okay Um, yeah, that should do it right Let's go back to the browser and if you fresh out page and if every load it should changes to say christian because I already set the form to well. Yeah to that already. All right. So here we go. And if I go and do something like Jake something at j.com test And now it changes to Jake Okay, very cool. Now. The last thing I want to do is how do you get rid of these sessions here, right? um A couple ways to do it, but the easier way to do in and learn about is you can go into the storage here The storage under the uh, I think the app now framework under the sessions You can see these sessions here. If you lower your page, it keeps a track of your session So you can see here is a session user here has a has a name jake here And this is for the other one as well if you want to delete your session and install it over again You just basically delete these just you know to lead the monster say yes to remove all the sessions um Yeah, so let's do that too. Okay. So now for go back and that should better be moved from these sessions Right. That's one way another way is you can create another route Let's say that I want to go to a route called c and I want to clear the session For whatever that reason is. Okay. So very simple to do in here You don't need to create a view at all just a route. So let's go here and say I want to create a route that will go to um Yeah, so get up the clear for session and the function here Be to clear the session. So you do that by calling the session class Then cold and colon flush You do it go to flush you will clear the session for you now the session here as you can see It's not available because need to import that in and you can import that by going to Again, if you mouse over this click on it control spacebar and you want to get from the um the facade I think okay from the support facades here click that And make sure it's a session in that session on And it should be important on the right top here. You can see right here. Okay So that is another way to clear your session your cache As well flush all of them if you want to flush a certain type you can use a different method But this is what do all of them. Okay. So let's say if we go back again and create my form Right. No no flush no session here go and type it again So session is on again. You can see here now once it's on even the the only way is you can you can actually Close the browser come back. It will still be there But if I go to the slash c to clear the cache Right And it's there. I did not be directly user. I shouldn't be directly user back to the home page But now you can see if it loaded is now gone. Okay, so let's fix that really quick and then we'll be done with this video So once I flush The sessions i'm going to return a redirect to the home page Right. Remember how we do that in the previous video redirect If I spell it out correctly Okay, so save that And then just do one more if I go and do a c and then redirect to the home page Okay, so that is it for this one Again, when in the future video when do collaborations, we're going to create a little bit more complex form Not that complex, but maybe to perform some of these portfolio objects need to add lead and and things like that All right, any questions, please let me know and see you guys in the next video


One of the things that I would like to touch on a bit more is science technology, the interest of women into those careers. I feel like it's a combination of beauty and brains. Thank you. Very little in commitment to that. Sure. Well, so the Miss America organization has been working with DEM education for four years now. We've partnered with the Department of Education, and we also specifically give away STEM scholarships to our contestants as well. But I will say that 60% of the young women on the Miss America stage were involved in STEM-related fields. We had girls who are in DO school, PT school, physical therapy school, med school, PA school, physician assistant. So, I mean, this really isn't, you know, we also had engineers. So it really is an amazing group of young women that you compete with who are in this organization. And so it made perfect sense to start the STEM scholarship in partnership because of who we were. And one of the things that I really encourage is, so this year I, as a, as Miss America, we have a cosmetic sponsor. And one of the things I was able to do is go into the lab, and that's something that is absolutely science-related, STEM-related that young women can absolutely, to necessarily think of. And I've said, well, you can either go into a lab or you can go into a lab and make it yourself and then be able to use it. And to learn the process behind that, I think will help them kind of think more of what STEM-related career paths are than just a typical engineer or doctor. Yeah, that's great. Thank you. They actually have a question from Bombay where they want to know a little bit more about, along these lines of education, they want to know a bit more about the partnership between Miss America and the Department of Education, and it comes to STEM. Can you say more about that? Yes. This is something that we're very excited about. We are officially announcing our partnership with the Department of Education this September. Like I said, we've been working with them for four years now. We're actually a secretary, Arne Duncan, a few days ago when I was in Washington, and we're announcing our STEM scholarships live on ABC during the competition this year. So this is a huge step for us, a huge step for the organization. It's really going to put that emphasis back on education, which like I said, many of us are in college or aspire to go to college in higher levels of graduate school. And so this is a perfect partnership, especially with STEM, having a degree in STEM, it just made perfect sense for this to happen. So I'm excited to see where it goes from here. Wonderful. We've got another question from the field from STEM. And I guess as a bridge to this question, I wanted to ask you first, do you imagine that you'll be involved in any of the sort of efforts to promote STEM even beyond your reign? Absolutely. I actually have quite a few conferences that I'm already booked for and engagements next year, STEM specific events that I will be advocating for. So that is something I do think is important that I will continue my involvement with. And do you think that there is something unique that women can bring to this field? I think there's something unique women can bring to all fields, not only STEM, but especially in any sort of business setting, educational setting. Reality is we think and act differently. We have different ideas. I mean, I just think that there's so many different facets that we bring to the table that not everyone might think of. And that's obviously every person does that too, but I think with women in general, if we're making a general statement, there's obviously something unique that comes from our perspective. Fine.


What's up everyone it's your girl Kenzie here from Leighton Sports Cards and I'm ripping in 2022 Panini Rickies and Stars Football Hobby 4 box break number 13 pick your team We've got Bernie S with the Bangles Niners Brian S with the Bears Brian F Jets Darren M with the Cardinals and Browns Darren L with the Steelers Edward P Cowboys Eugene M Dolphins Vikings Howard T Titans Jack M Ravens Jeremy H Chargers and Broncos George M with the Panthers Joshua S Jags Caden A Seahawks Kevin F Texans Leone G with the Packers Lewis L Washington Martin W Raiders Matt G Rams Nate A Colts Nathan A Giants Pack-a-Pong V Bucks Patrick B Chiefs Stephen H Eagles Thomas H Lyons Tony B with the Bills Falcons Patriots and Saints all right good luck everyone thanks again for the fill again the next one it's sold out 15 has Cardinals Panthers Browns that is the next one we're looking to fill all right Keys and Stars my first look at this saw some nice cards get pulled from this yesterday with Sam of course here we go we've got up first a blue Kyle Hamilton that's 72 of 99 for the Ravens Ravens taking the first auto there Logan Hall to 175 rookie Bucks Stellar rookie Silver Kenny Pickett for the Steelers Marchace Willis Hill and McBride rookie T Gibson Donald Fields we have for the Falcons blue to 49 rookie Tyler Alger Crusade pink for the Cowboys CD lamb that's to 75 Naji rookies and stars you got Kenny Pickett Cook and Ingram Lockett team duals we've got Christian Watkins or sorry Christian Watson and Romeo Dobbs to 249 Packers on the dual patch there Sky Morda 175 thriller Silver Jonathan Taylor all right we've got thrillers on the red Velocity Damian Pierce at 72 out of 80 thrillers cards are really cool looking I like those standing ovation to 125 Kyler Murray airborne of Mack Jones for the Patriots to 99 rookies and stars we've got John Menchie the third and Damian Pierce to 249 team duals Texas Drake London on the blue foil that is three out of five for the Falcons wow that's a sneaky one Atlanta that's gonna be Tony B three of five Drake London wow nice one there we'll mag that rookies and stars Silver Derrick Carr rookie Rush James Cook Rocker last pack here 99 we've got rookie Otto Desmond Ritter what a fox here for the Falcons very nice really sharp with the card there we've got thrillers Johan Dotson that's white to 149 and I'll do it for the first box nice first one there um we'll do relics and autos anything numbered to like 25 or less Cousins job brown they've got Patriots rookie Otto 99 Kevin Harris Patriots draft class to 125 Breeze Hall for the Jets thrillers silver rookie Traylon Burks Ritter Rush take it rookie base Malik Willis on the blue color match to 49 nice one there for the Titans thrillers white Jameson Williams to 149 and likely rookie got for the Jets big time patch to 249 Garrett Wilson Jets to 175 Sam Williams Silver Airborne Roger Stalbach Neil Higgins we've got to 35 Kway Walker on the rookies and stars green thrillers Jay Jeff five of five wow nice one there for the Vikings five of five Justin Jefferson thrillers that's sick and bonito cross training for the Browns to 249 uh David Bell 118 inches on the broad jump my gosh Tycon Thornton to 175 silver crusade Charles Woodson Hutchinson draft class a lot of a last pack here box too what do we have here Kenny Pickett seven of 75 there you go Pittsburgh pit is gonna be Darren L congrats on that one Darren to 75 very nice we'll mag this one for you beautiful picket red rookie thrillers grease hall that's to 99 rookie rush of Walker Tibodeau and Watson box three here we go good stuff so far again y'all the next one was sold out 15 had three different teams left that's funny Clay pulling in Browns uni just noticed that Tyler Lockett to 35 thrillers white delvin cook to 149 man in motion cross training Romeo Dobbs to 249 Tyler Alger to 175 falcons stellar rookie of Jamison William for the Lions not numbered like Willis rookie Mara Dotson rookie rush to 225 of Sam Howe and we've got purple thrillers Patrick Mahomes it's 28 of 35 nice it there KC number Mahomes harbert Williams bell and McCreary at cross training of Jalen Tolbert for the Cowboys to 249 uh to 49 touchdown club Justin Herbert silver thriller of Traylon Burks rookie rush Garrett Wilson Kenny Pickett rookie base King Henry got dressed for success wow patch auto three 93 of 99 Kenny Pickett are you ghost stealers dress for success another picket auto another one there for you Darren congrats on that airborne Dak Prescott red that's to 99 Tyler standing ovation spiller and likely last pack of box number three net harbert beat man we've got dress for success of sky more that one is five of 99 for the chiefs okay see Russell Wilson to 175 silver rookies and stars Roger Stalback Holmes Davis Tolbert in Lewis sign last box here and then we'll do a recap everyone so much for getting everything filled up so far today to appreciate it to 175 Devonte Adams crusade Aaron Donald to 149 Pierce rookie rush Gordon and white Jefferson Garrett AJ Dillon we've got cross training Calvin Austin the third nice dealer pass there seven of 49 stealers doing very well three colors born in gold that's six of 10 they go bears on the uh gold rookie rookies and stars Desmond Ritter touchdown club Herbie Corral yeah still is getting some nice cards today already we've got to 125 Jameson Williams on the draft class purple thrillers rookie for the Jets Garrett Wilson that's the 35 you're a Wilson draft class and how Hutchinson what's up you see how's it going um personals will be after group breaks tonight with forest I've got all group breaks for the daytime shift team duals Niners Davis Price and Danny Ray that is to 249 what's up frosty Matt Ryan to 175 Colts crusade silver Traylon Burks I want to go be Dean and Phillips yeah sure thing come on Jackson Cooper Devonte Smith we've got Falcons another Ritter auto this time 35 of 25 or no 25 out of 35 nice on their Falcons right now 25 of 25 my goodness can't talk today Atlanta so two picket autos in two Ritter autos Tony nice hit a little numbered on that one too oh I like this one red thrillers Kenny P speaking up to 99 then we got draft class Kenny P and Steelers doing very well last pack here then we'll do and we've got Jones we've got sky more chiefs again with another uh dress for success that's 25 of 99 couple teams hitting multiple times this break there you go chiefs through both champs sky more that is seven out of 49 David Bell stellar rookie silver Malik Willis John Dodson Pierce and a spaghetti all right recap time here it's a nice break go we've got our relics and autos here team duels for the Niners uh cross training Calvin Austin the third Steelers Jalen Tolbert Cowboys Romeo Dodds Packers David Bell Browns Garrett Wilson Jets Texans dual uh Packers dual again we had our autos Kevin Harris Patriots Kyle Hamilton uh Ravens a Desmond Ripper Desmond Ritter for the Falcons another Desmond Ritter for the Falcons nice uh break for Atlanta sky more for the chiefs we had two of these chiefs we had the Kenny Pickett dress for success to 99 as well the three out of five Drake London another nice hit for ETL and another nice hit for the Steelers seven of 75 Kenny Pickett all righty that will do it for the first rookies and stars we've got some more coming right up