Today, I have the pleasure of speaking with Peter Clausi from CBLT. How are you today, Peter? I'm very happy for our shareholders today. We've had a good morning. Well, I think the quote here at the beginning of the news release that just came out this morning was, good things are happening at CBLT. So how about we start there with, what are you talking about? Because we all want to hear some good news. Well, the forest fires in Ontario and Manitoba were a problem for us this summer, prevented us from getting in the field. So we're not the kind of people to sit around and twiddle our thumbs. So we got to work with a company called Syscom. We're helping Syscom figure out its go-to-market strategy, its acquisition strategy, and we're renting out some of our in-house talent to Syscom to help them. We also were granted an option to buy 4.9 million shares of Syscom, which we have exercised. And this morning's news then says that we are sharing the benefits of that work directly with the shareholders by granting a dividend of Syscom shares to the CBLT shareholders. Well, I'm sure people out there are going, okay, dividend, fantastic. When and for how much? The record date is November the 17th, which gives anybody who wants to catch the dividend time to buy the shares on the open market. The exact timing of the dividend will depend on Syscom's progress because it has advised it's becoming a reporting issuer. We'll pay out the dividend after that happens. My guess is Q1 2022, but that's somewhat beyond our control. As to how much for every 84 shares of CBLT that you own, you'll catch one share of Syscom on the dividend. Okay, well, that can be quite exciting, of course, depending on what Syscom does. So we'll all be looking forward to that, Kim. I'm sure you'll be putting out news when Syscom lists. Would that be correct to assume? Yes, but even before that, Syscom plans on filing a prospectus. So once the news of Syscom's financial status is public news by way of that preliminary prospectus, we will be sharing that with the CBLT shareholder base.  Can you tell us more about that? Sure, Shatford Lake is in the Bird River pigmentite field southeast of Manitoba. It's very close to the world famous Tanko mine, which is famous for tantalum cesium, rubinium, beryllium, and of course lithium. There's a 1991 report, which predates 43-101, so all the usual caveats apply, giving it 7.3 million tons of lithium at around 2.7%, which is just a staggeringly high number. For comparison, lithium in brine runs around 200 parts per million, Tanko's running 27,000 parts per million. Our first round of samples is in the lab. We're told that the results are imminent. I haven't seen them yet. We will share those with the market as soon as possible, and we do believe it's highly prospective for lithium and those other elements I mentioned. So, Peter, you're telling me, I mean, is it too late to get in on CBLT? It's never too late, and the market action this morning would imply that people agree with you. Well, Peter, as always, it's a pleasure to receive an update on CBLT, and we hope you will join us more often. Absolutely. We've been working hard, and it's nice to see the shareholders getting a bump as a result of that hard work. TSX Venture, CBLT, and that's Peter Clausi. Thank you. Thanks for your time. See you soon.


The Forming of Being Robot On August 5th of 2005, an episode of SpongeBob SquarePants by the name of ClusterShulk that was never supposed to be seen by the general public was accidentally aired on live TV. Said episode contained content that belonged nowhere near a kid's television network such as NIC. Due to this, the episode was never seen again, becoming an obscure incident that few remember. Despite this, many viewers of the episode managed to get pictures of it and provide a full plot synopsis of its events. Unfortunately, a recording of ClusterShulk is not available, and it's known if anyone did get a video of it. If so, they have not currently made it accessible to the public, and are not expected to, due to the mentality of some to keep rare pieces of media such as ClusterShulk to themselves so as to not decrease its value. Regardless, there thankfully is enough information on the episode to understand its plot, alongside what it looked like. Provided below is a full description of ClusterShulk's alleged events, and some photos taken by the user Kurt Davidson on Reddit. The episode begins with the title card, entirely skipping the usual SpongeBob intro. The title card lacks any music or jingle, simply displaying the name ClusterShulk with a blue tiki backdrop as seen in previous title cards. Afterwards it fades out, then in with a wide shot of Bikini Bottom at night, with some soft, barely audible ambience playing in the background. After a few seconds, the scene slowly fades out to show another wide shot, this one of the Krusty Krab. The camera then slowly zooms in on the restaurant before abruptly cutting inside. There in the register booth lied Squidward, his eyes fixated on a magazine he was reading as he wore his usual dull expression. After a few seconds, the sound of someone or something tapping on glass can be heard, catching Squidward's attention. He puts his magazine down and looks up, with the camera cutting to the front of the restaurant, only for there to be nothing. Squidward's eyes, pulling his magazine back up and continuing to read it. A few more seconds later, the glass tapping can be heard again. Now annoyed, Squidward hand really puts his magazine down again before looking back up, the camera once again cutting to the front of the restaurant. Instead of nothing however, a familiar figure can be seen standing outside the Krusty Krab next to the front window on the right, Squidward. This presumed clone of Squidward stands there, wearing a blank expression as he stares ahead, making no abrupt movement or sign of emotion. The camera then cuts back to Squidward, a look of shock plastered on his face as he breathes heavily. As the camera cuts back to the front, with Squidward's doppelganger continuously standing there, frozen, it suddenly sprints to the right, with almost impossible speed. The camera shows Squidward, surprised yet confused as he stands there, before realization hits him as he says, A majority of viewers note that Squidward in this episode is not voiced by Roger Bumpus, sounding like a competent mimic, yet at the same time, going out of character with some of his lines. After he speaks, Squidward frantically thumbles out of the register booth, sprinting inside the kitchen as the camera follows him in the process. As he enters, he notices the back door to be wide open. Squidward shakes in fear as his pupils catch something in the corner of his eye, turning his head to see what, only to be met with the doppelganger from earlier, except far more abstract. His appearance is entirely green, with spots covering his entire body, almost as if he had the texture of an actual squid layered on top of him.   As the doppelganger stands there, the camera cuts to Squidward's face, a look of complete terror plastered on it as he shakes violently, sweat pouring down his brow. Abruptly, the background turns to pitch black, catching Squidward's attention as he turns around, only to find that his surroundings have turned to a black abyss. As Squidward looks around, still shook by what he saw, the sound of water can be heard behind him. He quickly spins around, only to find that the environment had changed from the endless black, to a photo of a coral reef, with the doppelganger standing in the center. Suddenly green text appears in the top center of the screen. Look at me please. What do you see? It's not you, it never was. Every time you looked inside a mirror, you saw me. You saw my beauty, my perfection, my grandeur. How could you mistake me, with you? Squidward looks on, wearing a confused yet petrified expression. Suddenly it cut to the doppelganger again, now on top of a stage, a spotlight shining upon him, now accompanied by more green text. Look at all the people who've come to see my performance tonight. The crowd adoring my very existence, begging to hear my song.  Not to hear your song however. To mock you, to method out your very existence. Your music, your performance will never be as elegant, as savory as mine. Interspersed with the text our scenes with the doppelgangers crowd cheering, clapping loudly as the sound of an elegant clarinet solo can be heard in the background. Squidward looks on, his scared expression turning to one of melancholy as after seeing the doppelgangers audience, he then sees his own during his concerts, booing and laughing at him as he plays his mediocre clarinet solo. Once again the camera focuses on the doppelganger, once again standing in a new environment, this one being the Krusty Kravskic in as he flips a burger patty, more green text accompanying him as well. Look at the job I have. I worked my way up from manning a cash register, to serving the best patties in bikini bottom, better than even that sponge. My boss respects me, paying me handsomely as I satisfy each customer, giving them mouthwatering divine food to die for. Day by day they line up, just to eat my food, to fill their greedy bellies with what I have to offer. Your job will never be as good as mine. Once again the text was interspersed with the doppelgangers customers ravingly chomping down on his food as Mr Krabs invites the doppelganger into his office, giving him a large bag of money as the two chuckle loudly. Squidward looks at it all, sadder than before as he wears a deep frown seeing his current work life in the Krusty Kravskic with customers heckling him for long wait times and wrong orders as Mr Krabs chastises and lowers his pay. The doppelganger once again appears in a new location, this one being inside an unknown house with a lady squid, one that shares an appearance similar to Squilvia, more green text appearing in the process. Look at the love I found, the friends I have. They enjoy my presence, like my company, call me over to their homes for a drink and a chat, laughing at the good memories we've made and the ones to come. My girlfriend loves me to death, savoring our relationship, the time we've had together, everything. They all love me, they see me for who I am, they like me for it, and not just my fame, my fortune. Even the sponge and the star, I finally got to know them, to be their friends, to understand and enjoy them. Your friends will never be as good as mine. Once more, interspersed between the text was the doppelganger hanging out with his friends and girlfriend, showing the time they spent, with even SpongeBob and Patrick being there. Squidward is completely devastated at this point, beginning to weep as he looks on at his lack of friends, SpongeBob and Patrick annoying him, and no love life to speak of as no one shows up to his birthdays, his parties, anything, with him just being alone. One last time, the doppelganger appears in a new location, this one being the black abyss from earlier, accompanied by final row of text.  Full of meaning, full of people who love, and who I love back. I've accomplished so much, gained so much, I couldn't be happier than I am now. So tell me, what makes your life as good as mine? We both know the answer.  Make everyone scream your name. Then you will be a fraction of my worth. The camera cut to Squidward's face, no longer wearing a look of dejection, but of emptiness. As it held on him, the scene abruptly cut to him back inside the register booth, standing there with that same look of emptiness. Suddenly, he left the booth, with the camera following him as he went out the front doors of the crusty crab, walking down the street. His walk went on for a full five minutes before he arrived on his street, passing SpongeBob's pineapple before turning to his house and going inside. The camera followed him as he went upstairs, walked down his hallway, and turned to enter the clarinet room. The camera did not follow him inside however, holding on the clarinet room's door. After a few seconds of silence, the sound of a gunshot can be heard, alongside the visual of a flash of light under the clarinet room's door. Afterwards, the sound of a faint thump can be heard. A few more seconds later, the episode cuts to black, before fading into its final image, that being of Squidward lying on the ground, his head blown open as blood pools underneath. Next to his corpse lied the cause of his death, a double barrel shotgun. It holds on this disturbing sight for a while, as faint melancholic music can be heard in the background, before the camera slowly zooms out of the shot, eventually cutting to black. After this, the coming up next on Nick's screen appeared, a stark contrast from what conspired before. As you'd imagine, a cluster of angry phone calls and emails flooded Nickelodeon's office, with parents rightfully furious at the disturbing content their kids had witnessed. Nickelodeon made a response shortly afterwards, admitting fault for the incident due to behind-the-scenes negligence from their broadcasting studio. They also claimed that the episode was aired by mistake, being accidentally submitted to the office and mixed up with the episode that was supposed to air. Fortunately for Nick, a majority of parents were quelled by this response. For teenage and older fans however, they found the statement to be questionable and full of holes. Because of this, one fan by the name of Albert managed to get in contact with an employee at Nick who was involved in SpongeBob's production who wished to remain anonymous. The anonymous employee stated that Nickelodeon were being drew about behind-the-scenes incompetence and the airing of the episode being an accident. The origin of the episode meanwhile was completely made up. Instead, the episode was actually created by an employee at Nick who also worked on SpongeBob, someone who the anonymous employee knew closely. The episode was the employee's vent take, using it to get his emotions out while working on the show. When the anonymous employee was asked what emotions his friend was venting out, he said that he didn't know, but that he expected that it was because of his breakup with his girlfriend, his bad work life, and his recent depression diagnosis. Despite the anonymous employee not stating his friend's name, SpongeBob fans managed to uncover it anyway. A day after Albert's interview with the employee, news broke about a man by the name of Gabriel Hanson being found dead inside his apartment. The cause was suicide, was a double-barrel shotgun, being found next to his mangled corpse. SpongeBob fans managed to quickly piece together that Gabriel was ClusterShulk's creator, not only because of the model of shotgun he used in his suicide being the same one Squidward used in the episode, but also because Gabriel worked at Nickelodeon on SpongeBob. ClusterShulk now remains as a haunting memory, both as a man venting out his emotions through an art form he loved, and as his plan to end his own life.


Hi, everybody. Welcome to my talk Beyond CF Push, Managing Large Microservice Applications Like a Bush. My name's Chris of Morty. I'm a senior lecturer and researcher at the Syracuse University of Applied Sciences. I'm the lead of Cloud Platforms at the INIT Cloud Computing Lab. INIT Cloud Computing Lab is available since 1912, and we are working on the forefront of cloud computing research active in several European research projects and also working with Swiss SMEs, implementing solutions in the area of cloud computing. In this talk, I would like to take you on a little journey of what we experienced, what it means to manage complex microservice applications, and I will also show you some of the tooling and we used during this journey and we are developed during this journey. Managing application in Cloud Foundry is simple.  But is it also suitable for more complex applications, specifically if you go to microservice architectures with a lot of components you have to deploy, a lot of services you have to bind, and consisting maybe 70, 80, or more than 100 applications you have to push to manage, and each of these components can be available in multiple versions running on different environments. So this journey, in this talk, we will show you how we approach this. And this journey, the ICC lab was not alone. We are working together with Dorma Kaba. Dorma Kaba is one of the three companies in the global market for physical security and access solutions, which is a merger from Kaba in Switzerland and the Dorma Group in Germany, which was happening last year in September. And in addition, also, we are supported by Swisscom, which is Switzerland's most leading telecom provider and one of the leading IT providers. And you know Swisscom because it's a gold member of the Foundation and also a certified provider of Cloud Foundry. It all begins with the time when Kaba decided to develop an application which should disrupt the market for implementing four access solutions for your premises. They decided to implement a new and easy and convenient secure solution to plan, monitor, and access to get access to your premises. And this product was called Kaba Xevo. The idea of Kaba Xevo is to integrate the ordering, the presales, the offering, the installation, the support, and also the operation of your access solution to your doors and to your devices, to your keys, et cetera, by integrating everything into a central solution. Doing this, keeping the data central, it was much easier to not lose any data. And to give also the partners of Kaba access to the same data they were using as the same data as the customer has, as the same data as Kaba is using to provide you with the keys, with the locks, and all the security systems. It is a complete web-based solution. You don't need any server. You don't need any hardware. You don't need any software on-premise. The only thing you need is a small box which keeps the system running as soon as the internet connection goes down, as the whole system, the whole solution runs in the cloud. In addition, it was designed from the beginning as a microservice-based cloud-native application. It is using command and query responsibility segregation and in the event-sourcing architecture, which is very suitable for this kind of applications where high security and reliability is required. And it is also using distributed domain-driven design approach. From the beginning, all the components were designed as a factor application compliant. But this also means each component consists of several units of deployment, that several applications are required for each microservice. So you need, as you see on the graph below on the side, I'm not sure if you can see it, you need several components for each microservice. You need also bindings to several services. And this was one of the major problems at the end because this raised the number of services required and the number of applications to higher numbers. Just to give you another overview of the system itself. The system itself is split into two layers. It consists of an IoT layer, which is the back end doing the connections to your periphery, like the devices, the locks, and this little box, which is called the access manager. And the application layer, which consists of the front-end application, which has specific applications for your customer. It has specific applications for the partners of Kaba. And it also contains applications for managing the whole system, reporting, and connecting to the billing systems, et cetera. And the whole business domain of the business domain driven approach is running in the application layer. To give you a short feeling how large the system has gotten when we joined the project, it was about 50 applications running in the application layer, which were using 48 services with 150 instances of the applications running, around about three instances of each application were running. In the IoT layer, the IoT layer was a little bit smaller. It contains 30 applications, 18 services, and 90 instances. Still quite a lot of applications to manage, specifically if you consider that applications can move from version 1 to version 1.1 to version 2, et cetera, and you have to keep overview of the whole system. And this was also one of the main challenges for Kaba at this point in time when they developed the system. First point was keeping the overview of apps and services because the number of apps was large, number of services was large, the naming of services was not consistent, service bindings, which routes, which service, or which application is available on the which routes. Then, as I said, you have different versions of each component. And what's also the case, you have application interdependencies. So one application may depend on another application or on a specific version of another application. Even if you are using 12-factor apps, this can be the case, and you have to consider this. And it was difficult to have a coordinated update of the apps and services to coordinate this, take some time to plan and implement. The system they used was based on some shell scripts and the CF command line tool. And increasing numbers of the applications also increased the effort to maintain these scripts and also maintain the scripts for different environments. There was an environment for the developer, developing locally. Then there was an environment for the CICD system to deploy to the testing, to the production or staging environments. And all the scripts had to be maintained. This effort was getting very large. And they also, with the raising number of applications and services, the deployments got slower and more unreliable. Services which were not coming up within a specified or reasonable time, applications dying because the service was not available, applications dying because another application was not available in these kind of problems, which I think many of you also have already experienced. Because Kaba wanted to focus on their main business developing their application, they asked the ICC Lab to create a concept and engineering of a continuous deployment system for Xevo. The ICC Lab had several years of experience using Cloud Foundry, installing Cloud Foundry, maintaining it, and also lecturing it in the classes. So it was a good possibility for us to get more experience also in this kind of applications. Because usually, within a research environment, you don't have these large applications. So we were starting exploring what tooling is available for these kind of problems, Kaba had. We also started thinking about how we could improve the shell scripts. This framework of shell scripts, can it be extended, et cetera. But at the end, we saw this is not really the solution. This works for smaller implementations, smaller applications. But as soon as you get larger, it's almost impossible to do it. Then there are the Cloud Application Management Toolings and the Orchestrations Tooling, like ChefPuppet, Ansible, et cetera. But they provide almost no support for the platform layer. They are focusing on infrastructure and only minimal support for platform layers. Specifically, if you want to migrate applications from version 1 to version 2, there's almost nothing available. And what most companies do nowadays, they build their tooling on top of a CI-CD system. So they create scripts, or they create workflows to deploy the individual components of their applications within or specific for a CI-CD system. In this case, not an option, because it would mean for them to rebuild or map the system architecture on top of the CI-CD system.  And they wanted to keep the CI-CD system as simple as possible. But at the end, we also knew there is tooling around which does this very well. And this tool is called Bosch. Bosch is very proven to manage large distributors to Cloud System. I think you had a lot of talks about Bosch in this summit. It is infrastructure agnostic using the CPI. It the most important component for us, or the most important concept for us, was the separation of a release and deployment. And it is also reliable and creating reliable and seamless upgrades and downgrades of applications. But also here, Bosch is focusing on the infrastructure layer. Bosch is not built to manage your application on top of Cloud Foundry, at least not nowadays. So we came up with a concept, and we decided to implement three main points. First, we wanted to reuse the successful concept of Bosch. Then we'll come what these are. Then we decided to adopt these kind of concepts on top of the application layer. So we managed the application on top of Cloud Foundry and not on the infrastructure. And what's also required, what was required for Kaba, is to have very flexible and reusable but extensible workflows. Each application has different behaviors. Each has different needs if you upgrade them, specifically if you consider migrating your data from version one to version two. Then you need a different workflow. You need different workflows for testing environments. Maybe you do a clean install in testing environments. But on staging, on production, you won't like to have blue-green deployments. And even then, within blue-green, you may have specific applications which behave differently. You want to have specific solutions for specific applications. So after some time working on this, implementing a prototype, we could improve the deployment time of Kaba by more than the factor of two. So we implemented these concepts. We could improve deployment time by more than the factor of two. The application release deployment management was much simpler than before. And we implemented a workflow engine which provides this kind of flexible, reusable workflow. The prototype was so successful that Kaba decided to reimplement it, to clean it, to refactor it in a clean and in a product-ready way. And for this reason, I'm proud to announce today that Kaba is open-sourcing their tooling, which they implemented. And we are open-sourcing it under the name of Push to Cloud. You see the web page, Push to Cloud, www, Push to Cloud. And also Twitter handle, where you can reach us and get more information about it. What is Push to Cloud? Push to Cloud is an application management and a deployment toolkit. It has sophisticated application configuration, which I will be showing in a second. We implemented the same concepts as are available in Bosch, defining a release, an application release, consisting of applications and versions of applications. And we separated the release from the deployment. The implementation is target platform agnostic. So we implemented a Cloud Foundry adapter, it's kind of a platform adapter. Currently, only the Cloud Foundry version of this platform adapter is available. So first release is for Cloud Foundry, specific for the Kaba requirements. And we could implement flexible customizable workflow framework. The new implementation or the re-implementation is very extensible. It is very modular. You can create your own plugins. You can add your own stuff. You can create your own workflows, extend existing workflows, provide workflows, et cetera. And last but not least, it is open source. And we are hoping also to help, using it open source, also help other companies make use of it, help by using it as for their deployments. OK, some of the next I would like to show you some of the main concepts we were using. First of all, one of the concepts was the definition of a configuration, application configuration management. This is the shema we used. Sorry, this one. This is the shema showing how we structured the configuration definitions. So the basic unit of deployment is the application on the right side. Applications can have dependencies on services, as we know it in Cloud Foundry, but applications can also have dependencies on two other applications. A really application is defined using an application manifest. Also, all the application-specific configuration were environment definitions, memory definitions, also how much memory is used, et cetera, will be defined in application manifest. Similar to a manifest you are using for the CLI. What's new, specifically new, is that we created a release. And the release is a composition of applications or a list of applications with specific versions. Compared in Bosch also to a release, nothing else than a list which applications belong to this specific release. Release also defined in the release manifest. Release manifest maintained by a release manager, which knows which application works together. These components are still independent of the target environment. All the configurations so far do not contain any information about the target environment. So we can use the same release for multiple target environment. And the target environment in Push to Cloud is a CF organization space. So environment is defined as a space within an organization on Cloud Foundry. What's doing this connection between the release and the running system? It's what we call the deployment. Deployment contains all the information required to run a release on a target environment. And also here we use the notion of Push. We created a deployment manifest describing or containing all the information required to do this. Based on this information, we can generate a deployment configuration. So starting from the deployment manifest, which references, which release we want to deploy, which references, which application contained to this release, we can create one large file in memory or on disk containing a normalized version of our desired configuration or the desired state of our system. Just to give you a short overview of how an application manifest may look like, it's currently a JSON file. Because the implementation of Kaba is based on Node.js, the whole system they are implementing is based on Node.js, so it was a natural choice to use JavaScript and JSON for this. It would be easily adopted to use YAML, if you like. So application manifest defines some basic metadata, some where, sorry, wrong slide, some application-specific configuration, like memory, et cetera. Then environment specifications, application connections. If you are depending on another application, you can define to what applications I depend. If the system should inject connection credentials in my environment, so I can read in my environment how to connect to the remote system, or if I do this in a different way. And also I will define what services I would like to bind to. And you see, if you look into this configuration, there is no platform-specific, it's only names, numbers. There's no platform-specific configuration. Release manifest is much simpler or even simpler. It's basically a list of applications which belong to this release. You can give one source where to get the application manifests, or you can define for each application what's the source of the application. So it's also very flexible in the configuration. Last but not least, the deployment manifest then is doing the binding. Here you say, what is the target environment? And you give all the information required to connect to Cloud Foundry. You define which release has to be deployed. You can define some application defaults. If an application is not defining how much memory it uses, it will use the defaults from the deployment. Here you also define the service mappings where we support wildcards. So if you have a NAMIS team for your services, you don't have to define each service itself. You just define the type of service as a wildcard and then the type and the plan for this wildcard of services. And then we can also configure some application-specific settings for this deployment. So we override some application-specific configurations. As I explained before, the deployment configuration at the end is built based, describes the full normalize configuration of deployment. And we have two ways to build a deployment configuration. The way I described it so far, using the deployment manifest, release manifest, application manifest, we can compile from this the desired deployment configuration. And what's more interesting, also, we can, from the other side, we can go to Cloud Foundry, get all the information from Cloud Foundry about the applications, about the space, about the services, et cetera, retrieve this information, and also from this side, create the deployment configuration, which then describes the actual state of the system, of the running system. And the neat thing, because the deployment configuration is normalized, we can now create the difference between the two. We can see, OK, these are new services. These are new applications. These are new routes, which were not there before. These are new service bindings, et cetera. And these differences can then be used in the deployment process to only use the minimal steps from the actual deployment to the desired deployment state. And to do this migration from the actual to desired state, we implemented the workflows. Workflows in push to cloud is a collection of actions which are used to migrate from the actual to the desired state. As an input to the workflow, we are giving the desired deployment configuration. The typical workflow starts getting the actual deployment configuration from the system, creating the differences. And then we can define within the workflows, we can define what steps to go through and implement and deploy the new release of the application. We decided to use an imperative design. So workflows are code. So workflow in push to cloud is JavaScript code, which is asynchronous, which is functional, which we also implemented some tooling to control the workflows, to run some stuff parallel. So we can deploy a number of applications in parallel. We can make sure that the services are created one after the other so because to not overload service brokers, which was a common use case in early stages. And we also implemented some reliability features like timeouts and retries. You can specify what is a timeout and how many retries the system should do. And one extremely useful feature was also implementing a grace period. So if an application starts, we are waiting for a certain amount of time if the application dies and you can configure this time and how many retries it should do. And if the application is still up after a grace period, we consider the application as successfully running. So just to give you an idea how such a workflow looks like, if you go through from top to the bottom, it's quite easy to read. You initialize the workflow, you package the application, you create a service instance, you create routes, you create the missing applications, you upload the missing applications, you stage the missing applications, you bind the services to the new applications. You start the new applications, you switch the routes from the old to the new applications, stop the old unbind and delete the old applications. So workflows are quite easy to read. And because it's basic JavaScript code, you can also easily implement and extend it to your own needs. In the remaining time, I would like to show you how Push to Cloud really works and give you also a demo. Deploying an application in Push to Cloud is basically three steps. Defining a deployment configuration. A deployment manifest, sorry. So configure the deployment manifest. Any editor you want to use for this or any. Then step two, you compile the deployment configuration from the deployment manifest. And step number three is then to execute the workflow, which is then using the deployment configuration and starting. And so I will give you a demo. If you have time still, this doesn't really work. I have to go out here. What you see here is the deployment manifest for a demo application consisting of a frontend here and an API tier. And the API tier is using a Redis database for storing the stuff. So what we have, what we defined here is the target environment, the release. We have the service mappings and also some application defaults in the deployment manifest. So it's more or less a few pages. Sorry, I'll go back a few. Next is the application configuration. Sorry, this is the release manifest. You see two applications, push to cloud example host and push to cloud example API with the specific path within the Git repository, the job place. This example is also available on the GitHub documentation project you have. You can download it and try it yourself. Next is the application manifest of one of the applications. It's only a small part because Kappa is using a node. They said, OK, we are using the package JSON file itself to also using the package JSON file as an application manifest. And they just added a deployment component within the package JSON, which is in the application manifest. But you could use any other file. You can configure which file to use for the application manifest. Application one, then we have application two, which also defines dependency on a service. This is the blue green workflow, around about 50 lines of code. First step, just to see, is to compile the deployment configuration. It's a bit, we sped it up a bit. It takes about six minutes. Most of the time is used to build the application. Also, the NPM build process was about five minutes of these six minutes. And the rest was just compiling the deployment configuration. Then when you have built the deployment configuration, we are executing a blue green workflow. You see, the thing is that the workflow is initialized using all the, getting the actual deployment configuration from the system. It's creating an app, creating the two apps, uploading the applications, starting, staging the applications. After staging, then you see the output of the staging process, which is not, because it's a debug mode. We are running this. It shows all the details. It's not very readable. And then after this, we are starting the application. And these red messages you see, this is the grace period, where we are trying if the application is still running. Finally, when it's deployed, we can see it works, basically. What we are now doing is doing an update. We are changing the application as only the host part of the application. And then also switching it from version one to version two, committing the new version, committing the new changes, pushing them. And then again, compile the deployment configuration with the new thing. And execute the blue green workflow. And now you see it is only creating the version two of the example host application. And it's only binding it. And then at the end, staging only the new version. The other one is not involved. And then also staging it, starting it. And again, going through the grace period, if the application is still running, before switching to the new application and removing the old one. And it still works now with version two in the title. That's how it is to use push to cloud. Only two slides left. As I mentioned, push to cloud is a modular design. We provide some basic workflows. Everybody can create their own workflows. You can add your own plugins for the compiler if you need some specific stuff which has to be done while preparing your application. You can add additional plugins. What you're also planning to do for the next step is to run push to cloud as a REST-based service. So currently, it's just a command line tooling. Easy to integrate in CICD systems. We also plan to add runtime monitoring. And one option we also are considering is adding new platform adapters so we can also support different cloud platforms. OK. Good. What I mentioned, because many organizations have the same challenges as the store of Acaba, they decided to make push to cloud open source, hoping to help many projects to succeed deploying microservices. And the web page is available starting from today. It's going online from today. The GitHub repository is online from today, push to cloud. Quitter, if you want to contact us, feel free to subscribe to our Twitter account. And feel free to contribute. Feel free to try out push to cloud. Give feedback, what's good, what's bad, what's missing. And we are also expecting, if you like, we also like to have push pull requests on GitHub if you would like to contribute to new workflows or you would like to contribute code to extend it. Always happy to get your contributions. And I hope that I can stand here next year again and tell you where the project was going, where we stay, and how it developed. Any questions? So when you presented this Xevo app for the control service, you mentioned that for the presentation layer there, you had 50 apps and 47 services. That seems like an excessive amount of services. Was it because it was hard to generalize them or did each app use a whole lot of services? Usually, if you use cloud as microservices, each microservice has its own data storage, using its own data storage services. Some of the services are shared. So you have messaging systems which are shared between the services and used for messaging. But most of the components of the microservice are using separate databases for their view model, which is called in these kind of applications. So you have many different kinds of data services that each app uses. And they also have applications, specific applications for users, for their partners, for themselves, et cetera. And an application can be only a part of a UI. So one UI web page can consist of several components which are implemented as separate services. It seems kind of complex. Do you think that's a kind of shortcoming of Cloud Foundry itself? Because you complain that you had so many apps and services to manage. But it's a common use case. This is necessary. Today's microservices, this is a common use case to have these kind of applications. Cloud Foundry is only the basic tooling. I think it has a lot of space on top of Cloud Foundry to implement this kind of tooling. You could implement it in a CI-CD system. We now decided to have a separate tool, implement a separate tool, which can be used in any CI-CD system. So we are now bound to a CI-CD system. OK, thank you. More questions? How a push to cloud workloads can work in the multi-cloud environment, like private and public? In multi-cloud environment, because in the deployment manifest, you declare which implementation of Cloud Foundry you want to target for this deployment. So just changing the URL of the API endpoint in the deployment manifest, and then or to create the known manifests for each deployment for the public or private deployment, then you can push it to the specific target environment. Because a release is independent of the target environment, and only the deployment manifest specifies where to push it. So what Kaba also is doing, they are pushing several instances of their system for testing, staging, and production. And for each deployment, they have their deployment manifest. And one of the systems is internal. The staging environment is on the Swisscom Cloud, and the production environment is also running on the Swisscom Cloud. So we have multiple. Currently, one deployment is bound to one instance of Cloud Foundry, to one space. Option to extend this was the requirement for Kaba. OK, thank you very much.


As a long-time Linux user, I can say that my opinions on the software that I choose to use, it's evolved, it's changed over the years. Things that I used to like, I no longer like, things that I didn't think I would like, I've grown to love. And today I wanted to talk about login managers and specifically what I've kind of settled on as my login manager of choice these days, which is SDDM. Now, when I first switched to Linux, we had a lot more login managers to choose from. Login managers, sometimes they're called display managers, although I think that term is confusing. Display manager almost sounds like display server, which a display server or things like Xorg and Waylon, a display manager is the thing you use to log into your desktop environment. So I prefer to actually call it a login manager rather than a display manager because I think that's a much more descriptive term. I think it better describes what these programs are.  So I've always got to pick and choose my login manager. And I've used many over the years back in the day when I first started, one of the more popular ones for window manager users was a login manager called Slim. Slim even back then didn't see much development. And now you definitely don't want to install Slim and use it because it's been a dead project for more than a decade and there's a lot of bugs with it now. It's really not usable. I also use the old LXDM, the LXDE display manager, and that was really cool too. But that project has been abandoned for a while. LXDE, that desktop environment actually no longer exists anymore. These days, you really have two big display managers. You have GDM, which is the login manager that GNOME uses, and you have SDDM, which is the login manager that you typically see with plasma installations. Although SDDM, you can install it with any window manager or desktop environment you like. And one of the things about SDDM that I've grown to love is the theming.  So today I just wanted to make a quick video showing you how to install SDDM as your login manager, how to enable it, and how to install some of the really beautiful themes out there for it. So let me switch over to my desktop and let me go ahead and open a terminal and zoom way in here. So let's assume that you don't have a display manager installed on your system just yet, or maybe you do have one, but it's not SDDM and you want to switch to SDDM, whatever the case may be. The very first thing you want to do is you want to install SDDM. So I would actually install SDDM here in Pac-Man. You would do Pac-Man dash capital S SDDM, of course Debian and Obuntu systems. You could probably do a sudo apt install SDDM. Hit enter, give it your sudo password. There's really no dependencies for SDDM. This is one of the things I love about this login manager. You see it's installing exactly one program, so it doesn't come with a bunch of stuff tied to it. Even though I mentioned it's the login manager for Plasma, it's not tied to Plasma in any way, which means it's perfect to install alongside a standalone window manager. So let's go ahead and install it. Let me clear the screen. Once you've installed SDDM, of course you can't just reboot your computer and SDDM launches. You actually have to enable SDDM as a startup service with system D. So to do that you would do sudo systemctl enable SDDM. And now that you've done that, you should be able to reboot and get SDDM to start up. So let's do a reboot here. So I rebooted the system and we get our login manager, SDDM. Now this looks very plain old school, you know. It would work. There's nothing wrong with using this particular theme for SDDM. But again this is kind of the default theme. It's what it falls back to. You're kind of expected to install custom themes. So that's what I'm going to do. Let me log back in. So let me pull up a web browser here. And this is a fresh VM here by the way. This is Arco Linux. I'm running. I installed DTOS on top of Arco Linux. And I'm going to do a search for Arch Linux. And really I just want archlinux.org the website here. And I'm going to go into the AUR because a lot of the custom themes for SDDM are going to be AUR packages. And I'm just going to do a search for SDDM. And let me zoom in way in here so hopefully you can see some of these packages. But again just go to archlinux.org, click on the AUR, do the search for SDDM. And you will have a ton of packages that involve the name SDDM-theme-some other description. So there are a lot of SDDM themes. And one of the ones I've been enjoying here recently is SDDM sugar dark. And let me show you this in action here. And I'm going to install this with Paroo because it's a AUR package. So we will use the AUR helper. I'll use Paroo dash capital S. And I'll do SDDM dash sugar. And I'll tab complete. If it will tab complete. And it gives us three different options. Sugar dash dark. And hit enter. And confirm the installation. And then give it your sudo password. Now just because we installed that theme doesn't mean that theme is enabled. If I were to quit out of Xmonad right now and get back to the login manager. You can see we're still just using the standard vanilla default SDDM theme. It didn't actually switch over to the sugar dark theme. So let me log back in. So there are some config files that you would need to edit. Actually you just need to edit one config file. One of the things that is kind of confusing with SDDM is it does have several config files in various places. For example, let me show you one of the places that you'd find a config. Is that user lib SDDM. Let me just tab complete there. SDDM.conf.ddefault.conf. This is a config file. It's got some stuff in it. And if I wanted to, I could set a current theme here. You can see current equals. That is a theme right now. It's not set to anything. And that's fine because there's another file on the system that kind of takes precedent over that file. So you might also find a config. It's SDDM.conf. And here is another kind of file with some settings, although I don't have anything that sets a theme here. It's possible I could, but I've got this theme section, but it never really sets a theme with that. What I found here on ArcoLinux is they have this file here at slash etsy slash SDDM.conf.d slash KDE underscore. It's not settings.backup. It's settings.conf. They have this config file. And this config file, you can see it actually does have a theme actually set. It's got multicolor dash SDDM theme that is actually not installed on this VM. So that is why that line right now is just defaulting back to the default SDDM theme. So we actually could change this to sugar dash dark is what I'm assuming that should be. So let's do sugar dash dark. I hope that is the correct name. There's only one way to find out. I forgot to open this with sudo privileges. So let me go back and do a sudo bang bang. Now give it the sudo password and now go down to the theme. Current equals and change that to sugar dash dark. Let's write and quit. That may not be the correct name. It looks like it was though. So I guessed correctly on that. So this is the sugar dark SDDM theme. And you can see it's very nice.  And then of course you get a wallpaper here. And of course this is all editable because these themes, the individual SDDM themes themselves have config files. If I wanted to, I could find the line where it's finding this wallpaper and I could set that to any wallpaper I like. If I wanted to, I could go into the theme config file and I could change the coloring of this. And I've actually done that a little bit in the past with some of these themes. I've kind of edited them to actually fit, for example, some of my color schemes and things. So let me open a terminal. So once again to set the theme, make sure you go into this file here at slash etsy slash SDDM dot conf dot D slash KDE underscore settings dot conf. And you find the line that begins with the word current capital C current equals and then set it to the theme that you installed. Now you don't actually have to manually edit this config file. If you want, there are tools that will do this graphically for you where you just pick a theme that you have installed from a drop down menu. And on Arco Linux or any Arch Linux based system, you can actually install the Arch Linux tweak tool. This used to be called the Arco Linux tweak tool, but they've made it more of a generalized program for all Arch based systems. And if you don't actually have this tool, I'm pretty sure you could find it probably in the AUR. If I do paru dash s Arch Linux dash tweak, I'll just do TW and tab complete. Yeah, you can see Arch Linux tweak tool dash get looks like is the AUR package. So just install that. And once you have the Arch Linux tweak tool installed, you can just launch the tweak tool, give it your sudo password to launch it because a lot of what you're doing in here involves editing config files that require sudo privileges, of course. And then this particular tool, the Arch Linux tweak tool has a ton of customization options in it. But what we're interested in is login and then whatever login managers you happen to have installed, hopefully you'll have the options for them here. For me, I only have SDDM installed. But if I wanted to, there are tabs for light DM. It looks like light DM is not installed. Do I want to install it? So we have the options here to actually change out the login manager. But I'm going to go back to the SDDM tab here. And under SDDM, you will see theme and you will see the theme that's currently set Arch Linux simplicity. And then there's a few default themes here that just come with Arch Linux. But then I have sugar dash dark, which of course is the one that I manually added myself. And just set that hit apply settings. And now that is now my new theme. But maybe there's some other themes I wanted to try out. Why don't I do a paru dash s SDDM dash theme dash? There was some other sugar option. There was sugar candy, which I'm not exactly sure which theme that is. I don't think I've ever used it before, but let's install it and try it out. Because why not? Give it your sudo password there at the end to finish the installation. And now let me close the Arch Linux tweak tool. And let me restart the Arch Linux tweak tool. Just to make sure our new sugar candy theme is provided as an option in the menu. So now let me go to login SDDM theme. And now sugar candy. Let's take a look at it. So I'm going to hit apply settings. And now let's quit out of Xmonad to get back to the login manager. And it took a second for the new screen to actually load up. I have seen this. This is actually one of the default SDDM for Arch Linux. I didn't realize that was what they were using was the sugar candy package. So it's very similar to the sugar dark package. Except instead of having a dark panel, you have like this Gaussian blur effect, which is actually really nice.  And once again, you can go find the theme file for the individual themes and edit it. Let me show you how to do that. Let me log back in. So once again, let me open a terminal to find the themes that you've installed for SDDM. What you want to do is you want to CD into user share SDDM themes. And if you CD into that and do an LS, you can see there are all the current themes that we have installed. And if there was one I wanted to edit right now, we're using the sugar candy theme. Let me CD into sugar dash candy, do an LS. And these are the files for sugar candy. So this will include theme.conf, which is a config file. Main.qml, which is basically like a markup file. It contains some of the theming elements for cute and because SDDM is a cute application. And then you have backgrounds, which are going to be the default wallpaper that the theme is using. But again, you could change wallpapers if you wanted assets or probably some other images that the theme uses. But just to play around a little bit, let's do a sudo vm theme.conf just to see what's in here. And right away, probably the most important thing. A lot of people might want to change background equals and then the path to mountain.jpeg. Of course, you could change that to whatever you want. Looks like they're using a relative path. But if you wanted to, you of course could use an absolute path to any background image you have on your system. For example, just to verify that this works, I'm going to change this to slash user slash share slash backgrounds. I have a package installed called DTOS dash backgrounds that has some of my wallpapers. And one of them is 0310.jpeg. We have the option of dimming the background image right now and that's set to zero. Yeah, I don't really want to play with dimming the background image screen width, default screen width and screen height. Main color equals white. I'm assuming that's the foreground color. You could change the accent color as well. I'm not going to play with any of that right now. But again, you can see every theme is going to have one of these theme.coms. And it's going to have options for you to change things like the background image or the colors of some of the stuff. So what I'm going to do is I'm going to go ahead and write and quit out of that. And let's go ahead and quit out of Xmonad. Go back to the login manager and see if we now have a new background image. So we should no longer see that mountain wallpaper. We should have a different wallpaper. And the wallpaper changed. This is one of the wallpapers from my wallpaper pack for DTOS. So that's a little bit of how you can play with SDDM, install different themes and then the individual themes themselves. You can edit to your heart's content, change the colors, change the colors of the fields, change the background images. And I'm really glad that I've moved away. I was using LightDM as my login manager. LightDM was nice because it didn't have a lot of dependencies, either no dependencies practically. It's what Ubuntu used when they were using the Unity desktop environment years ago. But when Ubuntu switched to GNOME, they then switched to GDM as their login manager. And really LightDM doesn't seem like anybody's really developing it these days. It doesn't see much activity. There's not a lot of themes for LightDM. A lot of the themes that are out there seem broken when I try to use them where SDDM. There's a million themes out there and they all look really good. And I know aesthetics really shouldn't matter that much, but it kind of does.  To me it does, right? When I see something that's a really sexy desktop, I just, no matter what, what's going on. If my operating system is buggy or things are crashing or whatever, if it looks good, then naturally I think higher of my software than if it was crashing and buggy all the time and it was ugly. You know, I'd have a completely different opinion. I know that's weird, but I really do think sexy software makes a difference. Now before I go, I need to think a few special people. I need to think the producers of this episode, Dustin Gabe James, Matt Max and Michael Mitchell, Paul West, while you're ballin' on me, Alan Armoredragon, Chuck Commander, Rinkory, Diokai, Dylan Gregg, Marsh Trumber, Yon Alexander, Paul, Peace, Arch, and Vador, Polytech, Realiteats4less, Red Prophet, Steven, Tools, Devler, and Willie. These guys, they're my high-steered patrons over on Patreon without these guys. This quick look at SDDM, it would not have been possible. The show's also brought to you by each and every one of these fine ladies and gentlemen as well. All these names you're seeing on the screen right now, these are all my supporters over on Patreon because I don't have any corporate sponsors, it's just me and you guys, the community, if you like my work and want to see more videos about Linux and free and open source software like SDDM. Subscribe to DistroTube over on Patreon. Peace.


Freedom! I know it's been a while since I've talked about this, but yes, I too can pick winners for our $100,000 sponsorship. Sponsorship for small YouTubers. And I know that there are a lot of people in the comments section down below giving advice. There are a lot of people asking for advice. However, there are another set of people who are not only giving and asking for but are enacting this advice. The person that I found for my pick not only got advice, not only gave advice, but also put it into effect on his own channel in a very interesting way. He is also helping teach other people via Skype calls and writing articles and doing all kinds of things to help you grow. While I'm talking about reviews, you may remember a show that I did call the 3X Spotlight. The 3X Spotlight has not gone anywhere. I put out usually about one a month. I do think that I will end up having to skip last month due to the launch of MGM. However, this is not something I plan on stopping. However, in the meantime, you should notice here on Freedom Central there is a new show where that's the entire focus. That's the whole point is two of our very finest channel reviewers are doing just that. Reviewing channels, talking about it, discussing it with the community. And these shows are meant not only to educate that one person or those people that they're talking about, but to educate everyone about how not only the best advice that can be given, but how to apply it practically. If you haven't seen that show yet, please find on-screen right now an annotation to go and check that out. Honestly, they play well off of each other. These two are awesome. One of them is a friend of mine, so I would appreciate if you did check that out. Onto the winner of the $100,000 sponsorship for Small Gamers. I am naming Batchee Gaming for our $100,000 sponsorship winner. He not only has asked for help, he not only has given it, he's put it into effect on his own channel in a very interesting way and also in a very marketable way. The very first thing that I noticed when I checked this channel out was that it almost looked like a perfect example of how I have been telling people to set up their channels. Doing my research, I found out that he's been teaching other people how to do the same. Doing a little bit more research, I found out where he got his information. Where he got his information was the 3X Spotlight, which is a show I've done now 3 times here on Freedom Central and is also in a very similar vein to the review show going on right now here on Freedom Central with Drac and his co-host. Batchee Gaming, you get to pick from one of these awesome prizes.  I am even more glad that you are teaching other people how to grow. You are possibly the best kind of student, the student that goes out and teaches others and that's really the best part about doing this kind of thing on YouTube. One person goes out, sets out to make a difference, then it has a butterfly effect. That butterfly effect touches more people, more lives than I could ever do alone and for that Batchee Gaming, I thank you. I hope that this video has been helpful for you. If it has, let us know in the comments section down below. Till next time, I'm Anthony with Freedom Life. Subscribe, comments please. Let's discover freedom. Click the first video to learn what is freedom and how it helps you grow. Click the second video to learn about sponsorships for all Freedom Partners even if you have just 10 subscribers and click the other videos like How Do I Leave Freedom to Learn More? Click Get More Views to learn how to build your audience faster on YouTube. Click Get More CPM to learn how to make more money from your channel and click Get More Music to learn where to get more music to spice up your videos. Click the first playlist to watch The George Show on Freedom. That's my show. Or watch The Anthony Show or The Alex Show also on Freedom.