now we are going to discuss about the elements contributing to effective channel relationship so which elements ensure the effective channel relationship for effective channel relationship they contribute and they set the basis for effective channel relationship so which elements let me share it with you so these are the elements that are present in the form of a graph in front of you let us discuss quickly what are the elements and what are they for you firstly if we talk then we have final customer orientation it is very important for effective channel relationship so everyone in the company everyone in the channel value delivery network should understand the final consumer orientation if they are able to do it of course you can build a good effective channel relationship then common positioning goals all your channel members they should have a common positioning goals if they have it you will be able to create effective relationship then input into channel decisions when the value delivery network channel members are talking effective channel relationship to create so input of every channel member is very important so if all the channel members give input that input will contribute into effective channel relationship then trust factor fairness in the relationship reliability factor communication among all channel members and coordination among all channel members they are also key elements which contribute effectiveness of channel member relationship because if you consider each one reliable if you trust on all channel members if you be fair with everyone if they will be communicating with every channel member and then coordination level between all channel members are high ultimately effective channel relationship can be created then consistency in relationship consistency in sharing the information consistency in communication so consistency is one of the way one of the element of effective relationship between the channel members or among the channel members what are the activities which you are going to perform proper lead time of every single activities which you are going to perform what is the equitable profit distribution among all channel members from the manufacturers from the importer till the retailer what profit distribution will be because that will effectively define role of every channel member and responsibility of every channel member and accountability of every channel member then what marketing support you are going to do because what marketing support you will do ultimately will result in effective relationship then timeliness of payment if you will do with your suppliers of course ultimately the relationship between suppliers or the resellers and the retailers will be more stronger bond will be more stronger the bond will be more effective and inventory planning if there is a proper inventory planning ultimately there will be no gap from the manufacturer to distributor from distributor to wholesaler from wholesaler to retailer and ultimately from retailer to consumer so all channel members if they will plan inventory properly ultimately it will result in effectiveness of relationship as you all know that every single thing can contribute in effective relationship building and very single point can result into ineffectiveness of this relationship so be it qualitative which is for example trust and reliability and coordination and fairness approach so be it the point like this or be it the more materialized point for example the positioning goals the customer orientation proper inventory planning so all elements quantitative or qualitative have their importance in building the effective channel relationship the target of all channel members is to increase enhance develop build this effective relationship because this effective relationship will give more of customer orientation which will be giving customer behavior feedback to the every channel member and resultantly will give more business more profitability more customers traffic more customer loyalty to all channel members and ultimately this will result in their business growth and business development


wanted to call this the funny Dan show channel but we can't like just switch the channel name why not you gotta like pay me or we got to get like if we get 10,000 likes on the video or something maybe what if we get 10,000 likes on the video I don't think I've ever gotten 10,000 likes on a video you've never gotten the 10,000 likes period no probably combined people dislike what about on Instagram what's the most likes you've probably ever got like 18 18,000 yeah it was me and a women's sports bra it said new year knew me that's pretty good it wasn't the one of you on New Year's on the morning of New Year's that's really original actually yeah that's why it was funny that's why it's funny you're supposed to be the content creator funny guy YouTube was up give us a like and a follow thanks man 10,000 likes will change this to dad funny Dan channel Wayne once said money over bitches little Wayne also said my favorite quote he's ever said real G's moving silence like lasagna get back as the G is silent no I get that a lot of people ask me they're like what does that mean I'm like there's a G in lasagna but you don't say Ganya you don't say lasagna lasagna people aren't very smart no a great little Wayne's got some work play one of my favorite would be big stacks my pocket song Korea team is that what he says yeah what song I think upgrade you Instagram talk about my music I'll try to play like on the reels it's not getting me the views but I'm playing the music that I like I'm trying to share some of that with y'all so pay attention Instagram selling my two K's


Hi everyone. Welcome to the Rusty Boat. My name is Taylor Thomas and I'll let Matt Butcher introduce himself. Yeah, I'm Matt Butcher. I lead an open source team at Microsoft. I've been working on all kinds of cloud technologies over the last a long time, including Helm, Kubernetes, Brigade, various Paz platforms, and even going back into OpenStack. You can find me all over the social media as always at at Technosofos. So there you go. And this is Taylor. Yeah. And like you said, I'm kind of a little bit less consistent with the social media. So there's all my social media handles. And that's just because, you know, common name and common last name. So it's kind of hard sometimes. So first off, I'm one of the Crescent Core Maintainers. We'll talk about that project a lot today. And I'm an emeritus Helm Core Maintainer. I've also been doing containers in Kubernetes for a long time. It makes me quite old in container years, as we like to joke. I've been just doing it for a while, not as long as Matt has, but for a while. And then I am a Rustation, what we call Rust Developers, by way of Go, which makes sense given my background. And so we're going to go ahead and kind of kick off and talk about different things we've learned from Rust and in cloud computing. So this all kind of started with an aha moment or maybe a couple of aha moments. I was doing a one-on-one with one of the people on our team, Brian. And we were kind of wandering around Boulder. This is summertime 2019. We had a couple cups of iced coffee and we were just kind of walking around talking. It was a couple of days before we all got together for an onsite. And as happens, you know, topic A led to topic B and all of a sudden we were talking about, hey, remember when assembly.js was going to be the next big thing? And we both sort of vowed to go off and look at this. Well, unbeknownst to us, other people on the team had accidentally stumbled on the WebAssembly world at the same time. And when we got together about a week later, we had this kind of brainstorming session, and we all sort of blurted out at the same time. Wouldn't it be fun to work on WebAssembly? And who's doing what with WebAssembly? And here's some ideas. And if you take a look at the WebAssembly ecosystem these days, there are really kind of two prongs of the cutting edge. There's the M script and JavaScript implementation. And then there's a whole bunch of work, much of which started out of Mozilla that's really oriented more around Rust. And so we kind of came to Rust. We'd all dabbled with it here and there. But really our first production endeavors with Rust all had to do with WebAssembly and Kubernetes. And that's kind of what got us originally started on it. But we feel really good about that selection. And here's why. Yeah. So really, these are kind of the overarching reasons why we picked Rust. And then we'll go a little bit deeper into all the things we discussed here. So first off, we have safety. If you're here at a Rust conference, you probably know that. But just to mention it, safety is a huge thing with Rust. And that was an excellent benefit that we picked up basically for free for using the language. The developer experience in Rust is quite amazing, which we'll also dive into. And like Matt mentioned, we have wasm support in it. Wasm support in Rust is probably one of the best of all the languages, at least for the site of wasm that's meant for the server side. And then there's an extensibility thing with Rust APIs that's just really elegant and beautiful, that has been very helpful as we've extended external APIs and also consumed other internal APIs, which we'll talk about here. Yeah. So oh yeah, I had something that really kind of transformed the way we did a lot of development, especially having come from go where the extensibility isn't quite at the same language level as it is in Rust. And that has been sort of a big and compelling reason why we've switched a lot of our development there. Rust is usually considered a system that's development language, but we've been using it almost exclusively on our team for cloud development and have found it to be very much a good fit. Cloud development, of course, is a type of system development, but often with a lot more emphasis on HTTP and networking and things like that, that our colleagues originally were saying, but why did you choose Rust for that? Wouldn't you just use language X or language Y?  Yeah. And so we really just wanted to talk about, that's what the first part of this talk is going to be about. We're going to kind of go over, well, how does Rust look in cloud native element? And then we're going to go into a very specific example of how we reverse engineered Kubelet and a bunch of Kubernetes things and show the different components of Rust that we used. So we're going to talk about this in good, bad, and ugly. And so let's go ahead and break into the good stuff. So one of the good things we love is traits. Traits are pretty much amazing. There's not really a better way to say that. They are flexible. They're expressive. We loved the conversion reference traits like the ones displayed here. So this is like from, try from, from string, deref, all those different traits because it allows just such flexible things compared to other interface types. We consider traits to be better than pretty much most other interface-style types because the type itself doesn't even have to implement an interface to be used as another type. Dref is really nice for picking up methods from underneath. It's just pretty awesome. This is an example from our Bindle project, which we won't talk about here, but it just allows us to pass in pretty much any type that can be parsed as a string and then a few others and convert it into our internal ID type, which is really, really powerful compared to other languages we've used. Yeah. And we really found that we were misusing traits originally, that we were thinking of traits more like go interfaces or Java interfaces. And Taylor put this one up here because I think this was representative of sort of his aha moment that traits were far more powerful if you thought about them from the Rust perspective instead of some of these others. And another feature that we've really liked that took us more than a few moments to realize how powerful it was, was enums. And here we've got an example from error handling and enums. Yeah. Now this error handling, I always have people ask, well, why don't you use just this error crate? This is actually using this error crate.  So I didn't want to include any more. But using some of the other crates and just leveraging these enums allow for really, really expressive errors. And so they're not just like single values, but they can carry associated data. So each variant can have different data structures like a discriminated union. And then you can work with these using pattern matching. So this pattern matching is converting some types over for us in a real code. And so we're able to make sure that we handle every single kind and get the data out all in one beautiful statement. I mean, you can read this coming from any language that you and you'll go like, oh, I see what this is doing. Like you might go, what's this unwrapper default? Or what's this? Like some of it might be weird, but like the basic structure of what it's doing is really, really elegant and powerful. And we see this all over the place. We've just kind of like Matt said, had this aha moment, like, wow, like you can use these for some amazing cases in particular errors. Now, macros. Let's just say we absolutely love macros. Now they writing them can be a little finicky, but we're not going to worry about that right now. Just be aware that that happens. We've learned that quite a bit. But macros are great for cloud development. Because there's so many times we're consuming externally. So seeing that this is a Kubernetes adjacent event right now, you probably know what a CRD is. If not, it's a custom resource definition, a hook into the Kubernetes API. In Go, even with all these other libraries that people have generated, you still have to auto generate code and commit code and have all these different things to make it work here. Literally, I have the data I care about specified, and then I can derive custom resource and pass it basically some configuration. And I automatically, when the things built, that code expands out to all the code needed implement.  It builds it correctly every time. You can also see this inheriting, not inheriting, that's the wrong word in Rust, but taking and deriving a JSON schema. So we're attaching a whole JSON schema to this object, basically for free. So this, as Matt and I were talking over this code sample, we realized that this block of code in Go, where you would generally write something like this, is probably at least 200 lines, if not more. And a lot of it is just committed or auto updated code. And this is 10. That is so powerful. We're deriving serialization, deserialization, and macros all do that for you for free. Yeah. And all the things that are being hidden from you here are things that we don't really, as developers, care all that much about. It's what would normally be boilerplate code. Another thing we really have enjoyed when it comes to reducing the number of lines of code that you have to write is the way you can do error handling and the way you do iterators in Rust. Again, this particular example probably would be 200, 300, 400 lines of Go code with lots of, with the cyclometric complexity of it would have been fairly deep because you'd have a lot of nested ifs and a lot of nested loops. And it's just so elegant to look at code like this and see everything sort of laid out, laid out linearly. And again, we find the readability of this to be very high. I remember Taylor, I don't think you liked this style at first. Has that changed? I, I still, it's sometimes can be a little bit hard to read, especially with these kinds of examples, but I have come around to really liking how some like just some of the magic that happens here, because this example in particular is doing a whole fan out fan in asynchronous compute task in 20 lines of code. So that is, that is really cool to see that happen. And so I know that it can be a little hard to read coming in, but like once you see how it's working, it starts becoming a lot clearer. Now dependency management. Okay, this is where we are, this is very high on our, on our very impressive list of Rust features. And we're gonna have to make a confession. We pretty much love cargo, like love it. It is flexible. It tells you exactly what's wrong when a version can't resolve. And it really, it's another thing that where we feel like it's completely changed how we look at dependency management. And this just shows some examples here, but you can patch in dependencies from other places. And these four show four different ways you can do stuff. So in the top example, we're pulling in only a very small portion of basically what's a big auto-generated open API spec. And we're just pulling in exactly what we need. We're not pulling in this massive code base and compiling it all in with the struct, with struct opt, we expose in Kressa an optional command line flag, which is what's shown below. If a user specifies it, it downloads all the command line management stuff and all these other structs are managing the ops. But if you're not, and you don't want to use a command line tool for it, you don't have to include it. The dependency doesn't get pulled down. The structs don't get compiled in, which is amazing. And then you can also do stuff like the bottom where you're pointing to a local path. So when you're local, it's going to use a local path, but when you push it up into crates, it uses the proper version. So I mean, these are just two examples, but we love cargo. And this is coming from people, we have both worked on multiple dependency management and package management systems like Helm and CNAB and Glide and things like that. And we just, we look at cargo and we're like, ah, this is just better than all of those things that we wrote. But I think the last thing we really wanted to highlight in the good one is the community. We found the rest community to be very open, very easy to work with, kind of exuberant about collaboration and improving the ecosystem in sort of a deliberate, rational and also good-hearted way. And while we don't, anything else you want to add to that before we go on? No, not really. That covers it. We do want to be honest and talk about the bad and the ugly. So we'll dive into this section, which admittedly is shorter and some of these things might surprise you. Others of them, I doubt they will. Yeah. So let's start off with docs and clarity. This is an interesting one that people go like, oh, I didn't really think about that. So a pattern that we've seen in lots of crate documentation, that's something to really be aware of as you consume things, especially if you're new to Rust and especially Rust with Cloud Native Development, is that the docs are sometimes very unclear about what is happening in the actual code. They describe the functionality well, but then you have to go digging through the code to find out whether it is a zero cost abstraction or if there's side effects. So like, is something flushing a file? Oftentimes, it doesn't tell you and I have to go down on the code and figure out what's going on. But you also get what's displayed here. So this is something from the tonic crate, which I'll talk about a little bit later. And as a new developer, when you come in and you see this code, you just go, what is going on here? And you click through, well, what's this make connection? And it's linking to another crate and another crate, which links to two more traits and another crate. And you're like, whoa, what am I supposed to implement here? Turns out all we needed was the little code snippet below, which is quite simple. But what had happened is there was an example in the examples directory of the, of the actual repo. But the first thought wasn't to go look there. Now granted, this is before they changed, they've updated these docs and it points to that new example. And it's great. But this is something we saw quite a bit of as we started things. So just remember to keep your docs clear as you write stuff and be aware that you might have to dig a little bit to understand what this is asking you to implement. Yeah, and we'll go a little bit faster through the remainder of the bad and ugly section so we can get to some of the more exciting stuff. But one of the things we did run into is that a lot of times when you're in a new ecosystem, you have to write more code yourself. There are many crates out there already, but sometimes we just don't find the things we need and we have to reimplement them either to glue different crates together or to, to provide an implementation that simply doesn't exist. Yeah. For example, here, GRPC on Windows, not GRPC sockets on Windows. So we're just going to skip over that unholy code and talk about the learning curve. The learning curve is something that people often mention, but what we want to point out is actually the learning curve, it is logarithmic. It just has a very steep initial curve and it flattens out, but there's one other little bump we ran into and that is how to design proper API. So that first example with traits was using try into. That was when I finally got it, but it took a lot of looking at other crates and understanding what was going on about what makes a good and flexible REST API. When you design them, users love them, but sometimes getting there is a bit of a hiccup. So with that, let's go into the ugly, which is just one thing. It's async. Now to be clear, I don't want, this is not bashing on async. I have worked with these people. I've talked to these people. They've started a working group. This is not that I'm just pointing out what you're going to run into in the cloud native space. And the first off is this competing and incompatible runtime. So you have multiple runtimes, Tokyo async standard, small, and it's possible to use interchangeable ones, but a lot of times once you buy into a stack, it kind of stuck there. You have a little bit of lock-in. It's not perfect and it depends on what you're doing. Sometimes there's shim layers that you can add in, but just keep that aware. Here we have our ugly code. I hope these code examples show you exactly what we're talking about, but there are so many chained calls. And that one on the left was one that we called move clone, move clone, move clone, move clone, because I mean, we know exactly where the date is going, but to make REST happy, we had to move something, then clone it, then move it again, then clone it, then move it again to make it so that it was all in the right place. And again, all this in context of async, right? Yes. All this is async, related to async. This is not outside of async. This doesn't happen, but something to be aware of. And then that also adds some cruft and bloat where you're re-implementing async methods for a type that's already async. I would be rich if I had money for every single time. I had to re-implement async read or write for a type that's async underneath the hood, but it's constantly getting better. So for this last part of our presentation, we wanted to switch and focus on sort of what happened when we decided we wanted to build this project, Crustlet. It was going to be a Kubernetes kubelet written in REST. And in kind of walking through the initial stages and then some of the things that caused us to have to really dive deeply into the underbelly of Kubernetes and how RESTs really has ended up making this a sort of, I don't know if I'd call it a pleasurable experience, but definitely one that was manageable by a little small team like ours that didn't require hundreds of engineers to be able to sort it out. When we first wrote Crustlet, we wrote a proof of concept, and the proof of concept was maybe a few hundred lines of code. That was all it took us to be able to take a very basic pod definition from Kubernetes, start up a WebAssembly runtime, and report back to Kubernetes, yeah, we're running this thing, here's the output. And so the proof of concept went well and was deceptively simple because we went, oh yeah, from here we got it. We're going to move on to a minimum viable product. We're going to get this thing to a 1.0 that people can actually use in production. And then it wasn't easy. Yeah, it really wasn't. So this is just kind of a list. I don't think it's even a complete list, but it's close of all like the worst things we ran into to try to figure out. We had to figure out the gRPC plug-in system. We had to figure out how to make state machines and controllers work in REST. There's also the idea of how does bootstrapping work underneath the hood, like what's the proper way to do it and exchange it and do it properly? There's things about how do we handle OCI image polling? What's the API that is expected of Kubelet for Kubernetes, and then the various Kubernetes subsystems, volume mounting, networking, what are we supposed to do? All of this became very, very hard. So let's dive into that a bit. First off, OCI image polls. This is just something where, like we mentioned, there's some gaps in the system sometimes. And so you just out here on the frontier have to do it yourself. So we partially re-implemented the OCI spec to be able to pull modules because we assume that even for our Wazen modules that we're using here, we assume they'd be stored in an OCI registry just like a container would. Now the API contract, this was interesting because there's no documentation here, which makes sense. It's not really like a public API many people consume, but it turns out there's two parts here. So if you're interested in the underlying internals of Kubelet, this is a great slide to go reference later, but there's these three endpoints that we see. And then there's also the duties of the Kubelet itself, which is watching for new pods, handle the entire pod lifecycle and resource management, and then updating the node status and heartbeat. So let's go into some code things that are right here that Matt already previewed. It's not necessarily documented what the duties are given the API endpoints. So a lot of this was going, okay, given this information, what are we going to do? And that's really where a lot of this code sort of came from. Yeah, and we can see actually some of the power of rest here. So right in this example, we see first off why generics, especially rust generic and trait system are so useful. We are allowing this to do a client that's a using the wonderful kube crate, which is the basically the official rest client for go for go. Wow. The first official rest client for Kubernetes, just like you have the client go. And in here, you can see it. It doesn't matter what type this is, this actually underlying type doesn't matter if it's a pod or a custom resource or whatever, as long as it implements a Kubernetes definition, this this code will work. But it also has the matching and unwrapping that we love that we talked about as well. And you'll see if inside we're going to now dive into the handle event thing where it actually is easy there as well. What we did have to do here and something to be aware of, especially with Kubernetes and probably a lot of other systems is we had to plumb the events through into our own system. So getting the events and starting essentially a reflector, if you're familiar with Kubernetes was really easy, like it was just that little snippet of code. But then we had to do the plumbing to kind of handle those events properly. But Rust still makes that easy because an event is expressed as an enum, which we mentioned before. And so this shows how we handle resyncs, shutdowns, and event dispatching all in a fairly concise function. Lastly, we have our patch status stuff. So this is how we patch, we also have to talk about Node, but for the actual managing the lifecycle of things, you have to patch the status of the pod. Now we're leveraging the awesome code crate again that allows us to do this patch status operation with pretty much an easy thing. We're just able to get out an API client and then we're able to talk to it and then unwrap that error. But one thing to know is that patching utilities for pods are non-existent and we had to write our own, which that JSON patch method is what's in our next slide, is that we have, we had to manually assemble the patch. Now this is easier for custom types, but we had to put the whole thing together. So something to be aware of is that you don't have those JSON patching methods that come kind of built in with some of the extended Kubernetes libraries and go. So just be aware of that when you're doing anything in Kubernetes or really anything in the cloud is that you might have to do some plumbing work just like here. And to finish up, we're going to leave what each of the functions do inside of here. But in case you're curious, what happens with a Node is that you update the lease and you have to update the status. There's two things that you do to keep it registered with the Kubernetes cluster. And all of this, we kind of had to go figure, okay, well, how long does it expect? Like, when is it expected to be updated? What's the documentation for this object? All those things. Another cool use of macros there too. Yes, where we wrote our own. So we have the GRPC plugin system. This, here there be monsters. I cannot stress this enough. So turns out to be able to enable OCI, sorry, not OCI, meant to be CSI support there. We needed to have some sort of plugin system available, which matches the one that Kubernetes expects. So the plugin manager, there's actually two of them. If you go look at the code underneath the hood, but one is only for device plugins and one handles other ones. So we implemented one of them that handles the CSI interface. There's no way to figure out how this works except by reading code. But what the cool part of all this was, and you'll see some of it is Rust shrunk the amount of code needed from several thousand. I mean, this is a gnarly thing with interfaces and indirection everywhere in the original Kubernetes thing. It's about 800 with tests, 300 without them. So, yeah. And just so you know, cross platform support for sockets is a nightmare, which we'll only cover briefly, but just wanted to mention. So this is big, I know, but if you, if you see here, this is the run. This is how we start things inside of the plugin manager. And it watches a configured plugin directory for new sockets to appear. And when it discovers them, it tries to register them. But we can see here some good examples of using iterators to run multiple futures at the same time again and how to consume a stream. So we're able to just take these, turn them into an async object that just returns something every time it detects it. So there's nothing super crazy here with Rust, but instead of having to do all this other channel management stuff that you saw in the go one, it's really concise. We shrunk it down to a single thing that runs it all. And then we have this handle create thing that actually does the creation when it sees the creation of a new plugin. And these are the actual steps that are performed in case you're curious. I tried to include some stuff in here that people can go back and look at. When I say, as we looked and we created these, these samples, and this is the exact process that goes on underneath the hood in case you're curious. But more interestingly, in the next slide is we have what actually goes on underneath with watching the file system. So this is where things get really exciting. So this is a demonstration of the awesomeness of conditional compilation, which I mean, isn't we've run into several times, I think, at this point, right, Matt? Yep, all over the place. And this shows off another useful create called notify. And we've also wanted to kind of show the crates that we're consuming here. And notify is the thing that tells you when something changes on the file system. It uses the proper underlying utilities to do it. But it's not async by default. So we had to do some wrapping and adapt adaptation into a stream interface that receives a result out, which is what we're doing here. But you can see that we actually had to do a hacky workaround for Mac OS. It turns out that the underlying libraries in Mac do not detect when a socket is created, only when it's modified, which I opened a bug for in case you're ever curious about that. But we had to basically write our own hacky version for Mac. But now, instead of having to include that everywhere, we have specific versions that are called depending on the operating system. So if it's a Mac OS target, it uses the hack. Otherwise, it uses the great notify create that gives us all this with the proper way and not hacky. All right. Now we're up to my very favorite slide because this replaces tens of thousands of lines of code that's auto-generated. Yes. We love the build RS. So one of the things, this is first, I mentioned this earlier about the tonic rate. So tonic is a gRPC library for Rust. If you haven't used it, like we use gRPC libraries and interfaces all the time in the cloud native space, not just in Kubernetes, but everywhere. And so this is something you'll likely run into no matter what you're writing for the cloud. And it's awesome. This is 10 lines. And it takes the protobuf definition and builds. You can tweak how you want to build. It builds everything.  There's no auto-generated client. It is generating code underneath the hood. But because of the use of macros plus the build file, you're able to just have it be built at runtime and have it included, which is awesome. I mean, we just get souped. This is where we nerd out about it. In contrast, the typical Go repository that does the same thing includes dozens, if not hundreds of files that you have to remember to manually auto-generate and keep in sync with your protobuf definitions. And it's all incumbent on the developer to do the auto-generation. And then all that code gets checked in. And then every time somebody goes to your source code repo, they have to read through all of that. We just love the fact that this hides all of this stuff from the developer. And we don't have to see those ugly auto-generated files and can just use the protobuf definitions. Now, last off, this will be pretty quick because there's actually going to be a talk on all of this by one of our fellow co-maintenors of Cresslet at this same conference. He's going to talk more about it. But we had to discover how to do controllers and state machines inside of Rust. Now, Kubernetes is best represented by a state machine. But actually under the hood, it doesn't really do a very traditional state machine, if we're being honest, based on all the code I was reading for. It is still a state machine, but kind of a little bit different. And we were taking something that had a very established pattern and go and doing an entirely different language and was difficult because we had to combine this Kubernetes way with the Rust way. And our fellow maintainer Kevin will talk about that more. But when we combined all this, we created something called Crater, which is an operator create for Kubernetes. And this took a whole bunch, this took several false starts in different versions. And it took about three months of us just like building on other people's work and trying things again and again. And the ending API is actually quite flexible, which I'll show right now. We have, this one's the most simple thing where it basically does nothing, but you have to implement two methods. If you wanted to use the same kind of state machine pattern in something not Kubernetes, you can just take away the status one and you just have this next method that does work. And so that's the simplest example. Now, the next one is actually a more complex example, as you can see a lot longer, but it shows how to, how it's, what happens when a pod is running inside a presslet. And there are multiple things that happen, but you're able to pass state around and just go next. And you'll see at the very top, there's a, there's this derive transition to. So we wrote a derive macro that allows you to put on a transition automatically to a struct and make sure that it is compile time checked. If you don't have the proper things in place, it'll tell you that your state machine is invalid, which is incredibly powerful. Cause then you're not accidentally checking, like checking in something that you think works, but there's a missing edge in your graph essentially. So that's pretty much the stuff we learned from, from Kubernetes. Yeah. And this has been a very pleasurable journey for us as we've done this. And we've learned a lot about Rust, a lot about Kubernetes. Of course, we're really invested in the WebAssembly space. So if you're around for WebAssembly day, take a look at some of the stuff there as well. But we wanted to end up with a couple of, with a slide with a couple of resources. Of course, Kevin's talk on Crater is also in Rust Day today. So we encourage you to watch that one. And then here are several links that will give you some reading material. If you'd like to catch up on how we did the state machine, that the good, the bad, the ugly section we went through there, written version of that, or is that the slides? I don't remember if that's written version. That's okay. And then, then of course, the async code that was our only entry in the ugly. There's a lot of work going on there. And we're really excited about the work and looking forward to the future of Rust, because we know that it's just a matter of time before everything sort of falls into place and gets it right. But there's a place you can go and take a look at, at what everyone is working on, on the cutting edge of that. Anything else to add? No, I think that's it. Thank you, everyone, for listening to this. Hopefully it was helpful, gave you some good starting points. Feel free to reach out to me or Matt any time where we love talking about this, and we can pass on any knowledge. Thank you very much. Bye.


The Jack Benny program transcribed and presented by Lucky Strike. Lucky, taste better! We find the tobacco cleaner, fresher, smoother, luckier, luckier, luckier, luckier, luckier, lucky strike, we find the tobacco, lucky strike, we find the tobacco cleaner, fresher, smoother, better get a carton, better get a carton, better get a carton today! Hello friends, this is Don Wilson. You know that college cheer represents a lot of smoking cheer on campuses all over the country. Yes, indeed. Because the nationwide survey based on actual student interviews in 80 leading colleges reveals that more smokers in these colleges prefer luckies than any other cigarette. But that's not all. The survey also shows luckies gain far more smokers than the nation's two other principal brands combined. More important still, the reason most often given by students for smoking luckies was Lucky's better taste. Yes, luckies do taste better because LS, MFT, Lucky Strike means fine tobacco, fine, mild, good tasting tobacco. And luckies are made better, made round and firm and fully packed to taste cleaner, fresher, smoother. So make your next carton Lucky Strike and you'll agree, Lucky's better taste is something to cheer about. Lucky Strike means fine tobacco, Lucky Strike means fine tobacco, cleaner, fresher, smoother, smoother. Better get a carton, better get a carton, better get a carton today. The Lucky Strike program starring Jack Benny with Mary Livingston, Rochester, Dennis Day, Bob Crosby, the sportsman quartet and yours truly, Don Wilson. Ladies and gentlemen, it's morning in Beverly Hills and as we look in on the Benny household, we find Jack just entering the kitchen. Hmm, Rochester must have overslept again. I'll go wake him up and have him fix my breakfast. I don't know why it is, but every time I give him a day off, the next morning he oversleeps. It's the second time that's happened this year. Oh well, I might as well let him sleep and fix breakfast myself. Now let's see, where does Rochester keep the coffee? I'll try this cupboard here.  I'll try this one. Now, this one's filled with ideal dog food too. Maybe it's in this cupboard. Hmm, more ideal dog food. There's no doubt about it, I'll either have to get a dog or stop mentioning that stuff on my program. Well, I can't find the coffee, I'll just have to wake Rochester. Rochester, it's time to get up. Rochester, Rochester, get up. I'll take this feather duster and tickle his chin. Honey, it's your got a long eye, ladies. Rochester, get up. Do you, Mr. Benny? Yes, it's me, honey, and I want my breakfast. Boss, I'm sorry you woke me up when you did. I was having the most wonderful dream. I know, you were dreaming about a girl. Yeah, we were going to get married and you offered me a fifty dollar raise. I offered you a fifty dollar raise?  That's the third time it's happened.   It was just a coincidence. Anyway, I'll answer the door, Rochester, you get dressed to make my breakfast. Yes, sir. Hello, Polly. Oh, you're still sulking, huh, Polly? Coming, coming. Hello, Jack. Oh, Mary, come on in. I was just talking to your neighbors, the Coleman's. Oh, Ronnie and Benita? Yes, I passed their house. Benita was sweeping the porch and Ronnie was cleaning the windows. Benita and Ronnie were doing their own housework? Yes, they told me their butler quit. Their butler quit, why?  He'll be back, he's run away before, you know. Oh, hello, Polly. Come on, Polly. Speak, speak. Jack, what have you been feeding this bird? It wasn't my fault, Mary. She happened to find a can opener. What? Nothing, nothing. Come in. Oh, hello, Dennis. Hello, Mr. Benny. Hello, Mary. Hi, Dennis. What are you doing around here? Oh, I'm thinking of moving. I've been looking at houses all day. Oh, you want to buy a house? Yeah. How much would you take for this one?  My house isn't for sale. I know, but if it were for sale, how much would you take? Well, hey, let me see. See, it's in the best part of Beverly Hills and I have an acre of land, 12 rooms, a swimming pool. Oh, I'd ask about $100,000. I wouldn't have this dump if you gave it to me. Look, Dennis, I don't want any trouble with you. You asked me how much my house was worth. I told you $100,000. Does the price include the Venetian blinds? Yes, also the drapes and the carpets. Anyway, Dennis, what's wrong with the house you're living in now? You just moved in. I know, but it's too inconvenient. Inconvenient? Yeah, in order to get to the bedroom, you have to go through the furnace. Well, that I don't understand at all. Dennis, what kind of a house are you looking for? Oh, sort of a ranch house, you know, everything on one floor. How many rooms? Well, I'd like two bedrooms, a den, a living room, and a kitchen. How about a bath? No thanks, I had one this morning. Why do I always get trapped into these things? Mary talks to him, she gets a sensible answer. I ask a sensible question. What do I get? Abbott and Costello. Dennis, are you just looking for a house in Beverly Hills? No, they're so hard to find. I've been looking everywhere. Hollywood, Burbank, Encino, Brentwood, but I haven't been able to find one. Really? So now I'm going to try and find a house in Washington, D.C. Washington, D.C.? Dennis, why in the world would you... No, no, no, Mary, no. Mary, no. Huh? Look, it's bad enough that he traps me. I'm not going to let him make a fool out of you. Dennis, let me hear the song you're going to do on this week's program. Yes, sir. But, Jack, I want to know why in the world he would go to Washington, D.C. to... Mary, please, I'm doing this for your own good. Sing, Dennis. Okay. Now, don't ask any questions. Mr. Benny, Mr. Benny. Huh? Did you like my song? Oh, yes. Oh, yes, kid, I'm sorry. I was thinking of something else. Well, I got to go look for a house now. Goodbye, Mary. Bye. Goodbye, Mr. Benny. Huh? Oh. Oh, goodbye, Dennis. What are you thinking about? Well, I wanted to ask Dennis. No, no, I'm glad I didn't. Oh, I can't stand it anymore. I've got to do it. Dennis, Dennis, come back here. Oh, yes, Mr. Benny. Dennis, what makes you think you can find a house in Washington, D.C.? Eisenhower did. No, no! That's me. I couldn't let well enough alone. I've got to be running along, too. I couldn't stand it. I've got to be running along, too. By the way, don't forget to send a wire congratulating Amos and Andy on their 10,000 broadcasts. I did. Imagine Amos and Andy, their 10,000 broadcasts. Say, Mary, haven't I been on the air that long? No, Jack, it just seems that way. I had asked for your information. There's the phone. Excuse me a minute. Well, I've got to be running along. Okay, goodbye. Hello? Hi, Jack. Who's this? Bob Crosby. Oh, hello, Bob. I didn't recognize your boys. What is it? Well, I'm having a few of the boys over for a friendly game of poker tonight, and I thought maybe you'd like to join us. Well, what stakes do you play for? Five and 10. Five and 10? That's a little too steep for me. Oh, no, no, Jack, not five and 10 dollars, five and 10 cents. Well, that's what I thought you meant. Well, Bob, who's going to be in the game? Well, just some of the musicians, Jack. We've got Bagby, Fletcher, Remly, Sammy the drummer, Kimmick, and Arturo Toscanini. Arturo Toscanini? Do you mean... Oh, no, this is another one. He slaps a bass for Wingy Mino. Oh, it confuses everybody. Well, I should imagine, huh? Well, how about it, Jack? Could you come on over tonight? Well, I don't know, Bob. I might drop around for some laughs, you know. Oh, that's well. We'll be playing out by the pool. We'll all be in our swimming trunks. Wait a minute, Bob. Won't the boys be cold and nothing but trunks? Yeah, but they won't play. They won't play cards with each other, wearing anything that has pockets or sleeves. You've caught on to these guys already, haven't you? You're not kidding. Well, Bob, maybe I'll drop over, even if it's just for a laugh. Okay, I'll see you later. Bye. So long, Bob. Oh, say, Jack, what goes with Dennis Day? What do you mean? Well, he was over to see me last night. He wants to buy my house. Did he offer you a good price? Yeah, but I turned it down. Why? Well, he wanted me to include my Venetian blinds, rapes, and children. What a kid. So long, Bob. Bye, Jack.  Say, boss, I've got your breakfast ready. Bring it in the den. I might sit around for a while and read. Okay. I don't know, these days with radio and television, I haven't been reading very much. A lot of good books here, too. Let's see, here's one. The Spice of Variety, edited by Abel Green. Out of the Blue by John Crosby. He's the radio columnist. Spindletop by James Clark. Oh, here's a new book that just came out. That's what I like about the South. By Dwight Eisenhower. Here's another. It takes all kinds by Maurice Zalotto. Oh, here's, let's see this one. The Cosmic Effects of Nuclear Fission on Psychological Aberrations. Oh yes, that was given to me for Christmas by Frank Remley. Let's see, I don't know what book to read. Oh, here's one. The Purple Pirate. Gee, that ought to be good. So many pirate pictures out now. Yankee Buccaneer, The Crimson Pirate, The Golden Hawk. I think I'll read this one. The Purple Pirate, Chapter One. I am a pirate. My name is Captain Morgan. As my story opens, we had been at sea almost a year. My ship had just captured a rich prize. A schooner, homeward bound from the Orient and laden with cargo. We transferred her cargo to our hold and the crew lined the rail and watched as we prepared to send the captured vessel to the bottom. All right, gunners. We're gonna sink her. Player. She's sinking fast, Captain. Good. Tell me, Red Robert, did we get much booty? It was a rich haul, Captain. 100 bolts of silk, 50 barrels of rare spices, 10 sacks filled with gold and four cases of ideal dog food. Fine. My supply was running low. That isn't all the loot, sir. Small sack of diamonds, some rubies, and best of all, a woman's dress. A woman's dress? What's so wonderful about that? Oh, you ought to see what's in it. You mean we've captured a woman? Yes, sir, and we also captured the captain of that ship. Good. Bring him to me. Aye, aye, sir. In a few minutes, both the captain and the girl were standing before me. I looked them over very carefully for a long time. Finally, I spoke. Which one of you is the captain? He is, of course. There was no doubt about it. I'd been away from land too long. As I stood there, the schooner's gruff captain turned to me and spoke. Are you the captain of these pirates? Yes. Are you responsible for blowing my ship to bits? Yes. Did you make some of my men walk the plank? Yes. Did you hang all the rest of them? Yes. Do you think that was nice? No. Next time. I sent him below, then I turned my attention to the girl. She was wearing a tight skirt, a yellow sweater, and a large button that said, I like Louie the 14th. As she stood before me, I remembered the superstition of the sea. A woman aboard a pirate ship is an omen of bad luck. I was in a predicament. Should I keep her aboard in risk mutiny or make her walk the plank? I decided to flip a coin. Head, she stays. Tail, she walks the plank. What is your name, my pretty wench? Marie Antoinette, Crestview 7, 3808. What? If a man answers, it's my sister Babe. I haven't! The crew was so happy over the rich prize we had captured, they didn't mind a woman being aboard. And that evening as we sailed the Cropical Sea near the full moon, they even gathered around the quarter deck and began to sing. We're a motley scurvy crew and the ships we've sunk are many but the bravest one is true is our gallant Captain Benny. He likes to fight or rump us he'll even box the compass for fun he likes to dump us in the ocean blue. We're like an LSMFT for it's a favorite smoke and sea whose praise a sailor loudly chants and so do his sisters and his cousins and his aunts but first he will tear them and compare them and he'll share them with his sisters and his cousins and his aunts. We would rather have a lucky strike than a solid gold marlin spike we will stick to luckies and take no chance and so will our sisters and our cousins and our aunts we all think luckies are really great and so does the captain and the boss and then the maid. We'd rather have them than pieces of bait so would our uncle and our brother and our mother and our mother always seem to want another lucky strike. We'd scarring the sea and then our luck went bad we sighted no more ships our supplies ran low the men were in a mutinous mood they became surly and refused to obey orders and then suddenly we were attacked by the most ruthless of all French pirates Dennis Lafitte. Red Robert get the men to their battle station. Aye aye sir, Bagby, Remly, Fletcher, Kimmich, man your guns. Hmm. It's no use captain, it's no use. The men are revolting. Would you repeat that? Hurt hadn't been with us long or he never would have thrown a feed line like that. The battle went badly and we suffered heavy casualties. Finally to save lives I decided to surrender. I grabbed a white flag and started to wave it. Hey give me those bags. I'm sorry miss but this is no time to be doing your laundry. We were taken prisoner and immediately locked in the dark hold of the ship for three days we didn't see our cruel captor. Dennis Lafitte didn't kill his prisoners by making them walk the plank. Oh no, he was too cruel for that.  This wasn't so bad but the men behind you with those darts were murdered. Finally on the fourth day he ordered me and the girl to be brought to him as we stood trembling before Lafitte the terror of the seven seas. He said You and the presence of the great Lafitte kneel you pig. Yes sir. Good now you kneel too. Yes sir. I'd love to play as a leap frog. What are your plans for us Lafitte? You had to ask me. What are your plans for us Lafitte?  Well I'll join you. Do I still retain my rank as captain? Captain.  A slave? I'd rather die first. You don't know us Englishmen very well.   You don't know us Frenchmen very well. What? I shall marry the girl and make her the pilot queen. She will be my wife, my sweetheart. And now I kiss her. She'd rather die first. You keep out of it. I was in a predicament. Either I became Lafitte's slave or I walked the plank. I didn't know what. I didn't know what. Right. Dorba's right in the most interesting part. I can't even read a book around here. Rochester. Oh darn it. Coming. Coming. Mr. Benny. Yes. I'm from Beacon's Van and Storage Company. We got two truckloads to unload here. Furniture? No, I deal dog food. Well put it in the swimming pool. The garage is full. Friends every minute, day and night your fire starts. And in nine out of ten cases, most fire start because someone was careless. Don't let that someone be you. Be sure your electrical wiring is properly installed. Put cigarettes and matches out before you discard them. Be on guard constantly against fire. Remember only you can prevent fire. Jack will be back in just a moment. The first. Lucky. He's striking spine. He's striking spine. He's striking cleaner. He's striking spine. He's striking spine. He's striking cleaner. Better get a carton. You know friends it's only natural for lucky smokers to be enthusiastic about the cigarette that tastes so much better. And luckies do taste better. That's because L.S.M.F.T. Lucky strike means fine tobacco. Fine, mild and naturally good tasting tobacco. What's more, you enjoy the full flavor of that fine tobacco because luckies are packed full and firm. Made better in every way to taste cleaner, pressure, smoother. No wonder so many college students are voicing their preference for luckies. Remember a nationwide survey in 80 leading colleges based on actual student interviews reveals that more smokers in these colleges prefer luckies than any other cigarette. And remember that luckies gain far more smokers than the nations two other principal brands combine. But most of all remember the number one reason the students gave for smoking luckies. Better taste. So friends, get the better taste that only fine tobacco and a better made cigarette can give you. Be happy. Go lucky. Make your next carton Lucky strike. Be happy. Go lucky. Go lucky strike today. Ladies and gentlemen I want to congratulate my good friends Freeman Goson and Charlie Carell better known to the entire world as Amos and Andy for today are celebrating their 10,000 radio broadcasts. Man, they must be loaded. Good night, folks. Jack Benny program is written by Sam Perron, Milk Josephsburg, George Balzer, John Packaberry and produced and transcribed by Hilliard Marks. Jack Benny program is brought to you by Lucky Strike, product of the American Tobacco Company, America's leading manufacturer of cigarettes. Now stay tuned for the Amos and Andy show which follows immediately on the CBS Radio Network. Thank you. Thank you. Thank you.


To top off the expanded color spaces, we now also have a new platform feature called Color Mix. Color Mix supports the mixing of two color values to create new values based on the channels of the colors getting mixed. The color space in which you mix affects the results. Working in a more perceptual color space like OKLCH will run through a different color range than something like SRGB. And a big win for Color Mix solves a long request capability, the ability to preserve opaque color values while adding some transparency to them. Now you can use your brand color variables while creating variations of those colors at different opacities. The way to do this is to mix the color with transparent. When you mix your brand color blue with 10% transparent, you get a 90% opaque brand color. You can see how this enables you to quickly build color systems. And you can see this in action in Chrome Dev Tools today with a really nice little preview Venn diagram icon.


If you want to be used by God in any capacity, you're going to need to learn to deal with criticism and slander. God's favor attracts jealousy and invites attacks. So I want to give you three biblical keys that will help you to keep your focus, your joy, and your peace in times of testing. So this message is for those who are in ministry or who feel called to ministry.   Expect it. This is what the Bible says in John 15 verse 20. Do you remember what I told you? A slave is not greater than the master.  And if they had listened to me, they would listen to you. Look, I've seen people in ministry lose their minds, their peace, their focus just because they didn't know how to handle criticism and slander. When criticism and slander came against them, they lost their minds, they lost their character. It changed their preaching, their bitterness seeped into their messages.  So I'm going to give you three biblical keys to dealing with criticism and slander. Here's key number one. Pray for your critics. This is so important because it helps to humanize those who are coming against you. And as your heart becomes softened to them as individuals, you're able to see things clearer and from God's perspective. Now, it's important at this point to note that there's a difference between slander and criticism. And you deal with these two in slightly different ways. Slander is deceptive communication that presents your motives, words and actions in a dishonest and negative way. On the other hand, criticism is opposition to something you teach or represent or a certain method that you use. Here's an example of slander. Well, the pastor didn't shake my hand today and because he didn't shake my hand, that proves that he's arrogant and prideful and he needs to repent of his arrogance and pride. Okay, that's slander because they're taking an instance and then interpreting it through their bitterness and spinning it in a negative light. Now, criticism is different. Criticism would be something like, well, I don't agree with his stance on tongues and here's why I don't agree with his stance on tongues or I don't agree with his stance on the doctrine of healing and here's why I disagree with his stance on the doctrine of healing. Someone who slanders is usually a bitter person who is gifted at playing the victim and putting a negative spin on whatever you do or say. On the other hand, someone who criticizes disagrees with something you teach or dislikes a certain method you use. Pray for those who slander you because they are broken and spiritually immature. Pray for those who criticize you because they need to realize they're attacking fellow believers. Matthew 544 says, but I say love your enemies. Pray for those who persecute you. Now, is slander persecution? Is criticism persecution? Absolutely. You see, there are different levels to persecution. The lowest form of persecution is when someone speaks against you. Now, even though it's the lowest form of persecution doesn't mean that it's not persecution at all. Yes, when you are being slandered, when someone is criticizing you unnecessarily or unfairly, that is a form of persecution, especially since you're doing something for God. So, something happens in your heart when you begin to pray for those who come against you. You pray blessings on them, healing for them. Pray that God would bless their families. Pray that God would bless their mind, their emotions. Pray that God would give them greater revelation. Pray that God would let them know joy and peace. And in doing this, you're actually helping to align them with the will of God will simultaneously guarding your heart. When you can pray for those who slander you, when you can pray for those who criticize you, it places compassion in your heart for them. And when you see them from the perspective of compassion, it changes your whole perspective and it stops your peace from being taken from them. When someone comes against you and starts criticizing you, it's easy to become obsessed with it, to become emotional about it, to become worried about it, but when you start to pray for them, that's where the transformation begins to take place within you. And to some degree, when you pray for your critics, you almost gain this strange respect for them because you begin to realize, well, they're just doing what they believe is the right thing. But the slanderers, you gain compassion for them because you realize their slander is coming from the place of a victim mindset and hurt and bitterness and spiritual immaturity.   Forgive, let it go and move on. Now, here's key number two. This is going to be a very difficult one to do, but it's necessary. Key number two, stay silent. Don't say a word. Now, let me balance this real briefly. Yes, there are times when you need to address certain criticisms and certain forms of slander. There are times when that's necessary, but 99.9% of the time when you are being criticized, when you are being slandered, don't say a word. Now, when I first started in ministry, it was very different for me. These days, when people criticize me or slander me or make a video about me or we've had people even protesting outside of our services with signs saying that I'm not of God, nowadays, I can laugh it off because I realize it's not going to do anything. But when I first started in ministry, oh my goodness, I thought I had to answer every critic. I thought I had to find them and explain it to them. I thought I had to give an answer for every question that was raised against me. And I would feel trapped. I would feel like, well, if I stay silent, people are going to believe them.  And so I felt like I was trapped in this place. And it wasn't always the slander that hurt me. You see, it wasn't just the slander that would get to me. And in your case, it will be something similar. It's not the slander that gets to you. It's the fact that people believe the slander simply because it was spoken. People who should know better, people who followed you for a long time, people who understand who you really are. They can hear slander and then they start going, oh my goodness, well, I never knew that about them. Or I never saw them from that perspective. Well, I never disagreed with that point, but you bring up an interesting point. And that's where things can really become emotional. Now, as I said, when I first started in ministry, that was a struggle for me. These days, I just recognize sometimes people are just going to believe slander. Sometimes people are just going to believe criticism. Sometimes people are just going to be against you just by what someone else says. And that's okay. Let it be so.  Here are reasons why you should remain silent. Number one, because some people enjoy arguing with you. Don't wrestle with pigs. There's a quote that goes like this. Never wrestle with a pig.  You might sipper the David. That's rather harsh, isn't it? Well, here's what the Bible says, Matthew 7-6. Don't waste what is holy on people who are unholy.  They will trample the pearls, then turn and attack you. I remember I was speaking on the phone with a powerful man of God who was being heavily criticized in the media. He called me and was just sort of venting and we were talking back and forth. And he said something I'll never forget. He said, if I respond and try to take matters into my own hands, the Lord won't. If you defend yourself, God won't.  So that's number one.  It's almost like fighting with quicksand. Every move is just going to pull you in deeper. Number two, stay silent because your words will be used against you. Here's an interesting portion of scriptures found in Proverbs chapter 26 verses four and five.  Be sure to answer the foolish argument of fools or they will become wise in their own estimation. Now this verse isn't contradicting itself. This portion of scripture isn't speaking against itself. Rather, what the scripture is saying here is either way, there's nothing you can do. A fool who speaks against you, if you argue with them, you're just vindicating them. You're validating what they're saying. You're bringing some legitimacy to their argument. If you stay silent, they think, aha, I got them.  So you might as well just leave it alone. For some, no explanation is needed. For others, no explanation is good enough. Some people are just committed to misunderstanding and hating you. As I said, it's like trying to fight quicksand. Every punch, every kick just pulls you in deeper and your words are used against you.   If you try to explain yourself, they'll say you're manipulating. At least if you stay silent, they aren't given anything new to spin. The other reason you should be silent is because the Holy Spirit is classy and the pulpit is sacred. Colossians 3 2 says, think about the things of heaven, not the things of earth. How does an airplane avoid turbulence? It just adjusts its altitude. Whenever there's turbulence around you, don't try to engage. Just adjust your altitude. Go to higher places. Don't get involved in drama. Don't get involved in the arguments. You're building a ministry. When you go to defend yourself for the most part, it's about ego. When you go to argue for your doctrines for the most part, it's about ego. There's this whole side of the internet that's very toxic, that's very unhealthy spiritually, that's filled with people who are ego centered, immature believers who love to argue and make videos about each other and attack one another and it's back and forth and no one ever really wins. Don't be involved with that. You must stay silent because the Holy Spirit is classy and the pulpit is sacred. Protect that pulpit. Don't pollute that pulpit by using it as a platform to engage in drama. Don't sink to that level. You should also be silent. Hear this one. You should also be silent because it's a test of your character. Matthew 26, 62 through 63 says, then the high priest stood up and said to Jesus, well, aren't you going to answer these charges? What do you have to say for yourself? But Jesus remained silent. Silence is a test of your character. Now, please hear me now. Don't even respond in subtle ways. I've seen it done sometimes where when someone's being criticized, they'll very subtly respond to their critics. They'll say, you know, well, even though some people are against me, God is for me.  Don't even respond in subtle ways. Let it be. Don't use underhanded comments. Don't use underhanded posts on Facebook about some random individuals who may not even be seeing it. Don't attack. Stay silent. It is a test of your character. Don't hint at responses. Don't try to defend yourself. Don't try to explain yourself. Just leave it alone. And if you do that, by the way, they'll just say you're being manipulative. They'll say, see, they're not humbling themselves. They're not doing what they ought to do. And then you just get entangled in all of these things. So say it with me. Stay silent as difficult as it is. As hard as it is to watch others responding to the criticism, gasping and going, I had no idea or, oh my goodness, that's true. I do disagree with them. No matter how difficult that is, just stay silent. And number three, a key to dealing with slander and criticism. Remember that God is for you. Romans 8 verse 31 says this, What shall we say about such wonderful things as these? If God is for us, who can ever be against us? No weapon formed against you will prosper, but the weapons will be formed. Your ship may take on water and damage, but your ship is not going to sink. See, that's what can be so emotionally and mentally disturbing about going through seasons of criticism and slander is because slander and criticism do in some cases actually cause damage. People do take to the criticisms. People do take to the slander. People will turn on you because of criticism and slander. That's just a fact. You're going to have to deal with it. And it's because of moments like those that you become concerned, that you begin to possibly lose your peace.  You start to become bitter.  Though the storms may rage, though the water may be taken on in the ship, though there may be some damage, you will not sink. Yes, people will come against you. Yes, people will attack you. And yes, people will believe and side with those attacks. But so long as you remember that God is on your side, you'll have perfect peace. So let's recap. Number one, dealing with criticism and slander. Pray for your critics. Number two, stay silent. Stay silent. Stay silent. It's a test of your character. It's a difficult discipline. And number three, remember that God is for you. So Father, I pray that you would help us to remember that you are for us. Thank you, Lord, for the privilege of serving in your ministry. And I pray, Lord, that you would strengthen that one watching now. Give them the strength in times of slander and criticism. And Lord, give them the grace and the discipline to remain silent as you did. And help us to remember, Father, that if you're for us, no one can be against us. Thank you, Lord, for fighting my battles. I want you to write that in the comment section right now. Say thank you, Lord, for fighting my battles. And he truly is fighting your battles. Hey, if you love this ministry, you believe in what we're doing and you want to help us continue to reach the world through events and media, then consider becoming a monthly ministry partner for $10 a month. Just go to DavidHernandezMinistries.com slash partner for more information. Also, I encourage you, if you enjoyed this message, don't forget to like, to comment, to share, and subscribe to EncounterTV, the Holy Spirit's channel. I know you'll be blessed. And until next time, remember, nothing is impossible with God.


Hello friends, let's discuss the following question. It says find the value of k for which the line k minus 3x minus 4 minus k square y plus k square minus 7k plus 6 is equal to 0 is a parallel to x axis v parallel to y axis c passing through origin. So we have to find the value of k in these three cases. Let us now move on to the solution and let us discuss the case one when line is parallel to x axis. When line is parallel to x axis then the coefficient of x is 0 because this is the line which is parallel to x axis and here say this distance is a. So this is the line y is equal to a and here the coefficient of x is 0. So this implies coefficient of x. So the given line to x minus 4 minus k square y plus k square minus 7k plus 6 is equal to 0 is parallel to x axis. This implies coefficient of x is 0 that is k minus 3 is equal to 0 and this implies k is equal to 3. Let us now discuss the second case when line is parallel to y axis. When line is parallel to y axis then the coefficient of y is 0 because if this distance is a then this is the line x is equal to a and here coefficient of y is 0. Now in this line coefficient of y is minus 4 minus k square and this is equal to 0 and this implies 4 minus k square is equal to 0 which again implies k square is equal to 4 and this implies k is equal to plus minus 2. Let us now discuss the case when line passing through origin. So if line passes through the origin the 0.00 satisfies the equation of line that is x is equal to 0, y is equal to 0 satisfies the equation of the line. So the given line k minus 3x minus 4 minus k square y plus k square minus 7k plus 6 is equal to 0 passes through origin that is it passes from 0 0. So this implies the 0.00 satisfies this equation so we have k minus 3 into 0 minus 4 minus k square into 0 plus k square minus 7k plus 6 is equal to 0 and this implies k square minus 7k plus 6 is equal to 0. Now we solve this quadratic equation for k. Let us now factorize this equation so it is k square minus 6k minus k plus 6 is equal to 0 taking k common from first two terms we have k into k minus 6 and taking minus 1 common from the last two terms we have minus 1 into k minus 6 is equal to 0. Now taking k minus 6 common we have k minus 6 into k minus 1 is equal to 0 and this implies k is equal to 6 or k is equal to 1. Hence in first case when line is parallel to x axis k is equal to 3 and in the second case when line is parallel to y axis k is equal to plus minus 2 and in the third case when line passes through origin k is equal to 6 or 1. So that is all for this session. Goodbye and take care.


From Orlando, Florida, it's theCUBE. Covering Sapphire Now, headlines sponsored by SAP HANA Cloud, the leader in platform as a service. With support from Console Inc, the cloud internet company. Now, here are your hosts, John Furrier and Peter Burris. Hey, welcome back everyone. We are here live at SAP Sapphire in Orlando, Florida. This is theCUBE. SiliconANGLE Media's flagship program. We go out to the events and extract the signal from the noise. I'm John Furrier with my co-host Peter Burris. Our next guest is Matt Hayes, VP of SAP Business at Attunity. Welcome to theCUBE. Thank you, thank you so much. So great to have you on to get the update on Attunity. You've been on theCUBE many times. You guys have been great supporters of theCUBE. Appreciate that, and I want to get the update. So obviously, Atunity, talk about big data. HANA is a big data machine. It does a lot of things fast. Certainly, analytics is being talked about here. But how do you guys fit in with SAP? What's your role here? How does it fit? How do you guys fit? Well, I think this is our ninth or 10th time here at Sapphire. We've been in the ecosystem for quite some time. Our goal client solution is really designed to help SAP customers move data from production to non-production systems and now more throughout the landscape or the enterprise even. So as SAP's evolved, we've evolved with SAP and a lot of our customers get a lot of value by taking real live production data out of their production system and moving that to non-production systems, training, sandbox, test environments. Some customers use it for troubleshooting. You know, you have a problem with some data in production. You can bring that into a non-production system and test that and some scrambling capabilities as well. Most SAP customers have a lot of risk if they're copying the production data into non-production systems that are less secure, less regulated. So some of the data scrambling or obfuscation techniques that we have make it so that that data can safely go into those non-production systems and be protected. What's been your evolution? Obviously you mentioned you guys been evolving with SAP. So what is the current evolution? What's the highlight? What's the focus? So obviously HANA has been the focus for quite some time and it still is. More and more of our customers are moving to HANA and adopting that technology, less so with S4 because that's kind of a newer phase. So a lot of people are making the two-step approach of going to HANA and then looking at S4. But cloud as well. You know, we can really aid in that cloud enablement because the scrambling. When we can scramble that sensitive data, it helps customers feel comfortable and confident that they can put vendor and customer and other sensitive data in a cloud-based environment. And where are you guys winning? So what's the main thrust of why you guys are doing business in the SAP ecosystem? So with SAP, you're always looking to do things better. And when you do things better, it results in cost savings on your project. And if you can save money on your project and do things smarter, you free up people's time to focus on the fun projects, to focus on HANA, to focus on cloud. And with our software, with our technology, by copying that data and providing real production data in the development and sandbox environments, we're impacting and improving the change control processes. We're impacting and improving the testing processes within companies. We're enabling some automation of some of those processes. Can anything's up and running faster in the POC or development environment for the real data? Yeah, yeah, because you can be more nimble. If you have real production data that you're working with while you're prototyping, you can make changes faster. You can be more confident in what you're promoting to production. You can be avoiding having a bad transport or a bad change going into the production environment and impact your business. So if you're not having to worry about that kind of stuff, you can worry about the fun stuff. You can look at HANA, you can look at cloud, you can look at some of the newer technologies that SAP is providing. So you guys grew up and matured, as you said. You've grown as SAP has grown. SAP used to be regarded as an applications company. Now SAP, the S4 HANA platform is a platform. And SAP's talking about partnerships and they're talking about making this whole platform even more available, accessible to the new developers through the Apple partnership, et cetera. Creates a new dynamic for you guys who have historically been focused on being able to automate the movement of data, certain data, certain processes. How are you preparing to potentially have to accommodate an accelerated rate of digitization as a consequence of all these partners now looking at SAP as a platform? You know, that's a great question and it's actually, it aligns with Attunity's vision and direction as well.  Now it's an applications company with a full platform integrated all the way around. And Attunity is the same way. You know, we came to Attunity through acquisition and bringing our SAP Gold Client Technology but now we're expanding that. We're expanding it so that we can provide SAP data to other parts of the enterprise. We can combine data, we can combine highly structured SAP data with unstructured data such as IoT data or social media streams in Hadoop. So you know, the big data vision for Attunity is what's key and right now we're in the process of blending what we do with SAP with big data which happens to align with SAP's platform. You know, SAP is obviously helping customers move to HANA on the application side but there's a whole analytics realm to it that's a bigger, you know, even a bigger part of SAP's business right now. And that's kind of where we fit in. We're looking at those technologies. We're looking at how we can get data in and out of Hadoop. SAP data in and out of Hadoop. How we can blend that with non-SAP data to provide business value to SAP customers through that. Are you guys mainly focused on prem or are you also helping customers move stuff into and out of clouds and inside a hybrid cloud environment? Both, actually.  We've seen a lot of customers move to the cloud either partial or completely. For those customers, they can use our technology the exact same way. And Attunity's replication software works on-prem and in the cloud as well. So cloud is definitely a big focus. Also, our relationship with Amazon and Redshift, there's a lot of cloud capabilities and needs for moving data between on-premise and the cloud back and forth. As businesses build increasingly complex workloads, which they clearly are, from a business standpoint, they're trying to simplify the underlying infrastructure and technology, but they're trying to support increasingly complex types of work. How do you anticipate that the ecosystem's ability to be able to map this onto technology is going to impact the role that data moving plays? Let me be a little bit more specific. Historically, there were certain rules about how much data could be moved and how much work could be done in a single trends or a single group of transactions. We anticipate that the lost art of data architecture across distances, more complex applications, is going to become more important. Are you being asked by your customers to help them think through, in a global basis, the challenges of data movement as a set of flows within the enterprise and not just point-to-point types of integration? I think we're starting to see that. I think it's definitely an evolving aspect of what's going on. Some low-level examples that I can share with you on that are we have some large global customers that have regional SAP environments. They might run one for North America, one for South America, Europe, and Asia Pacific. Well, they're consolidating them. Some of those restrictions have been removed and now they're working on consolidating those regional instances into one global SAP instance, and if they're using that as a catalyst to move to HANA, that's really where you're getting into that realm, where you're taking pieces that used to have to be distributed and broken up and bringing them together, and if you can bring the structured enterprise application data on the SAP side together, now you can start moving towards some of the other aspects of the data, like the analytics pieces and... But you still have to worry about IoT, which is where we're going to process the data. We're going to bring it back, we're going to do it locally, you're worrying about sources external to your business, how you're going to move them in so that their intellectual property is controlled, my intellectual property is controlled. There's a lot of work that has to go into thinking about the role that data movement's going to play within business design. Absolutely, and I actually think that that's part of the pieces that need to evolve over the next couple of years. It's kind of like the first time that you were here and heard about HANA, and here we are eight years later and we understand the vision and the roadmap that that's played, that's happening now too. When you talk to SAP customers, some of them have clearly adopted the Hadoop technology and figured out how to make that work. You've got SAP Vora technology to bring data in and out of HANA from Hadoop, but that stuff is all brand new. We're not talking to a lot of customers that are using those. They're on the roadmap, they're looking at ways to do it, how to do it, but right now it's part of the roadmap. I think what's going to be key for us at Attunity is really helping customers blend that data, that IoT data, that social media stream data with structured data from SAP. If I can take my customer master out of SAP and have that participate with IoT data, or if I can take my equipment master data out of SAP and combine that with log data, IoT data, I can start really doing predictive analytics and if I can do those predictive analytics with that unstructured data, I can use that to automate features within my enterprise application. For example, if I know a part's going to fail between 500 and 1,000 hours of use, then I can proactively create maintenance tickets or service notifications or something that, so we can repair the device before it actually breaks. So talk about the, for the folks out there who want to kind of know the Attunity story a little bit more.  So where's the handoff? Where do you guys sister up against these guys the best? How should customers or potential customers know where, when to call you and what not? So I often refer to SAP as our 747 jumbo jet, right? So it's the big plane and it's got everything in it. Anything and all that you need to do, you could probably do it somewhere inside of SAP. There's an application for it, there's a platform for it, there's now a database for it, there's everything. So a lot of customers work only in that realm, but there's a lot of customers that work outside of that too. SAP is an important part of the enterprise landscape, but there's other pieces too. People who are nibbling at the solution not fully baked out SAP, they do one app. Yeah, and SAP is great at providing tools, for example, to load data into HANA. There's a lot of capability to take non SAP source data and bring it into HANA. But what if you want to move that data around? What if you want to do some things different with it? What if you wanted to move some data out and back in? What if you want to, you know, there's just a lot of things that you want to be able to do with the data. And, you know, if you're all in on the SAP side and you're all into the HANA platform and that's what you're doing, you've probably got all the pieces to do that. But if you've got some pieces that are outside of that and you need it all to play together, that's where attunity comes in, great. Because attunity has that, you know, we're impartial to that. We can take data and move it around wherever. Of course, SAP is a really important part of our play and what we do, but we need to understand what the customers are doing. And every day we talk to customers that are always looking to get there. Give an example. Give in a good example of that customer that you work with. Who's case? Yeah. Let's see, most of my examples are going to be SAP-centric, but we've got a couple of customers, I don't know if I can mention their names, where they come to us and say, hey, we've got all this SAP data and we might have 30 different SAP systems and we need all of that SAP data to pool together for us to be able to analyze it. And then we have non-SAP data that we want to partner with that as well. There might be Teradata, might be Hadoop, might be some oracle applications that are external that touch in. And these companies have these complex visions of figuring out how to do it. So when you look at attunity and what we provide, we've got all these great solutions. We've got the replication technology. We've got the data model on the SAP side to copy the SAP data. We now have the data warehouse automation solution with Compose that keeps finding niche ways to work in to be highly applicable. But the main value proposition is moving data around with an SAP. Give or take the JumboJet or 737 or it'll... Well, sometimes you just got to go down to the store and buy a half gallon of milk, right? And you're not going to jump in the JumboJet to go down and get the milk. You need tooling that makes it easy to get it. Got milk, that's a new slogan, got data. Got data. Got data. We should trademark that. Yeah, the marketing side now. Okay, so vibe of the show. What's your take at SAP here? You've been here nine years. You've been looking around the landscape. You guys have been evolving with it. Certainly it's exciting now. You're hearing real, concrete examples of SAP showing some of the dashboards that McDermott's been showing for every year. I mean, I remember when the iPad came out. Oh, the iPad's the most amazing thing. Of course, analytics is pretty obvious. That stuff's now coming to fruition. So there's a lot of growth going on. What's your vibe of the show? Are you seeing that? Can you share any color commentary, hallway conversations? You get everything. Like you said, the half gallon of milk. Well, we're at the supermarket right now. You need milk, you need eggs, you need flowers, whatever you need, it's here. The cake can be baked if you have all the ingredients. The Steve Jobs says, put good frosting on it. Yep. That's the UX. Lots of butter and lots of sugar. But yeah, there's so many different focuses here at Sapphire that it's a very broad show and you have an opportunity, for us, it's a great opportunity to work with our partners closer and it's also a good opportunity to talk to our customers and certain levels within our customers, CIOs, VPs, of ITs. And both together. Yeah, exactly. Right, they're all here. And you get to hear what their broader vision is because every day we're talking to customers and yeah, we're hearing their broader vision but here we hear more of it in a very confined space and we get to map that up against our roadmap and see what we're doing and kind of say, yeah, we're on the right track. I mean, we need to be on the right track in two fronts. First and foremost with our customers and second of all with SAP. And that's that part of our long-term success has been watching SAP and saying, okay, we can see where they're going with this, we can see where they're going with this and this one's, they're driving really fast on, we got to get on this track. Hanna. So the folks watching that aren't here, any highlights that you'd like to share? Wow, well, you guys said yourself, Reggie Jackson was here the other night, that was pretty fantastic. I'm a huge baseball fan, Go Cubbies, but it was fun to see Reggie Jackson and- Mark Ball, you know, you had a share of calamities like the Red Sox, I'm a Red Sox fan, so up until 2000. Yeah, your wounds have been healed though. We've been, the holy water been thrown from Babe Ruth. It was great that Reggie though was interesting because we talked about a baseball concept that was about the unwritten rules. We saw Batista get cold cocked a couple of days ago and it brought up this whole unwritten rules and we kind of had to tie into business which is the rules are changing certainly in the business that we're in and he talked about the unwritten rules of baseball and at the end he said, no, they're not unwritten rules, they're written and he was hardcore like MLB should not be messing with the game. I mean, Batista got fine, I think what, five games was it that came out? Yeah, yeah, yeah. Five games? He got one game and the guy that punched him got eight. That's right, no, that's right, I got eight games, that's right. So, okay, MLB's putting pressure on them, structuring the game, should we let this stuff go? He came in late, taking the base, okay. What's your take on that? I mean, as a baseball fan, I love the unwritten rules. I love the fact that the players police the game. Well, that's what he was talking about. In his mind, that's exactly what he was saying, that the rules amongst the players for police in the game are very, very well understood and as baseball tries to legislate and take it out of the player's hands, it's going to lead to a whole bunch of chaotic behavior and he's probably right. Yeah, and you've already got, you've already got replay and what was it? The Mets guy said he misses arguing with the umpires and the next day he got thrown out. Probably because he wanted to get thrown out, he did a day off. What's going on with the tuning? What's next for you guys? Give us some color on, what's next for you guys? What's next show? What's going on in the business? What's the goal? So, you know, show wise, this is one of our most important shows of the year, events of the year. We'll always be a tech ed, you know, tech ed's a very targeted audience for us. We have a new version of Goal Client that's out later this month. More under the hood stuff, just making things faster and aligning it better with HANA and things like that. But, you know, we're really focused on integrating the solutions at Attunity right now. I mean, you look at Attunity and, you know, Attunity is grown by acquisition, right? You know, the Replo Web Acquisition in 11, the acquisition of my company in 2013, we've added compose, we've added visibility. So now we've got this, yeah, we've got this breadth of solutions here and we're now knitting them together and they're really coming together nicely. The compose product, the data warehouse automation, I mean, it's a new concept, but every time we show it to somebody, they love it.  And we've even figured out with SAP how we can break down certain aspects of that data, like just the financial data. If we just break down the financial data, can we create some replication and some change data capture there using the replicate technology and then feed it into compose and provide a simple data warehouse solution that basic users can use?  You know, we're always talking to customers where they're still doing stuff like downloading contents of tables into spreadsheets and working with it. You know, so compose kind of fits a niche there. The visibility, being able to identify what data's being used and what's not used. You know, you know, we're looking at combining that, or pointing that at an SAP system, combining that with archiving technology and data retention technologies to figure out how we can tell a customer, all right, here's your data retention policies, but here's really where you're touching and where you're not touching your data and how can we move that around and get that out? Great stuff, Matt. Thanks for coming on theCUBE. Appreciate that. Knitting it all together. Congratulations on your success. And again, it's early stages. It's just going to get bigger and bigger. So, you know, having that robust platform. And remember, not everyone runs their entire business on SAP. So there's a lot of other data sources coming around the corner. Yeah, that's for sure. And we're, you know, we're well positioned and well aligned to deal with all types of data. Me as an SAP guy, I love working with the SAP data, but, you know, we've got a broader vision and I think our broader vision's really aligned nicely with what our customers need. Interoperating the data, making it work for you. Got data, it's a new slogan here on theCUBE. We're going to coin that. Got milk, got data, thanks to Peter Burris bringing the magic here on theCUBE. We are live in Orlando, you're watching theCUBE. There'll be millions of people in the near future that want to be involved in their own personal well-being and wellness.