How to deploy your Spring Boot application in Amazon-managed Venetius service and that is by DivineOdazie. So if you have any questions regarding this while this section is going on, you can type it right in the chat and we'll get it once the tutorial is done with. In this class session, we'll be first, you create this Spring Boot application then you dockerize it. Hello everyone. My name is DivineOdazie. I'm a developer advocate and technical writer and also an AWS community builder for containers. So today, you learn how to deploy your Spring Boot application in Amazon-managed Kubernetes service, also known as EKS. The steps you follow in this particular session will be first, you create this Spring Boot application, then you dockerize the Spring Boot application. After dockerizing the Spring Boot application, in order to understand how Kubernetes works before we move on to EKS, we'll deploy the Spring Dockerized image locally on Minikube which is a one-note Kubernetes cluster. Then in order to use the application on EKS, we'll push the dockerized image to Amazon Elastic Container Registry. Then next, we'll create a Kubernetes cluster on EKS and after that we'll deploy the application from the Elastic Container Registry to the Kubernetes cluster. And finally, we'll enable access to the application via an external IP address EKS will provide. Before to properly follow through, you need to have docker installed on your machine. An IDE for this, I'll be using the IntelliJ IDE. And you need to have some understanding of Kubernetes as we're not going into some aspects of this session. Then you need to have Minikube installed on your machine. I'll cover how you can install Minikube in this slide. You need to have an AWS account. Then also create a user with admin access on AWS IAM. AWS, you also need to have AWS CLI installed on your machine and QCTL in order to communicate to the Kubernetes cluster you create locally and also on Amazon EKS. So before we start, let's overview some of the major tools we'll use in this session. So first, we'll use Spring Boot. Spring Boot is a Java-based framework for building Spring-powered applications, production-grade applications and services with absolutely no need for more force. And how you can do that is because Spring Boot has abstracted so much configuration that ideally you do with Spring. And also, the opinionated approach makes you do stuff in a specific way and it gives you production-ready features like metrics, health checks, external configuration and has an embedded Tomcat server and abstracts the need for XML configuration that's normally you do in Spring. With Spring Boot's flexible packaging options, packaging into Java files, wire files, packaging and application into a container image, you can deploy your application on several basically anywhere, right? You can deploy on cloud platforms, vapor machines, brew machines and in this session, as the title says, we'll package into a container image and deploy on AWS ECR, then AWS EKS, Amazon Managed Kubernetes Service. The next mini-cube, basically in the production cluster, there will be multiple master and worker nodes across several virtual machines and during that require a lot of system resources, CPU resources, storage resources, which is not possible when working with Kubernetes on your local machine. So mini-cube abstracts all that and gives you all the master and node processes on one single cluster. That's why I say earlier, a one-node Kubernetes cluster on your machine or your Mac OS, your Linux and your Windows machine and focuses on helping application developers and new Kubernetes users, application developers to try and out-stop locally before going to production and also embodying new users and to try out Kubernetes in the journey. So you can get mini-cube from the docks, if you don't have it on your machine already. Basically, you can just Google how to install a mini-cube and you'll be able to get the name that I put in this slide.  So offers all those features, plus other features that Docker Hub and GitHub Container Registry and other Container Registry don't like limitable tags, image tags, we'll see how to make an image tag limitable along the line in this session, image scanning, in order to see security for security vulnerabilities, some other stuff that we would love to see get on a high level. And obviously, it's integration with other AWS products, other AWS tools. So the main stuff we'll do in this session will be on Amazon Managed Kubernetes Service, which is managed Kubernetes Service that abstracts all the effort required to create a Kubernetes cluster. You need to install and maintain your own Kubernetes control plane and give you all the advantage of using AWS scalability, reliability, all the AWS infrastructure and its integrations, as I talked about earlier. Don't work with EKS, rather, first of all provision a cluster, an EKS cluster and EKS automatically deploys a Kubernetes master or master, rather, and then we'll deploy a worker nodes. And in order to communicate to the Kubernetes cluster on EKS, we'll use Kube-CTL, which we also use to communicate to the one node cluster, which will be created by mini-kube, we'll use Kube-CTL, then we'll deploy our applications on EKS. It's demo time, all the commands, codes, LAMO configuration and some AWS specific skip steps, I will talk about along the line. You can find them on these public papers you treat on GitHub, in order to, let's say, cross-check in case you're having issues while working through this session. So let's get started with the demo. So you create a Spring Boot application. So ideally, you will create a Spring Boot application using the Spring initializer, the stats.spring.io. But for this session, this tutorial, we're going to create it with IntelliJ on the IntelliJ IDE. So click on new projects, then we'll name the project KCD Africa with a Spring Boot. Spring Boot, the application is going to be based on Java 17. And next, create the application. We'll select the dependency to use, which is Spring Boot, because we're going to create a RESTful API. We'll just wait for some time. Once everything is checked and our application has initialized, we then create a new Java class. So we're going to call it TestController. This will be RESTfulController to test our application. So we're going to annotate it with RESTfulController annotation. We're going to create just two endpoints. One will be the index endpoints. Then the other one will be just the name endpoints. So using the get mapping annotation, then we'll return each one, the header, which one header, hello world, which is what's most programming demos use. And for the second endpoints, to get endpoints, the name, to the Spring method, we're just going to use the printout menu, the kind of the way that's. So to run this application, we can, to build around this application, we can just click this third button on the IntelliJ IDE, on IntelliJ IDE, or on the terminal using maybe a wrapper, or this command, MVM, install, and use the application. Then to run the application, we can use this command, to run the JAL file. When it commands, each command gets the JAL file from this JAL file, KCD, Spring with the snapshots of the JAL file. And yeah, I'll Spring with application yesterday. On port 8080, we can test that and check if it works. We get hello world, the name, so our Spring with application works. So next, we'll dockerize this Spring with application. In this terminal on my machine, then to dockerize the application, we first of all created the docker file. So the other ways you can dockerize the Spring with application, you can use this. You can use maybe a wrapper, I use the build image plugin to build the application, to build an image. But yeah, we'll create the docker file. So let's touch, we can use the VI editor, or let's write the docker file by IntelliJ. So from the application, as I said earlier, uses OpenJDK17, so from the base image, from where the Spring boots, the application image will be built. Then copy, I'm going to copy targets. Then I'm going to copy the JAL file into the container. So we're going to copy the parts, the file name, the file name, then I'm going to write the entry points. Basically, this is where our application starts. After when is run, I see I'm writing the same command. We'll use the A, look at the command. The same command we'll use the A. I'm going to write it in the docker file to run the application, I'm going to suppose reports, 28A. When that is done, it can now build the image. So it can now build the image using the docker. It can now build the image. Okay, before that, let's just check that it is. I see the docker file. You can also see the docker file with vi editor. I did it with vi editor. Okay, run the base image. We'll be using the vi editor when creating the Kubernetes deployments and basically from here on, we'll be using the vi editor. Then build the image, docker build, build, we'll type the image, KCD, spring back. In time, the image will be built, then we can check image, you can see, spring with image. Then to test the image, run, we're going to tell, look at the ports, we want the image to run. I'm clicking from the ports, the image, yes, goes from the application. Then the image in KCD, okay, we can test that. You can see that our dockerized application is working. Docker image works. Then we can do that process. Next, we'll deploy this particular image onto mini cube. You know how to use mini cube? Automation mini cube is up and running. So basically mini cube starts. I'm using mini cube on a Mac or M1, Apple Silicon. So I don't think you get the same outputs on Linux or on Windows. So for us to deploy that particular image, ideally we have to deploy the image onto a container registry. So maybe docker hub, as you see in this demo, we're going to be using Amazon ECR. But for this, right, before we go on to deploy into ECR and for us not to deploy to docker hub, we're going to create a local registry, a local repository where we will deploy our image. So we can do that easily on docker, continue with the registry image. So basically the command will go like docker run, detach mode. We can start our registry to restart our name. Registry image. So as far as currently I don't have the registry to image locally, I'm just going to find the image and pull it. So we'll take a few seconds, we can maintain it. So yes, I have the image, I can do docker ps to check. That's currently running. You can see the registry image on ports 5000. So then next, right, we have to point the local registry to mini cube. So we point the local registry to mini cube. So when we deploy our application, it will be able to find the application. So we're going to use this command. Now after pointing mini cube to the local registry, you can get it. You then need to check if the point works.  So if you check here on the terminal of the springboard application, you see difference is not the same as this, right? So because of this, you need to rebuild the image. So you can do that with docker, docker build, target, case it is springboard image T, then build the image. So I've really done that like you can see here above. So next you need to tag this image that you built. You need to tag this image that has been built. So points to be able to push the image with local registry, you need to target with the, okay, to explain this better. So when you want to push images to docker, right? To docker or rather, you push images, you target the images, let's say this image targets, this is the springboard image. You target with your username. So this is my username of local accounts, then the repository you want to push the image to. And it gets pushed with the latest tag or you give a different tag. So now for this local registry, using the tag, you know that we'll have to tag the registry with local hosts, 5,000. So if you remember, registry is token is on ports 5,000. So this is where the registry is 5,000, then the tag of the registry. So you remember I said for docker, for docker host is username and the username of your docker account, local accounts, then the repository name. But for this, we'll give it the, we'll use the port name, local host 5,000, which is the port you're going to be listening on, then the repository name, and we should give it the latest tag. So the repository name we'll use for this, we can use the same repository name. We see in, when we are using Amazon EECRO, you see how we do that using, when we tag, you see when we tag the image with a copy with the repository URI. So when we get to that, you better understand what I'm saying. So tag the image, then the image has been tagged, then compute with docker images, then you can see, then we can now push this particular image in the repository with the latest tag, docker push, docker push. When I run docker push with the image tag, I noticed that it refused to connect. And this was because, if you notice I explained, we pointed Minicube to the local registry. So it's kind of deleted the image. This didn't happen before. So I have to recreate the image and it's currently running. So let's try to push it again. Okay, it's pushing now. Okay, now the Springhouse, we've got the application in the local registry. Next, we need to create a deployment, a component is deployment. So to do that, we'll create a deployment via the command language terminal without having to create a YAML file. We'll use the dry run client flag, which will create the entire YAML manifest template. So let's see how to do that. We'll create the Cube CTO, create deployment, and we'll give it a name. This is the Africa demo. Then the image, image will be localhost, then the dry run flag, dry run and all, and name the file, deployment. That's YAML. So now we've created a deployment for our file. We also want to put the service in the same file. So to do that, echo, right, we have a configuration to divide the file into two. Then we create the service, same way we created the deployment. Cube CTO, I'll drop copy the command, change the name of the service, Cube CTO Africa demo. Then we can check the deployment file. The service was created with target port 8080, and the deployment was created with the image of, the image, the docker image in our local registry. So now we can apply this deployment and to do that Cube CTO, then we created, we check the deployment was created successfully, Cube CTO, CTO, get call. So yeah, it's currently running. So check with the application, the application is currently running, it's currently running. Now you can get to see the port, Cube CTO, and see the port, it's currently running. So we don't have to test and see this application, we don't have to connect to the application, I've done the spin book application which has deployed. We have to expose, as we expose the port 8080 with the service, we cannot access it externally on, let's say if we go to browser and then port 8080, you'll be able to access the application. In order to access the application, we have to create an SSH tunnel. So create an SSH tunnel using port forward. So to do that Cube CTO, Cube CTO, port forward, SSH service, then name of our service, case is the Africa demo, then the port services currently listening to, and the port wants to listen to on our local machine. Then you will open the browser, we're able to see the application has been successfully deployed on Kubernetes and Minitube. Next, we'll deploy the application to push the image that we created to Amazon elastic container registry, which we'll now use to deploy the application on Amazon EKS. Before you can push your container image to Amazon ECR, you need to make sure that you have AWS CLI installed on your terminal. So if you run, you write the command AWS CLI, you don't get any response in that it is, then you have to like install AWS CLI. So we're not going to install in this session because I already have it installed, or you can just Google and you'll be able to get the information to install for a particular machine. So after that, I don't know if you recall, I made mention of how creating an IAM user for this particular session with admin access. So instead of using the root user of your AWS account, so you should have also done that. Then next need to authenticate and configure your CLI. So when you have to configure your CLI, you will do AWS configure, configure your CLI to the particular local the IAM account, user account. So AWS configure and you'll be prompted with some outputs to fill in your access key for that particular account and the secret access key, access key idea, secret access key. So I've already done that. We have to test that your configuration actually works. For me, I will just read AWS configure on the list. So I can see that I've already configured the access key, the secret key and religion. US is one. So after that, in order to push to Amazon ECR, I need to first of all create a repository. So just like the registry you created, right? When you're deploying to Minikube, just like Docker Hub, when you're deploying to Docker Hub, you create a repository under your account. I need to create a repository on ECR. So create a repository out of this command. So I've copied and pasted the command. So to expand the command. So yes, this is the AWS CLI and ECR and create repository and the flag is repository name. So this I copy this command. So let me edit repository name. KCD Africa. KCD Africa got demo repository, demo repo. Then you remember when I talked about the relevant security, there are security features that AWS offers. That's some other contrarial issue you don't offer, like image tag immutability. So yeah, we're telling ECR to make the image tag immutable. So when we create the image under our repository and when we push the image to the repository, that particular version of the image, the tag if it's latest, it will be unchangeable. That's what image tag immutability is. If it's a test, whatever we name it as, we'll get to see that. And also image scanning configurations, scan and push. So this now tells ECR the scan, like I mentioned about the security features of ECR, the scan image for any security vulnerabilities. So click enter to create the repository. You should receive a JSON. Once you run the command, you should receive a JSON object like a response of the repository ID name, the repository URI, and it is created. So in order to check that this repository was actually created, we can just go to your AWS accounts. ECR accounts will be logged in. So I already have a demo repository, sorry, Refresh. Not that Refresh, I can see. KCD Africa demo repository has been created. The repository URI, then if you check in, the repository will see there's no image. So next, I'm going to push our image to this particular repository. Before you can push the image to this repository, that's what we need to log in to the repository. So we do that by, okay, first, I'll copy the repository URI, then we then get the compare token and pass it through the ECR API to log in. AWS ECR, get login password. So we get login password, so it gets create a new protocol, region, Docker login, can use username or this new username. AWS. So this command, standard password, standard input, this flag right here is what gets the value of the password that generated by the ECR API, the login password to the particular region where your repository is. Then we now add the repository URI that we copied. So yes, then you get the login succeeded. Then I successfully logged into the KCD demo repository. Africa, the KCD Africa demo repository. Then next, we need to tag this particular image, the image that we built. If you remember the image that we built, Docker images, KCD is Springboard demo image, Springboard image, we need to tag the image with the username, the image name and tag. So to do that, just like we tagged before pushing to the local registry. So we'll first of all, Docker tag, the repository name is source tag. Then you see how you arrive. So this image gets pushed and is given a tag of leftist, because we didn't specify it here. So it gets tagged with tag of latest. We'll see that. So after tagging, we'll talk about images, for the repository name, KCD Africa demo repository, then we'll tag latest. So now after tagging this repository next, we need to push the, after tagging the image, we need to push the Docker image to ECR. So we've already logged in to the repository, the repository ECR. Then to do that, our normal Docker push, then we'll use this, push the image, the repository name. So we can push it in the test tag. We can push using default state test tag, preparing the tickets sometime, depending on how fast your internet is. The mind is looking like it's pretty slow. So that really took some time, it's a good thing I'm recording this session. Now, so my image has been pushed, the demo repository, KCD Africa demo repository if you can check. Now see the image, I see all the details of the image. Next, you then walk with ECRs to deploy the application. So walk with Amazon ECRs, that is to deploy the image, we have currently have Amazon ECRs, so we can manage this course on ECRs, we'll move the Amazon ECR like through. So I got to have the ECR like through installed, so let me do that with the command ECRs CTO version, so I can see the version of ECRs. So in order for the version of ECRs I have, in order for you to install it, you can just Google and take it to the ECR documentation. So as we have got some ECRs now, now we have ECR CLI, we will now need to deploy create the cluster and then deploy create the deployment and the service on the cluster. So before that, when you've gotten the ECR CLI through on your machine, you can now get on to deploying the image on creating a Kubernetes cluster and deploying the image on Kubernetes cluster. So before that, let's just overview creating Kubernetes clusters on ECRs. So an Amazon ECRs cluster consists of two primary components, the control plane and work on those, the control plane. So the work on machine which are part of the Kubernetes cluster is also called work on nodes. So these work on nodes, like I said earlier, I remember the slides, you deploy the work on nodes yourself as ECR provisions in master nodes for you, ECR deployed the master nodes for you upon question of the cluster. So next, before we can do that, there are some other considerations that are let's say peculiar, somewhat peculiar to Amazon ECRs. So what you need to consider when using Amazon ECRs. So we have VP, VETA private cloud configuration, security and coop configuration. So a lot of time, you can configure an ECR cluster, need to specify subnets or VPC subnets, VETA private cloud subnets required for the cluster to be hostating. And now, right, you can create a private subnet, you can create a public subnet. In this particular session, you can create a private subnet and we create, we use a private subnet and yeah, this is to maintain high availability and we are required to put at least two abilities to those who see how to do that. Also, for security considerations, when the worker nodes are deployed, in order to configure, like ECRs, automatically configures communication between the worker nodes and the control plane and constructed in a way that communication are like for privileged ports, right? So in order to like, access our application via an external API that will be generated when we deploy the application and also other access, let's say you want to implement aggressive value balancing implement DNS and some other features, you will need to add an additional inbound rule or outbound rule depending on the specification you want to create. So for this particular session, we're just going to, when we work on security group, we're just going to create an inbound group where the particular ports for which we're listening to will be able to access our application on the web. So here are the guarantees. To create a cluster, so we'll create a YAML file. So we're going to use, like I said earlier, we'll use the VI editor from here on. So VI, okay, touch first, we create the YAML file, touch. EK, okay, cluster. So it's YAML. Then to edit cluster. So it's YAML. Okay. Then I've already written the cluster configuration for my cluster, it's my cluster subnet and to create the work hangout. So let me copy that and paste it here. Don't worry, I'll respond to this. So if you look from the beginning, you see the API version, the kind which is cluster configuration, the name, metadata, then the VPC, the virtual private cloud subnet. So I set it as private subnet. So these are subnets, peculiar to my, the IAM user I created here. IAM user I created and I've been using throughout in this session. And these node groups here, node groups here, Amazon EK has a feature called node groups, right? Manage node groups feature that will make the provision in a life cycle of life cycle management of nodes, which will be on meet that EK instances for each Amazon, each EKS connected cluster. So the node groups are being updated to, the nodes will be updated to the version of Kubernetes. So like, basically when we talked about, when I talked about EKS, handling the deployments and containers and some of that stuff you do normally, kind of like a self-managed Kubernetes cluster. So these node groups managing the nodes for you. So when I get here, we have what kind of nodes and they are of type three, the IES task type is type three. So before that, let's see how to get the subnet. How to get the subnet on your AWS account. So yeah, on your AWS account, you can just search VPC or you can search subnets. So you can see subnets, top feature subnets. Now you'll be able to see some subnet ID that submit ID of a particular AWS account. And you see the subnets ID have the availability zone. So I'm on EUSD square regions, is one A, one A, one B, just like you can see in the configuration. So yeah, then that's that for the subnet. So back to the node groups. So the node group of instant type T, three, small, and this is basically because, so I'm looking at the algorithms on documentation, right? And this particular instance is basically is an affordable option for run code repositories and test environment. So this is low cost, both stable CPU performance instance, right? That just for, okay, it's not something you use when you want to build an application that has, that will see, let's say, thousands or hundreds of thousands of like real-time users at a particular time. So this is just a small instance for this specific demo. So yeah, that's that. And you have the another node group build out for building the containers, images, and pulling and building images. So we can then save this to just be filled out. Let's drop that demo, okay, that's it. Yeah, then to create the cluster, we use the EKS ETL, so this is the EKS command line two, ETL, so create cluster, cluster ETL. So it's going to create some, using the environment, put it in the cluster. In the particular region. So this will take some time. So this will take some time to create and deploy the worker nodes. So I'll see you when it's done. That really took a while. So we can see that the cluster has been created in, the KCD Africa cluster is created in the new region and it's ready. And also on the AWS console, EKS can see that the cluster is ready.  Okay, the resource is here. The IDU Kubernetes resources and the nodes have been deployed. You can see them here. The nodes with the T3 instance, T3 small instance, then also, right? So if you remember at this step, so when working with, when it is there, they're working with EKS, connect EKS, right? So we'll skip that step because EKS, EKS, CLI2 has already done that for us. So you look through here, you see, saved cube config configuration as, so it has saved it in my cube configuration file. So, and all the resources have been created. So I don't mean now if I use kubectl and let's say run kubectl, kubectl get service as you see. Clicking it well. I would see the cluster IP, right? So this is the Kubernetes cluster, the service, the default service in the Kubernetes cluster and EKS. So next, we can also run kubectl get like a wider view of pod, kubectl will get pod for the same species, same species, oh, right. Okay, so we can see all the nodes. Keep system, all the different, all are connected, so our cluster is fine. Then next, we need to create the deployment as I just indicated. Step forward to create the deployment to deploy our unit. So as we did for the cluster, YAML file, I'll create a new file, EKS deployments, you know why I'm only making this, it's being a touch. So EKS, touch, EKS deployments.yaml. Okay, then open the file in VS editor, so deployments, okay. Then, so I already written down the configuration, YAML configuration, I'll just copy it and explain. So, yeah, of kind deployments, of kind deployments, the API version. So the name, KCD Africa, demo deployments, KCD Africa demo deployments, it creates two replica sets, right? Two replicas. So when we create these deployments, we apply these deployments, we create two pods, and the name, and the container, this name of the container, and you can see here, you have to place order for image URI. So we'll get the URI of this specific image we deployed on the specific image card we deployed on EKS. So if you have like, you've deployed new versions of the image, right? You can change the image stuff. So let's get the ECR image URIs here on this. So we have the, yeah, and the image, you can see here, copy image URI, so image URI has a copy, you come. So I'm using the VI editor here because it's, I've been using the VI editor mostly because of what you use as a default engineer, but you can use Nano, create an editor file, you can also use the text editor, depends on what you like. So this is URI, so this is our demo, the demo repository on the ECR, the demo repository we created, and this is the image type. So it detects the latest image, this particular image, and it will build the query deployments and this image. Then I can type the text, and we'll save this file. Okay, then we can make sure that we've saved EPS deployment, the demo, so you can see, and also I forgot to mention the port is listening to, the container port is listening, you remember when we created the container, we have stored port 8080, so we can listen to this on port 8080, so yeah, when the image is running, you say, I mean running in the container, so yeah, then let's apply this deployment, so we'll call CTO, CTO, apply, okay, deployment, deployments, deployment file, wait, okay, so the deployment will be on now, the deployment has been created successfully, and we can check with CTO, get deployments, deployments, yeah, the deployment has been created, two, you know I mentioned earlier, because the two ports have been created on the query running, then next we need to export our deployment to other members, all the members in the cross-card, you can load port service, so to create the service, you'll keep CTO, okay, we'll press credit file, click touch, you can do this, you can touch again, touch, equals, service, dot, yeah, no, yes, then we are able to edit CTO, oh, okay, service, okay, then like all the files we created already have the configuration, demo configuration, so all kinds of service, the name, the type, this value, you know, for service, for all the nodes committed, and you define the port, the node port, and for external traffic, so what opening is, the script port for external traffic, and the port is, three, one, four, seven, nine, so while we get to accessing the API, we are, we can see in the steps, the steps, as I said, the application via an external API base, we'll see how we go take security group in the configuration, we'll do the group, which are okay in the configuration, to then create an inbound route, in order to allow traffic, so, yeah, then, in this is the port of the service, because some members of this port, then target port, where the container is actually running, so, yeah, then we need to, we save this, okay, then it should be clear that it's also, within, within, maybe, okay, yeah, then we apply, 50QL, with, 50QL, apply, FCKS, FB, dot yamo, yeah, yeah, FB dot yamo, then, yeah, the service has been created, and let's loop, that's everything works fine, and let's get, why build the code, even 50QL, get boards, all right, so, the boards are running, then, get nodes, they're currently all nodes are ready, and, now, we can talk, we can, now we can access our application, where one of these IP addresses, these external IP addresses, so to do that, I'm not the IP address now, so to do that, we need to create a, a rule, an inbound rule, in the security group, let's create an inbound rule in the security group, so let's set security, security group, so yeah, we're looking for the security group that's specific, oh, we already have it here, so I've already created the security group, so you need to look for the security group that enables communication between control plane, and worker nodes, in group ng1, workers, so when you create that, when you find that particular security group, you go, and you create an inbound rule, so I've already created an inbound rule that is listening to the port 3.1, the node port 3.1479 for external traffic, so you just have to show how you create an inbound rule, yes, yeah, so it's the inbound rule, so there's no new security that we already created that, so now you can actually assess your application from anywhere, from any browser, with the IP address, so we've got that, the IP address, so you can access application-less copies IP address, and the port 3.1479, oh, add it as a Google search, but 3.1479, oh, sorry, error 3.15, 3.1479, yeah, there, hello, then to test the name endpoints, my name is DivineOdazier, so you followed me and worked through creating a screenboot application to create a screenboot application, deploying the application locally in one node cluster, mini-cube, also, we pushed the Dockerized image of the application to Amazon Elastic Container Registry, created the Kubernetes cluster on EKS, and deployed the application on the Kubernetes cluster, and finally, using the EKS feature, we were able to access the application with an external IP address, so, that's that, thank you for listening to this session and for following along, you can follow me on Twitter, this is my ads, Twitter, DivineOdazier, I underscore Odazier, and DivineOdazier is also my name on LinkedIn, I hope you enjoyed this session, and this is, all this was recorded, I don't know if you noticed, so I'll be live, in case you have any question, and I'll be live to answer all your questions, regarding this particular session. Thank you, and I hope now you know how to deploy your screenboot application in Amazon Managed Kubernetes Service. Yeah, do enjoy the rest of the KCD Africa 2022. That was a great demo from Divine, and if we're looking through the chat, Divine was right there to answer most of the questions, but that was a really informative one right there. Also, okay, let's wait for Divine to join the backstage, but I think he was in the backstage before he dropped off, so he could answer some more dark questions. Live. Okay, so let's, we still have some time within Divine's slot, so let's give him a few minutes while he joins. I think he's here. So let's put him on. Can you guys hear me? Yes, we can hear you clearly. Welcome. Sure. Yeah, no worries. Internet happens to everyone. It's like, if it doesn't happen, we have to do a special sacrifice to the gods for maintaining the internet. Demo gods, yeah. Okay, yeah, welcome. So should I, do I need to introduce myself? Yeah, if you can give us more introductions or any more context around the talk, you might not have, you might have remembered after, after you got to listen to your conversations with people in chat. Okay, so like, it's something I figured out, right? Or noticed, right? There were loads and loads. So regarding the M1 chipset, so initially when I built the Docker image, it was on the ARM64 architecture, when I pushed the image to ECRO, when after creating, applying the deployment, like I was stuck for like five hours trying to resolve because the image was not like building, it was not running. So like I noticed that, like I then remembered, wow, I'm using the M1 chipset and my nodes are based on AMD64. So I had to like set up a VM with Colima, which is a container runtime for Linux on macOS. And then after I did that, I had to then build the image on the VM to be on AMD64 before pushing it to ECRO and then. So like it was just, the M1 chip has just been like making my life a lot harder as doing DevOps stuff. So yeah, I think that's why I kind of covered it, but I had to like remove it in order to make the talk a little bit, to meet the time slots here. Awesome. Okay, I think we have a couple of questions here. Anita, I can't find them, can you? Yeah, isn't that the question Devine answered earlier? Oh, okay, yeah. I think there are some others. Okay, I found them. Yeah, Devine, can you explain more about the local repository you created? Okay, sorry, I was on mute. Okay, so the local repository I created is just like, it's not something you do in a production environment, right? It's just for testing purpose. So it's just, instead of like the demo, I had to focus on ECR, Amazon, instead of pushing to Docker Hub. So in order to just make things faster, I used the registry image. The registry image, the animated on Docker Hub, and I used the image to create a local repository for that particular session. So I need to push my Docker image into the repository in order to use it on Minikube. So yeah. Awesome. Okay, we have a question in the chat here. It says, why do you use, okay, did you not use? Okay, why did you not use Kubernetes? Okay, I think he asked the question and corrected it. Why did you not use Kubernetes? Yes. Kind of confused that I used Kubernetes, the critical Kubernetes cluster. So I don't know if I can see his question. Okay, it's in the YouTube chat. Emmanuel, if I didn't pronounce your name correctly, if you can ask again, I'll refresh the question. Okay, I think the other question we'll have is, what if I built this image on an ARM architecture we need to run on the EKS cluster? So depending on how you provision, you deploy your nodes, right? So I don't know, I kind of missed, talked about that a bit earlier when I joined the call. So you have to make sure that you have no drones on the same architecture as your image. If not, it won't be, it will deploy, right? But it won't run. You get like a crash loop backup status, which will lead to an error. It's to just keep restarting. It reports to keep restarting, restarting all the new crashes. Oh, okay. So you have to make sure your cluster is the same, your nodes are the same architecture with your images. Oh, okay, awesome. Yeah, I think that's all the questions we have. Audience, if you have any more questions, divine is here before he leaves. Okay, I think his accent, why did you use mini cube? Okay, so I use mini cube. So kind of like, I started from scratch, right? We didn't need application locally, this spring, but application. And I use mini cube just kind of to show and explain, like, okay, some people may be watching the, for the first time you're using Kubernetes. They don't have access to ECR, like to AWS. So like just like try it out and test out initially. That's why I used mini cube. Okay, well, Emanuel, I hope that answers your question. Although Emanuel says he understands you now because of Lima. Okay, yeah, I think he's talking about the ARM issue, the architecture issue. Great. So if you have any other questions for divine, you can still drop it in the chat while he's here. Okay, I think we don't have any more questions. Thank you very much, divine. And we look forward to seeing more of your contributions in the KCD ecosystem. Thank you. I look forward to contribute more. Okay, awesome. Bye.


The purpose of a defensive operation, really there's a number of reasons. One of them being to hold key terrain to allow time for us to consolidate our forces or to force the enemy to consolidate their forces and have to mass combat power against ours. The training we did today was mainly focused on our medium machine gunners getting out here. We created a course of fire for a modified Table 2 unknown distance shoot to allow an evaluation for team leaders as well as gunners. After that we went into an offensive scenario so machine gunners still engaging targets with maneuver element moving onto an objective forcing shifting and ceasing of fires for our machine gunners. Observing for a target, the human eyes train to look left or right but I train my Marines to look right to left when looking for targets to prosecute. Reason being is that's easier to pick up anomalies in the baseline so you can better see the targets and neutralize the targets in the most obedient way possible.


Hold Matt Breda after hearing the Jimmy G news your instinct may be to sell off San Francisco running backs And if you haven't heard Jimmy Garoppolo tour is ACL But I think that Matt Breda still might be worthwhile CJ Bedford if you don't know he's the new starter in San Francisco now that Jimmy G is out and last season Bedford ended up targeting running backs on 36.4 percent of his throws while CJ Bedford was under center Carlos Hyde it was a team starting running back last year saw 50 targets of his 88 season-long targets Carlos Hyde averaged 8.3 targets per game with CJ Bedford and 3.8 without him so with Matt Breda and Kyle use check to for being honest with Matt Breda playing as the primary pass catching back in That team's offense. I still think he holds plenty of PPR value even without Jimmy G


The name of this game is Let's Roll. As you play this game you will learn how to do multi-digit subtraction, addition, and to understand the role of place value in multi-digit numbers. To play you will need four dice per person and an additional four more, paper, and a pencil. The youngest player starts round one by rolling all four dice and placing them in any order, forming a four-digit number. This number is called the Ideal Number. With the Ideal Number is made, each player will roll their dice and create a four-digit number that is as close to the Ideal Number as possible. You will then find the difference between the Ideal Number and your number. The player to the left of the youngest player will roll the next Ideal Number to begin the next round. The game continues until each player has had a chance to roll the Ideal Number. Once every player has rolled an Ideal Number for a round, each player adds the differences from all of the rounds. The player with the lowest sum is the winner. The player with the largest sum wins second place.


I remind members of the Covid-related measures that are in place and that face coverings should be worn when moving around the chamber and across the Holyrood campus. The first item of business is general questions and at question number one I call Rachel Hamilton. To ask the Scottish Government what action it is taking to support the red meat industry. Cabinet Secretary, Mary Gougeon. The Scottish Government has a strong track record of supporting Scotland's red meat industry, a wee campaign for years for repatriation of the red meat levy, which was eventually implemented through a UK act, and this will generate around £1.5 million annually to promote our red meat sector. We recently supported QMS's Scotch lamb campaign around St Andrew's day, and in response to on-going issues in our pig sector, we have provided a hardship support scheme and also recently opened a private storage aid scheme to take pressure off the industry. And finally, unlike other parts of the UK, we continue to provide additional support for suckler beef and sheep producers with payments due to start under the latter scheme in April and May next year. Rachel Hamilton. I thank the cabinet secretary for that answer. Presiding officer, we are now down to 26 red meat abattoirs in Scotland and shockingly only 15 female butchers. Cabinet secretary, what do you say to the Red Breed survival trust, who say that your Government has failed to address the local abattoir crisis in Scotland? Cabinet secretary. I absolutely understand the importance of local slaughter provision in the red meat sector, and we do have relatively good coverage. However, we absolutely recognise that there might be occasions where local slaughter needs aren't immediately met, and there are obviously several reasons why that might be the case, whether that is throughput or costs, because that appropriate throughput is vital for abattoirs to ensure that plants do have a viable future. Unfortunately, that is not the case with low local demand, which can sometimes make the long-term viability an on-going issue. The Scottish Government in Food Standards Scotland would be happy to discuss with any organisation who are considering operating in abattoir in Scotland. To ask the Scottish Government what its response is to the achievement of curriculum for excellence level statistics. I refer Michael Marra to my statement on Tuesday 14 December, the accompanying national improvement framework plan also published earlier this week, and the Government's actions on education recovery published in October. I thank the minister for that answer. This is a defining moment for Scottish education. Those statistics show the lowest attainment on record under curriculum for excellence and an increase in what was already a staggering attainment gap. In response, the minister has cut attainment challenge funding to this year to the levels of 2017 and plans to return teacher numbers to what they were when the SNP took office in 2007. There is nothing in those plans to respond now to this urgent situation. Can we really have confidence that a failing pre-pandemic plan can protect the life chances of a pandemic generation? I would point Mr Manor to the fact that before the pandemic, the year-on-year trend and the ASL data was positive. We are already taking action to ensure that we are supporting children and young people during this difficult time. For example, through the increase in the Scottish attainment challenge funding from £750 million in the last Parliament to £1 billion in that, the statistics that came out on Tuesday also pointed to an additional 2,000 teachers since 2019 and, of course, a low pupil-to-teacher ratio. That is a determination that we are continuing to carry on with, and that is exactly why we have our manifest agreement for 3,500 additional teachers and 500 support staff. As I said to Mr Manor, we are already on track to deliver that. Are schools went into this pandemic underprepared after the SNP cut teacher numbers to the bone? Does the new teacher numbers announced amount to a recognition that the SNP just got this wrong? What we have made absolutely clear in our work as we move towards recovery, and indeed still as we deal with the pandemic, is to ensure that we are supporting our schools and local authorities to be able to support children and young people through additional teachers. That will of course ensure that we continue to assist children and young people at this very difficult time. We will, of course, ensure that we assist those children and young people in the longer term, as with the baselining of the money for the additional teachers. We will see a greater opportunity for permanent contracts and, rightly so, for our teaching workforce. What lessons can be learned from across the UK and around the world about the impact of the pandemic on our education system? The cocapsure raises a very important point. The challenges that we are facing that were shown in the ESL statistics are not unique to Scotland. Indeed, recent reports from Offstead and the World Bank and others show that there will be an impact on many of, indeed, not most children. That is exactly why we are taking the action that we did, as I mentioned, in teacher numbers and in attainment challenge funding increasing. To ask the Scottish Government what recent discussions it has had regarding the Hunterson Park development. I refer the member to questions. SW604431 and SW604432 from Jamie Greene MSP, where I sit out that Scottish Enterprise, continue to engage with pool ports and North Ayrshire Council under a memorandum of understanding to secure delivery of regional and national investment objectives at Hunterson. There have been no visits by senior Scottish Government representatives to the site since 1 January 2021. Of a Scottish Government, planning officials did attend an online meeting with pool port representatives about the Hunterson Park development in November 2020. As the minister will know, the site, now owned by Peele, was designated for industrial reuse many decades ago, but it is a beauty spot, an area of environmental importance with many biodiversity issues, a site of special scientific importance and very close to communities. Hunterson B has stopped generation and North Ayrshire Council have set up a task force, but its ambition was always that the Scottish Government should be involved with a ministerial task force to look at development of the site. Would the minister be willing to look at a ministerial task force that would also involve North Ayrshire Council, the trade unions, the landowner, employers and community representatives, in particular community councils, with a view to ensuring job creation and delivering on our environmental commitments? The member is correct to identify the importance of biodiversity and the set of special scientific interests. Of course, each planning application for the site is considered on its merits in biodiversity matters. Would we consider this part of that process? With regard to the substance of our question, I would be very happy to meet with the stakeholders she identified as the best way to move forward with the site. Given that, as I have said, the Scottish Enterprise is working with people plots on a memorandum of understanding and work is progressing in that regard, but with regard to wider stakeholder engagement, I would be, as I said, very happy to have appropriate meetings and to determine the best way to ensure ministerial engagement going forward. Does the minister agree that Hunterston Port and Resource Centre, in my constituency, is vital to the economic regeneration and green transition of North Ayrshire? Will the Scottish Government and its agencies redouble the efforts and pursuit of potential investors who bring skilled and well-remuniated employment to the area? Recognising strategic importance, Hunterston is a proposed national development in the draft national planning framework for which it has been laid in Parliament and is currently being consulted on. Hunterston has also been selected as one of the projects in the Ayrshire growth deal, the drive to sustainable inclusive growth. As I said, the Scottish Enterprise continued to be closely engaged with people plots on North Ayrshire Council under collaborating, under a memorandum of understanding, to advance and secure the delivery of national and regional investment objectives in the Scottish Government's inward investment strategy and the Ayrshire economic strategy. As I said, my answer to Katie Clark is that I am very happy to engage with other stakeholders to ensure that the work that is being done moves forward as quickly and effectively as possible. To ask the Scottish Government what measures it has taken to support town centres. We have been working with partners, including local government and Scotland's Township, to build on the success of the town centre first principle and the 2013 town centre action plan, supported by the Regeneration Capital Grant fund, the £50 million town centre fund and business improvement districts. In 2020, we commissioned an independent review of the town centre action plan to build on the strong platform and in light of the climate, emergency and the pandemic. We are working with COSLA to respond to the recommendations in the review report, a new future for Scotland's town centres. Since 2020, we have provided more than £6 million additional support to town and community partnerships and business improvement districts. Earlier this year, we launched the £10 million Scotland loves local programme to support local businesses and town centres. All of that is underpinned by our £325 million place-based investment programme over this Parliament, which builds on the town centre action plan and Regeneration Capital Grant fund to accelerate our ambitions for place, 20-minute neighbourhoods and town centre revitalisation. Before I go back to Ms Graham, I appreciate the desire to provide comprehensive responses, but I would prefer more succinct questions and answers. I am going to say that that was a very comprehensive answer, but I want to move from funding, which is welcome. I will give two examples in my constituency of Midlothian, South Tweeddale and Lauderdale of gallous hills and pericook town centres where there are far too many large empty retail stores that have been empty for years, but it is difficult to trace the owners. Can I ask if the current compulsory purchase legislation is sufficient to permit a local authority to take ownership and redevelop possibly for a mix of housing in the town centre and smaller commercial outlets, because it does not seem to be happening? I thank Christine Grahame for her further question. I will be as brief as I possibly can just to set the matter out. Acquiring authorities are expected to carry out further land referencing in order to ascertain the ownership of land that they intend to include within a compulsory purchase order. However, the inability to trace all owners is not necessarily a barrier to the use of compulsory powers, and current Scottish Government guidance covers that situation. However, we have committed to a review of compulsory purchase legislation in Scotland, which will provide an opportunity to consider whether the current procedures are fit for purpose. Siobhan Brown. That is along the same vein as Christine Grahame. To ask the Scottish Government what further action could be taken to help to improve the appearance of our town centres, with many shops lying empty and deteriorating, along with derelict land and buildings. I thank Siobhan Brown for her question and congratulate her appointment as convener of the towns and town centre cross-party group. It is vital that we repurpose and reimagine our town centres going forward for ordering their offer and ensuring diversity so that they are not over-reliant on one sector. That is supported by the independent review of the Town Centre Action Plan, which published its report in February and advocated long-term sustainable actions built upon local partnerships. We are considering the report's recommendations with our partners and a working collaborative to take forward our response. I would be happy to meet with the member and the cross-party group to discuss the outcome of that process in due course. To ask the Scottish Government what support and advice it plans to provide to enable the establishment of community heat and power networks to deliver net zero targets. As set out in the heat and buildings strategy, we will invest £400 million over this Parliament to support the development of heat networks and low-carbon heat infrastructure at scale in Scotland. We will also launch a heat network pre-capital support unit in 2022, which will help to nurture opportunities for new networks and to expand existing ones. In addition, the Scottish Government's community renewable energy scheme cares that utilises the local energy Scotland network of regionally-based development officers to provide advice and financial support to local communities who are looking to de-carbonise their energy consumption. Will the minister confirm that local authorities and community groups need advanced finance to establish those community and heat networks so that they can access expertise, risk assessment and feedback from what works with previous projects, so that the Scottish Government directly funds development work to enable those local authorities and community co-ops to get going on the new projects that we need across Scotland to deliver the low-carbon heat and power that we need and for the profits to be reinvested locally? The Scottish Government, across the whole heat and building strategy, is very clear that a huge scale of investment is needed, and that is why we will be creating a green heat finance task force to look at the wide range of options for increasing that investment. We are committed to supporting local communities as well as local government that want to maximise the deployment of heat networks, and we will work collaboratively with local government and across the political spectrum to ensure that that happens. To ask the Scottish Government whether it will provide an update on the proposed works at Sheriffhall roundabout as part of its £300 million commitment to the Edinburgh and South East Scotland city region deal. As I advised the chamber on the 27th of October, we remain committed to delivering the great separation of Sheriffhall roundabout. Following publication of draft orders, a significant number of objections were received, which Transport Scotland is currently trying to resolve. However, a public local inquiry may be required if objections cannot be resolved. This area in my constituency is used heavily by my constituents and those in the surrounding areas every day and often a bottleneck situation due to the volume of traffic develops, which is frustrating to road users. What specific action the Scottish Government can take to address the delays to beginning the works at the Sheriffhall roundabout and can it provide any reassurance to my constituents that that is in hand? Let me reassure the member that Transport Scotland is very much focused on trying to resolve the significant number of objection responses received following the publication of draft orders for the scheme, with, for example, replies that have now been issued to nearly all of the objectors. However, as I said, given the number of objections received, there may need to be a public local inquiry to consider objections. That would disappoint and frustrate me almost as much as it would the member, but I am sure that Mr Beattie would recognise that having set in place the opportunity for communities and stakeholders to have a say and involvement in key decisions on infrastructure like that, it is incumbent on all of us to respect that process and engage with it to the best of our abilities. To ask the Scottish Government whether it will publish a timeframe for the implementation of the dog control database. I am going to move on to question 9 in the meantime, and can I call Richard Leonard? Bear with me, colleagues. To ask the Scottish Government what its position is on the Scottish National Investment Bank's investment portfolio. Cabinet Secretary, Kate Forbes. Well, the Scottish National Investment Bank is building its portfolio and asking making commercial investments in line with its missions, which of course relate to net zero place and innovation. Since its launch last year, the bank has committed to £137 million of investment and it is on track to provide £200 million to Scottish businesses this financial year. It is growing that investment pipeline in order that it can apply at least another £200 million next year, which is a huge achievement for a new body that only began operations just over 12 months ago. I know that the minister always says that these investment decisions are matters for the board, and I am all in favour of planting more trees. Does the Government not have a view on the fact that the biggest investment by far, more than a third of the money allocated by the public bank, has been handed out to a private fund manager, Gresham House, which specialises in tax avoidance schemes for wealthy millionaires to plant trees, rather than to invest in the jobs and the industries that our people and our communities need? The member is right in reminding the chamber that the investment decisions are operational matters for the bank, and those decisions are taken independently of ministers. Of course, although Opposition will call on those decisions to remain independent, it is slightly strange when members ask questions of ministers that they do not agree with. The bank has been set up very specifically to invest commercially and to generate investment returns. It needs to invest alongside the private sector in order to deliver its purpose and have the impact that is required of it. The majority of the bank's investments so far have net zero as a primary mission, and the bank's board determines how it invests. Investment independence is part of the important arrangements between the bank and the Scottish Government. The last comment that I would make is that the bank's ethical investment policy and the fair work direction issued to the bank in August informs the bank's approach and underpins the covenants that it puts in place when it makes an investment. The bank only invests in businesses or projects that meet its ethical standards or are willing to commit to adopting them. We are unable to make contact with the minister at the moment, but I am sure that our response will be provided.


good morning. It is the final 48 hours of my challenge to write a book in two weeks. In fact, it's more like the final 39 hours because it's going until I go to bed tomorrow night. 6.30 a.m. I have 14,000 words to write or 13,942 words to write to be precise in two days. Let's get to it. Okay, we're two hours in. I've had two cups of tea, two hot chocolates, and we're at 3,303 words, which is excellent after the last couple of days. That brings my average words per minute to about 27 words. I'm feeling more optimistic about the word count goal now. So this means I've got, I'm almost halfway to my goal for today. So I've got another 3,700 words to hit 7,000 words for today, which given that it's not even nine o'clock yet, I feel like it's doable. The main question is, can I keep up this pace? And if I can keep up this pace, could I potentially do more than my 14,000 words that maybe even finish this book? Now, the reason I've been moving so quickly is because I was in sort of a training slash fight scene, and I do find action scenes much easier to write. I also have my battle music playlist going on in the background, which is mostly Final Fantasy music. So that really helps push me along. The danger is that I get so stuck in these fight scenes that I spend my entire word count on those, and I don't actually move forward with the story. So I do want to finish the current sequence. I think I've probably got another one to 2,000 words to go, and then hopefully I can spend the rest of today's words on progressing the story a little bit more. So now I'm going to take a shower break and then back to writing. I've been writing for another 45 minutes, and I've got about another 1,200 words, so we're sitting at 4,500 words of the day. Because it was 45 minutes, my pace is still quite good. I think it's around 26 words a minute, but I'm also at the point where it's like, feel like this is about to slow down, because I basically got to the end of the previous sequence, and now I've got a conversation that I wrote earlier which, I don't know, I can flesh it out. See, this is the problem with skipping ahead to write things later in the book, because you get there, and you're like, maybe I don't need that much. So now I'm actually quite hungry, so I'm going to get some breakfast, and then I'll look at this next scene that I've already written and see if it needs to be fleshed out, or if I'm removing it. After that, the big challenge is that I finished this scene that I was inspired to do, so I've got to figure out the next one. This brings me into the same territory where I was yesterday, where it's more work in the lab, and I'm not sure what they're working on, or how things are going to work. So I have a feeling things might slow down from here, but it's quarter past 10, I've still got a lot of time left in the day. I'm feeling fairly optimistic about hitting today's target. I was feeling better after the first session where it's like, oh, 3,300 words. Maybe I could do the whole 14,000 words today. Now things are slowing down, like maybe I can't do the whole 14,000 words today, but I think there's hope to get the 14,000 words done this weekend. So going to be taking a slightly longer break than expected, because I had a package scheduled to be sent with Sendal on Thursday. Didn't collect on Thursday, so rescheduled to Friday. Didn't collect it on Friday. Now it's going to happen on Monday, and I have no assurance that it'll actually get picked up, so I've just cancelled it. Now I'm heading to the post office. Given that my pace was slowing down, it's probably good to have a little bit of a longer break, and then when I get back, I can just get right back into it. And here we come to the real reason for making a D2R, which is to pick up some chocolate. The package has been sent. Motivation chocolate has been acquired, and I'm back and ready to start writing. And if you noticed it got darker in here, it's because it's going to be a hot day today, so we've got the shade lines down outside. Now I'm heading into this next session with a lot of trepidation, because I did finish the last scene. I'm not sure what to do next, and I'm not sure how many words I'll get out of what's next. And what's annoying is that if I hadn't missed Thursday and Friday, I would already be done for the day. Like four and a half thousand words was more than I needed to get done in a day. But now, because I lost those days, I'm making up for lost time. So I just don't know how many words I have left in me for today, but it's only one way to find out. It's been another hour and 15 minutes, another 1200 words. I'm definitely starting to feel the fatigue, and you can see that in my word counts, because that session ended up being just under 17 words a minute. So, you know, I started at 27 words a minute. Now it's dropped by 10 words a minute. On one hand, like, I'm going well, I'm on track, because that session at the beginning of the day went so well. But on the other, I'm just worried about running out of stuff to write, because this part of the book is just not planned that well. So I'm at 5,000, about 5,700 words for the day. So I think, yes, I can hit the 7,000 words. It's only 1,300 words to go. But I'm feeling a bit tired. So I'm going to take a break now and try to focus more on doing some outlining, both for what I need to write today as well as what I need to write tomorrow. Because, yeah, tomorrow, I mean, I could get to the final battle scene, which would be great. But if I don't, then I don't think like there's any way I could get to my word count target. It is 3.55 and someone has just hit her writing goal for the day, so I'm sitting at 7,061 words. I ended up having a two hour break where I did nothing book related, like I watched a movie on Netflix and had another hot chocolate because hot chocolate is life. I had some other real chocolate I bought earlier because chocolate is also life. And yeah, 3.10, I got back and I was in one of the lab scenes that I mentioned I was having trouble with and I thought, okay, I'm just going to write and see what happens. And we went to the cafeteria and met like a new cast of characters. Yeah, 1,282 words, which is up at 28 words a minute. So that's actually the most efficient writing time I've had today. So that brings my total for the day up to 7,061 words, which means I've got a little bit less than 7,000 words to do tomorrow in order to hit my goal. So this is my challenge tracker. The gray line is what I'm meant to be doing. It's how it would have looked if I did an equal number of words every day. The yellow line is how I've actually tracked. And across the bottom here, the blue lines are the average amount of words per day, which was 3,750. And the orange ones are what I actually did. So what you can see here is we've got a horizontal bit around here. This was on the 30th of December when I did nothing. So lost a bit of progress and then caught up. And then we've got the last couple of days where I had one with no progress and one with very little. It was 849 words. So now I'm going to add my 7,061 and look. So that is looking much healthier. Now, because it's so early in the day, I could keep working. It's 4pm. I usually go to bed around 9 on 9.30 because I'm a toddler. So I have up to five more hours when I could write more content. And I am going to keep working on the book now. But the best thing about having hit the word count target is it takes the pressure off the rest of the day. So it means I can work on outlining. Like I said, I was going to earlier. I can work on outlining without worrying that it's taking up my writing time because I've done what I wanted to do today. So my plans for the rest of the day are I want to map out the rest of this sequence of scenes. Basically, the progression I want is we get into a situation where it looks like the character has gotten everything she wanted. She's living her dream. Everything's awesome. And then there's a turn when she discovers the antagonist dastardly plan. And that then sets in motion all the pieces for the epic final battle of the book. There are two challenges. One is the lab stuff that I've mentioned. The other one is that I don't know what the antagonist dastardly plan is yet. Like I know it's going to be something big and bad. It needs to be something bigger and better than anything he's done earlier in the book or in book one because yeah, it's the ultimate climax. So I'm having trouble thinking of what it might be. I think that's going to be my focus this afternoon. And if I can crack that, and if I crack it soon, like in the next two hours, then I already have like the moment of discovery. So oh my god, you're bad. And what happens after I just don't know what the oh my god, your bad moment actually is. So if I figure out what it's going to be, then I might actually write that bit today. And if I do that, that means tomorrow I can probably do a bit of the final battle scene. And if I get into the final battle scene tomorrow, then I think I can hit the word count because battle scenes tend to move very quickly for me. So fingers crossed. It is the final day of my challenge. I did do some extra writing yesterday, so I ended up with about 8,400 words. So that means today I've got about, I've got five and a half thousand and some change left to do. So that feels much more doable than yesterday from a word count perspective. The challenge is I still am not completely sure of what the villain's dastardly plan is. And this is like where I'm up to is I either need to write the reveal or I need to jump ahead to the final battle scene.  I do have some ideas. I just need to think of a way to make it work with what he already did in the first book. And then for the final battle scene, I need to choreograph it because it's in like an underground facility. There are a lot of people on both sides. Not everyone's an active fighter, but there are a lot of bodies to just coordinate and get out of the way. Yeah, there's no fast route into these five and a half thousand words. And I do wish, I do wish today wasn't the last day, I do wish I had more time to think about it. But it doesn't matter what I wish because today's the last day and we're writing five and a half thousand words. It's been an hour and a half. I've got 2,300 words or so. So that means I've got about 3,300 left to go. I mean, it's going well. I'm getting the words out. I think I can get the words out, but I'm having one of those frustrating experiences where more words are ending up on the page, but I'm not getting further through the story. Like I thought I was about to go into the reveal and then I'm like, no, let's link together some of the different things I've written. So I'm like earlier in the book than I was yesterday, even though words are getting added. So yeah, I don't know how far I'm going to get. My goal is still like obviously I'm not going to finish the book, not in the next 3,000 or so words, but also not today. I do need more time. But my goal is to get to the final battle scene because I feel like once you're on the threshold before the final battle, the book is basically done. Like yes, there's choreography, there's a big show stopping scene and everything, but the reason that scene is powerful is because of all of the seeds you've planted before that and everything you've set up before then, which you know, all either comes to fruition or comes crashing down in that final battle. So I feel like when I get to that point, yes, there'll be another 10,000 words or so to write, but the book will mostly be done. I would be comfortable putting it down, which I have to because I've got to go through powerless one again before copy edits. So I would be comfortable putting it down at that point and be happy returning to it like in a few weeks or a few months depending on how things play out. So 3,000 words to go. Let's see if I can come up with the dastardly plan, but let's see if I can reveal the dastardly plan, have the confrontation there and then have the trigger for the final epic battle. This is a final stretch check-in that I have hit 4,186 words for the day, which means I'm down to 1,376 words to go. I am at 58,624 words for this challenge. So yes, we are going to hit the 60,000 words. No, we are not going to finish the book, but we are going to hit the word count. So yeah, I'm going to do this last 1,300 words and then I will check in and see how much mental energy I have for the rest of the day before this challenge officially closes. Guess who hit 60,000 words? So precisely, 60,183 words. So I did that part of the challenge ahead of my target. I did not get through as much of the book as I expected. In fact, I did not move forward at all because I was, like I mentioned earlier, I was linking between different scenes and I got to the end of the one before like the downfall scene when we get the big bad discovery and I needed some linking to transition between the previous scene and the one I had planned. And so I started the transitioning and then that turned into a complete chapter in its own right. So my last, I don't remember how many words I had left when I last checked in, but the last 3,000 words ended up being this brand new chapter that was not planned that I think is quite good. It is going to stay in the book. But it means I hit my 60,000 words and I'm still not at the point where we discover the villain's dastardly plan. So it's only coming up to 1pm now. It means I do have a lot of the day left. So I'm going to keep going. So now I'm going to figure out the villain's dastardly plan so I can reveal it and maybe get another couple of thousand words in. We'll see how it goes. It is the 11th of January, so it's been a couple of days since the challenge ended and let's recap how I did. But first let's start with the goals I had at the beginning of the challenge. So there were three different goals. The first one was figuring out where the powerless would have a sequel. The second one was drafting said sequel. So doing a complete first draft in my two week slow period over the holidays. And the third goal was doing 60,000 words. So the idea was I already had 10,000 words in a document. If I did another 60, the combined 70,000 words should be a complete first draft. How did I do? Let's work backwards. So goal 3 was hit 60,000 words which I did. After the last clip I filmed I did do a little bit more writing. So the final word count at the end of the challenge was 60,813 words. Over the 16 day period that worked out to an average of 3,800 words a day or if I just count the 14 days where I actually wrote because I had two days where I wrote nothing. The average words per day was 4,343 words which I think is pretty good. If we step back up to the next goal, so finish the first draft, I did not successfully achieve that. In fact, even when I adjusted that in the days before the challenge finished and I had a new goal of getting up to the final battle scene, I also didn't get to that point. I was one scene short. I needed to have the confrontation between the protagonist and the antagonist where she discovers the plan he's been hiding and that then leads to the final battle kicking off and I probably could have gone there. I could have pushed for it but I still wasn't clear on what his plan was and I did have a rough idea but given that I wasn't 100% sure, it didn't really make sense to just write something to have something. I thought given that I had hit the 60,000 word goal it would make sense to just leave this for a couple of weeks and come back to it and do something that was a bit more coherent and intentional. So did not hit my goal of writing the full book. The final goal, the big one which was the reason for doing all this was is powerless going to have a sequel? What I wanted to happen was I would do a full first draft and it would still be a first draft. It would need work that I'd be in a similar position to where I was when I finished powerless where I would know that I had something that I thought I could turn into a good book. Where I am now is I don't have a full draft and what I do have I'm not that confident in. I think it does need a lot more work than powerless one did and I think one of the big reasons for that is because I was working in a compressed timeframe that means I didn't get the chance to go back and review what I'd written which in reflection is something I've discovered that I like to do when I do a first draft like a couple of times in the book I would go back and review the previous. Basically since the previous time I reviewed it so usually the previous 20-25% and polish a little bit which helps me get into the flow for the next chunk of the book and I didn't have the opportunity to do that with powerless too. I think that's actually a good thing in hindsight because if I'd done that I think I would have just gotten really frustrated. I think I would have really struggled to bring that sense of polish and generate that sense of momentum when I was jumping back and forth between different viewpoints and that would have stopped me from making progress so it almost ended up being a good thing that I didn't go back and do that work because I was forced to just keep writing blind almost. So I'm in the position where I have a first draft that is far rougher than I'd like it to be and it does need a lot of work to turn into the finished product but I do have more confidence that I can do a sequel now. Given what I have like what I ended up with at the end of the two week period I don't think the sequel will come out as early as I hoped. Like I was really hoping I could have powerless come out in June and the sequel come out in December before Christmas and I don't think that's realistic given the shape it's in but I do think I could get it like if I had 18 months maybe so if we take it to June 2024 I do think that would be enough time to get it into a good shape. I'm not sure what that shape will be. I do think the key moments of the book are going to still be the same but there are some big questions like is it going to be a single point of view book or a dual point of view book as I've currently written it and I'm not sure. So for that goal I do think it was achieved. Yes I've decided that powerless will have a sequel that means I don't need to go and make significant changes to powerless before I send it to copy edits next week. The caveat is just that the sequel might end up being quite different to what I've written. Aside from achieving two out of my three goals what are my thoughts on this experiment? Well I'm actually really glad I did it. I was a bit worried heading into it that I was courting burnout. I think I mentioned at the beginning of this video that the reason I haven't been around is because I got burnt out in 2022 and I'm still in the process of recovering from that. I can't push myself as much as I used to without really feeling it like if I get to the end of my energy that's something that could take weeks to recover from rather than a couple of days so I was really worried that pushing myself over these two weeks would lead to something like that where I was feeling the debt for the next month and was useless for the next month which is obviously not what I want to do because I want to keep writing and keep making progress. So I'm pleasantly surprised to say that I actually feel good. I feel better than when I did NaNoWriMo for the first time in 2019 because then I had a bit of a hangover at the end. I woke up on Monday and thought I could continue working on the book not as much as I had in the last couple of weeks because work is fully back now but I felt like I could continue making progress and that was really exciting. I also felt excited about continuing to work on this book so for this week I have a forced break because I do need to look at the first book before copy edits but from next week I'm planning to pick it up again. I would like to have this confrontation, do a first draft of the final battle scene, we'll just finish the first draft before I put it aside whereas at the beginning of the challenge I wasn't sure if I would just get to the end of this two weeks and put it aside to work on the next thing and revisit it later this year so energetically I feel good when it comes to enthusiasm for the project. I feel really good so from that perspective I think it was a good way to push myself. I also feel like it was a good way to get back into writing because I haven't been writing consistently for the last two years. I've been seizing many opportunities to write when I've had like long weekends or holidays but I found it very hard to balance my writing with my life when I was in my last job. Now obviously the last two weeks isn't a good example of how to balance my writing with my life because it wasn't my normal life, it was a slow period but I think having that little bit of an intense challenge to get back into it has helped pave the way to have more balance going forward and once I send powerless in for copy edits I'm really curious to see how I balance writing with work. Now I am very fortunate to be working four days a week now so I do have three full days that I could dedicate to writing a week but potentially I could also be doing some writing around my working hours and the best thing about this is that I feel like I have the foundation to do now. I feel like physically and energetically I have that foundation but also from like a writing momentum standpoint even though I didn't finish this draft and momentum was one of the things I struggled with like building momentum I do feel like as a writer getting used to the act of writing like I built that sort of momentum so all in all I think this was a really positive challenge.  I've successfully done nanorimos but that was about 54,000 words over 30 days. It wasn't 60,000 words in 16 so this was basically two nanorimos so it's just really cool to know that's possible and hopefully as I become a more proficient writer I'll be able to do better work in these sorts of challenges rather than just getting the words down but knowing they'll need to be revived heavily. So what are the next steps from here? Well as I've mentioned a number of times powerless is due at my copy editor next Monday so I do need to go through it one more time before sending it to the copy editor so that is the focus for this week. From next week I am going back to powerless too I do want to finish the first draft and after that I do have another project that I started writing in October and I had to put on hold and I'm looking forward to getting back into that so lots of exciting things ahead. I think 2023 is going to be a great year I'm very optimistic about the year ahead and I hope you are too. That is it for this challenge I hope you enjoyed the video if you did like, subscribe, comment do all of the things that keep the gods of YouTube happy and I'll see you next time. Bye!


Hi, my name is Caitlin Maxwell. I'm a digital and electronic collections librarian at Shoreline Community College Library. And this is a quick video on how to adapt a book from the press books directory so that you can edit it, tweak it later, or even just use it as is. So to get started, we're gonna start with the open Washington press books page and you can navigate there by going to the URL or typing in the URL open Washington or openwa.pressbooks.pub. So openwa.pressbooks.pub. And then from here, you can sign in with your shoreline.edu email. And if you have any questions about how to set up an account, I have another video on that that you can review. For today, we're gonna go ahead and use the Shoreline's administrative account. I'm gonna go ahead and log in. And then from here, you'll see that there's two options. You can create a book. So this is just from scratch or maybe you wanna copy in content from other openly licensed material. Or you can click on adapt a book which will give you the option to adapt a book directly from the press books directory. So that's what we're gonna do for this video. So I'm gonna click on adapt a book and then you should see a screen like this. So the first thing you'll see is it says source book URL or a new book URL.  The easiest thing to do is to scroll down to the search the press books directory and try a search there. So for example, I might try Spanish. Maybe I wanna see, or actually for today, let's go ahead and see what they have on open educational resources. Okay, so I'm gonna do a search on that. And then you'll see that there are some results that come up immediately below. So for example, there's something called creating and editing open educational resources. So this is something that I might wanna use for training, for shoreline, faculty and staff. So I'm gonna say select this book. And then what it does is it adds the source book URL and then you can actually edit the new book URL. So for example, if I want to have it be more specific to shoreline I might say shoreline CC, OER, edit, something like that. And then clone book. And then what it does is it just takes a couple of minutes to look up the source book and to clone it into your press books account. And while that's waiting, I just kind of chose a book based on the title but you should be able to also, once you search in the press books directory you should be able to click on the title and search through the content to make sure that it's something that you actually want. So while that's cloning, I'm gonna go ahead and search for open educational resources again, maybe it has to finish loading first. Okay, so I'm gonna go ahead and search for open educational resources again. So the same search. And now I actually wanna look through this book. So I've already cloned it. I already have it in my library but I wanna see what this book has. So I'm gonna click on the title and now you can actually see the content of the book. So I noticed that it has a non-commercial license. So that's something to take note of is to check the license for the book because that may influence the license that you can choose for that particular book. So for example, it says creative comments attribution non-commercial. So I could absolutely not use this for commercial purposes, okay? So that's one thing to keep in mind is the license. And then if I scroll down, I can see all the contents including chapters like getting started with OER. Maybe I wanna check on the chapters. I wanna see what the content is. There's a few videos in here that are adapted from other sites. And then it also has the copyright 2023. So that's another thing to keep in mind is the copyright date. Some of these might be a little older so it just depends on what you're looking for. But I think yeah, two things to keep in mind when you're kind of reviewing the book before you clone it is the license on the material as well as the publication date and also the content of course. So let's just say I want to look at, I wanna see the licensing information. So I'm gonna click on that chapter in particular. And then I see here that we've got licensing information. And this is something that I might wanna use for training. So this is great. I might actually use this for real. And just to show you what this looks like in my directory now that I've cloned the book already, I'm gonna go back to my portal and I'm gonna go to my dashboard and then I'm gonna click on my catalog so I can actually see this cloned book that I've just cloned in my catalog because I wanna see if I can edit it just in the catalog here. So I think this is it here. Let me just double check. Yes. So it says here creating and editing open educational resources by Beth South. And I'm gonna say visit admin and it's just taking a second to load here. And now I can get into the book info. So for example, if I want to write a new chapter, if I want to organize the chapters in a different way, let me go into book info. I'm gonna edit the book info. So for example, I might want to say creating and editing open educational resources at Shoreline CC or something like that. You may wanna change the title. If there's any subtitle, I may want to add my name as an author. In this case, I'll just add Shoreline CC as an author. Maybe I wanna add my colleague. Let's see, I don't know if I can add Justin in here. It might have to be by username. So I think you have to look up people by username. I can also add reviewers. So here are all the contributors. So I might add mine, the Shoreline account. As a contributor, I might wanna add Shoreline as the publisher city, publication date. I don't think I need an ISBN for this. So I'm not gonna worry about that. I wanna make sure I have English. You can change the cover image from here. Maybe you wanna browse. Maybe you create something different and you can attach that as the cover image. You can change the subject, the primary subject of the book. You can change the institution. So I'm gonna get rid of Indiana and I'm gonna type in my community college as the institution. You can change the copyright, the copyright year. In this case, this is all of the open licenses that you can select from. So since this title was already licensed as non-commercial, it doesn't say that I have to share a like. So share a like is when you have to use the same exact license that the original creator used. In this case, it doesn't say that. So I could technically change my license to just the basic open license, which is CCBY, which allows people to remix, to edit, as long as they give me credit. And that's it. They can use it for commercial purposes. They can do whatever they want with it. So I tend to go with the most open license, but it's up to you on whatever you're comfortable with. And you can also edit the licensing information. You can edit about the book. You can add a tagline. You can add a short description. Any additional catalog information. And then you can click on save. So that's just an example of how you can edit the kind of top level OER book information once you've adapted the book. And if you go back to organize, here is where you can actually see all the different chapters and sections. And from here, you can select a lot of different categories. You can say show in web. You can say show in exports or not. You can toggle those on and off. You can also add a chapter or add a part if you wanna divvy this up by part. And if you go to each chapter, you can actually go under the chapter title and you can click on edit. And this allows you to actually edit the content of that chapter. So if you wanted to tweak specific chapters, you can go to the chapter and you can click on edit. And now you can actually get into the nitty gritty of the content and edit it however you want. So this is just a basic introduction on how to clone a book and how to kind of quickly edit the book info, chapter info, things like that. But if you have any questions, please feel free to get in touch with me to get in touch with your librarian or with eLearning. And we can assist you in working in press books and adapting a book very quickly from press books. And this is kind of as time allows for you. So if you wanna clone a book just to start with, maybe you don't wanna use all of it. You can delete chapters. You can hide chapters from the public version. When we saw that earlier screen with the toggle on and off options, you can hide certain sections and you can also edit the specific chapter content. So those are a couple of things that you can do very quickly just using the press books directory. So you don't even have to start from scratch which is a wonderful thing about the press book subscription is that there's a huge directory you can choose from and hopefully you'll be able to find some kind of template that you can easily adapt and use and add your own content to your own flavor too. And then I'll have another video on how you can actually create a book completely from scratch. So that's another video that I'll have. Okay, thanks for watching.