umes you can find it in the GitHub repo but this means that any Fedora changes that were made in Fedora's Git for example someone proposed some changes using a pull request in Pagura would get overwritten during the next thing by packet from GitHub. So the solution of this is to just keep the spec file in the Fedora this Git as the primary version but then packet needs the spec file and it is not available. So the solution is to fetch it from the Fedora this Git when packet does the update and fortunately packet has actions which are kind of hooks that can be executed during the process. So we set up a hook that downloads. It's a simple shell command which downloads the spec file from Fedora this Git for a packet to use and we actually need to download all the files that also are included from the spec file because we use include in our spec file. Another option is to configure packet in Fedora this Git as I shown on previous slide instead of in the GitHub repo and to use a profile upstream instead of proposed downstream. Why I haven't used it in our case it's because this job was not available yet when I started this automation. So as you can see automation as any other software development is subject to change and often you are lagging behind the newest teachers that are available in the tools. Anyway, another problem we encountered is RPM change log because by default packet collects all the Git commit messages summaries in the GitHub repo and uses them as a change log entry for the RPM or it can optionally use the GitHub pre-description as a change log entry but both of those options produce quite where both change logs which is contrary to the Fedora packaging guidelines the state that change logs should be brief and in particular they must never contain entire copy of the source change log entries. We wanted to comply of course with the packaging guidelines so the solution was again a custom action that is called by packet when it needs to collect the change log entry and there's a simple shell command that echoes the base version and the version that gets virtual that provides us in environment variable. The problem was related to multi-source RPMs because actually our presentation is simplified. It talks about one repository on GitHub but our RPM is assembled from many individual repositories so this means we have multiple source tags and we need to update them if any of the source table changes and packet needs to upload those tables to local site. So to update them if any source table changes we again use a custom action that regenerates a part of the spec file where we have the source tags. It's marked in the spec file it's actually the spec file is used as a template for this generator and the generator places all the source tags by the new source tags that are needed. And for uploading the new sources to look aside packet now supports this multi-source RPMs and if any source is URL packet uploads it to look aside. And this was actually implemented by me because I need it in this project but now everyone who uses multiple source tables the boss in RPM can benefit from this. Yeah so in the conclusion I'll just hold this for now probably so in conclusion I'd like to say that it's really critical to automate all repetitive tasks that you can and to live up to this standard we developed this presentation using the tool mark and the mark to base GitHub action that converts a markdown file into presentation and then using GitHub actions again publish it to GitHub pages. So now let's proceed to the Q&A section. Anyone has any questions? Then all right then yeah so just for you to know I have another slide with references about every subject that we were covering today so you can go and click on the links and study everything. And also we'll be here around the corner for some time after presentation so please come around if you need to. Thank you. The next talk is get on the container and explain yourself. Hi everyone we had some technical problems but we are ready. My name is Weiner. I work for Red Hat in the virtualization team for a while now. This presentation was actually proposed and most of the slides were made by Triva Williams who is the technical manager on the Open Infrastructure Project Foundation where the project is hosted but she could not make it here so she asked me if I could be presenting it. I'm engaged in the project that I will be talking about Cata containers since more or less 2020 and basically I'll be talking about Cata containers and this is the mantra of the project. It's like the speed of containers, the security of VMs. This is what we are seeking in this project. Okay, a little bit of the history. Well, the project actually began in 2015 when Intel launches clear containers. I don't know if many of you remember of that project. And then in 2017 it was merged with other projects and now it's under the umbrella of the OpenShift Foundation and in May of 2018, the first release. So this was the first release, what's not the perfect release, but it was a workable version of Cata containers. In 2019, more or less one year later, we have the first adopters using Cata containers on production. So we have Alibaba and other players. In October of 2020, a major bump, a 2.0 release, I will explain a little bit of each of those releases later. Two years later, another major release and guess what, 2014, we will have probably the next major bump. I don't think it's for intension, this is just a coincidence. And basically we sit here, we are in the next generation of containerized workloads and so on. Okay. But what is this? What is exactly Cata containers? In a traditional container, containerized system, you basically use namespace and C groups to isolate the process. So to create the containers, of course, there are other layers of software and features being used, but the main ones are the namespace and the C groups. Then you can have other technologies like SecComp for enhancing the security of your containers. SecComp, for example, to filter out SysCalls that you don't want your application to execute. And you have capabilities and so on and so forth. The thing is, if your workload, the application finds a hole, he can, in the, for example, container B, he can escape and have access to the container A, even have access to the host kernel. So this is the warm, basically, going from one container to another. And in order to solve, not exactly solve that problem, but add a new layer of security for containers. We have Kata containers with approach, which is basically, your container is now isolated within AVM. So it's running inside AVM. And you have this, now, this layer between the host kernel and your application. Even if your application is able to escape from the namespace, for example, it's going to have access only for, with access to the guest Linux kernel, not the host. So this is basically what Kata containers is. Moving on, when I joined the project, we used to integrate Kata containers with Docker, for example. So you would be able to, like Docker dash dash runtime, and then spawn a container in Kata containers. We dropped the support, and nowadays we have the support only with Kubernetes. So this is basically, is how the container is initialized in Kubernetes. So the first one on the top, you have a container runtime interface. The device Kubernetes, you have, in this word, container runtimes, it be many things. But yeah, you have cryo and container g or nerdctl. And when you need to spawn a container, you're gonna, one of those container runtimes, they are going to run, for example, run c, or c run depends on how you configure your environment. But basically run c is in charge of actually running the container or starting the container, providing the environment for the container, and managing the life cycle of the container. With the Kata, this is the workflow with Kata containers. Basically it sits between the container runtime and the container within the VM. So now cryo and container g, they are calling the Kata runtime, and the Kata runtime is in charge of creating the VM, spawning the container process inside the VM, and so on. It's important to say that you don't need to change your application, right? The same application that you have, you don't need like recompile or something like that. It seems less, it works. You just need to change a property in your configuration file when you're going to deploy your application on the cluster, and it's going to automatically work for you. Okay, this is an example of a use case of Kata containers. So in this example, you have a sensitive workload, traditionally how you protect or you separate those workloads, basically you run a sensitive workloads on node three, and the other one on node four. So you are physically separating the workloads. And with Kata containers, you can even spawn the two sensitive workloads in the same node. So this is going to allow you to increase the amount of pod containers that you can run inside your node. I'll run a little bit fast, sorry. So this is the product that we made out of Kata containers. This is the OpenShips and Box containers. Here, there are some blog posts where we explain more use case that you can use with Kata containers in the OpenShips and Box containers. We are in the catalog of the Red Hat, so it's very easy, simple to just click and install it. So a little bit about the releases. The second major bump, we improve it, the agent, because there is an agent, let me go back a little bit. There is an agent inside the VM here, and that communicates with the runtime, right? There is no container runtime inside the VM. And we improved it, we changed the agent, now it's written in Rust, we changed the protocol so just to load the amount of memory that we use on the VM. Because it's a concern right this overhead that you're gonna have in the system. All right, so, Virtio FS is now the standard shared file system, because basically on Kata containers, the container image is not pooled inside the VM. It's not even Kata who is responsible for that. It's the cryo and the upper layers. So we share the container file system with the VM, now using Virtio FS, that was the first time that we use it. So, and then we provide some stuff for security, we introduce the support for Cloud Hypervisor, Kata supports Cloud Hypervisor, Firecracker, and QEMU as the virtual machine monitors, so to respond to the KVM VMs. A little bit of stability, some integration with Kubernetes. Version three, so we have other enhancements in terms of performance. We have this single binary drag ball hypervisor which is basically the run time, the Kata run time in the VMM, the virtual machine monitor, they can be combined into a single process. So we start, you don't need two process. And this, we made this mostly because we rewrite the run time in Rust again, but this was not just a rewrite for the sake of rewrite, right, because Rust is nice. No, we changed the architecture a little bit. And now, yeah, so support for C-group V2, then we migrated to the version of Virtio FSD right in Rust as well. We started the Confidential Container Spin-off which will have a workshop tomorrow, if you're interested or know more about the Confidential Containers. A little bit of, we bumped versions of Kimu, kernel and so on, because of course, you need to have the guest kernel. You must have the root FS and everything. This is maintained and we tested in the project. What's coming now next week? Sorry, next year. The presentation from Fabiano Fidensio and Kevin Forum this week. He mentioned some stuff that we are working on. Just listening here. Yeah, so the project is getting rusty. We have only now, I think, the run time which is in goal. And yeah, if you want to contribute, unfortunately, I'm out of time. Sorry for that. If you have questions, comments, you can find me on the outside there. Is there any time for at least one question, maybe? If there is any question, I don't see any question. Go ahead. So the question is about the isolation through the end. Does it mean that you will lose the track to be? Yeah, the limits, they still work. We use hotplug, for example, for dynamically increasing the crease limits. That's all. Okay, thank you. It's a bit of a short time. Okay. Please come forward and how we come up. So are you ready? What is yours? Okay, hi. Can someone please close the door? Yeah, so hi, my, wait, especially, I work in Red Hat in storage management team and today I will tell you something about managing your storage with Ansible and Linux system rows. So if you never heard about Linux system rows, it's a simple set of Ansible rows that you can use to manage some common components of your Linux systems. The idea is that instead of trying to figure out what command you need to use on rail seven, on rail eight, rail nine, federal, whatever, you will write a single playbook that will work everywhere. There are multiple subsystems support it within system rows. Each is a separate row, the F rows for SELinux, networking, firewall configuration, and of course storage. If you are interested in networking, then yesterday there was a separate talk about network row. Yeah, and you can get it either as an RPM package in rail as rail system rows or federal Linux system rows or just through Ansible Galaxy. And if you are interested more about details about the rows in general, there's a link for our homepage, I will be talking more, mostly about the storage row today. So the storage row is obviously Linux system rows for storage management. And these are some of the technologies the row supports. The support LVM, it's a default on rail, it used to be a default on federal, few releases ago, that includes LVM rate in provisioning LVM cache and duplication and compression with LVM video. We support also normal software rate with MD, so you can decide whether you prefer LVM rate or MD rate. Lux encryption, and if you don't like LVM, you can just use standard partitions. And of course, we support also managing file systems on those devices that includes resizing of the file systems and also FSTAP management. So if you tell us to mount something somewhere, we can manage the FSTAP entry for this as well. So I don't have a demo because if I had a demo, it would take entire termines to figure out how to make a demo work because that never works. But I did all those steps yesterday on my VM, so you need to trust me that it actually works. So this is how the playbook with storage role would look like or the part that is concerned about storage. As everything or most of things is unsymboled, you don't tell us what to do. You tell us what you want to achieve. So you write a description of your storage in the playbook and then it's up to the role to basically manage the storage to the point that it looks like or what you tell us. So this is example how a default Fedora installation with LVM would look like with the storage role. That's not very good use case for storage role because you don't do that. The install does that for you. But if you wrote the playbook like that and rerun it on your existing system, then you can do that. Nothing will happen because this system is already in this stage. So we will detect that. Yeah, you ask us to have one volume group called Fedora on the disk VDA with two logical volumes root and home for your root and home. And yeah, we will detect that it already, the system is in this state and we will do nothing.  So something a little bit more realistic. Let's say we have the setup for the previous slide and we bought a new hard drive and we want to start using it. We want to add it to our volume group and we want to resize our home partition to have more space for our data. So all you need to do this under the disks where previously there was only VDA, you will add the use your second disk VDB and then under your home where it previously it was something like 25 gigabytes. You just put 100 gigabytes there and we will resize it for you. So yeah, after you run that, you will be able to see that yeah, VDB is now part of the Fedora volume group and that the home logical volume is now 100 gigabytes. By the way, possibly notice that I removed the size under the root logical volume. I did it for two reasons. First, it wouldn't fit on the slide, but I can do that. If you don't write something in the storage role, then it's basically, for something we have default values, if you decide to create a new logical volume and you don't put in file system type, for example, you will default to XT4 on Fedora XFS on VAL, but if it's an existing device and you are just asking us to change something, then the things you don't write are taken from the device. So here for the root logical volumes, I didn't specify the size, so that's for the role means yeah, don't touch the size. And by the way, our sizes, we also support percentage values, so you don't need to be specific about exact gigabytes. You can write, I want 50% for this and 50% for that. So another use case, let's say we save some more money and we bought an NVMe drive. So this NVMe drive is very small because we don't have much money, so we can't use it for our root file system, which is good because we don't support migrating logical volumes between PV yet. It's one of our future goals, but you can use it as a cache for your root file system. So we need to add it to the volume group. So again, we will add to the disks our NVMe. This time there's NVMe namespace. And then for the root logical volume, we will say yeah, you want this cached. So we say cached through cache size, five gigabytes, and then we will need to tell the role that the NVMe will be used for the cache. And you have an LVM cached logical volume. This now is quite messy, but you can still see that yeah, the NVMe is now part of the Fedora volume group. And there is a lot of cache pool devices that are quite complicated to understand, but you can see that the cache pool data device is five gigabytes and it's actually below the root's logical volume, meaning that the root's logical volume is now cached. So yeah, and another use case, I wanted to show how to remove actually something because as I said, if you don't write anything, if you don't write the logical volume, that doesn't mean it's removed. I again, for space reason, didn't write anything about the whole logical volume, but it wasn't removed. So what you need to do to actually remove something. So in this case, remove the cache. Then you need to write cached force because if you don't write anything about cache, we will say, okay, you didn't write anything about cache. That means that you won't touch anything about the cache. And if you actually run this without the variable on the top, then the solution would do nothing. That's so-called safe mode. It's by default on. And by default, we won't remove anything even if you express the ask to remove something or even if you, for example, change the file system type to XFS here. We wouldn't do that by default because it means you're excluding data. And it's not a very good idea doing something automatically in storage that could mean that you will lose your data. So if you want to be safe, then just don't disable the safe mode. For this case, removing the cache is actually safe, but it's still removing something. So you need to specify storage mode safe, storage safe mode to false. And then if you run playbook with this, we will actually remove the cache from the root logical volume and also remove the NVMe from the volume group. So this is how it would look afterwards. You basically see it's same as before. You have your root and home logical volume and no cache. So this is like some fancy stuff you can do with that. Of course, I didn't show here the very basic features like adding a new sub-volume, if you want a sub-volume, sorry, logical volume. If you want to add a new logical volume, you will just put it here under the volumes. It's like named data and whatever size and file system type and mode point you need. And as I mentioned, the mount points are managed in FSTAP if you don't tell us not to do that. So if you put a mount point there, it will mount the device for you and put it in FSTAP. So it's mounted during mount, during boot. So yes, this is some features we already have. We are still missing some. The study show is relatively new. Right now in the next trail release, we are at support for file system online resize, which I actually kind of showed here because I was resizing home while mounted. So I was already using the developer version of study show and we had some customers requested adding options to specify owners and permissions for the mount points. So you can be sure that you can write to the newly created mount point if you create it with storage row. And in the future, you'd like to focus on more configurations options. As I said, we started with the basic staff adding new logical volumes, creating something new. And it would like to add some more options like this, which I presented to modify what you already have. Maybe like enable encryption on stuff that is not encrypted. Yeah, and also right now, I mentioned the storage technologies we support, we would like to add more. So Stratis, ButterFS for Fedora Strat and also some basic snapshot support is planned for the future. There are also plans to create more complex snapshots. Systemarrow, but people expect that the storage row would also support snapshots. So yeah, that was my short presentation. There are some links for you if you are interested in more and some contacts. And I think we have like two or three minutes for questions. You have to go select and write, if you have, if I don't know, or you want to select the GBA, but select it from another way. Like if I have a new thing. Yes, the question was whether you need to specify drive by like VDA, SDA and whatever, or you can use the other links in depth. Yes, you can use the UID and ID link in depth. LVM RAID, the support of the, for both MD and LVM RAID, the support of the, so raise your, any more questions? I understand. Yes, so the question was more generic system rows where there is a system row that supports installing packages. Yes, I am actually not sure whether it's a system row because you have a DNF, DNF in Ansible, DNF module in Ansible support. So you would probably use that. But yeah, I think you can do that with system rows as well, but there's a DNF module in Ansible. So you would probably use that. Any more questions? Okay, so thank you. Thank you for the presentation to the skater. Yeah. We'll see you in a minute. We'll see what we have here. Because I know just now what we're doing. The question will be about your, thank you so again for your lines, or yours. Thank you. Hello, everyone. My name is Zor, I work at Red Hat. And I want to share with you the story about how I broke our CLI. But more importantly, I want to share what I learned from it. So I work in a team called OCM that stands for OpenShift Cluster Manager. It's a service. And that service allows our customers to install OpenShift clusters on AWS or GCP. So apart from that service, we also have a CLI too. CLI too called Rosa stands for Red Hat OpenShift on AWS. And it applies for a subset of the features that are supported by our service, which is very specific to AWS and users bringing their own cloud account. So our service maintains a cluster life cycle. When a user requests to create a cluster, initially the cluster will go into waiting state where it waits for the user to complete some configurations. Once the configuration is ready and everything is set up, cluster goes to installing state. And when the installation is finished, the cluster is finally ready. Now, I wanted to enhance the service and add another state, which will perform some validations inside the user cloud account and prevent later installation failures. The problem is our CLI was counting on waiting state initials. So I went home, tested everything on my service, had it reviewed, had it merged, everything was great. Next morning, I found out CLI is broken. Not so good. So I said, okay, I can fix the CLI. It was a small check, what's the initial state? Initial state, remove that check, fix the CLI. But then I realized I have to create a new version and ship it to 100 of customers. Now, the problem is customers are not so happy to upgrade their CLI to. And I definitely can't force them. So at the end of the day, I had to compromise and I had to implement the validating state after the waiting state. This is not the optimal solution. This is not what I wanted to get, but that's the compromise I had to make, which led me to think about stock. So how do you build a service-oriented CLI? First question we wanna ask for yourself is, why do you even need a CLI? I mean, you have a service and it's RESTful and you can do anything with your service. Why do you even need another CLI tool? So eventually it all comes down to user experience. And I'll give you examples. First thing, we have a complex service. So our service allows users to configure cluster creation on Google Cloud using Red Hat Google account or the user Google account, AWS using Red Hat account or the user AWS account. So we had a growing share of users wanting to bring their own AWS account. So we decided that for those users, we wanna simplify the problem. We don't want them to go ahead into our service and configure all the parameters. We just wanna give them a simplified solution. Another example, whenever you go and wanna use the service on every API call, you need to provide an authorization header with your token. You need to provide the full service URL where if you work on a CLI tool that sits on your machine, you can hold your credentials or refresh your token locally with one command, a login command that also supplies the URL. That's it, you're logged in. You don't need to deal with that anymore for the entire session. Okay, another thing, restful commands, that's nice. But human readable commands are much nicer. And you can use names instead of IDs and describe and edit instead of get and patch. What about the output?  The input, you need to provide a JSON body or just give two nice parameters, two nice command line tool flags to your create command. Another great thing about CLI is interactive mode. Interactive modes allow you to validate users' input on every flag they put in. You can have autocomplete. You can also provide a list for your users to choose from. So those are really great things that CLIs allow you. So where does it get complicated? Let's consider that we want to add a new functionality to our product. In our case, I'll take the functionality of, as I shared with you before, users have to configure a few things in their cloud environment for us to continue with installation. So we wanted to automate it for the users. So should we add it to the service or should we add it to the CLI? So it's very tempting to add this to the CLI because this is a very specific Rosa use case. So it doesn't, it doesn't, not interesting to other customers of the service. Another thing is that the CLI is a very small piece of code in comparison to the service. So it's much easier for a new developer to get in, put that small change inside the CLI, no need to get inside a lot of service logic, no need to worry about getting it merged with this big service. However, we have other clients for the service. So if we go ahead and implement that in the CLI, we also have to implement that in the UI or any other client that we have. Another thing you wanna consider is the key difference between a service and a CLI tool. So while a service has continuous rollouts, it's continuously evolving, it's always there in your cloud, whatever you wanna change in it that doesn't change the API. Let it be a new small enhancement or a bug fix. You just roll out a new version. You can do it weekly, bi-weekly daily, and it's there for everyone to use. But a CLI tool, it's not in your environment. It sits in your client's environment, customers. And every new functionality, every bug fix, that's a new version. And every new version could be a very long release cycle because it has to go through compliance and other internal company processes before you release it. Another thing is that customers are not so happy to upgrade their CLI or any software that they have because it also has a process within their company. And another thing to consider is that every version, you have to support it for a while and you might find yourself supporting multiple versions. So to sum this section up, you wanna maintain a thin CLI. You wanna ask yourself, could other clients benefit from the functionality I want to add? The answer is yes, you wanna put it in the service. What if we need to enhance it? What if we find bugs in it? And sum everything up.  Okay, let's go back to the first example I shared with you about how I broke the CLI. And let's try and think how that could have been avoided. So first thing you wanna ask yourself is like as a CLI developer, what can I rely on? What assumptions can I make about the service that I'm using? Cause we have a contract, the service exposes a contract, that's the API. But there is so much more beyond the API, like other behaviors, like the initial state that we had. And if you think about it, you might find yourself making, you might stop yourself from making decisions that will limit your service from enhancement. Another thing you need to think about is your version support policy. So you wanna carefully define how often you release a new version. How many versions are you going to backward support like define, I don't know, two minors, three minors and have that policy known to your customers? And whenever a version is going to get out of support, you wanna give your customers enough time to prepare for that, you wanna notify them. Last but not least, you wanna have automated CLI test. We had automated test for our service, really with big coverage. We didn't have a lot for our CLI. If we would have tested our CLI most common use cases, we would have definitely caught that earlier. So that's, you wanna put the CLI inside your CI process. To sum everything up, you definitely wanna write a CLI to improve your user experience, but you wanna keep it thin and minimize the business logic inside it. Always, always keep in mind future service enhancements when you go ahead and make assumptions about your service, define a version support policy and have automated test for your CLI and have them running continuously. That's all I have. Any questions? Okay, great. Thank you. Hello everyone, good afternoon. So I'll start with asking a simple question, which is quite obvious, considering we are in an open source conference. So how many of you have or have been contributing to open source? Can you please raise your hand? Awesome, almost everybody I see. But how many of those contributions were not code related? Anybody? Yeah, only a few, right? So that is what I'm going to talk about. So about me, who am I and why I am talking about, what I'm talking about today. So I am a freelance product slash UI UX designer currently and last year I interned with Outreachy, which is an open source program. So I interned with them last year and worked on an application called ODKX. So that's what I'm going to talk about. Okay, so first question. Can I even do design contributions in open source? So yes, definitely. And the main reason is that there are little to no contributions from designers, usually in open source, right? And if you've ever organized or handled a open source project, you'll realize that organizations often require more than just code, more than just code contributions. So especially for beginners, they can start contributing even as a writer, designer, community manager, and much more. You can also contribute to documentation, make tutorials, participate in community discussions and events, et cetera. But is it really even needed? I would say definitely a big yes, since developers are not trained in design, right? They can make things work, but from a user point of view, to improve the overall UI and UX, to make it simpler for the user, I think it's very important for designers to also start contributing to open source. Also for newbies, especially, since almost in every field, right? It is a little difficult to get started, to get your first opportunity. So it can be a great value add to a newbies portfolio, where if they were contributed to a real time, real world project, they can add it to their portfolio and gain some valuable experience. Some things that they should keep in mind, or we as non-code contributions, should keep in mind is about the target audience, who they are designing for, what kind of users are going to use that particular project or app or whatever. The platform, is it a web-based application or a mobile application, the budget and the timeline? Open source projects can be tight on the budget and timeline. So it is very important to keep that in mind as well. The most important thing, what kind of contributions can be done? So there are a lot of type of designers as well. So for graphic designers, they can get started with designing logos, icons. For artists and illustrators, they can do illustrations. For UI UX designers, like me, you can design websites, mobile apps. Designers can also help in branding and design systems. So not to confuse design systems with system design. So design system is like a guide or a collection of all the details about a particular project. Let's say what font is used in the project, what colors are used, et cetera. One of the most important things, I feel, what challenges can you expect to face and how to overcome them? So I feel whatever, from my experience, I would say lack of communication and ownership can be a hurdle, right? In an open source project, we are usually expected to communicate via email lists or comments on the issues itself. So in case you are looking for feedback or some feedback and things quite early, it can be a bit difficult. So for that, how you can overcome it? Just be proactive and patient, right? And second challenge that I feel is lack of resources. Again, as I mentioned that open source projects can have a tight budget of sorts, especially for the design part of it, right?  You can find free and open source design tools and resources. You will get free icons, icons, icon packs, illustrations, et cetera, easily. I have linked some of those here. How should I get started? So how I got started is I just searched on GitHub. These keywords like design, logo, or UI UX. So sometimes project maintainers have issues already opened which mention these keywords like we are looking for a redesign for our app or we need a logo for our app. So you can easily find those using these keywords on GitHub. Another thing is if you are already interested in a certain project, even if they do not have a design issue opened, you can still go ahead and suggest them certain changes or whatever you feel can be improved overall in the design UI UX or even documentation and things like that. A second is this community called open source design.net. They are a community of open source designers and they regularly share resources, tips and tricks, and also like small issues and jobs related to open source design. Okay, what are the opportunities? So here I've mentioned some of the most well-known open source programs out there, which like when I got started, I did not know that you could be a part of them even if you don't code, right? So Outreachy is the one I was a part of and Outreachy, they conduct their internship twice a year and yeah, so they have around 20% non-code related projects that you can apply to. GSOC, Google Summer of Code, a very popular one. They also have a lot of non-code related projects that you can apply to. Hacktoberfest, very famous one again. It is conducted in October every year and last year I also submitted some design contributions and I was a part of Hacktoberfest as a designer, not a coder basically. And the last one is Bitcoin. This is a pretty new one and unlike other three, they have a dedicated design track. So either you can go ahead with the program as a developer or as a designer. They have a separate track altogether. For rest three, they just have a certain section of non-code related or design related projects that you can contribute to. Yeah, so finally, just some bonus tips. Just because you are working on open source or you are feeling like you're working for free, make sure your work is still high quality. Make sure your work is easy to use because even after you are done contributing, even after you stop contributing to the project, designers and developers and most importantly, users after you will be using it. So make sure it is easy to use. Also, documentation, documenting your work and process I feel is very important even for the project that you're contributing to so that in future if another person is trying to reference the same thing, they can easily understand and build upon it and promote your work. So unlike most companies where people work at, you do not have any NDA or anything for open source projects. So feel free to promote your work, add it to your portfolio and make your work work for you. So yeah, that was about it. Thank you. Maybe this is a, what are suggestions for design work? Like if you work in open source environment, you ideally want to have the same methodology for design work as well. Yeah, so what I have worked on is like, I submit a design suggestion. Let's say maybe I feel that this particular screen or this particular flow can be improved. So I maybe sketch it out or design it in Figma and submit that file on issues that I feel this can be incorporated and then that issue can later be assigned to a developer to work upon it. So how do I track the design variations or versions on that? So again, Figma also has the version history thing or we can also post I think multiple links of sorts. There is nothing like GitHub for design yet. So yeah, that's what we've got to do. Yeah, so open source alternatives for most of the tools. Let's say I was talking about Figma, right? So Figma is also not open source. It is not free for use. So when I was working with Outreachy as a designer like interning there. So that was one of the challenges that I faced. I was very comfortable with Figma, but they informed me that this is not something you can use because it's not open source and we are in open source organization. So then I had to go and look for more open source alternatives, learn it maybe quickly. But yeah, there are a lot of resources and software available. Is this not that popular yet? Yeah, Penpot, yeah. Penpot, P-E-N-P-O-T, Penpot. Hello everyone, I am Parul Singh and I work as a senior software engineer at Red Hat. Today, we'll talk about how you can power the efficiency of your cluster and make sure that you're consuming less energy and if possible, control your carbon footprints and running your workloads on the cloud. So who we are, we are a group of people who are taking a community-based approach on environment sustainability. We are also part of the CNCF TAG, Environment Sustainability and if you want to check out a proposal, the QR code will take you over there. But in general, our mission is to advocate for, develop, support and help evaluate environment sustainability initiatives in cloud-native technologies. And we also aim to identify values and possibly provide incentives to service providers so that they could reduce the energy consumption and control their carbon footprint through cloud-native tooling. The great thing is, as of June, Kepler is part of the CNCF Sandbox project. So that's a great step for us. And what brought us or what was the thing that initiated to bring the sustainability in computing? In 2021, an ACM technology briefs estimated that the ICT sector or the information or communication technology sector attributed to 1.8% to 3.9% of total global carbon emission. And to give you a context, that is more than the carbon emission of Italy and Germany as a country combined. So we do emit a lot of carbon. And so this brought us to ask questions how you can measure energy consumption indirectly. When you don't have access to the racks in the data center, you cannot install specialized hardware. And how do you measure energy consumption of workloads? If you are using any cloud, it is possible that you do get the total energy consumption as a tenant, so does the other tenant. But how can you pinpoint what works the energy consumption of particular workloads? And again, when you're running in a private cloud or when you're running in a hybrid cloud or in a public cloud where you are not the only one, but there are many other people who are using resources, how do you attribute power to specific process, containers, and pods? So with all these thoughts in mind, we designed our cloud-native sustainability stack and it has many projects, but today I'm just going to talk about Kepler and the Kepler model server. But before that, I want to give you an idea of what are the principles that we follow to attribute energy consumption. So we did a bunch of experiments, read a lot of paper, and come to the conclusion that power consumption is attributed to resource usage by process containers, pods, et cetera, that's running. And this is one example. Let's say that you are only, in this picture we only talk about the CPU usage or the CPU power consumption. So let's say that you have a pod that has a one container and it is consuming 10% of the CPU, then you can say that it contributed to 10% of total CPU consumption. So if it is consuming 50%, you can say it attributed to 50% of CPU power consumption. So the first project, obviously Kepler, which is called Kubernetes-based efficient power level exporter. And it uses software counters to measure power consumption by hardware resources and exports them as Prometheus metrics. Down the line, we are thinking of moving from Prometheus and adopting OLTP so that anyone, any monitoring stack that is compatible with OTLP protocol, they can consume our metrics. So Kepler employs three-pronged approach, which is per pod level, it first reports per pod level energy consumption, including the CPU, GPU or RAM, and it works both for bare metal as well as virtual machines and it exports the energy metrics as Prometheus metrics. Obviously the goal of Kepler is to measure power consumption. You don't want Kepler to measure these power consumption and itself contributing to 20% of the power usage. So to minimize that, we made Kepler very lightweight so that we, so that's why we're using EVPF to attribute power consumption to a particular process. And this I'll talk later, but not all the time you have access to hardware power consumption using Rappel or ACPI. For example, in case of VM, you cannot have access to the power meter. So in that case, we use machine learning models to estimate energy. So this is the bottom-up approach and for data collection and data aggregation, Kepler uses, as I said, software counters and power meters to calculate the power consumption by the hardware's. And then for data modeling and presentation, what Kepler does is converts these power consumption into energy estimation using machine learning. So how does this machine learning model formed? They are formed by Kepler model server. When the node energy is not provided to you by, or in the absence of power meter, what Kepler relies on is pre-trained models that can estimate energy consumption. And right now, the stack that we're using is TensorFlow Keras, Flask, and Prometheus. So we use two kind of models, the CPU core energy consumption model which is trained on features like CPU architecture, current CPU cycle, current CPU instruction and CPU time and you have the DRAM energy consumption model that uses CPU architecture, current cache misses and memory working set, sorry. So there are two phases, the training phase and the exporting phase. So for training, the Kepler model server has agents sitting on each of the nodes and these agents scrapes the node metrics and exports them to Prometheus and then the Kepler model server scrapes the Prometheus and forms the data set both for training as well as testing and it trains the model, evaluates the model and if it's of acceptable accuracy, you can use the model. For using the model or exporting the model, Kepler used Flask endpoints down the line. Again, as I said, we are going to go with open telemetry but you can also load the model in memory to do the estimates.  So it depends on generally the available measurements. If you have access to the total power, then you use a power ratio modeling where the usage is a ratio of the power consumed by the processes by the total summation of power. But as I mentioned, when power metrics cannot be measured, for example, in case of a virtual machine, you can estimate power by usage metrics as input features of the train model and you can do three level of estimation. You can measure note total power, which includes fan power supply and the internal components such as CPU and memory and then you can do the part power. So this is the various scenarios on when you use what model. Supposedly the first row, when you have a bare metal with x86 with power meter, you measure total power using ACPI, you measure note component power in Rappel and part power is just a ratio. And the last row, if you see, which is a pure VM scenario, when you don't have access to note power or note component power, then the part power is just power estimation. The link will, you will have these slides and the link will give you more information on the various metrics that we use. And as I said, Kepler works not only on bare metal as a VM, but now Kepler goes beyond Kubernetes because we have created an RPM that you can run on the Linux server that can estimate power consumption of individual process outside the Kubernetes ecosystem. So I have few screenshots that I wanna share that shows you very interesting Grafana dashboard. At least it's interesting to me. So for this cluster, we have six nodes and Kepler runs as a DMN set. So it is instances of it on each of the nodes. And we have a Grafana route and this is the first dashboard. So we use a third party API to compute the carbon intent by region and this is for United States. And you can see over here, the various colored graph is the carbon intensity by the region. And you can see that the first is highest and the down is the lowest. So BPA, which is like a step graph, it's the lowest while the highest is also the so-called purple MISO, MISO is the highest. The second dashboard, now that you have the carbon intensity by region, you can use Kepler to translate that carbon intensity to particular process. You know what is the energy consumption or energy limits and you know what was the kilo ton per hour carbon emission and using these two values can correlate what was the carbon footprint of each of the nodes space or each of the pods. So for example, over here, we are using the BPA region and the carbon intensity on the left-hand side, you can see is ranging between point, anything between point six to one, but power consumption of all namespace is a straight line. Now we have the MISO region. So the carbon footprint is ranging between four to five, but the power consumption is constant. So you can control your carbon emission if you can schedule your workloads in a region that have less carbon intensity. So we have applied Kepler in the open source. We have worked with IBM to design something which is called Kepler, which is a container level energy efficient BPA recommender. We also worked with Microsoft and the KEDA team and we have made carbon-aware scaling with KEDA. And something that I worked on is carbon-aware scheduling. So if you can have the access of the details of what is the source of your power, can you control the intensity of your workload to line more on renewable energy and less on fossil fuel? So that is all. This QR code will take you to a sustainability stack. This is the link to Kepler and the model server, but you can check out other projects as well. And now, I guess we have time for a few questions. If you don't have any questions, you can also have suggestions. I have a question. Your role is very interesting. It basically would capture all slave scales when, for example, one workload triggers a machine to be scheduled in the region. But it basically changes your total consumption to do that one more machine because one workload particularly needs to scale up so that one more machine is scheduled. And if I'm setting it right, you would capture that because you have a consumption on the whole... Cluster. And then, if you basically could relate it to... So region, how do... So we get the first thing... Oh, sorry. Could you repeat the question for us? Okay. So you were saying that if I got it right, what you were asking is if I control the machines that are in a region, I can somehow control the carbon intensity of the workloads. Is that your question? Yeah, especially about use cases, one more machine could you create it for the... You mean to say machine or you mean to say workloads? Virtual machines. Virtual machines. Okay. I can open shape here and we have a... Got it, yeah. Yeah. Machines that are present could create a new machine on this version. Got it. So... Instead, Kepler will not... That you have to get a third party. And if you have access to that, then definitely you can... If you're adding a machine, you would have the... You can do the estimate of the total number, like all the nodes that are present in the cluster, and definitely you get the workload estimate from Kepler. Now, time these together, definitely you can do it, but... That we are finding is getting a reliable carbon intensity data because everybody have carbon intensity, but they don't talk about how they are exporting it. There's no transparency and we just have to accept what they are giving us. So we are working to a more surprised open source and transparent way to get this carbon intensity data, but if we have access to reliable carbon intensity data, definitely that can be done. Anybody has used Kepler or heard about it before? Like, I know we have one person who use a project, but anybody else heard about Kepler before? Okay, I'm sure you will now. Okay, nice. Okay, how much time we have? So you asked, how do we get the carbon... How do we use carbon intensity information to do the scheduling? I have some slides in case somebody was interested. So, okay. So as I said, we use rely on third party API to get the carbon intensity. So what we did was we developed a carbon intensity forecaster that scrapes these third party API to give you what is going to be the carbon intensity in some step in the future. And for this experiment, we were calculating carbon intensity for a day ahead. So the first thing, you get these carbon intensity data from the forecaster and the forecaster is kind of... There's a cron job that would be querying the forecaster to get the carbon intensity data for each of the node. And depending if the carbon intensity is super high, we label them as red. If the carbon intensity is somewhere in the middle, we label them as yellow. And if it's like the lowest, we label them as green. Now, there's something which is called labels and taint in Kubernetes ecosystem. And using those features, we control that. So when the node has a really high carbon intensity, we label it as red and we also apply a taint to it. If the node has a lowest, it gets tainted as you can see is yellow and not tainted. So tainting a node means if a pot, and this is the pot spec. So over here in the pot spec, you get this pot is explicitly declaring it's preference of node that has a label and the intensity is green. But it does not has tolerations for any node that has been tainted as red. And the toleration second for the sake of the experiment, we made it as five. That means if a pot is scheduled on a node that is tainted red, it would just stay there for five seconds and then we'll be evicted just to be clear that the workloads are moving. So as the node turning from red to green, the scheduler, which is the Kubernetes inherent scheduler will see the pot spec, will see what is the taint and labels on the node. It would evict the pot from node one that is going from green to red and schedule it to node two, which is going from red to green. So tainting nodes will ensure that pods are evicted by the nodes if pods do not have tolerations for that. Somebody asked me this question yesterday in the workshop. What if I care about carbon intensity and I don't care that my pod should be evicted? So in that case, you don't need to provide these additional information in your pot spec. Just don't provide a node selector and don't provide a tolerations and then it would be considered general. Yeah, thank you so much. Our next poll is about chat GPT and card one AM and time. Okay, hello everyone. Thanks for joining. I'm Stefano Maestri, senior manager at Redette. Long story short, why I'm talking about chat GPT and son, not because I'm a senior manager, not because I passionate of AI from the high school. My thesis in high school has been about neural networks in the university and so on. Why I followed in the dark side of management? I don't know, but anyway, I'm there. So let's start talking about what is a generative AI. A generative AI, this is a definition, definition that I've taken from open AI and there you can see, there is a few highlighted point from open AI. I'll leave you a red, I'm not reading for you, I'm sure you can, but read my highlighted version that is a bit different because I'm highlighting something else here and basically that is learning patterns from existing data and from there generate a new and unique output, my mix, human creativity. So this is the key point where I want to stay in my talk because what is intelligence for Einstein? If I must say about Einstein, say that he wrote this sentence on the whiteboard in the first session in Berna University and while he was writing in the end, he told to the classroom, if you cannot read this, please go out and don't return to my course. There is basically, the measure of intelligence is the ability to change. And that is exactly what Einstein did in all his life, basically, because the innovation that we got in physics from Einstein's come from intuition and not from applying pattern that we can use in the future. Basically, what he did is writing this very famous equation but it's not the equation, the point of Einstein research. The point is that he had an intuition that no one else had before that is they must could change the plan of time and the plan of time basically. This is the point of Einstein intuition and the kind of intuition is not possible based on what we know at that point. So what I'm trying to say is that if we just apply patterns of what we know, we will be still discussing Newton physics now. But another example of AI, generative AI, is art. AI art is about the world at the moment and it's great. I asked the generative AI to generate for me art. In the first case, I asked for a post-Cyberpong landscape. I asked also to don't include skyscrapers, probably it didn't understand very well. But anyway, this is the landscape generated. And in the second case, I asked that the AI generate something that includes galaxies. And this is an original image, it's not a real galaxy, it's generated image from AI. This is pretty impressive, pretty cool. But I like art. And there is an artist in the middle of the previous century called Lucho Fontana, he is from Argentina and live in Italy. And he's the father of the special, of the special art. And special art is basically, and let's use words from him and not from me. He is better to explain his art than me. So Fontana, what does, if you don't know, is basically cutting the canvas instead of painting it. But he's not the deliberate act of vandalism. He is introducing space between and around the canvas and the light behind and around the canvas. And if you look at their art in presence, he's pretty impressive because he's not just cut. He's really art. And what is the ability to change here, to invent the intuition of the art? Because in the middle of the last century, we got the first images from the space. And the first images from the space was like those. And if you see now, you understand from where it comes with his cuts. And, you know, it's pretty different from the galaxy that I showed you before, generated from an AI. I just take what it does, what we know, the data gave it and produce a really new content that is, let me say, standard content, is not disruptive. In this case, art, but not only art, science, could and should be disruptive if we want to evolve as a human being. And just to give you an idea of what is the difference between intuition and applying patterns. Because everyone is cared of, the artificial intelligence becomes too much intelligent. But again, it's not the point of intelligence. It's a point of intuition. Those are too classical of lateral thinking. Probably you already know and you already know the answer. Or if you don't know, we can get the answer together. The first one, say, in the middle of a large forest, the corpus of men dressed entirely in skewba gear was found. It was wearing wet suit, mask, fins, oxygen tanks and even weights. The sea was 15 kilometers away. The forest was not crossed by any road and there was no means of transportation around the man. Only chair the trees. Can this be explained? How can this be explained? This is the first question. The second one is, a man is pushing his car while some boys watch him without doing anything to help. He stop when he reaches in front of a hotel and at that point, he realizes he has gun bankrupt. Additional information is needed here. The man was pushing the car with one finger. The fact that he went bankrupt didn't bother him too much. The boy also realized that he had gone bankrupt and started a loafing. I asked chat to GPT. I asked chat to GPT and those are the answer. I go quickly. I have time, I think. So in the first case, you remember the Scuba man in the forest. Basically, the answer is, OK, the situation in the sky seems to be a riddle or a puzzle, right? However, based on the information provided, there are some possible explanations. One, airplane accident and the explanation from chat to GPT that you can read pretty strange that I was in an airplane in the Scuba dressing. Illegal activity, because probably the data it had is about a lot of illegal activity. Because we gave it, so we do a lot of illegal activity. Prank or art installation in the middle of the forest, Scuba man. Dead is an art installation. Anyway, and then it said me, please note that these are only conjunctures based on limited information provided. Without further details or context, it's challenging to provide an accurate explanation. Thank you. But it gave us something. And if you didn't know the answer, maybe you are a bit closer now. It is not completely wrong what he told us. The second one is doing better, better, but not getting the result, but much better for us. In this scenario, the additional information provided helps clarify the situation. Here is a possible interpretation. A man is pushing his car with just one finger, indicating that the car is a toy or a miniature version. The fact that he pushed the car with such ease suggests that he's not a real car, but a small scale model. Maybe, maybe. When the man reaches in front of the hotel, he realized he has gone bankrupt. This implied that he had been playing or pretending to be a wealthy person. But the reality of his financial situation downs on him at that moment. However, it doesn't bother him too much, indicating that he may have been indulging in a fantasy or living beyond his means. Something. The boys who were watching him without helping realized that he has gone bankrupt as well and started laughing. This suggests that they were aware of this pretence of exaggerated lifestyle or find humor in his sudden realization and the change of fortune. Overall, this appeared to be a playful or symbolic scene illustrating a personal or financial downfall in a light-hurted manner. Not bad, not bad. Very close to the answer. Anyone knows now the answer of the two questions? The second, a bit easier, a bit a lot. It's a bit more easy than that. A bit more lateral thinking. Those are the solutions. The first one is the aeroplane getting the water to stop fire and got also the scuba, pretty unlucky. And the second one is the very famous game. And I'm sure there is also a car, a small red car. But again, now we have very little time, but analyzing the answers from chatGPT, we can get to the solution easier than starting from nothing. So what? Why use generative AI and not overuse it? It's an excellent thinking partner. As I demonstrated to you, it's a thinking partner. His fast is getting more and more precise. We'll help a lot on better understanding complex patterns which may not be clear to us at the moment. This is a very important point, because the first and the last one, because it's important to understand that there is patterns that we have and we don't understand. In old care, for example, we don't understand the patterns of cancers, but maybe there is patterns. We need help to understand those complex patterns. And this is an excellent help. Why not overuse it? A disruptive thinking is needed for real progress. There is no progress with disruptive thinking. We cannot base our progress only on what we know until now, otherwise we don't progress. And real creativity needs some craziness. All of them are cool and mad sometimes, but they are all genius. That's it. We don't have time for questions, but if you have, I'm here. Hello, our next comment is about a question sheet. Hi, everybody. My name is Andrea Fasano, and I work as a principal software engineer in Red Hat in the core installer team. Anyone here familiar with the OpenShift installation process? Cool. So today, I'm going to talk to you and introduce you to the Asian-based installer, which is a relatively new project that we have developed for simplifying the installation of OpenShift. And I'd like to try to let you know its main features. And I'll try to give you a quick glance of how it works under the hood to let you understand if it's something that could sweep your need or not. Since it's a lightning tool, I try to make it as much as possible fast without dipping that too much into the dates. But I try to leave a couple of minutes at the end for questions and answers, otherwise you can get in touch with me after the talk. So let's start by defining, first of all, what is this Asian-based installer? Essentially, it's our tentative to merge together the experience coming from the assisted installer technology with the ability to run into disconnected environments. For a disconnected environment, I mean an environment that does not have a direct connection to the internet, and possibly trying to simplify as much as possible this experience. By looking from a very high-level point of view, the overall workflow can be divided in three main steps. First of all, everything starts by building a single ISO image that will contain all the necessary things for the installation. Then, this ISO will be used to boot all the nodes that are part of the cluster. And finally, you will have simply to wait for the cluster to come up. We'll go deep dive into each of these three steps to understand how it works. But before that, I would like to quickly recap what are any of the main characteristics of this approach. First of all, as I said, the ability to run offline. Of course, it can be used also for connected environment. The other important thing is that it doesn't require a provisioning host. So one of the nodes will be selected as a bootstrap node. So this means that you don't need an additional machine for the installation. Probably one of the most relevant parts is the ability to run a high number of free flight validations thanks to the assisted installation technology. And this will help you to understand if the upcoming installation is going to succeed or not. And last, it's fully automated. So it means that once the ISO is ready, you don't have to do anything special. And it was designed to be easily integrated within the party orchestrator. Another important thing is the ability to configure to provide the static network configuration via LM State. Yesterday, there was a nice talk by Montserrat about LM State. If you don't know, it's a simple declarative language for providing network configuration. We do support also zero touch provisioning. There was also an interesting talk about ZTP. So it's just yet another set of manifest to describe a cluster installation. And we can provide the support for installing a single node oven shift or as you know, so a cluster composed by a single node. And we do support fully bare metal and these free platforms. So everything on the on-premises area. But let's now try to see how it works by looking at any potential deployment of a compact cluster in a disconnected environment. The cluster is a cluster formed by just three masters without any additional work.  For those already familiar, you will see that there is the Instur Config YAML. And this is the usual configuration file that you create for describing your desired cluster. So you put the number of workers, the masters, and so on. We have a new entry, the agent config. This is an additional piece of configuration that will let you define a couple of interesting things. The one that takes a takeaway for you is around the YP. This is mandatory. So here, you have to define the YP option that will act as a bootstrap during the installation. All the other properties are optional. For example, the possibilities, as we said, to define static network integration for each host involved in the installation. This could be useful, for example, if you want to define a static IP addressing. Once you are ready, you can use a new command, sub command available in the OpenShift install, which is agent create image. It will perform a number of static checks. And if everything goes fine, it will generate an agent iso. What is the agent iso? It's nothing else than a live ARCOS image with a customized ignition file prepared by us containing all the ingredients for making up the automatic installation subsequently. I think that you could already start to up the fact that the iso could be generated in an environment that is completely different from the one where you are going to deploy the cluster and potentially by also a completely different person. Okay, let's say that we have the iso. So let's move to the environment that will host the deployment of the newly created cluster. We assume to have an isolated network. We assume to have enough nodes, machines available. In this case, three nodes. Master zero has been colored with a different coloring just to highlight the fact that later it will be identified as a rendezvous host. And since we are in a disconnected environment, the other assumption is the ability to have a registry with a release payload already mirrored into it. Given that we take our iso, we load it into each node and we boot them up. So let's now deep dive into each node. Let's try to understand what happens after the boot process starts. First of all, since it's a live iso, everything will be loaded in memory. So the first thing is that the ignition fire that is embedded within the iso get applied and all the necessary files and services are copied and started. And they will be fundamental for the subsequent steps. At the very early stage during the boot process, it will happen, two important things will happen. First of all, if you provided the static network configuration, it will be applied. So in this case, we assume that VIPs have been statically assigned. Secondly, it will start to check if the release payload is reachable in the environment. Why this? Because if you cannot get the release payload, you cannot start the installation. This is will be performed by an agent UI or textual user interface. So a sort of interface that will be visible in the console of the instance. And in case of problem, it will give you some additional information to troubleshoot the problem. And you will have all stability to tweak the network configuration for a last minute fix. That's important because if there was a small misconfiguration, you could fix it without the need of rebuilding the ISO. If everything goes well, at this point, the agent service or the assisted installer is launched on every node. And this will be the solder that will perform most of the back activity. At this point, a special thing happened on the master zero. On master zero, which was identified to be around the worst, the assisted service is launched. The assisted service is the main orchestrator of the installation. It's the one that will take care of deciding what are the next steps. And at this point, the agents have been collected harder information about each node and they try to discover and connect to the assisted service registered on the master zero. Once all the agents have been registered, the assisted service will start the pre-flight validation to ensure that, for example, every node has enough memory, enough CPUs, enough disk space and so on. And eventually, it will inform the user to fix the problem before moving on with the installation. Let's assume that everything went fine. At this point, a number of simultaneous things happens. First of all, still on the, around the worst, the clustered bootstrap is launched and it will hold the temporary control plane for the installation. But I remember that we are still working in memory. We still need to write the Arcos image on every instance so the assisted service issues the command to write the image on every node. And the image is retrieved from the release payload if available. Again, fully compatible with disconnected environment. As soon as the image has been written on the nodes, the assisted service issues a command to the other nodes to reboot themselves. So they reboot and they try to join the control plane following the normal installation steps. If everything goes fine and so if master one and master two were able to join the control plane, assisted service issues the command to reboot itself. And again, if everything goes fine, master zero will join the control plane, will throw away everything that was in memory and will become just a yet another node as the other. From a user point of view, there is another useful command, agent wait for install complete that will let you monitor the progress of the installation. This is an example extracted where you can see the kind of validations that are performed and how they are printed on the console. And if everything goes well, it will inform that the installation is completed and it will give you the coordinates to attach the class. So this brings to the end of my presentation. What's next? We are still working on supporting OKD. There is an excellent community also here that is working on this part. And I hope we'll have it available very soon. We are also working on pixie support so that you will not be limited just to the eyes but also to use pixie for booting the instances. And I would like to acknowledge the original team that more than one years ago started to work on this new project. Thank you. How long it takes to validate? How long it takes to validate? Because it's actually not long enough to validate. How long it takes to validate the second layer? Okay, you ask it how long it takes to validate. Well, I think the certificates, if I'm not wrong, should be 10 years. It's been installed 10 years ago. Yeah, if I'm not wrong, but it should be verified. Yeah, other questions? Yes. You mentioned something about ZTP, have been involved into that. I mean, I'm interested how does this integrate with the whole flow of ZTP? It may be a long wind effective. Yeah, in reality, the question is, sorry, is how does it work and how it integrates with ZTP? In reality, we aim to maintain full interoperability with ZTP when we started from install config in the agent conflict. Internally, they are converted in ZTP manifests, and they are uploaded. When we talk with the system service, we talk in terms of ZTP manifests. The idea is that if you already deployed a cluster also with ZTP, ideally you could take your ZTP manifest and apply them with agent-based installer with almost zero problem refactor. How does it know what the inter-register is? Is that something configuring the demo? Yes, it's configured in the install config for disconnected environment. There is a section, the ICSP section, where you can configure how to eventually reach a mirror-red environment. The idea is that in the registry, it's the complete release space that you don't have to touch or to reach completely outside the internet for this installation. Can you use the ZTP of registry as well? Yes, yes, of course. It depends on if you put it or not in the install config. Ah, yeah, the question is how do we know how to reach the, sorry, the registry? Thank you very much. Thank you. I hope it wasn't registered what I said after. Please delete what I said. We can find out on the internet side if you call the job. And we are in collaboration with Ibi Jali in Brak. Over, if we actually have a meet-up group or meet-up.com that we currently... Oh, I should have this? Then you should have told me this before now. Yeah, actually, the previous presentation was a little bit different. That's funny. Okay. It's on? Okay, so let's continue. So on the meet-up.com we have over 580, I think, members. But after COVID, we are really struggling to get people in person to these meet-ups. So this is why I decided to have this lighting talk. We also... Why I decided to rebrand this and create a new community is basically a few reasons. The first ones I already mentioned and the third one is that the original Bono-Java meet-ups were happening in PAP, in Zivou Palečka, where there is a really bad projector. So many people came for a beer and didn't have much from the talk. So, I'll wait for photos. So, we are making now the first meet-up on the 28 with a bunch of changes. First thing, we are changing the venue. We are moving to Faculty of Informatics at Nasavi University, Botanicka Street in Inberno, where we will have definitely better everything because it's university standard. We also have a possibility because now I am in contact with the people at the university to potentially get even the big lecture rooms if eventually there would be interest from the many people. So, and we also have now a small budget from Red Hat as official sponsor, so we will have a small after party with provided catering. So, there will be beer. I need to put this in, you know, bolts. Why I decided to do something like this? I was actually lucky enough to be invited to so-called Tour de Swiss Jax at the beginning of May, where I went to three different Jax in Switzerland in three days and I had the opportunity to see what Java community can become. In, if you are interested, this is jack.ch, like Jack Switzerland, and you can find them there, they have, this was only German speaking part of Switzerland, which is I think five or six cities, and in every city they already are running this for more than 26 years. If you know how old Java is, then you can guess like this was pretty early. And each talk was around like 20 to 30 people, and the talk itself went great. But after party, after each event with the provided catering or something else, that kind of networking opportunities, many of these people, this is not just to show you how long hair I have in the wind. I meant really good people that are interested in our technologies in our products. I stayed in contact with them and we are still continuously discussing different possibilities for them to come here, for me again to come there, et cetera. So this kind of networking opportunity is something that I want to create for people here in Bruno, to really grow the community of Java developers around the meetup. Yeah, if you are interested, like why this is happening like such a nicely, again, they have a lot of years on top of us. If you go into this link, you will get a very nice presentation that I was playing before my talks, where they list around 30 to 40 companies that are supporting them in that five cities, which means that they have really nice budget. So in other words, if you are working for a company that would be interested in supporting local meetups, and I see very many redhead faces here, so that sucks. Please ask if somebody would be interested now, for instance, in talks with Oracle to get them also presenting and also some kind of support. This will take time, but this is my goals. So this is what we are trying to achieve. Yeah, I already mentioned the after-party, and again, as I already mentioned, there is already ongoing collaboration with CZJUK, which is in Prague, by a chance also run by a Slovak guy, because we are active in Czech Republic, it seems. So I think that we would be definitely able to get some similar type of tour the CzechJUKS in the future, if there would be someone able to do this for us. And I already know a few speakers, because my personal contacts that would be willing to do this kind of, like one day Prague, one day Bernal, or other way around. And potentially we will get more jugs in different cities. What do I know? Okay. And yes, what we need right now, especially I think that Corona brought all of us into more like cozy home environments, and I think that this is a big reason why people are not willing to, thank you, are not willing to no longer come physically to a meetup. But for me at least personally, this is a different type of experience when you can talk to people and exchange the experiences. Definitely I think that there is, like if you just watch everything online, yes, you will learn the stuff that you want to learn about, but it's that experience of that after party where you make contact, when you can basically learn about new possibilities of what to take, whatever you are doing, somewhere else. Definitely if we are going to continue this, I will need to work more on the sponsors because it's expensive if you are paying for everything. But so far so good, like 15 people is okay. 50 people would be a problem for me right now. Because we are moving this to faculty, we will be taking now a pause during the summer, but starting from September, I definitely think that I can do every month till the end of the year, so for talks from September to December, but depending on the speakers, how many speakers I can get, at least every second month, I would like to have a meetup. And because we are now moving to faculty, there is also possibility to do this in hybrid mode, so we can actually stream it online and make recordings. And I already mentioned collaboration with CZJUK, so we can skip that. Okay, and where to find us? This is the important slide. We have now Twitter, Mastodon, definitely meetup.com where we still schedule new meetups, and basically that's it. Do you have any questions or ideas? Also, if you would be interested in collaboration in organizing these kind of events, just reach out to me, because currently it's only me and few other people that are working around it, which I'm like kind of still, everything needs to go through me. So if I can offload something and people would be interested, then just please ask. Any questions? Then I think that I'm finished. Thank you. You got some sneak peeks. Oh, yeah, I forgot to include the sneak peek for upcoming cogs. So I can go into meetup, and I can go into meetup. One, yeah, I know it's the DevCon CZJUK, and there are no 2023. I had to do it on the second monitor. It's hard when I don't see it, so I will put it here. You will look into very small terminal now. So the next talk, and this is pretty small, the next talk will be done by Michael Winkler, OpenShift serverless inaction. So basically how to do Java in serverless applications. If you are interested, here it is. Thanks for a good point. Okay, then I'm finished. Thank you for your attention.


Virtual currency, or virtual money, is a type of unregulated, digital money, which is issued and usually controlled by its developers and used and accepted among members of a specific virtual community. The U.S. Commodity Futures Trading Commission has warned investors against pumped-and-dump schemes that use virtual currencies. The Financial Crimes Enforcement Network FinCent Bureau of the U.S. Treasury, defined virtual currency in its guidance published in 2013. In 2014, the Huracan Banking Authority defined virtual currency as a digital representation of value that is neither issued by a central bank or public authority, nor necessarily attached to a fiat currency, but is accepted by natural or legal persons as a means of payment and can be transferred, stored or traded electronically. By contrast, a digital currency that is issued by a central bank is defined as central bank digital currency. In 2012, the Huracan Central Bank defined virtual currency as a type of unregulated digital money, which is issued and usually controlled by its developers and used and accepted among members of a specific virtual community. In 2013, Financial Crimes Enforcement Network FinCent Bureau of the U.S. Treasury, in contrast to its regulations defining currency as the coin and paper money of the United States or of any other country that is designated as legal tender and that circulates and is customarily used and accepted as a medium of exchange in the country of issuance also called real currency by FinCent, defined virtual currency as a medium of exchange that operates like a currency in some environments, but does not have all the attributes of real currency. In particular, virtual currency does not have legal tender status in any jurisdiction. In 2014, the Huracan Banking Authority defined virtual currency as a digital representation of value that is neither issued by a central bank or public authority, nor necessarily attached to a fiat currency, but is accepted by natural or legal persons as a means of payment and can be transferred, stored or traded electronically.


I love to sit and contemplate, I do that all the time. Right, you can sit and contemplate the future of the environment. It's like cozy, but also a little uncomfortable. Yeah, there's a sense of eeriness. I am the director and curator here at Champlain College Art Gallery. And Rebecca is a faculty member. She originally pitched me this idea of sort of creating this plastic, seafoamy wave of plankton and creatures. And then she's sort of tied together this idea of a call to action. She called it data visualization, but it's like a visual representation of all of the sort of plastic consumption and detritus that we individually dispose of on a regular basis. And it's been an incredible show. It's gotten great feedback. Rebecca Schwartz is a community engaged artist with goals of increasing health on many scales, including personal, community, and environmental health. Patterns in nature inspire her work in a range of modes. They can be sculptural, collaborative, and in communications. Rebecca teaches communications and creative media here at Champlain College and works to connect volunteers, patients, families, and caregivers with the Arts in the Hospital Coordinating Art from the Heart Program of Burlington City Arts and UVM Medical Center and Children's Hospital. Before we tear this all apart, which I'm really excited for this cathartic moment, I wanna say a little bit about what you're looking at. So this wave of plastic is also a seafoam bubble that hopefully you've rested in over the course of the past few weeks. But this wave isn't just arbitrary. That angle of the wave represents the steep increase we've seen in fossil fuel extraction and in temperature increases, plastic production, chemical production, and also species extinction. So this is all really hard stuff to talk about, which is, and think about, which is why we have this contemplative space for us to dedicate ourselves to what we love, what we care about. And I hope that for each of us that we take the time to choose anything that you care about and try to make an impact there. So hopefully you've made postcards over the course of the show and one of the things we'll be doing is finishing off those postcards. Some people have started some art and you can write a message. You can write a message to anybody who can affect change. Really, it's up to you, write to whoever you want to write to and we have the stamps to send off these butterflies and hopefully change the world. So what else can I say? Some beach plastics from just a half hour of cleanup are in the middle there and a couple other art pieces that you'll experience and they're gonna come apart. So the other thing to think about as Wiley told us is how do we know what's recyclable and what isn't because a lot of things can't be recycled and I hope we can influence people to have cleaner systems. But Recycle Ronda from Chinden Salad Waste District, will you come up and talk to us a little bit about what we can and can't recycle? So yeah, there is rules to recycling and for very good reason because not everything actually is recyclable, not everything can be turned into something new and we'll focus on the plastics because that's what we're focusing on. With plastic film or I call it floppy plastic, it doesn't belong in your blue bin so I'll put it in there please and thank you but you can gather it up and take it back to a lot of different grocery stores. I know that Shals and Hannafords at least do it and they'll take it back and turn it into decking and benches and so on and so forth through a company called Trex. Serial bags can go back to the grocery store to be recycled that way, all right? Even though it doesn't have a number on it and it sounds really crunchy, that is one that we know is a number two. All of the bread bags can go back to the grocery store. Any wrapping, like from your paper towels, toilet paper, all of that, all can also go back into the floppy plastic recycling. Zip black bags and everything has to be clean because recycling as much as people would love it to be dirty, it is, we hopefully, will be clean so make sure your stuff is all cleaned out. Real people have to touch it so keep that in mind. Now, for hard plastic or rigid plastic is what it's called, if it cannot hold a liquid, don't even think about putting it in the blue bin, all right? A couple of no-nos is no hazardous or cleaning materials. So if on the label it says caution danger, warning poison, empty it out or use it all up, put the cat back on and just put it in the trash please because you might empty it all but you might leave just a little bleach in there and then it can cause problems for other people. We have to follow the rules here. As far as these kinds of containers, basically all of your drink containers except for milk are going to be number one plastic. In order to be truly recyclable, only ones choosing fives, if you've ever looked at the little number on the bottom, it tells you what kind of plastic it is, that's it. So we're looking for one, two, five, keep the earth alive. Easy to remember, if it's not a one, two or five, you can put it in the blue bin, it just probably isn't gonna get recycled if it doesn't fall into a one, two or five, all right? And that realm for single use yogurt-y things, check the bottom of your cups, all right? If they're number six, try to switch to a different yogurt brand, all right? You, we all have the power to make that change. We're better yet by a big tub of yogurt.  We cannot recycle our way out of this. I won't want to call it a kushastrophe. In order to go in the blue bin, it must be bigger than a squirrel's head or bigger than two inches by two inches. So little caps that are flying around by themselves, not acceptable, so don't put those in the bin. But if you connect your cap, the head to the body, as I said, then you can put that whole entire thing into the recycled bin. All right. Thank you. Well, you know, I'm sure. Well, it's for that, all right? Thank you so much. You're welcome. And luckily we have your knowledge here to help us as we sort this mess that we're in. And so Ashley from Rosalia Project working on marine debris. My name's Ashley and I'm the executive director of a local nonprofit called the Rosalia Project. And we are working on the problem of marine debris. We do education programs and outreach, but we also do a ton of cleanups. So we're gonna be doing one for Earth Day down on the waterfront, so please come and join us. And what's really important about these cleanups is when we're collecting all this debris is really getting an understanding of what is out there. What types of plastics are actually making their way into our public waterways, into our rivers, into our lakes, into our oceans. When we can understand how and what is in the environment then we can really work towards solutions. And that data actually plays a really, really important part. Has anybody ever heard of the United Nations sustainability goals? Well, cool. So one of them is ocean protection and restoration. And even though we're in Vermont, let's face it. We are a huge watershed. So all the rivers and estuaries and Lake Champlain is connected on both sides to the Atlantic Ocean through the Hudson on the south and also through the St. Lawrence Seaway to the north. And so what we are working on is it's an activation campaign to put together a hundred squares that will be sewn together by our friend, Runa Ray, who's a sustainable fashion designer. And so we're looking for inspiration artists. It can be quotes, it can be drawings. And then these are gonna be sewn together. We're looking to get a hundred of them. We're almost halfway there. And they'll be sewn together and it will fly this September in New York City at the United Nations. So you have an opportunity to contribute to our ocean flag. And then I'll just give one more plug. Our organization, June, July and August, we run expeditions in the Gulf of Maine on our 60 foot oceanographic sailing research vessel. And we're working on the problem of marine debris doing cleanups, doing education programs, sailing out to remote areas. And we are looking for interns, volunteers to join us.  So if anybody is interested in learning more about the problem of marine debris, in particular in the Gulf of Maine, which is really unique because we have a huge lobster industry which contributes to a lot of the debris that we find. Come and talk to me. All right, so we have a room full of amazing people doing amazing projects. You can finish up the postcards that are here. We wanna make sure that they're flat and fully addressed so that they can find their way to who their audience is, their target audience. You can be in the art for the last few minutes of the show and experience the art. You could be making a flag with Ashley and you can be sorting the plastic for recycling or garbage. And then we'll have help from Recycle Rhonda to know if we're on track. And I just wanna thank you all for being here and thank you Wiley for making this all happen.  Thanks.