All right, hello everyone. Thank you for attending the SIG auto-scaling feature and just general update talk. I know it's a little bit late on Thursday, but glad everyone's here. My name is Jonathan Ennis. I am a OSS maintainer of a auto-scaling project called Carpenter at AWS in a software engineer there. And this is Macek Pytel, and he's a software engineer for Google. So just walk through a little bit of an agenda that we're going to do today. We're going to give a little bit of an overview between cluster auto-scaler and Carpenter. And the point of that being, we're going to talk a little bit about some work that we want to do between cluster auto-scaler and Carpenter to gain more alignment across some of our features that we have that look quite similar to each other, as well as some API that would make probably migrating between the two forms of the auto-scaling much easier for anyone writing application specs. And then we're going to talk a little bit about project specific updates. So horizontal pod auto-scaler updates, Carpenter updates, and then cluster auto-scaler updates, finally. So just giving a little bit of a review between the two auto-scalers or the two node auto-scalers that exist within SIG auto-scaling today. Cluster auto-scaler and Carpenter, they solve very much the same problem but in kind of a similar way. There are some differences between the way they actually do the implementation under the hood. And they do have some difference in terms of the, I guess, the scope of what they manage. But they solve a similar problem, at least for auto-scaling and down-scaling. So they provide nodes so that all pods can schedule. So if you have a pod scale up and you have pending pods and the queue scheduler marks those pods has failed to schedule, because they don't schedule on your existing capacity. Both cluster auto-scaler and Carpenter will react to that. And they also remove unnecessary nodes to minimize your costs. So we both have features that we call different names. Cluster auto-scaler calls it a blue down-scaling. We call it consolidation, but both of our systems will remove unnecessary nodes if we think that we can minimize the cost of your cluster and we can tear down capacity and those pods could schedule elsewhere. And that basically covers the implementation piece there. There are some major differences. Cluster auto-scaler kind of works within the construct of cloud provider-based APIs. So all of your configuration for cluster auto-scaler will generally sit within the cloud provider, typically within node groups. So ASGs, MIGs, BMSS, the life cycle of those node groups is fully managed by the cloud provider. So if you have a new image that you wanna roll out to those node groups, cluster auto-scaler won't manage that for you. That's the responsibility of the cloud provider. If you need to, like Carpenter specifically as a feature for rolling nodes that they're past a certain age, cluster auto-scaler doesn't manage that side of things. It only handles the auto-scaling and down-scaling of the existing node groups that you have. And so all the configuration will sit in those node groups in the cloud provider and then it will just basically increment or decrement the number assigned to that node group across the cloud provider APIs. Whereas Carpenter picks a slightly different approach. It handles the entire node life cycle. Like I mentioned, we handle node upgrades effectively. So if you have a new image and you work around that you're trying to roll out, then the node will roll out with Carpenter through a feature we call Drift. And likewise, all the configuration for Carpenter sits inside of the Kubernetes cluster through custom resource definitions, custom resources that are based on custom resource definitions that Carpenter provides. So those are at least the configuration differences between the two. There is a slight difference as well in terms of implementation if you're looking at implementing a cloud provider between the two different types of things. So cluster auto-scaler effectively has pretty much all the information it needs to make decisions. So your node groups, I think traditionally you'll say, here's the instance type, here's the AZ that's assigned to a node group. And then cluster auto-scaler takes all that information as able to make the decision with all of that given to it. Carpenter's approach generally is here's all of my options. I'm gonna send those options to the cloud provider and then the cloud provider is gonna make the best decision based on those options that it has. And this is kind of particularly beneficial for spot scenarios where spot capacity is not necessarily publicly available and cloud providers generally have more knowledge about what capacity pools are useful to launch inside of. And so giving that information to the cloud provider that has that information helps with provisioning spot capacity that doesn't get reclaimed back immediately after you launch the node. And then we get into some smaller differences. So the first things are kind of ideological and maybe more philosophical in terms of the differences between the two things and they probably will never change. These are the smaller differences and this is kind of kind of dovetail into the conversation that Mojek is gonna lead in a second around how we can fix some of these things and how we can better align some of these things across the two projects. So very simply, we have different wording which sounds silly but when it comes to documentation I do think it is a little bit confusing and one thing that he's gonna talk about is we're kind of looking to align documentation around some of these conceptual things that are very similar across the two projects. And so just we call it like Carpenter calls it provisioning, ClusterRiderScaler calls it scale up, Carpenter calls it consolidation, ClusterRiderScaler calls it scale down. It sounds silly but those differences do make I think conceptual confusion when it comes to figuring out what means what across the different projects. There's also some things like pod annotations are different. That's annoying if you're trying to move applications from one project to the other. And there's some differences in choices around I guess what you call actuation when it comes to no drain implementation in particular. We have different taints between the two projects and all of this has kind of developed over time as a result of the two projects kind of developing in isolation and then likewise there's slightly different behavior with how the pods get evicted which is also confusing if you're coming between the two projects and likely the divergence will continue to increase if we don't start collaborating on a lot of these things earlier. So with that I'll let Mochek talk a little bit about how that's gonna look. Thanks, let's see. Okay, those work and so I'm going through those. So as Jonathan already told us, right, there shouldn't be that much difference between running workloads on cluster managed by cluster autoscale and carpenter or at least there shouldn't be that much effort needed to migrate them. Ideally you shouldn't have to change your pod spec at all and you shouldn't have to learn any new concepts like the naming thing we mentioned or any other really differences which don't come back to some major changes in behavior. And I think we're not there definitely, there are all the minor differences that Jonathan listed but I don't think we're actually that far from that point. The main API that triggers autoscaling is pods and really the main way of specifying requirements is to pods scheduling constraints and those are already standardized. So I think if we can fix the minor differences Jonathan described and if we can obviously avoid adding any new ones, we're actually going to be in a pretty good place, especially from the perspective of just moving your workloads between clusters. Now there are those more significant differences and they show up much more on the configuration style or on the configuration side, how you set up your cluster in the first place is quite different between cluster autoscaling and carpenter and I don't think we see a way to address it. So as Jonathan already mentioned, we started a unification effort where our goal is really on the pod level or workload level portability. However we're not trying at least not at this time to unify the way that autoscalers are set up or configured. In particular, we don't have any plan to adopt carpenter node pool API in cluster autoscaler or build any other API of that sort that will be shared between the two projects. And the plan we have right now to achieve our goals is basically start with really, it's just basically the least of the minor differences, right? And how we're going to address them. So the first step is to build shared documentation describing node autoscaling concepts and use this as an opportunity to unify the naming between cluster autoscaler and carpenter and also hopefully if we can put this as a concept at Kubernetes level between any other future implementations of autoscalers. The next step is to unify any pod level API. So mostly annotations, like the annotations, I think we had an example on a few slides back. We want to basically introduce some new shared replacements for those and deprecate the project specific ones, probably still keeping them for backward compatibility. And we want to go over annotations and similar APIs on pod or nodes that exist in one project and make sure or validate if it's something we want to add to other project as well or if it's something that actually makes more sense just in one of those projects. A necessary part of this going forward as also Jonathan mentioned is going to be a regular communication between the projects. We're already collaborating to an extent on things like DLA which I'm going to talk about in a second. But I think we need more of this and hopefully we'll be able to keep going and really increase our cooperation. And those really are the three short term goals. I would say all of those are in progress to some extent. None of this is done yet, but we have kind of some pull requests in flight, some general agreement on how to do those. And then we have some future ideas. So again, addressing more of the minor differences described like things like how the drain logic works, maybe something around how we handle these options, building some new shared APIs maybe. There is no specific plan right now, but that would be really nice if we can achieve this. And finally, and this is I think most future looking goal, would be evaluating if you can take this beyond auto scaling and start looking into some level of unification on the node management level. But this is more future looking. And this is all we had on the unification effort. One other shared effort I wanted to quickly mention is the array of dynamic resource allocation. This is something that has been already talked about in the KubeCon, so I'm not going in this KubeCon. So I'm not going to go into much detail, but the short summary is that DLA is a new API for requesting resources that can support more advanced use cases than existing resource requests. It was first introduced in Alpha and Kubernetes 126 and the original design made it very hard to integrate it with either cluster, autoscaler or carpenter. And so there is a new cap that is a collaboration between SIG nodes, SIG scheduling, SIG autoscaling. Hope I'm not missing anyone, but I very well maybe. And this new cap addresses those issues, it have been submitted to 130 and there is implementation work ongoing in Kubernetes 130. And our goal is to support DLA in cluster autoscaler 131. I think there is no specific timeline for carpenter, but there is interest, right? Yeah, there's definitely interest, a lot of momentum from this KubeCon. So it's definitely something we're evaluating. I think the extended resource problem has traditionally been a fun problem for us, so it would be a good way to say it. But there's increasingly more support for that kind of thing, obviously. So we're definitely looking at it really hard. Okay, do you want to take it now to HPA updates? Yeah, so now we're going to go into project updates. We'll quickly cover the HPA project updates, the carpenter project updates and the cluster autoscaler project updates. So on HPA, the container resource metric type is hitting GA in 130, which is super exciting. So previously, if you were configuring HPA and you were configuring metrics to watch on, to do scaleups, you previously had to deal with the fact that it was basically performing it on a summation of a pod resource request across all your containers, which is an ideal if you have containers with highly different utilization models for CPO memory. And so now you can do it on the container resource type, which allows you to basically scale up your pods based on the utilization of a single container rather than having to do it across the entire pod. So that was, or it is currently beta, and it was beta starting in 127 and it will hit GA in 130. So we're super excited about that. For the carpenter project updates, V1, beta one graduation, everyone loves this topic. So V1, beta one, we were really excited to announce V1, beta one, effectively last KubeCon, KubeCon and A. We introduced V1, beta one in November of 2023, and this was kind of the natural progression from our V1 alpha five APIs, which had been around for quite a while, and we'd gone through various iterations of the alpha APIs and had kind of repositioned our resource naming and just the general API to remove a lot of technical debt and to also align it with a lot of Kubernetes more upstream concepts, kind of dovetailing into the acceptance of us to Sigado scaling back in November as well. So we originally had resources that were called Provisioner, Machine, and Node Template. We kind of realigned these resources around Node Pool, Node Claim, and Node Class, and these took inspiration from deployment and also from storage concepts, deployment, because Node Pool's effectively, if you look at their actual manifest spec, they have a section called Template, and the reason they have a section called Template is because Node Pool's templatized something called Node Claims, and Node Claims are responsible for basically creating a request for a Node resource, which is then provisioned by whatever cloud provider you're running with Carpenter. And likewise, Node Class has allowed you to define a flavor of a Node Claim that you're wanting to launch, so Node Classes, you describe, and effectively today, it is the cloud provider-specific API, so Node Classes allow you to describe what's the image I want, which subnets I launch in, what's my security groups, these kinds of things that are more cloud provider-specific and some cloud providers are opinionated about them and others are not. We collapsed a lot of the disruption detail, so there was, I would say, a lot of technical debt around the disruption sections that we had in Provisioner and V1 off of 5. We introduced consolidation, I think it was quite a while ago now, but we had consolidation and this was mutually exclusive to a concept called emptiness, and you couldn't set both at the same time, and that was kind of annoying, and we generally thought that, conceptually, consolidation is emptiness, like consolidation already reasons about empty nodes, it reasons about underutilized nodes, it kind of is a superset of the existing, like emptiness behavior, and so we collapsed on consolidation into a single thing, and now we call it consolidation policy, and you can configure the aggressiveness of that consolidation policy and consolidation in general with this field called consolidated after. Consolidation policy also allows you to configure how aggressive you want to be, you can either say, consolidate my nodes when they're empty or consolidate my nodes when they're slightly underutilized or underutilized in general because when Carpenter sees your pods can reschedule elsewhere, it will scale you down, or launch replacements that are cheaper. And that all fell under this section called disruption, and it was kind of teeing up additional work around disruption controls, which we've done a lot of work over disruption controls in the last six months, and we're also planning on doing a lot more work on disruption controls as we head towards B1 stability. We removed webhooks, which was another big pain point for a lot of users, and replaced it with CEL, and we graduated our drift feature to beta, which means it's enabled by default starting in V033. So yeah, disruption got better with budgets. So in V034, we introduced this concept called disruption budgets, which are effectively no disruption budgets, similar to pod disruption budget concepts. You can tell Carpenter how aggressive you want disruption to be, and you can also effectively define maintenance windows on your disruption behavior, which was a heavily asked for thing. So if you just look at the spec here, this disruption budget, so disruption budgets effectively define like the most restrictive one is the one that's going to apply. So this budget here says, okay, you can't deprovision or you can't disrupt nodes during non-working hours. So there's a schedule component, there's a duration component. It says Monday through Friday from 5 p.m. to 8 a.m. don't disrupt my nodes. From Saturday to Sunday, never disrupt my nodes. And then otherwise, you can set a percentage or a numerical value on disruption budget. You don't need to have a duration or a schedule attached to it to say, either disrupt, so if I have over 50 nodes, don't disrupt more than five, because again, the most restrictive one applies. If I have under 50 nodes, then consider 10%, because that would obviously be more restrictive under 50. And it's calculating that based off the number of nodes the node pool manages. So that was a huge win. What this also allowed us to do was it allowed us because now disruption is user configurable. How aggressive it is, the parallelism attached to it is user configurable. It meant we could effectively be as aggressive as we wanted to be on the backend respecting user configured limits prior to the introduction of this feature. We were doing one replacement on expired nodes and one replacement on drifted nodes at a time. And that was causing a lot of pain for a lot of people who had like thousand node clusters and they wanted them all to roll and they're like, can you please do more than one at a time? So this allowed us to basically say, if user wants to do 10, they want to do 100%, you can go and do it. Don't do that in production though. That's not a good idea. So just this behavior is kind of interesting and we definitely need to do look a little bit more into why this behavior is what it is. Some of that has to do with our safety mechanisms around how we reschedule pods to make sure that the pods are still scheduleable after we use subsequent disruption operations. But effectively what we saw is, you look here, it's like we're doing one at a time. So effectively 1.5 per minute. And if you look now after, we basically made a wide open disruption budget we can do at maximally 20 a minute, which very fast, or at least quite a bit faster than it was before. And scheduling got quite a bit better over the last six months as well. We did a lot of work on our scheduling performance by CPU profiling it. And so if you look at 28, which we're on 35.2 as the latest version right now. So if you look at 28, we do scheduling benchmarking on the upstream repo. And so this benchmarking, I think now it goes up to 5,000, but at the time it only went to 3,500 and it made like diverse sets of pods and then scheduled them and saw how long that scheduling took. And at 3,500 pods, we were looking at about 30 seconds back on v0.28. That got cut way down to about one second on v0.35.2, which is the latest version.  And so now it's like 10 milliseconds at that, that scale for that kind of scheduling simulation. Now, not all those pods are like anti-infinity pods. There's ways that they could be, that could be more expensive and more complex. But we effectively cut our scheduling down like 300 times. So that's pretty good. And the last one, or I guess maybe the second to last one, we improved our cloud provider support. So AWS kind of shepherded on and built Carpenter. So AWS's cloud provider support and kind of it did from the beginning. Azure supported Carpenter starting at last QCon. They announced it, I think right during QCon. So Azure has support. We launched clock provider support, which is Kubernetes without kubelet. And that one's more of like a toy cloud provider, if you're interested in just messing with Carpenter without having to run any capacity. This exists within our repo. It's linked in the slides. Once you get the slides after this is done, you can mess around with Carpenter without having to pay for it, except for the capacity that Carpenter runs on. And then Cappy is also working on a Carpenter provider that would enable it to provision Cappy resources, which is kind of a cool concept. So that one's coming soon. That one doesn't exist right now. But there's been a bunch of work in the community and the working group that's happening around that as well. I'm gonna quickly run through this. Looking forward, what are we kind of looking at over the next six to eight months? V1 release is kind of our North Star right now. We're looking towards stability. And so we're doing a lot of work to figure out what's on our V1 roadmap and what does the V1 API look like. If you're interested in involved in the community, you'll be able to look out for RFCs that will describe what we think these things should look like and then obviously give feedback around that. A lot of this will include things like improved observability. We're gonna improve our kind of our entire metric story right now, where it's a little bit, I would say, sporadic across the repo and not holistically well-defined. We're gonna do a lot of work there to better define that. Improve our observability around status conditions and native Kubernetes objects and eventing and all that. There's gonna be a ton of effort that's put into that. We're talking about doing more realistic benchmarking with the clock clock provider that I mentioned. So we currently do the scheduling benchmarking simulations today, which are useful, but maybe not as accurate in the sense that they don't mock real nodes. So we can go a step further and do like why test scheduling simulations. We can also measure disruption performance through that as well, which we don't quite have benchmarking on that today. And then a lot more work on disruption controls. So we're talking about a bunch of different features. Not all of these may make it in, but these were mainly put up there, for example. I think a lot of these will most likely make it in in some form, but taint on disruption condition, this is one people want so that we stop scheduling or that CUBE schedule or stop scheduling pods to nodes that we're gonna take away soon. Cause that's caused different issues, different ways that you can control Carpenter's disruption mechanisms. A concept called disruption grace period, which means that if for whatever reason, like there's a PDB blocking my disruption and I like Carpenter hasn't been able to disrupt this node for way beyond when it was initially like considered for disruption, you can say actually force like proceed on, maybe not force kill it, but like proceed on and ignore my protections past a certain timeframe. Like you have a CBE, you need to patch it. That's kind of an example, like a day past your expiration period, please proceed on. Yeah, and then things like forceful non-graceful termination, which is more of our drain behavior and support for each or support for consolidate after with consolidation policy under utilize, which is supported right now and a lot of people want. So these are all things we're thinking about moving forward with that all handed off to my check to talk about CAS updates. Thanks. So coming to cluster auto-scaler, we've been focusing on performance recently and the performance in few different dimensions. So one simple update is that we've done a lot of work to optimize CPU and memory usage of auto-scaler. So between 127 and 129, we've seen more than 30% improvement in both in most clusters we've been testing and improvements actually are bigger in larger clusters. So in 5K node tests that we run, we've seen more than 2X improvement. This is split between 128 and 129, so probably best to measure between 127. Another thing we've done is we have enabled by default the parallel drain logic, which we first introduced in 126. This is essentially a complete re-implementation of the scaled-down logic that we had before. And it makes it both safer and more importantly or more significantly faster. Depending on the configuration and the parallelism level you set, it can be many, many times faster. Previously, we would only drain one node at a time. So with parallelism of 10, which I think is the default one, you get essentially 10 times faster scaled down. And you can play with the settings, see how far you can go in a specific environment. Improvements generally are especially visible in clusters where ports use long-graceful termination periods because those make for very long drain. And another effort which we are now working on, we're not quite done, but we've already made some progress, is optimizing scale-up by essentially reducing the amount of one controller synchronously waiting for another controller. Let me go into a bit more detail on this one. So, and this is honestly a bit of a simplification, but broadly speaking, if you create a deployment, let's say just one port deployment for simplicity for now, what's going to happen is that KubeControllerManager is going to create a port. This actually has a few steps, but let's just say it's creation of a port. Then scheduler is going to observe that port, mark it as unschedulable, and it's only this unschedulable port that triggers autoscaler, so only at this point does autoscaler notice it, and basically it goes on and requests more VMs. Those VMs obviously need time to boot up, and finally when the scheduler notices the nodes are there, it's able to schedule the port. Now what we've already done is we have managed to essentially cut out this one round trip to scheduler, so autoscaler can now react to ports before they are marked as unschedulable by the scheduler, and this already provides some benefit in latency, but our goal, hopefully in 131 we'll see about that, but our end state that we'd like to get to is essentially this model, so what we'd like to do is have autoscaler look directly at deployment job and similar controllers, look at replica account, look at port spec, essentially all the information we need is already there, we don't really need to wait for ports to be created, and so essentially the logic in autoscaler and node startup can potentially happen in parallel with port creation and any scheduler action. As I said, this one is still being implemented, the motivation for these changes is obviously latency, it's just going to be faster if you don't have to go through so many steps, and some of them can actually be significant in a large scale scenario, so we've seen port queue up in scheduler quite a bit. Another thing is it actually also improves the quality of autoscaling decisions, so if you create a thousand ports today, you're going to see essentially cluster autoscaler do multiple smaller scale ups sequentially, this is because as ports are created, autoscaler already triggers small scale ups, so for each of those scale ups, it only has a very partial vision of what's going on, and so it makes suboptimal decisions. If we are aware of all the ports that are coming, we can actually do the bin packing simulation with all of those ports and use that knowledge to select best shape of machine that we want to use. And one thing to mention is that the change in the skipping they're waiting for schedule is available in 129, but it is opt-in for now, so if you want to feel free to test it, maybe not in production they want, but it should be working. And now I have two very small changes that I wanted to quickly mention just because of, I think, potentially impacting some people, so one thing we've done is we're finally removing ignore taint. This is something I've talked actually in the past on KubeCon, it was a mechanism that caused a lot of confusion. Basically ignore taint was a way to, you could mark taint to be ignored by autoscaler in scale up logic, which would allow autoscaler to create new nodes as if the taint wasn't there, so in simulations it would know the pods will be able to schedule. And this really was designed only for the case of taints that are used for custom node initialization, like installing custom device plugins is the usual one. And it was used in many other cases, leading to very difficult to debug issues. So we split this logic into startup taint and status taint. Startup taint is what ignore taint was before. Status taint is I think what a lot of people wanted ignore taint to be, so it's just more general any taint that should not be taken into account in scale up logic. And final small announcement is we are changing the format of our status config map. It's technically a backward incompatible change since it used to be just human readable impossible to parse format, and now it's going to be AML. And we're also putting more information there, especially about back-offs which have been a challenge to debug in the past, so we hope this is going to help. So thank you, and do you have any questions? Hello, thanks for your presentation. It is for you John, I'm using Carpenter for a lot of points, and actually we have a little problem or maybe a misunderstanding how it works. We have a lot of pod in pending states. Carpenter spin-up VMs, pods are starting. And few minutes later, some of them are killed and new nodes are creating a little smaller. So pods are just a pod without starting are killed and are going to the new VM. Do you know this issue or it is something? Yeah, that's interesting. So sorry, just so I understand, you're saying that you have nodes that are launching, pods are trying to schedule to those new nodes and then we, I assume we kill those nodes and then restart smaller versions of those nodes? Yes, that's correct. Yeah, I've not, I unfortunately am not familiar with that, so we can talk after and also if there is a problem there we should definitely open an issue. Yeah, I've heard that unfortunately, so yeah. Okay, thank you. Yep. I have a question. On cluster auto-scaler, there is a long issue about scaling down and cluster auto-scaler not consider the balance between multiple availability zones in case the node group spans multiple of them. And if you look at the documentation of all the cloud providers, GKE, Microsoft or Amazon, they all say, yeah, create one node pool per pair availability zone and use the balance node groups but this like complicates stuff, right? So I wanted to understand if this issue is never gonna be solved because it's pending since 2020 and also I have no idea if Carpenter does better because I don't know Carpenter at all, so. I think the cluster auto-scaling site and then maybe Jonathan can do the Carpenter. And so we don't, as you mentioned, we don't have any mechanism right now for balancing between availability zones on scale down. We only have the balance similar node groups which only triggers in scale up. There is no current ongoing effort to fix it which I don't think means that it's never going to be fixed. We're definitely open to contributions and hopefully at some point we'll just get to fixing it on the site of maintainers of cluster auto-scaling. So we're definitely aware of this issue. Yeah, and on the Carpenter side I guess I'll answer the like which do I use kind of style question I guess because that's a question that I think we get a lot generally not like add any detail if he wants. Just kind of like we said at the beginning like they each kind of have their different trade-offs in terms of where you want your configuration to live and what you want managing your life cycle and there's also a difference that wasn't covered that in terms of like I mean it kind of makes sense there's only four cloud providers and Carpenter so there's a difference in cloud provider support right now as well. So you have to kind of use all those things to evaluate which project is right for you and maybe the answer is both. In terms of Carpenter's handling of like multi-AZ scenarios you because all of the configuration exists inside of the cluster and it's not necessarily tied to like I said we send off all that information to the cloud provider and it makes its decision and all that configuration is not tied to the cloud provider API multi-AZ it requires one basically one configuration surface in Carpenter versus having to create multiple no groups like you would in CAS traditionally. Hope that answers your question, yeah. Yeah, I'm curious about the because now you have two projects that are kind of doing the same thing and maybe you can talk a little bit about what is like the strongest motivations or not ending up with just one project doing the same thing. There's probably some reason. I can start and then we'll see. I think the major motivation is the major defense section we had before. So they do the same job and sort of externally as a user when you run pods there may not be much difference but how they work behind the scenes and in particular how they integrate with the cloud provider is very different and so I think large part of the motivation is it may, depending on the underlying APIs and behaviors of cloud providers, those are quite different. It may be that one or the other approach just works better and I think we are far too divergent in our code base to be able to just say it's one project with two different ways of integrating cloud provider. Yeah, I think maybe one example is if you, there's specifics on node upgrade behavior that you like about how your cloud provider handles it. Like it does like maybe a starting kind of like an exponential rollout where it would start slow and then move forward very quickly. Carpenter doesn't support that kind of thing today so potentially there's differences in how the life cycle management is handled on the cloud provider side that you might like more and therefore you'd want to use CAS versus carpenter and then there's also the detail about like do you want to manage the configuration surface through the, I mean that one's more I guess minor but do you want to manage the configuration surface through the cloud provider or do you want to manage it directly on Kubernetes? Yeah, and I think they're so philosophically different at this point that it's really hard to say like, oh I could merge them because they do solve some more problems but they are like, much like I said, they are so like philosophically different around how they actuate everything that it's really hard to say, we should just converge them, yeah. Thanks, I just learned about the do not disrupt annotations. So good, but I was wondering what the difference in implementation between CAS and carpenter are especially when it comes to does if there is an annotation existing there, does it, especially for CAS, does it just not scale because the cloud provider handles that and you can't specify, hey, you can scale but just not this node and I assume that there's better support in carpenter for scaling a different node but if you could elaborate, I'd appreciate it. I'm not sure I fully understand the question, you mean scaling down nodes? Right, during the scale down or the consolidation if there is the do not disrupt annotation or do not evict annotation, what happens in CAS? Oh, I see. So I think one kind of misconception or one easy assumption to make about CAS is it just changes the replica count of the underlying node group, but that's not the case. It picks a specific node. So it generally expects the underlying node group to have a function that allows reducing size by deleting a specific instance. And so it's always a specific instance that's selected for deletion. That makes so much sense. Thank you. Is the same for carpenter? Yes, it picks a specific instance. Yeah. Thank you. Hey, thanks for the talk. There's at least one other outskilling provider or implementation I'm aware of that escalator which I think was published by Atlassian. Do you know if there's any integration or if there's any initiative to also have them join the SIG? I'm not aware of any. We also have SIGLIT here, but it seems like I should have said no. Yeah, that seems like a no. So I think not so much. I think for carpenter, we were really as a SIG approach by carpenter, right? So I think that was the kind of direction it happened last time, but we'll see. Yeah, I think if there was some more effort from their side, we'd obviously evaluate them. Yeah. Thank you. Yeah. Hello, I used both projects and they are great. Thank you for the talk. My question is about carpenter. I can use the disruption annotations to turn down non-production environment nodes to turn down the non-production environment. This was what it was made for, or disruption budget was created for some other reasons. So let me see if I understand. So you're saying you... I want to turn down a non-production environment in non-working hours, for example. Oh, you want to spin down nodes during an hour? Yeah, I was spinning down. I see. Do not disrupt was invented most often for jobs for AIML use cases, where you don't want your job getting disrupted in the middle. Obviously for stateless applications, it matters less. Ideally, you don't want your stateless application getting disrupted every five minutes, but if it's disrupted every now and then you should be able to recover. Yeah, it was more invented to say, okay, let this thing finish, and then once it finishes, Carpenter can then act on it. It's less for orchestrating the scale down, because realistically what Carpenter does today is if there's a scale down during non-working hours of your pods, then Carpenter will just naturally, like with consolidation, will just naturally scale down for you. Like it'll remove the nodes because they're no longer used, and you'll save money during non-working hours. Okay, thank you. Thank you for all these updates, very nice. One got my attention, the one that you mentioned that is like the node disruption budget that you put there. At Datalog, we are using the cluster autoscaler, and we have a dedicated layer to tear down the node, especially when you want to roll out a new image and so on, we proactively drain the nodes, let's say. And one of the things that we do is we have a big node pool, so think about thousands of nodes. And the restriction that you have put in this node disruption budget that you show applies to the entire node pool, whereas the constraint that you may have may come from all the different constraints, may come from different application or running on that same node pool. So you may have different application coming with different needs in terms of space or working on different days or this kind of things. And if you have like 10 nodes on top of 1,000 that says I can be disrupted only on Monday, it's gonna be applicable to everyone in your case if the setup is at node pool level. I see, so you're saying a scenario where you might want to tweak your pod disruption budgets during certain hours to stop them from being disrupted potentially? Is that kind of the? Yeah, the thing is that multiple application are running on that node pool, and some may be very restrictive, but represent only 10 nodes on top of 1,000. I see, so you want to say this application shouldn't be disrupted during this time, but everything else can be. Exactly, we tackle this kind of problem and the thing is that we have this setting at application level, not at node pool level. You're saying you have it set at the application level? How do you orchestrate it today? But we have a dedicated controller to do this part. Oh, I see. Out of, so out of the scale. Got it. The cluster auto-scaler, finally tear down the nodes when they're empty, but all the, we are piloting the drain and everything with a dedicated layer. Yeah, I think one interesting thing that we talked about when we were considering node disruption budgets was like why do pod disruption budgets not have like a similar kind of semantic? Because I think that would probably solve the case you're talking about to some degree. Yeah, this is what we created here. I see, okay, yeah, so. So just saying that discussion, I think. Yeah, we may have it like at application level, maybe not at node pool level, if node pool is shared by multiple application, that you may have. Yeah, no, I think there, I mean, we kind of, I mean, you can tell by the way that CAS and Carpenter think about configuration, there's like, there's the two layers, obviously. So I think the cluster admin node pool layer is important because cluster admins generally need to be able to configure these things to protect their application developers to some degree, but the application layer is obviously, and we typically see like similar configuration surface at both layers because the use cases are very similar. So I think it's worth the discussion. I completely agree. And your limitations of PDBs are also something we've been talking about forever in cluster autoscaling communities. So maybe that's one more thing we can work together on. Okay, I think we're at this point, we're like 10, 11 minutes over time. So I think in the interest of time and wrap up, if anyone has a question, you can feel free to come and talk to us afterwards, but thank you.


Family renovating their kitchen uncovers hidden markings beneath the paint. Even in something as ordinary as a home renovation, history hides all around us, waiting to be found. The Ramirez family was stripping old paint from their kitchen walls, only to find some strange markings underneath. Further inspection showed that they'd stumbled upon evidence of a lost era. The man who made the historic discovery, while fixing up his own home was Lucas Asacona Ramirez. He and his family live in Chagall, a Guatemalan mountain village surrounded by rich history. Within just miles of the humble town lay endless attractions. All around Chagall are ancient ruins, colorful cemeteries, bustling flea markets, and so much more. To make a new discovery in such a historic hub of Central America is impressive feat once Lucas told the world what he'd found, news crews came running. Lucas had torn away at the layers of paint on the centuries-old wall. Yes, centuries. Look inside their 300-year-old home, and you'll notice the aged foundation, well-used stove, and recently installed wood and piping.  Once Lucas reached the final layer, he knew his home was special. At first, he thought he'd found some old damage covered with layers of plaster. But as he explored along the wall, Lucas realized that these markings were intentional. There were colors, lines, shapes, figures, it was an image. Lucas kept chipping until more of the hidden picture was revealed. He saw figures with patterned cloaks, healed shoes, and strange instruments in their hands. He stopped in fear of causing damage to his amazing discovery. Lucas ran to tell his family about the images, and they gathered around to see. Word quickly spread, prompting the arrival of professional archaeologists to finish off the excavation. It took them weeks to uncover the entirety of the hidden imagery. And it wasn't just the kitchen. Painted throughout the Ramirez family's home was an epic mural. It depicted the people of an ancient Ixil Mayan civilization that once ruled Mesoamerica. That meant the peace was hundreds of years old. However, as historians examine the figures' clothing, they noticed something strange. While some of the people in the paintings were sporting traditional Mayan garb, there were many dressed in very uncommon clothing. At least, uncommon to the region. And yet, the clay used to paint the scenes was indigenous to the area. Who could have painted it? As far as execution, all signs pointed to the Mayans. The artwork's lines and distinctive shapes had that traditional Mayan flair, which chemical analysis later confirmed. Whoever created the work was tasked not only with capturing the fashion of the time, but also the dance moves. The paintings depicted men and women shaking around in a blend of dance styles. Some wore feathers and performed traditional moves while others with long beards banged on drums. Historians quickly realized what they were seeing. The mural depicted the Mayans interacting with the Spaniards, who were brutally colonizing the Americas in the early 1500s. The indigenous people were swiftly enslaved and the original name of the country, Coedamelon, was reinterpreted as Guatemala. So then, why all the dancing? You don't just go into a country, conquer it, and wipe your hands of responsibility. People will fight back if you don't convince them to join your side. With this in mind, Christian missionaries from Spain attempted to convert the indigenous population using a language they'd understand. The Spanish missionaries learned the traditional dances of the region and adapted them as tools for conversion, successfully shifting the local belief system to Christianity. Some of the dances in Lucas's home were long lost Mayan traditions. Others were just blatant propaganda from Spanish missionaries. There was the dance of the conquest, depicting the Spanish invasion of the local Mayans. And then, there was the dance of the Moors and the Christians, where Spain was shown conquering Muslim kingdoms. But why would local Mayans paint these propagandist murals in the Ramirez family's home? It wasn't long before the indigenous people fought back against Spain. Despite conversion attempts, the Europeans found the Mayans to be infidels who needed to be put down by force. This terrible insult to the cultural and mathematical brilliance of Mayan culture sparked a rebellion. In an interview with Rupley, Lucas explained what his family had been told by researchers. One of his great-grandfathers was a key member of a secret group known as the Coffradias, or Brotherhood. They were responsible for organizing religious meetings with an inspiring message that no one could resist. The Coffradias sought to capture every event in their lives, including the dances and traditions of both Mayan and Spanish culture. With the rebellion well underway, many residents were eager to bring back the influence of their indigenous past. Since Lucas's discovery, similar murals have popped up in other parts of Guatemala. Throughout Chagall and the surrounding area, people began hacking away at their walls in hopes of making similar discoveries as the Ramirez family. Many had enormous success. Ivan Putsis, an archaeologist from the University of Guatemala in San Carlos, explained why these finds were so incredible. We consider these murals to be very unique, says Ivan. It's tangible heritage that represent S. real scenes from history. To work out the entire history, experts needed to communicate with the people who could help them most, the Ixil. Without the local Ixil people, researchers never would have never been able to identify the key components of these murals. As the paintings now fade from light exposure, photographs are all we have left to remember this chapter of Mayan history. Meanwhile, experts are desperate to uncover other evidence from the region.


Johnny dollar dollar my name is Parnell Hank Parnell live out here muddy gap Wyoming Mr. Parnell you just called me Hank all right Hank what did you say the name of your city is city why it's only a little town dollar muddy gap Wyoming muddy what which is what it sounds like muddy gap muddy gap I see if you waste a cast by south of Power River it's not too far from where the poisonous party creek begins you look it up on the map and well here we are all right I'll look it up but what seems to be your problem I'm well just about everything else and muddy gap weekly tribute yes I'm also the only agent for at least 50 miles around here for the great Southwest insurance company oh I see yes sir now I wonder if you could hide tell yourself out here and one big fat hurry well that means on that little old expense account of yours can you do it well that depends you are talking about insurance business now aren't you well not yet dollar but but put it this way yeah unless you can give us a hand great Southwest is plumb liable not to have any office or agent or anything else out here anymore afraid I don't understand well then let's put it this way yes what I want you out here for is to keep the town of muddy gap from getting itself brewed right clean off the map well sir well sir I'll be out to see it your network bring jewel Mandel Kramer in the exciting adventures of the man with the action-packed expense account America's fabulous freelance insurance investigator yours truly Johnny dollar expense account submitted by a special investigator Johnny dollar to the greatest Southwest insurance company branch office in the town with the unlikely name of muddy gap Wyoming following is an account of expenses incurred during my investigation of the mad bomber matter expense account item one 192 80 transportation by plane train and car to muddy gap that includes a stop and bite of late supper at Casper Wyoming where I picked up a rental car muddy gap is in the middle of thousands of acres of a range land for beef cattle in what used to be Indian country where the Sue and Cheyenne carried out many a bloody raid against wagon trains plotting along the old Oregon trail there's oil in this country too muddy gap consisted of a railroad siding one main shopping street and a surprisingly neat residential section all of it pretty much surrounded by a tank farm how many millions of gallons of crude oil were stored in those huge steel tanks I'll never know but it must have taken a mighty big pipeline to handle it it was obvious that oil storage was the town's principal business the combination insurance and newspaper office sat alone at the end of the street and despite the late hour Hank Parnell was there waiting for me he was a long lanky not too bright character dressed in jeans and open shirt cowboy boots and the inevitable white Stetson instead of a horse tied about front he had a vattered old touring car minus the top and covered with oily dust to get out and around and dig up news items for his paper he said oh and I guess I forgot to tell you dollar I'm also mayor of this town sort of city clerk and dog catcher as well Hank well now you know something that we had enough headed dogs around here to worry about I'd probably be that too oh and I'm also sort of acting police chief while rave Tucker's down to see his relations down in Texas so you see I got plenty of reason to be worried about this nice little town of ours worried about what exactly you notice all them big oil tanks all around out there you should got a lot of them yes sir you imagine what had happened one of them just even one of them was to maybe explode darling there'd be just one long continuous boom and money gap wouldn't be no more and maybe nearly 300 nice fine people either be dead or at the very least homeless but do you think something like that might happen hack unless you can somehow stop a dollar no rather I mean stop him who Billy Ben Bowles is named born and brought up right here in muddy gas young real bad boy always in trouble been a little older to spend most of his time in a jail mm-hmm so when the last war came along my father he run this paper then he got an idea for ridden us a billy yeah so we wrote a couple of editorials to sort of pass on that idea first thing you know the draft board kind of caught on the first thing he knew Billy boy was in the army well I'd say that's a pretty smart idea yes and accepted when Billy realized how he'd been kind of you well railroaded into the service he swore loud and long as to how he'd come back here someday and get eaten with this time well I don't see why what's wrong with the army well not a thing not a thing just the way he got put there that's rankled him I see anyhow all time he was on the other side they had him working on explosives he got to be a real expert every time he'd set off a charge you know to blow up a railroad or a bridge or whatever he'd say yeah now that's for so-and-so boom and this one's for so-and-so boom every time he'd need somebody here in this town starting of course with the draft board became a real obsession with him oh it was more than that it was like a mania yeah Billy Benhall since simply wouldn't forget now surely hack after all this time and now we're going where it was all the damage and destruction he was doing or whatever it was I'm not sure but dollar there at the end of the war well maybe it was shell shocker battle fatigue or whatever I want to call it Billy went completely off base oh that's too bad yeah the first thing he did when he set foot back in this country back there on East Coast was to start blowing things up so of course he ended up in one of them state hospitals back there and never got over never got over it well if he's in the hospital well he was but then a while back he escaped was it I mean you think he'll be coming here to carry out his old threats with dollar a couple of days ago I got a phone call right here in this office yes all the voice said to me was I haven't forgotten any hung up the voice of Billy Benball well who else who else could it have been I wonder well I don't it was Billy all right there had to be and what he meant was in his twisted way Billy meant he's coming back here to get even well now hang well who knows maybe Billy's right here in the in town right now hide not somewhere it's just we didn't for chest I blew us all the kingdom come and don't you forget for one minute dollar he was an expert with them explosives and Hank if it was this this Benbow why would he make a point of warning you dollar man with a mind like that you may be right tell me have you mentioned this in your paper have you notified the townspeople what and got them all up into a panic no sir but somehow dollar somehow we got to stop him all right now listen yeah I take it you you haven't much of a police force here yeah well and never needed much of a force in a peaceful little town like this how about the county estate police or whoever's available oh sure what oh they'd be glad to help it come right over here and help us all they can when and if Billy tries something well by then it might be too late yes sir because every day now once a day along about this time this phone of mine is wrong and when I answered there wasn't nobody there so it's Billy wherever he is just adding up to that warning he gave me possibly so well you got any ideas dollar well it'll be perfectly honest about it Hank before I believe that after all these years Billy would actually come back here I think I'd like a little more convincing evidence evidence well what's he got to do to convince you you mean to say you won't believe it until the until he oh no there it is again well maybe it's one of your subscribers you pick up that extension same times I pick up this all right if you like okay yeah now hello hello I think I'd better prove that I haven't forgotten Billy is that you Billy that's right Billy Ben Bowie and now now listen Billy at hello hello now you see now dollar I told you he wasn't fooling I told you that what was that I don't know it sounded like it came from somewhere just outside of this remember how much racket automobiles used to make time was you practically had to bellow to make yourself heard above the chatter and roar of the engine the howl of the wind rushing by and the rattling a rough road gave your poor old buggy and brains nowadays with vastly improved automotive engineering and magnificent new super highways you literally pearl along the road this is a vast improvement but one that can offer danger if you're not alert you're sitting behind the wheel with the miles of highway unrolling smoothly beneath you suddenly a sharp curve jumps in front of you and you find that you have to use all the skill of a professional racer to navigate that curve without getting into real big trouble your car was so quiet that your speed had crept up stealthily during those long miles of straightaway you were burning along without realizing it the point here a simple one is this your speedometer was put there for a purpose a purpose you can't afford to forget keep alert take care and get there thing I remember was crawling out from under Hank's desk Hank himself and tried to make a dash for the press room it was forced back by the blast and ended up beside me as for the press room and with the shambles oh my why here dollar why in here why do you pick to blow up my press this way Hank didn't you say it was your father's idea that way of getting him out of town yeah you're right and he spread the word by putting the stuff in the paper all right then maybe this is all he wants to do put your paper out of business yeah maybe so dollar hope so but he's still got to be caught and locked up again yes but where do we start looking for him well he was here to set off this year bomb wasn't he only seconds after you talked to him on the phone oh yeah you're right if he was somewhere's on the telephone there's no other buildings hereby how could he be around here too wait a minute look looks like this is the answer right here why that's a clockwork that's right a little timing device that means Hank that he could have been a hundred miles away what is it Hank what's happened around here sound like a big explosion yeah that's all looks like one to have it was all right Pete what happened hey smells to me like dynamite in here dynamite what's the matter with your smeller boy well just that big can of benzene I had for cleaning up the type of use on the paper it was huh yeah that's what it was I had to dang thing up a little too close to the heater and it blew up that's all boy sure funny it didn't start a fire then what do you mean funny we were lucky this oh I guess you were I'll tell you this though Hank I just don't bother right now it was only the can of benzene no no I mean about your saying there would never be any excitement around here when I took on this job oh yeah yeah it looks like I was wrong what is your job Pete oh I'm sorry I should introduce you to this is Pete a Pete Pete Branson oh yeah him and Tony batten or the rest of the police force here in Muddy yeah glad to meet you now what you say your name is a Johnny dollar but now listen you hear the hoax out there yeah Tony's out there too well you and him just keep that mob out of here will you tell him everything's okay it was just that just that can of benzene like I said I'm sure I go on now you and Tony keep that mob out okay it's okay folks just had a little accident back there in a print shop everything's under control but just to make sure Hank don't want anybody hanging around yeah what you mean his face the way it's all cut up that way yeah it tells me once got drugged by a horse you know foot caught in the steering oh I say so the one thing he won't ever do anymore is get himself on top of a horse me I don't believe him Hank that excuse that you gave for the explosion oh you think I should have told him the truth and let him spread the word and get the whole town into a panic if we were sure there won't be any more of them that Billy's satisfied as Yennefer revenge by putting your paper out of business okay but if your fellow townspeople are still in danger and didn't you mention the draft board who are they oh they're all long gone daughter except for grandpa Whedon oh Lord well oh Lord that old house it is it's it's right over near the terminal and one of them pipelines off the tank farm and if that place were to get blowed up and if one of the tanks were to go why there'd be nothing left of this town then if Billy is still around how can we know wait a minute telephone what it's the old-fashioned kindness no dial which means you have to call an operator which also means that the operator has to call you come on what are you what are you going to do we're going to find out where that hello now whatever happened down there at your newspaper office listen operator whatever you had blow up over there fairly shook me out of my chair I haven't had such an explosion here in muddy gaps and Sally briskome still blew up and everybody thought the whole tank farm was gone look miss you better tell me what happened so I can well I mean you know in case somebody calls in and wants to know operator well will you listen to me a moment what are you speaking for Hank Parnell anything happened to him is he all right he's all right now listen yeah just before the accident you rang this phone well that's right I had a call for him you know who was calling no he kept his voice low what you say your name well I didn't and it doesn't matter but what I want to know is where did you know something hmm you sound exactly like that Johnny doll on the radio operator listen please if you are in your own town miss where the folks around here would sure like to know that they were now listen do you know where that call for Hank Parnell came from well of course I do where the one outside phone booth we have over outside the drugstore okay thanks you heard yeah a dollar and he is in town I'm afraid so thank you better take it okay I'll listen in hello you've got the sample Parnell the big ones coming later Billy that's right leader when what do you mean by later maybe maybe tonight Billy listen hello dollar dollar we got to get the people out of this town 300 of them before he can strike again I don't know I don't know I don't know but we got to try it's too late and you know it well then what can we do dollar it's a long chance Hank I know it is what but I'm betting that he's been around this town a long time maybe for weeks that doesn't that mean anything to you well I don't I don't I don't get it all right listen now this crazy hunch of mine maybe all wrong but if you let me handle this my own way will you Hank in spite of the fact that it may mean jeopardizing all the people in town anything you say dollars long as we do something all right those two boys on the force do you know where to reach them right now who Tony and Pete yes yes all right call them up and come over here then if you and they will follow my orders to the letter in without question well we'll do anything okay get him over here it meant staking a lot on my limited knowledge of the criminal mind possibly risking a lot of innocent lives but I felt sure now that my hunch was right fortunately for my plan Tony baton got there first when I told Hank and Tony what their job was for a moment they couldn't believe I was serious but they agreed to say nothing to anyone not even to Pete Tony went outside then waited in Hank's old car when Peter Branson arrived Hank put him under my orders and he and Tony took off and I guess I was right huh Mr. Dollar that was some kind of set explosion in here wasn't it that's right Pete it was set all right by an expert and you got some idea who might have done it either you and I are going to find out of this towns and danger being blown to bits are you kidding not a bit of it I see you carry a gun yes sir right here in handy and of what you say is true maybe you want to have one too well you better let me have yours and Pete wait a minute Mr. Dollar your idea well yeah I know but let me have it orders Pete you're under my orders remember yes sir all right yes sir here you are good now should we go where we hit it out to see an old man old grandpa Whedon or now you don't think he had anything to do with this explosion do you Pete I think this mad bomber plans to hit him next did you say mad that's right oh I see we're gonna go up a grandpa's place with a fine tooth comb because a bomb may be planted may be taking away out there right now and if we don't find anything out there well we'll see why do you think this this man had picked on him is it a man well for certain to guess so but why I'm grandpa well because once he was a member of a draft board that don't make sense doesn't maybe not but does anything make sense or a madman is concerned you're calling him that again you don't like that wouldn't well there's no difference to me but if there was a madman on a loose out there he might look every bit as harmless as you do or as I do see okay there that's going out there and have a look but I'm betting we don't find anything you don't think so well I bet on well then maybe we want it seems to me Hank had a little trouble remembering your last name Pete how long is it that you've been on a force a few weeks against ever since you first came to town why yeah practically and before that well you know working around the ranches and oh I thought you didn't ride well I don't know anymore what do you do then oh you know our jobs well we ask you well your hands they look kind of soft to me you know another thing come to think of it seems to me you immediately recognize the smell of dynamite when you came in here didn't you look you want to go out there let's go and the little scars on your face what you getting at there from an explosion aren't they I said what you getting at I've seen too many of those kind of scars not to recognize them and you knew that because of them nobody around here would recognize you didn't you Billy okay doll that's enough you see this get another gun that's right so instead of reaching for the one I gave you just you reach up high now reach I knew I'd have trouble when you come in town because you ain't dumb like the rest of these jerks around here but not any more dollar because I'm gonna kill you you think so Billy yeah yeah yeah and then I go back to my place and I get the rig it's already except for the setting of the clock on Billy and shut up you know where I planned it then yeah out by old grandpa we you hear me out there by the tank farm and I set the clock so I only got time to get away get away in that nice car yours dollar now Billy listen to me no no no you're only trying to stall me so first it's you and then I go get that rig this week this bomb we found over in your room you found it you better drop that gun Billy no you pull that trigger Tony I still get off a shot it's right let me take care of it while we had some mighty good left you got there door I guess he was right though I ain't about you're being pretty stupid well now you just we didn't want to think about what might have happened if Tony pulled off a shot right next to that bomb you have in your hand oh my gosh you should have remarks why bother on this one as for the expense account let's call it a total of 350 bucks yours truly Johnny dollar oh here is our star to tell you about next week story next week a beautiful girl a handful of coins and a mysterious disappearance join us won't you yours truly Johnny dollar truly Johnny dollar is written by Jack Johnstone produced and directed by Bruno Zirato Junior music supervision by Apple Huber Johnny dollar is played by Mandel Kramer also featured in our cast were caught Benson is Hank Parnell Lawson's early as Pete Branson Cliff Carpenter as Billy Benbow and Barbara Kassar as the operator be sure to join us next week same time same station for another exciting story of yours truly Johnny dollar Art Hanna speaking the number one network for news expanded CBS news on the CBS radio network this is W. R. W. music in Albany New York a newcomer in town can feel mighty lonesome welcome wagon hostesses make these newcomers feel wanted when they make their cordial welcome wagon business their baskets contain useful gifts from civic-minded businessmen invitations to participate in various social and volunteer activities of the many civic agencies in the community in addition every welcome wagon call recipient in the greater Albany Earth's Connected areas as well as Del Mar Latham or Scotia is invited to attend the local welcome wagon club this is an organization of newcomers all anxious to make friends various welcome wagon clubs vary from 30 to 150 members who meet monthly their interests include bowling golf cards handcraft and dancing you can help to make your new neighbor feel at home call state 5 9 6 4 0 today and make your neighbor eligible for the many opportunities in a welcome wagon club remember state 5 9 6 W. R. O. W. music time now 25 minutes before 7 p.m.


Hi there, I'm Sandy Olnach, artist and paper crafter here on YouTube and today I'm going to be creating some Copic Vacation backgrounds and doing that as speed art While I'm using some hex art class techniques But I'm going to start by showing you the Sunny Studio Stamps Happy Camperer First in real time so that you can see how to color that one Camperers are really fun to color. There's a friend of mine who's really into campers shout out to Sheila And I thought this was a really cute little stamp set a little teeny tiny one with some fun sentiments That could be good for your summertime cards, so I'm going to show you the coloring of that And I'm going to use some really basic colors for the reason that I want to do a couple of different backgrounds with this Because when I think of campers I think of going on trips and when you think of going on trips you think of all the places you'd like to go and see and I thought it would be fun to do some cards with some backgrounds of places that I either want to go to or places that I've been and That's what I'm going to talk about a little further in the video. I Decided my basic color scheme since this is going to be Americana type of scenes will be red white and blue for the camper and I'm going to create a little bit of dimension on it as well But I got my basic colors down just so I could make sure I kind of get them spread out evenly across the page that sort of thing the windows you can see you can create a little bit of Glassy look by making some stripes in them, and then I'll also soften that with some other color in a little bit but now I'm going to start adding some dimension to things and I'm putting my My darker gray color down so that I can smooth that out and make it look like metal By mixing it with a lighter gray. You can use any of the grays I'm using the C's here, but you can use any of the T's W's ends or C's to achieve the same kind of a look That's one of the things about the grays. They don't really need to Be used individually. You can use them together You can use them separately and if no one sees them next to each other you often you can't tell the difference between them So now I'm going to add some shading I added shading on to the front edge of the little awning that's coming out as well as now on the bottom of This shape here at the bottom of my camper Now I don't know whether campers should actually be silver all over But I decided mine was going to be red white and blue or shall we say red silver and blue Because it was fun But you could also make one that's all silver so that your background really stands out as the only color on this But what I decided to do is make my my little camper nice and bright and happy and cheery I'm going to use my favorite dark red On the top of the camper here and give that some shading as it comes up from the bottom Put a little tiny bit underneath of the flowers. So we have a little red flower box happening Blend that out with my favorite mid-tone red, which is my r3 7 If you don't own those two markers yet and you color anything red Go shopping right now and get them because they they work with all of the light red colors very very well So I colored a couple of these because I stamped several of them in the same layout And I'm going to make the same sign over here on the right hand side. So I'm taking the The sign Text the sentiment that I've stamped here and just made some scribbles across it to make a wooden board And then I'll give it a poll now I'm making my poll Go off the page at the bottom because I want it to look like that sign is way out in the front And that the camper is way in the back because if I were to just make that That signage kind of at the bottom of where the camper is it's not going to really look like it's in any kind of Normal proportion it's going to look like a giant giant billboard So I thought I'd make it look like it's in the front and then everything else is in the back And I'm using my Copic multiliner to go over the edges because I'm going to continue making scenes behind it If you're going to just add your black lines after you're done you can use any black pen But since I'm going to touch that with some Copic marker I'm using a black pen Now this is the speed coloring and here i'm doing Yosemite National Park I did go there last year And it would be nice to do places that you've been to and use some of your photographs To kind of create some scenes. These are not exact replicas of the mountains there But it's close enough that if you've been to Yosemite if you know anything about it This is going to give you the feeling of that big valley with those giant mountains at the back In all three of these speed backgrounds that i'm showing you there are some techniques that are shown in the hex art class The hex art class is over at art-classes.com and it is an advanced class And even though lots of people might be able to create some of the little hexes that are in there as Little teeny tiny techniques It takes a lot to get to this level But I wanted to be able to show you because a couple people have asked me well What do I do with this now? I have this beautiful hex art piece that I've created How do I turn that into a scene? So i'm doing three scenes using a bunch of the techniques in the the class And the real-time videos are in an added bonus lesson at the end of class So i've added another lesson over there if you've taken the class you automatically have access to that So you can see them in real time with the color names and everything There's no voiceovers in them But they do have the colors on the screen and I do label what the techniques are when it's pine trees I label the pine trees and uh, this one is Using these these rocks in the southwest But i'm using a technique for marble to create these rocks on the the two sides So I label things like that for you I didn't didn't have time to do voiceovers because it's a long long long video I just put on some music so you can Just go listen or you can turn on your own music and just watch Whatever you'd like to do But I thought I'd put those in there to tell you kind of what you can do with The class and with the techniques that you learn in the class all 42 of them This does these do not have all 42 techniques by the way But they just have a couple of them used in backgrounds so that you can see how to apply them If you haven't taken that class yet, I definitely recommend you take the copic jump start class first Because that one is your basics that's going to teach you the basics about markers and everything Something like this Could be really daunting if you are new to it So don't take the class just because you want to see these backgrounds go take the jump start class first But if you're ready to take this one then in just a few minutes I'm going to give you a coupon code so that you can go and take it if you've not been inspired to I know it's an expensive class because there's 42 whole techniques in there And yeah, it it can seem like a lot of money for For something like this if you don't know that you're going to use it But I thought if I show you some cards in which I'm actually using the techniques And using them, you know in in combination with each other to create different things Then maybe that would inspire you to start making some backgrounds for your cards So I don't want you to feel daunted by it But I also want you to feel inspired that you can use these techniques And also remember that you can join over on the new Facebook group. I guess it's not really new by now There's a Facebook group for students In my classes and it's for all students in one big Facebook group and every month At least for right now, I'm I'm giving away a 50% off the next class that you take prize Once a month to somebody who shares their artwork in that group It has to be artwork based on one of the classes So tell us what class and what you learned from it and that sort of thing But go join the group and join the conversation Comment on the work of others and add your own to it And we'd love to see what you're learning what you're trying and what's working for you. Okay So if you are interested in taking the hex art class The coupon code is happy camper Since there's a camper in this I thought that would be a really good name for the coupon code And you can type that in all as one word at checkout to get 10 off of this class. It's only good on this class All right, I will talk to you guys later. I hope you enjoyed this I hope it inspires you to go make some backgrounds on your cards because it's way fun to do You guys know I love to do it So I encourage you to try and I will see you guys again next time. Have a wonderful wonderful fabulous day Thanks. Bye


Hello and welcome. We've been looking at the date command in the Linux shell and today we're going to create a very basic countdown timer till Christmas. Let's go ahead and do that. We'll just call it Xmas. Oops, Xmas and I'll call it one because I'm going to make a second script in another video.  Let's make my font a little bit smaller. So I just have a main function in here that's called welcome sleep and then exit. So we'll do welcome and then we'll do while one with spaces. Bash is very sensitive about spaces when you're doing if then statements and while loops. But so just make sure while space bracket space one space and then a bracket and then do and done and then everything in here. So that just means true. One is true. So it's going to loop forever until you kill it. So we need to do now is get the today's date and subtract that from Christmas's date and we're going to do that using epoch timestamps. So I'm here. I'm just going to create a variable called seconds. I'm gonna say that's equal and again no spaces there and inside these parentheses I am going to run this command. We're going to do dollar sign double parentheses. So this is going to be doing math in here and so we're just going to put we put these in different variables. We could get today's timestamp Christmas's timestamp then put them in here and do the math and put them into the sleep the seconds variable. But we're going to do it all in one line here. I'm going to say dollar sign parentheses inside those parentheses date dash D and then give it a date and I could just say 1225 and it would automatically do this year's date. But if you want to do it for next Christmas you can do 2019 if you want. Let's just leave it at that for right now. So that and then we're going to say plus percent s. So right there what this is doing is this right here is running a command and hopefully you know that already or you have a little bit of a bash knowledge dollar sign and something in parentheses like this single parentheses is saying run this command which is the date command and we're getting the epoch time that unix timestamp of this date midnight first second of that day or just the instant it started that second dash D just means I'm giving you a date. So the outer dollar sign and double parentheses means we're doing math. So here we're going to say minus. So we're taking that number and we're going to subtract today's date from it. So date but we want it again in seconds in epoch time. So if I was now echo dollar sign seconds I can now exit out of that change my plus X the name of that script only you do that once on your system to make it executable and now we do dot slash meaning this directory run this script welcome and it's a second and now it's looping and it's giving you how long from now until Christmas in seconds that's how many seconds until Christmas and it's looping very very fast here that's why you're getting a lot of the same number and so it's going to keep on looping multiple times a second. I'll control C to kill that and we'll go back into them. Let's make this a little bit nicer and we're going to format it but let's before we do that we're going to clear the screen. So now instead of using echo in this case I'm going to use print F which is similar to echo it works a little different sometimes it's a little bit easier when you're trying to format things. So we're going to do and if you watched a previous video where we did date stuff what was it we just recently I recorded a video where we were doing oh just just basic timers we're going to count down the date we were just you know counting time. We're going to do percent two zero D so that means in the place of this there's going to be a numeric number a digit but we only want it to be two characters long this is nice so it's going to be if it's less than two it's going to put a placeholder zero and then we're going to say days which is just text and we'll do percent two or zero to D again and then we'll say hours percent zero to D and then we're gonna say minutes percent zero to D and then we'll do seconds until Christmas backslash end for new line and then right after that on the same line you want to put in the variables that you want to replace these values with but because our lines getting kind of long I'm just gonna do a backslash and hit enter that means the next line is basically it's like it's being on the same line as the print command the important thing here is you don't have any extra characters after this it's backslash and enter if you put a space there there's going to be a problem so here is we're going to put our variables but we want a variable for each of those times and if you remember last video where we worked with time for the countdown time or the stopwatch timers and the alarm timers again we're going to do math and we're going to do some division and some division with dropping the the decimal or the whole number depending on what it is anyway this part is math in parentheses here again dollar sign double parentheses means we're doing math and we're going to take that seconds variable and we're going to divide it by eight six four zero zero to get our days so however many seconds there are so you saw that big long number of number of seconds until Christmas if you divide that out by this number that's how many days there's going to be because that's the number of seconds in a day then we're going to take our same variable seconds which is still the full number of days we're going to divide that by three six zero zero which is the number of seconds in an hour I believe am I saying that right and then we're going to say percent twenty four to drop off the and just get the the whole number for that I'm not explaining this while I went this sort of thing in more detail in the previous video but we're going to do seconds now divide by sixty percent sixty sixty seconds in a minute sixty minutes in an hour that will give us our hours percent or it's our dollar sign parentheses in quotations here and we're gonna say seconds and we're going to percent sixty so this will give us our number of days this will give us our number of hours this will give us our number of minutes and this will give us our number of seconds evenly rounded and then these they'll be placed in here in the appropriate order based on this is the first one this is the second one because that's the order that came in and again the percent two zero two D just means limit it to two characters which days you might actually want let's leave it like that but I'll add three because you might have three digit characters when you're going to date and then we're going to say sleep one and we're done after that you know we actually have to do but the only we're going to get out of that is by control seeing it anyway we should be able to run our script now welcome and now we got 69 days 14 hours 20 minutes and 47 seconds until Christmas and it's going to keep on looping and it's only updating once every second so theoretically you might skip a second here if you computer and slow in between seconds but and actually probably would every once while again because of like I've talked about previous videos where even if it's a hundredth of a second or a thousand second doesn't take that long to be off to where you're going to be a full second off would that apply to this doesn't matter this is our countdown timer for Christmas and it's not very long at all I mean really it's this line and this line it's two lines of code whoops let's close that window it's basically two lines of code to generate the rest is just looping through clearing the screen waiting a second so two lines of code basically to get that information printed nicely and the rest is just looping it but in the next video we're going to format this a little bit better have a little bit more fun with it so check that out I do thank you for watching please visit films by Chris dot com that's Chris decay there's a link in the description check that out as well as my patreon page patreon.com forward slash metal x1000 you can support me there and I would appreciate it thanks for watching and I hope you have a great day


Hi everyone, Joe for jaspyscasebrakes.com coming at you at 2019 2020 panini mosaic basketball cello pack break number 108 Which does indeed sell out noir separate video right after this one if you're watching live As always we're gonna do the break first and then we'll re-randomize your names top ten names We'll get into that noir break big. Thanks. These folks right here break first They're the teams. Let's roll and randomize each list ten times six and a four and a tenth and final time after ten We got BT down to DC ten times teams and 10th and final time After ten we've got the trailblazers down to the Nuggets Brandon with a trip. I'm not gonna read all this. I was about to read all this stuff And then I realized it's just a one-pack break. What am I doing? Pelicans Danny Connell.  I don't know. We'll see Brandon. That's that's not up to me Maybe probably Who knows? All right, so it's top ten after Six three and three six hard way and six after six times Actually, it's top ten right so apologies to these people here But congrats to Sean Kevin G Adam K Anthony K Ryan Ryan Sean Patrick Adam and Danny There you go top ten right there. Thanks everybody Noir coming up next jasky's case breaks


Hi everyone, Joe for jazzy's casebreaks.com with a quick little random number block randomizer for Pick Your Team 2 coming up in the next video. That's how it works. Remember, non-numbered cards in this group together and randomized to one person is one lot in this number block. It's usually base cards, but sometimes it could be a hit. Big thanks to this group here for knocking this out. I appreciate it. There are the numbers right here. Let's roll it. What's the names of the numbers? 11 times, 5 and a 6, 1, 2, 3, and 11 the final time, Q down to Aaron, 5 and a 6, 11 times for the numbers, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, and 11 the final time. A lot of randomizer. There we go. 8 down to 9. Now remember, as it says in the item description, 0 gets any and all redemptions including one of one redemptions, but 1 will of course still get live one of ones. Q with 8, Todd with 6, Sean with 2, last spot mojo, James, 0. So for Minnesota, Los Angeles Lakers, Dallas, Milwaukee, Wisconsin, no, Washington, 0 will get any and all redemptions including one of one redemptions. Aaron, you'll still get live one of ones. You have one. Anthony with 3, Hugh with 7, Abram with 4, Aaron once again with 1, Sean with 5, and Aaron with 9. Let's sort this numerically. And coming up in the next video will be the break itself. We'll see you for that, jaspyscasebreaks.com.


So as an IT instructor, one of the biggest questions I always get is what internet browser should I use? Well in reality any of them are actually pretty good, but obviously that's not the answer you were looking for. You want a de facto which one should I download and use for the rest of my life? Obviously I'm using Google Chrome right now, but if you remember in the last video I popped up and used Internet Explorer for just a hair. Well the website I typically use to just see. I typically develop websites, so I have all of them on my background, but I go to something called html5test.com The reason being is as soon as I take a look at that website, it's actually going to tell me how good my browser is. Google Chrome by itself from this computer at Cape Fear Community College scores a 501 out of 155 possible points. Now if you're a little bit more interested in the kind of web development side of things you can actually see all the different things that Google Chrome has to offer and what it does work with and what it does not work with. Maybe you're like, oh well I don't use Google Chrome. I use Firefox, Opera, whatever you use. You notice that this site actually has something called Other Browsers and if I take a look at that, you can see I actually get a slew of what the best best browser is right now and it'll give me a ranking of each one. For example Google Chrome's version 39 is 500 versus something like Internet Explorer 11 336. So it is a little bit, you know, which one you want to use and so you can see here's actually the current rankings of all the most popular browsers. I'm not saying you need to pick one based on this but as you can see, there is a clear difference between something like Google Chrome and Internet Explorer 11.