Speaker 1: Welcome everyone to another episode of Adventures in dev Ops.
Speaker 1: I'm your host for today, Will Button, and we have
Speaker 1: our new panelists with us. We have Jonathan Halm Hello, hello,
Speaker 1: and Jillian Rowe Hello everybody. And then we've got our
Speaker 1: guest today, we have er Zoberman.
Speaker 2: How are you doing?
Speaker 3: R Hi. Nice to meet you all and excited to
Speaker 3: be here.
Speaker 1: Well, we're excited to have you. You want to give
Speaker 1: us a little introduction about yourself?
Speaker 4: Yeah, sure, So my name is Yal and I am
Speaker 4: leading the product at the company named the three.
Speaker 3: In at the three, well, I think a company is
Speaker 3: prevent configurations.
Speaker 4: And fun fact, you actually also my co founder at
Speaker 4: episode number seventy six, so I give a reference to
Speaker 4: this episode and I won't go into details about exactly
Speaker 4: how we're doing that because it's plain it's there. Besides
Speaker 4: leading the product Editree, I'm also leading the local community
Speaker 4: of get up in Tel Aviv, which is the biggest
Speaker 4: one in the world over twenty five under the users
Speaker 4: and beside it and just love development.
Speaker 3: I actually was a developer before I.
Speaker 4: Went into the tree and as a product leader. And
Speaker 4: another fun fact, I actually have a lot of degree
Speaker 4: so I have nothing to do with development. It's all
Speaker 4: learned and I actually love early love code, and this
Speaker 4: is how I got into this space.
Speaker 2: So you said you have a lot of degree.
Speaker 4: Yeah, this is correct. I actually have a lot of degree.
Speaker 4: And I was supposed to be a.
Speaker 1: Lawyer, and so the prospect of being a lawyer was
Speaker 1: so horrible you decided, no, I'm going to work in
Speaker 1: tech instead went.
Speaker 3: Something like that.
Speaker 4: Basically, like, while I dealt with law, I always loved
Speaker 4: the technology, so I did like law and technology stuff. Basically,
Speaker 4: it was a lot of open source licensing because a
Speaker 4: lot of people never never really understood what is the
Speaker 4: open source and open source people never understood what is
Speaker 4: low So I was in the middle.
Speaker 3: There was able to talk with both sides. But during this.
Speaker 4: Process I actually fell in love with the technology and
Speaker 4: then decided it is part of the open source it's
Speaker 4: much more interesting. So I got into the open source
Speaker 4: to developing by myself and then went into the process
Speaker 4: of being a developer. So I have all degree, it's
Speaker 4: somewhere on the wall, but I'm not using it.
Speaker 5: So it's not that you thought law was too simple
Speaker 5: and you wanted a better challenge. You wanted something more
Speaker 5: complicated like Kuberneties to work with. That wasn't the thought process?
Speaker 3: Yeah, something like that, get out of your comfort comfort zone?
Speaker 6: Are you like certified in law? And you sent out
Speaker 6: kind of season disiness platters because I think that would really.
Speaker 4: Come in me And sometimes I prefer not to do
Speaker 4: that because again I did it like a few years ago,
Speaker 4: so I'm not up to date to all the new
Speaker 4: rules and stuff like that.
Speaker 5: But you're up to date with Kubernetes, right, this, this
Speaker 5: is correct? Yeah, what's the latest new feature here? Excited about?
Speaker 6: Wow?
Speaker 7: We promise not exactly too many for me to mention.
Speaker 1: Cool, But you did write an article that we've got
Speaker 1: here on why you need to use kubernating scheme of
Speaker 1: validation tools, and you actually looked at two different ways
Speaker 1: of doing that, Cuba vallel and Cube conform. What was
Speaker 1: the motivation behind it? I'm assuming that there's like a
Speaker 1: backstory here of where something happened and you were like,
Speaker 1: oh my god, we cannot go through this again.
Speaker 3: Yeah.
Speaker 4: So actually there's also a third option. It's like actually
Speaker 4: doing it with cube cattle, and so the backstory is
Speaker 4: that ed the tree. Like I said, we're helping companies
Speaker 4: prevent coubernet dismiss configurations. We're doing that by scanning the
Speaker 4: manifest files and giving them indication if it's up to
Speaker 4: the standards that was defined by the organization Police also called.
Speaker 3: And something big that we.
Speaker 4: Got is that a lot of people thought told us
Speaker 4: that it's passing the policy, but it's still not a
Speaker 4: valid Kubernetes file. How come because I know someone forgot
Speaker 4: to configure it correctly and instead of calling it, I
Speaker 4: know API version with version in a capital letter, it's
Speaker 4: all smaller or something like that. So it's still passing
Speaker 4: the policy. It's because it can have like a readiness
Speaker 4: prop and it can have a proper label and everythings correct,
Speaker 4: but on the technical side, it's not a valid Kubernet's file.
Speaker 4: And then we had the question is this something that
Speaker 4: we need to catch or we don't need to catch
Speaker 4: because again it's passing the policy. It's only a problem
Speaker 4: on the valid on the Kubernetus validation side. So I
Speaker 4: got into this space and start to investigate, and while
Speaker 4: doing the research, I found it it's actually a common
Speaker 4: problem that people have and there's only three ways to
Speaker 4: solve it. So one of them is with cubabal, which
Speaker 4: is a really good tool. It's actually the most popular
Speaker 4: one that most of the people are using, and this
Speaker 4: is a way to do the validation offline. The second
Speaker 4: tool that I found was cube confirmed. It's another open
Speaker 4: source it's really good too tool. And by the way,
Speaker 4: I just want to say Yan, I really love this tool.
Speaker 4: Thank you for that. Yan is the actually the person
Speaker 4: that write this tool. And Yan he actually took cube
Speaker 4: e val and he improved it. He did a lot
Speaker 4: of great stuff that you can see on Cube e valle.
Speaker 4: And it's also all maintained because Yan is kipped maintaining
Speaker 4: this project. And then there is also the third option,
Speaker 4: which is actually using cube cattle. But the funny part,
Speaker 4: and I was really surprised about that, is that, in
Speaker 4: opposed to all the other stuff campabilities that are really
Speaker 4: well documented, this part of doing scheme of validation with
Speaker 4: the native tool, which is cube cattle, it's not documented
Speaker 4: at all. I actually went through the code itself, like
Speaker 4: the co code inside get up to understand what is happening,
Speaker 4: to understand how it's walking, which flag I need to use,
Speaker 4: and I looked everyone like I Google. When I Google it,
Speaker 4: I got like two pages. This is how weird it.
Speaker 6: Was talent with our corner of the internet there, didn't you?
Speaker 4: Yeah, like someone can hide a body and the results
Speaker 4: about how to do schemu vilation with cube cattle.
Speaker 3: You can hide a body there and the resultso no
Speaker 3: one will find it. Nobody will find it, No one's
Speaker 3: looking exactly.
Speaker 6: It's going to be your new title. I was just
Speaker 6: wondering as you were describing these, are any of these
Speaker 6: integrated with HELM or these if you're writing your Kubernator's
Speaker 6: configuration files manually or through some.
Speaker 3: Other that's a really good that's a really good question.
Speaker 4: So if you think about it, and basically it's also
Speaker 4: a Combernetus manifest and in dead we're also rendering Kubernetus manifests,
Speaker 4: So it doesn't matter like all of them will walk
Speaker 4: with the head. It's only a matter of do we
Speaker 4: have like a native integration that it will be connected
Speaker 4: to M directly or another way to do that is
Speaker 4: to render the manifest with HELM and then passing it
Speaker 4: to one of those tools.
Speaker 6: Yeah, that's an interesting way of doing it. Just just
Speaker 6: have Holme render it for.
Speaker 7: You and then throw it off to one of exc
Speaker 7: exactly like people forget people forget that you exactly that
Speaker 7: helm is actually in the end, there's a Kubernetus benefit
Speaker 7: that's generating, and this is what's getting pushed to your cluster.
Speaker 4: Usually you don't see it because it's pushing it directly,
Speaker 4: but if you do ham template, you.
Speaker 3: Will see the file itself that is pushing. Cool.
Speaker 6: Now I have an extra step in my make files to.
Speaker 1: Add I think that's a great that's a great point. Though,
Speaker 1: where do you recommend people do the validation checking out?
Speaker 4: Yeah, so just for the people that listening and didn't
Speaker 4: read the article, we.
Speaker 3: Just say that good use.
Speaker 4: If you have a scheme of validation errow, it will
Speaker 4: get cut in the end because basically, when you try
Speaker 4: to deploy it your Kubernets cluster, Kubernets with throw an
Speaker 4: errow to tell you that it's an invalid a combneti
Speaker 4: is file.
Speaker 3: That's all good.
Speaker 4: The problem is that you want to catch those arrows
Speaker 4: as soon as possible. You want to shift them left.
Speaker 4: You don't want to wait until you try to deploy it.
Speaker 4: You want to catch them when someone is submitting them.
Speaker 4: And that's the problem. Because with cube cattle there's something
Speaker 4: that is called like it's a dry run flag that
Speaker 4: you can say something something applied minus dry run and
Speaker 4: then it will connect to your cluster. It will check
Speaker 4: if it's a valid file. If it's a valid file,
Speaker 4: it will not apply it. This is why you have
Speaker 4: the drying flag, but you to give you the indication
Speaker 4: if it will be accepted or not by the cluster itself.
Speaker 4: So that's really cool. The issue with that is that
Speaker 4: you actually need to have up and running cluster and
Speaker 4: you also need to have a connection to that. So
Speaker 4: going back one step and we said that you need
Speaker 4: to validate those manifest files as soon as possible. Usually
Speaker 4: local machines or CI machines don't have and you don't
Speaker 4: want them to have a connection to your cluster, so
Speaker 4: that's become an issue. So you need to find a
Speaker 4: way that you can do it offline. When I'm saying offline,
Speaker 4: I mean with no connection to your cluster, but also
Speaker 4: in a way that you can run as soon as possible,
Speaker 4: and not only when you want to push it into
Speaker 4: production or into staging, also to your cluster, which means
Speaker 4: to the cluster. So, like I said, you have cubival
Speaker 4: that you can do that with you can write run
Speaker 4: it locally, you can add it as a step in
Speaker 4: your CI and you can also do it in the
Speaker 4: CD before we trying to apply something. So that's one option.
Speaker 4: Another option that you can do it with is with
Speaker 4: cube and phone and same you can implement it in
Speaker 4: the same ways because like I said, basically it's almost
Speaker 4: the same tool.
Speaker 3: It's only I.
Speaker 4: Would say it's like cubivalve with superpowers with the cube
Speaker 4: and phone. And the other way for you to do
Speaker 4: it is actually with a tree. So with a tree we,
Speaker 4: like I said, it was an issue that we add,
Speaker 4: so we also added those capabilities to our tool. And
Speaker 4: if you are checking for policies, there's also pre acquisites
Speaker 4: that we will check. So we will check that you
Speaker 4: have a valid Cubernetes file, and if it's a valid
Speaker 4: Cubernetes file, it will also check to make sure that
Speaker 4: it's also passing the policy that you define on the organization.
Speaker 3: So this is also something that you can do.
Speaker 4: I will also say that another thing that is interesting
Speaker 4: and I wrote in the article, is that you have
Speaker 4: another flag with cube cattle.
Speaker 3: So we have two modes. You have several mode and
Speaker 3: you have client modes.
Speaker 4: Basically you can check both of them requiring you to
Speaker 4: have a connection to a cluster. Something is think that
Speaker 4: I discovered was that actually there's an open bug in
Speaker 4: the Kubernettis project, and the open flag is saying yeah, yeah, yeah,
Speaker 4: among those one thousand bucks that are opened there, and
Speaker 4: this open bug is actually saying that this is not
Speaker 4: the expected results.
Speaker 3: If you're using.
Speaker 4: The flag dry run but on the buts a client mode,
Speaker 4: it should not need to have a connection to a cluster.
Speaker 4: But right now it's not walking, so it's still requiring
Speaker 4: you to have a connection to a cluster. Another interesting thing,
Speaker 4: and this is also I explained in the article, is
Speaker 4: that there is a discrepancy between the validation that I've
Speaker 4: done on the client side and the validations that are
Speaker 4: done on the SEVI side if you're using cube cutted.
Speaker 6: So answer question, well, now, go ahead, go ahead, and
Speaker 6: then I'll argue with you.
Speaker 3: That's fine.
Speaker 4: So just to wrap it up, the best way to
Speaker 4: do that is as soon as possible, you should run
Speaker 4: those validations across the entire process from your local environment
Speaker 4: through ci CD and just before you're going to deploy
Speaker 4: it or any other automation process that you have staging,
Speaker 4: production whatever, do is as soon as possible, and do
Speaker 4: it all the time.
Speaker 6: I actually wanted to argue with you a little bit
Speaker 6: on a point about not having access to a cluster
Speaker 6: while you're doing these validations. I would think you would
Speaker 6: need access to a cluster, because what if I'm doing
Speaker 6: like no affinity is or okay, that's the only case
Speaker 6: that I can think of, actually is when I have
Speaker 6: not affiinity. So I don't have a real strong case
Speaker 6: to argue with you. But if I'm doing that right,
Speaker 6: I would want for it to say, oh, you're setting
Speaker 6: this note affidity on something that doesn't even exist, or
Speaker 6: it doesn't make sense, or it's not going to come up,
Speaker 6: or I don't know something like that. I would hope
Speaker 6: it would be smart enough to tell me that you're
Speaker 6: doing something wrong, and it would need to have a
Speaker 6: connection car cluster to do that right.
Speaker 4: So think about it like in big organizations that you
Speaker 4: have a lot of developers and so usually we're saying CIS,
Speaker 4: but we need to remember the CICD are two different steps,
Speaker 4: and there are a lot of organizations that I'm familiar
Speaker 4: with that the CI step is taking X amount of
Speaker 4: time and only then coming to the city step. So
Speaker 4: during the CI step that people keep changing the manifest,
Speaker 4: it's not necessarily going to be deployed right away. So
Speaker 4: at this step, then when you have the CI process,
Speaker 4: you want to run different checks, but you also don't
Speaker 4: want it to have a connection to your cluster.
Speaker 3: Only when on the city.
Speaker 4: Step you want to have a connection, you have to
Speaker 4: have a connection to your cluster. So if you separate
Speaker 4: those steps, which usually happening in big organizations, the CI
Speaker 4: step don't have connection to your cluster.
Speaker 5: So I'm looking through your article and some of the
Speaker 5: you have this nice little table that compares cubevel and
Speaker 5: cup perform against client mode and server mode of cup
Speaker 5: pedal and what things were caught and what it didn't.
Speaker 5: And I'm clicking on some of these here, and it
Speaker 5: looks to me like in some of these cases it's
Speaker 5: looking more for syntactic validity than contextual validity. I don't
Speaker 5: know if that's the right phraseology there, But for example,
Speaker 5: I look at the label value and it's the wrong.
Speaker 5: Example has a label of dash dash stash, which is
Speaker 5: just it's invalid. It's invalid syntax. It's not that it
Speaker 5: that label. I guess My question here is does this
Speaker 5: check that the label make sense or just that it's
Speaker 5: syntactically valid.
Speaker 3: So that's a good question.
Speaker 4: So basically, there are different steps of validations that you
Speaker 4: need to pass if you want to have a valid file.
Speaker 4: So first of all, let's think about it like on
Speaker 4: the general air view. You want to make sure that
Speaker 4: all your cuberneties files have to be a valid diamined file.
Speaker 3: That's first of all.
Speaker 4: After that they have to be a valid Kubernetes file,
Speaker 4: which means they need to follow a specific structure. After that,
Speaker 4: the values inside those files need to be valid, and
Speaker 4: different steps or different tools will catch different errows that
Speaker 4: I just mentioned. So with a tree, you will catch
Speaker 4: all theres, will make sure that it's a valid diamond file,
Speaker 4: will make sure that it's a valid tubunetifier. Will also
Speaker 4: make sure that the value is avalid and we cube valid.
Speaker 4: It will make sure that it's only a valid Kuberneti structure.
Speaker 4: So you have different vialiations that will make But by
Speaker 4: the way cube Cattle, once you try to deploy it
Speaker 4: to your cluster, it will make it will check all
Speaker 4: the stuff that I mentioned, So it will also make
Speaker 4: sure that it's diamal file to also make sure that
Speaker 4: it's notified and also valid value. But again the problem
Speaker 4: is that it's too late in the process, because it's
Speaker 4: only when you want to deploy and you just want
Speaker 4: to ship all this information to the.
Speaker 3: Left to the right, right to the left, to the.
Speaker 5: Left to left in Hebrew, also or do you shift
Speaker 5: right since you're the other.
Speaker 3: We read the opposite. That's the problem, you know, that's
Speaker 3: why the confusion.
Speaker 4: We're really from We're really from right to left, So
Speaker 4: like make.
Speaker 5: No sense the Japanese shift up, cultural adventures and DevOps.
Speaker 5: I had a great question, and now I completely lost it.
Speaker 2: You want to shop to come back?
Speaker 6: I think, okay, Well, I was just thinking, you know,
Speaker 6: like this whole idea of okay, we can say that
Speaker 6: it's a valid YAMO file and the valid Kubernetes file,
Speaker 6: but doesn't make sense. And to me that's always been
Speaker 6: like such an interesting problem, like one of the more
Speaker 6: interesting problems, especially because my background is high performance computing.
Speaker 6: So anyways, I think that we show like a crossover
Speaker 6: event with the machine learning people where we just make
Speaker 6: them train a really big model on a whole bunch
Speaker 6: of Kubernetes configurations where it makes.
Speaker 2: Sense or not.
Speaker 6: That might be the only way to do it is
Speaker 6: have like a massive decision tree that nobody actually understands
Speaker 6: that says yes or no.
Speaker 2: I think you just described Kubernetes exactly.
Speaker 6: Yeah, a little bit.
Speaker 5: Okay, I remember my question. I'm curious what does your
Speaker 5: workflow look like when you're working on Kubernetes manifests? Do
Speaker 5: you run these tools in your editor for example on save?
Speaker 5: Do you use githooks? Do you use CI pipelines? What
Speaker 5: does your setup look like? How do you do this
Speaker 5: in practice?
Speaker 4: Well, I'm biased, a musing I own, but yeah, but
Speaker 4: I'm telling you so what I usually see that people
Speaker 4: are doing this is why we credit this tool, is
Speaker 4: that they understand the value and they're trying to shift.
Speaker 2: It left right.
Speaker 4: You're trying to shift it left and they're doing it
Speaker 4: with pre committos. That's one. Then it's implementing inside the CI.
Speaker 4: The problem is that you need to implement a lot
Speaker 4: of tooling in order to get those simple vialidations that
Speaker 4: I just described. So you need to have volunteer for
Speaker 4: your YAM. Fine, you have a to have a cubival
Speaker 4: or cup performed for kubernettes. And then you need to
Speaker 4: have some way to actually do the policy checks, which
Speaker 4: can be performed with different tools that I have to
Speaker 4: pause doructure files JQ for example. Just trying some ideas
Speaker 4: if someone want to get crazy into it by himself.
Speaker 4: So it's actually requiring a lot of cluing and a
Speaker 4: lot of teaching and a lot of different tools that
Speaker 4: need to walk together, which become to be like a
Speaker 4: massive headache if you want.
Speaker 2: To do that.
Speaker 3: And this is why we build a tree.
Speaker 4: We're trying to do it in one tool, make it simple,
Speaker 4: make it fun so you can it's a sea light tool,
Speaker 4: so we actually enforced it.
Speaker 3: Or you can put it everywhere you want.
Speaker 4: You can put it on your local environment, you can
Speaker 4: put it in your CI, you can put it in
Speaker 4: your city, you can put it everywhere and it will
Speaker 4: do all those validation for you out of the box
Speaker 4: and a really simple and easy way.
Speaker 6: That's very cool. And is it all open source?
Speaker 3: Yes? Yes?
Speaker 4: And again like yeah, so there is a magic sauce
Speaker 4: in the tree, Like it's not. We don't have a
Speaker 4: secret API. We are not doing something that like every
Speaker 4: developer can do. What we're doing it, and we are
Speaker 4: totally okay with that. And the cool part is that
Speaker 4: we're just trying to make it much more simple for you,
Speaker 4: so you don't need to do it by yourself. So
Speaker 4: you don't need to configure this plit commit and you
Speaker 4: don't need to configure this and integration by the way
Speaker 4: soever henp like, and so we can do it natively.
Speaker 4: We just want to make sure that it's simple enough
Speaker 4: for you to use our tool and not to try
Speaker 4: to build it by yourself, because we all really believe
Speaker 4: in buys is built, that you should be focused on
Speaker 4: building great stuff that out of your coal business and
Speaker 4: not try to build and not try to build stuff
Speaker 4: that are not and you should prefer to buy them.
Speaker 4: So this is how we think about it, and this
Speaker 4: is why we're always trying to make sure that we well,
Speaker 4: we always want to make sure.
Speaker 3: That all the stuff that we're doing will give you
Speaker 3: a value as a user.
Speaker 6: That's very cool. You said something I didn't quite touch.
Speaker 6: There's a plug in for something, was it, Homer?
Speaker 3: Was it?
Speaker 7: Yeah?
Speaker 4: Yeah, yeah, So you asked about the nice so I
Speaker 4: mentioned because we ask about them. So, for example, we
Speaker 4: have a native hamp plugging so when you're doing ham
Speaker 4: in stall, it will do all those validations, which actually
Speaker 4: to make sure that is a validamter file, to make
Speaker 4: sure that it's a Kuberneties file, to make sure that
Speaker 4: it's passing the policy, and it's all being integrated inside
Speaker 4: hands so we don't need to do the HAMP template,
Speaker 4: pipe it into keep cuttail, run it with dry hand
Speaker 4: flag or with cube val or whatever stuff like that.
Speaker 6: Cool. Does it integrate with like any of the code
Speaker 6: editors too, Like will it tell me in nice big
Speaker 6: red leaders, because like I really need those reds telling me,
Speaker 6: but I'm doing something stupid.
Speaker 3: If not, it's it's on the road map.
Speaker 4: It's only on the road map because we really believe
Speaker 4: that we need to give this feedback about the validation
Speaker 4: as soon as possible, and on the road BAMP is
Speaker 4: to also put it inside your ID and if it's
Speaker 4: possible also in when you think about doing a misconfiguration
Speaker 4: to also be integrated there inside your head, you get like.
Speaker 2: A buzz what do you call that? CRD?
Speaker 3: Not sure? Not sure? We need to think about the
Speaker 3: name for that.
Speaker 5: So I'm really curious about how this works with Helm
Speaker 5: because obviously Helm isn't purely deterministic in the sense that
Speaker 5: depending on what values values you provide, you could have
Speaker 5: an infant possibility of actual kubernes manifests to come out.
Speaker 5: How do you handle that? I mean, for example, I'm
Speaker 5: thinking of the chart testing or CT tool. I don't
Speaker 5: know if you're familiar with that, but it lets you
Speaker 5: define like a list of You could give it a
Speaker 5: directly full of values gamble files and it will just
Speaker 5: test against each one of those. Do you have something
Speaker 5: similar or how do you approach that?
Speaker 3: So again, this is a really good question, but we
Speaker 3: need to remember in the end of.
Speaker 4: Every helm file there is a couberneties file, so we
Speaker 4: are not checking the value file separately and the child
Speaker 4: files separately. What we're doing is that we're rendering it
Speaker 4: together and then we're running the checks on top of it.
Speaker 4: So in the end it's just a manifest file that
Speaker 4: is random from hand value and then child that is
Speaker 4: combined together. So it doesn't really matter how you do
Speaker 4: the templating.
Speaker 3: From the all side.
Speaker 4: You can use which key invirues that you want, because
Speaker 4: in the end to will be translated into a Kubernettis file.
Speaker 4: So we're just running it on the end result, which
Speaker 4: is the coupnettis file itself.
Speaker 5: But if by values, suppose I have one value file
Speaker 5: that says ingress true and one it says ingress falls.
Speaker 5: That could help a completely different manifests completely different resources
Speaker 5: to find, and I might want to validate both versions.
Speaker 5: Does your helm plug in automate that for me? Or
Speaker 5: do I just need to have two lines in my
Speaker 5: sea ice script that says run it this way and
Speaker 5: also run it that way.
Speaker 4: So if i'd the sun correctly, you're asking if I
Speaker 4: can run it in if I can have like two
Speaker 4: different policies because I have different permutations for the same
Speaker 4: held file.
Speaker 5: Yeah, I mean, so I suppose I have a homestart
Speaker 5: that just deploys WordPress or whatever, and in one variation
Speaker 5: one of my configurations, say, disables the ingress, So I'm
Speaker 5: no longer creating the ingress a resource in my in
Speaker 5: my output, I'm not setting you know, several different things
Speaker 5: that might not be created. I'm not creating an st
Speaker 5: CL certificate and so on. My output manifest is going
Speaker 5: to be significantly smaller with fewer resources in it than
Speaker 5: if I had enabled ingress. And maybe I want to
Speaker 5: validate both versions of that using your tool. What what
Speaker 5: steps do I take to accomplish that?
Speaker 4: Yeah, So basically, again it doesn't matter like we revitedate
Speaker 4: both versions. So there is a logic insight your code
Speaker 4: that will trigger one of them. Correct, So the version
Speaker 4: that is triggered, this is also what will be passed
Speaker 4: to the tree. And this is what we also be validated,
Speaker 4: and we'll give you the indication of its passingle failing
Speaker 4: the same that the same this mechanism that's triggating your.
Speaker 3: Helm is the same one that will be passed to
Speaker 3: the tree.
Speaker 6: Yeah. So the validate runs on the like helme install
Speaker 6: or helm up.
Speaker 3: Grat command right exactly exactly.
Speaker 6: Not beforehand. Then how are you going to integrate it
Speaker 6: with an editor?
Speaker 3: With the editor?
Speaker 6: Yeah, because if it's in an editor, it's before that
Speaker 6: helme install.
Speaker 3: You're right, And this is a challenge. This is something
Speaker 3: that went into solved by don't have all the answers
Speaker 3: right now. This is something that we're working on.
Speaker 6: That's interesting. That's where you need the decision tree.
Speaker 3: Probably, this is why we call the tree.
Speaker 6: Well, I've been seeing people have validating their values file
Speaker 6: also with an additional Jason Schema, and it seems like
Speaker 6: you will kind of work something like that out to
Speaker 6: sort of them have these trees that are like, oh,
Speaker 6: if you have a Boolean value, it should you know,
Speaker 6: it should track for both the true and the falls
Speaker 6: and these kind of things. But I don't know. I'm
Speaker 6: glad you're building.
Speaker 7: It and not me.
Speaker 6: That's very cool.
Speaker 4: So you're right, I also saw it. You can do
Speaker 4: it with Jason GiMA is sorry, you can do it
Speaker 4: with Jason Schema. The problem is it's taking it's a
Speaker 4: lot of folk to do that, and also actually it's
Speaker 4: taken a lot of maintaining to make sure that it's
Speaker 4: always up to date, which is more hardened than just
Speaker 4: writing it. But it's not that common that people this
Speaker 4: is the best practice, but it's not that common that
Speaker 4: people are doing that. And usually they're like just doing
Speaker 4: the validation itself and not on the values separately or
Speaker 4: on the child separately. They're doing the validation on what's
Speaker 4: coming out from combining in the both.
Speaker 6: That's true. I tend to just cross my fingers and
Speaker 6: pray on all the times that I commit to get help.
Speaker 1: Yeah, so I think one of the things that was
Speaker 1: cool in your article here, because I know in my
Speaker 1: experience a lot of pushback I've experienced in trying to
Speaker 1: implement different solutions like this is how much time it
Speaker 1: takes or how much you know, people don't want to
Speaker 1: do it because they have this this idea that it's
Speaker 1: going to slow them down. But you actually did quite
Speaker 1: a bit of benchmarking on this right to see exactly
Speaker 1: what to slow down or impact would be.
Speaker 4: Yeah, so this is something that it was interesting to
Speaker 4: me to see because why I check the different possibilities
Speaker 4: about how can I have how can actually have overcome
Speaker 4: the problem of scheme of validation. I noticed that when
Speaker 4: I'm doing it with cube cattle and I'm doing it
Speaker 4: with the salvable actually taking a lot of time to
Speaker 4: get the results back. So it said, hmm, what would
Speaker 4: happen if I would do it like one other times,
Speaker 4: you know, like developments to take it to that, and
Speaker 4: then I actually benchmark all the tools and how much
Speaker 4: time to take them to do the validation.
Speaker 3: It was so just to.
Speaker 4: Give you the summer of that cube conform is doing
Speaker 4: it the best way. It's actually giving the results really
Speaker 4: really fast. After that you have cube revalve. That's also
Speaker 4: giving the result fast. Again, it's like on milli seconds
Speaker 4: for a regular usage, not when you're trying to scan
Speaker 4: one of the couplets files. So as a user you
Speaker 4: won't actually notice that, so you can say that it's
Speaker 4: almost the same when you're running it with CU cuttle
Speaker 4: on the sever side on the several mode. So yes,
Speaker 4: it's taking longer, but it's not like it's going to
Speaker 4: take you ten minutes.
Speaker 3: It's just going to take a little bit longer.
Speaker 4: So if we think about it, we just said that
Speaker 4: cube cuttle server mode it's the best validation, so we
Speaker 4: don't really have an excuse why not to do that
Speaker 4: because it's not going to add too much time to
Speaker 4: your deployment process or something like that. The only issue
Speaker 4: with doing it is that it's requiring you to have
Speaker 4: a connection to a cluster, and as we already mentioned,
Speaker 4: this is nothing that is not always possible. If you
Speaker 4: want to go as soon as possible with the shift
Speaker 4: left approach and you want to do the validation on
Speaker 4: the CI locally, would.
Speaker 2: It be possible to run the server mode test against
Speaker 2: a test server like say running in kind or mini
Speaker 2: cube or something like that, or does it really need
Speaker 2: to be your production server with all your existing crds
Speaker 2: and everything is tolled.
Speaker 3: Yeah, perfect question.
Speaker 4: So you can do it with Minicube and then you
Speaker 4: can do it also in the CI or whatever.
Speaker 3: But then you need to remember it's have to have
Speaker 3: the same environment like your production.
Speaker 4: So if you have a name space that exists on
Speaker 4: production but don't exist on Mini Cube, it will fail
Speaker 4: because you try to deploy a file, you'll tell you, oh,
Speaker 4: I don't know this name space which is called Jonathan
Speaker 4: or whatever, because you have it on production. So it's
Speaker 4: a very tile but it will fail your your failure.
Speaker 4: It will fail on the CI. So this is something
Speaker 4: that you can do. You can actually have a Mini
Speaker 4: cube set it up like your production again, but again
Speaker 4: it's like with the checking your it's like building schema validation.
Speaker 4: So it's like building the adjacent schema problem. You need
Speaker 4: to maintain it, you need to build it. It's a
Speaker 4: lot of heaving.
Speaker 6: Yeah, I think we could argue forever about like mocking
Speaker 6: out infrastructure versus actually building it. For me. That's one
Speaker 6: of those pendulums that swung back and forth, and now
Speaker 6: I'm on the other side where I'm like, no, people
Speaker 6: are going to pay for me to have like the
Speaker 6: same setup and cis in production, so that I just
Speaker 6: have something real that I can test against, because it's just,
Speaker 6: you know, too many times running up against this kind
Speaker 6: of thing that the CI infrastructure ends up not being
Speaker 6: the same no matter how long you take to make it.
Speaker 3: Yeah.
Speaker 4: Yeah, it's a huge fool by itself just to sink everything,
Speaker 4: like to think this is something that is going to
Speaker 4: be lost somewhere and someone's going to forget about it,
Speaker 4: and then it's going to annoy a developer really, really,
Speaker 4: really really because you don't know why he's getting this
Speaker 4: validation errow because it's like, I don't know what to
Speaker 4: do with that.
Speaker 3: And then there's.
Speaker 4: Devils guy that forgot to actually sink the mini cube
Speaker 4: with that, you know it's going to fall in between
Speaker 4: the correct somewhere for sure.
Speaker 2: I'm old. I'm going to start using this.
Speaker 3: Tool me too.
Speaker 6: Do you have a GitHub actions for it? Can I
Speaker 6: just tuck that up right now?
Speaker 4: And so actually, so I have an example in the ouducts.
Speaker 4: We have an example about how to implement this side
Speaker 4: a guit ub action workflow. We still don't have a
Speaker 4: git up action per se. It's something that we will
Speaker 4: build soon. It's just the amount of integration that we
Speaker 4: need to build is just enormous.
Speaker 3: So yeah, yeah.
Speaker 4: So we need to have like a secret CIO and
Speaker 4: you need to have a ID integration, and you need
Speaker 4: to have a hand plug in. So it's something that
Speaker 4: we keep walking on. And by the way, we also
Speaker 4: have like an open issue on that in our Gita propository.
Speaker 4: So if someone want to suggest another integration, feel free
Speaker 4: because this is something that we always keep updating. For example,
Speaker 4: someone said like, hey, we need you need to have
Speaker 4: a homeproove. You need to be installed with homepoop, not
Speaker 4: with a one liner. So we are listening to the community.
Speaker 4: And the cool part is that actually there's a company
Speaker 4: behind this open source, so there are people that are
Speaker 4: working on that full time. So every issue that is
Speaker 4: open is also issues that were addressed, and every box
Speaker 4: that someone is opening is a bucket that someone is
Speaker 4: trying to fix or to resolve, not like with Kubernetes
Speaker 4: that you have one thousand bucks and no one to
Speaker 4: actually try to understand if they are valid bugs or not.
Speaker 5: Yeah, it is cool. What's the business model this company
Speaker 5: is employing? Is there is there a commercial version of
Speaker 5: the software available or do there sell other commercial products?
Speaker 2: How does just fit into that?
Speaker 4: Because system Yeah, So, like I mentioned, I started as
Speaker 4: a developer and when we thought about this solution we want,
Speaker 4: we had one agenda, and it's to make sure the
Speaker 4: developers will enjoy using this tool and it'll be useful
Speaker 4: also without paying for you because like I said, you
Speaker 4: can always be the by you some So our goal
Speaker 4: is not to convert a single developer or a small
Speaker 4: team or team of tender velperlse. Our goal is to
Speaker 4: convert or to monetize big organizations that appreciate what they're
Speaker 4: doing and getting the value. So we have like enterprise
Speaker 4: grade features that are more relevant for those kinds of
Speaker 4: requirements you know, like as so custom support stuff like that.
Speaker 4: For regular usage of the tool, you won't mind that,
Speaker 4: and we don't have for example, we don't have feature.
Speaker 4: You're getting all the features that we have and you
Speaker 4: don't need to pay that. So the business model is
Speaker 4: basically based on the fact that some features that are
Speaker 4: not relevant to any other people all gated, which are
Speaker 4: like I mentioned so and stuff that custom support stuff
Speaker 4: like that. But we also have the limit of policy
Speaker 4: checks that you can run, which is today one thousands
Speaker 4: every month, and it's almost impossible to pass it.
Speaker 3: Also on this kind of show. No, no, I'm sorry
Speaker 3: about that.
Speaker 4: I'm sorry, okay, So I'll give you Okay, So we
Speaker 4: said the number for one thousand because we know that
Speaker 4: people should not.
Speaker 3: Pass it, not because you can't. You can't pass it
Speaker 3: right on.
Speaker 4: A regular basic if you want to use the tool
Speaker 4: and get the value. There's no reason for you to
Speaker 4: do so many any validation if you're not a huge
Speaker 4: enterprise organization.
Speaker 6: Basically, I had the doctor Pollard a couple of weeks ago.
Speaker 6: I couldn't figure out what was happening.
Speaker 2: No, okay, I didn't even know they had to pull limit.
Speaker 6: Yeah, they just yeah number something.
Speaker 4: Yeah, it's funny story about that. So they're also doing
Speaker 4: some checks to make sure that you're not did those
Speaker 4: things that you're not doing.
Speaker 3: That does attack on them.
Speaker 4: So let me give you a story about you know
Speaker 4: what they do. The name of the company because they're
Speaker 4: actually talking about it by myself. So there's a company
Speaker 4: called Data Dog and I don't know if you're familiar
Speaker 4: with them, and data Dog.
Speaker 3: Yeah, so they have a configuration the kubernetties.
Speaker 4: And part of the part of the configuration was that
Speaker 4: you always need you you always need to pull a
Speaker 4: new image when the application is going out when it's deployed,
Speaker 4: right in image pull policy, which means that you need
Speaker 4: to oways pull it.
Speaker 3: And they have like only.
Speaker 4: Three land addresses, so it's pretty IP addresses, and they
Speaker 4: have all the images hosted somewhere. And someone made a
Speaker 4: mistake like de velotals of making mistakes, and it was
Speaker 4: actually a buggy code that got deployed with Kubernetes.
Speaker 3: So what's happening.
Speaker 4: What's happened is that it's got deployed, so it's trying
Speaker 4: to push the it's trying to pull the image. The
Speaker 4: code is not compiling correctly, so communities is noticing that
Speaker 4: something is not correct.
Speaker 3: It's killing it.
Speaker 4: But then it's actually raising any one because this is
Speaker 4: what kubernet is doing. But do it like one thousand times,
Speaker 4: ten thousand times, one other thousand times. This is what
Speaker 4: kubernet is doing, and doing it from three IP addresses
Speaker 4: to the same place. And if the vendor thought that
Speaker 4: they're getting a DIDOS attack, so they blocked and this
Speaker 4: is actually.
Speaker 6: Very similar happened to me last week. Yeah, yeahs of times,
Speaker 6: but it was enough. Yeah.
Speaker 4: So I I think it's a really good example of
Speaker 4: a misconfiguration that is actually passing validation because it would
Speaker 4: pass schema validation, but it's actually have policy that you
Speaker 4: want to make sure that you're not always pulling the
Speaker 4: latest image because then you can digdle something by accident.
Speaker 4: So this is something that will be checked, but it's
Speaker 4: it's Cobnetti's valid, but it's not valid.
Speaker 3: Yeah.
Speaker 6: I think I need to have an alert and that
Speaker 6: validator now instead of having a poll policy of always
Speaker 6: just have on whichever one it is not present or something. Yeah,
Speaker 6: I really need that.
Speaker 3: Exactly.
Speaker 5: I remember reading a few weeks ago about a Kubernetes
Speaker 5: manifest linter that would look for things like that. It
Speaker 5: would look for pole policies, it would look for do
Speaker 5: you have resource requests that are insane?
Speaker 2: Are you asking for six thousand CPUs something like that?
Speaker 5: This, this tool doesn't do any of that, I don't think, right,
Speaker 5: But do you use one and can you recommend one
Speaker 5: that that does similar stuff?
Speaker 3: So this is a guy that is doing it's also yeah,
Speaker 3: again we are.
Speaker 2: Not with heuristics in some cases.
Speaker 3: Right, Yeah, you can also create like customers.
Speaker 4: You can say that you can say, like, for example,
Speaker 4: that I want to make sure that there is a
Speaker 4: liveness prop and the value of the like I want
Speaker 4: to make sure that the entry point is always the
Speaker 4: slash else for example something, or you can make sure
Speaker 4: there's a cip you limit and it's always said to
Speaker 4: something like that.
Speaker 3: Actually, you can do a lot of cool stuff.
Speaker 4: You can say, like for staging, I want to make
Speaker 4: sure that the cip you limit is free, but for production,
Speaker 4: the if you limit can be six. So we can
Speaker 4: also mix them up and you can say I want
Speaker 4: to run this specific policy for this environment. Again, it's
Speaker 4: not something new. There are other tools that are doing that.
Speaker 4: I don't think that we created something that is unique.
Speaker 4: I think what is unique about our approach is that
Speaker 4: we're doing it simple, or we're doing it in a
Speaker 4: nice way. We're doing it in a more integrated way
Speaker 4: inside your workflow. So we don't need to do their
Speaker 4: lifting bioself. You don't need to so this excepted that
Speaker 4: you gain, you would still need to have something that
Speaker 4: is also doing Kubernetive chemo validation. So we need to
Speaker 4: integrate another tool like you with a look you conformed,
Speaker 4: and you also need to do so that's another yamen
Speaker 4: in intern and you also need to configure it to
Speaker 4: connect to your helm as a plugin or whateverse you
Speaker 4: also need to build that. So you have this and
Speaker 4: this and this and this and this, it's only to
Speaker 4: be glued together.
Speaker 3: And you have a big headed again.
Speaker 4: So this is the project we are trying to take
Speaker 4: like we're trying to take it all off of your hands.
Speaker 4: You don't need to build all those integrations, don't need
Speaker 4: to glue them. Again, We're not doing something new. You
Speaker 4: can also do it. You can always do it with Jaq.
Speaker 4: You can also gluing by. You can also do it
Speaker 4: by yourself, but we will do it in an easy
Speaker 4: way for you. So you prefer to use the tree
Speaker 4: and overbuilding it by yourself. Again, if you have like
Speaker 4: free time over the weekend you want to build it,
Speaker 4: do and build it.
Speaker 3: It's fun fun.
Speaker 5: Exactly, It's a kubernet It'll be fun, they said, exactly.
Speaker 5: I'm interested in asking a question is completely unrelated to this.
Speaker 5: In your introduction, you said that you're a leader or
Speaker 5: founder or something of Hub Users group, the largest in
Speaker 5: the world. Tell me a little bit about that.
Speaker 2: What do you do?
Speaker 5: I mean, I'm part of the Go users group, or
Speaker 5: we don't call ourselves a users group. We call ourselves
Speaker 5: a meetup group. That's the new version of users group
Speaker 5: right here in Amsterdam, and we just get around and
Speaker 5: get together and talk about ghost Tell me what you
Speaker 5: do with a GitHub users group?
Speaker 4: Yeah, So basically like this article, it came from my
Speaker 4: own thing, and the paint was that I wanted to
Speaker 4: discuss someone about some features that get up ad and
Speaker 4: I tried to look with among my friends, like where
Speaker 4: do we have like guitup meetups that I can ask
Speaker 4: this question? And the answer was nowhere. So I said like, okay,
Speaker 4: that's cool, but I love get up. I'm using git up,
Speaker 4: and I'm sure that a lot of the veaples love
Speaker 4: git up and using it.
Speaker 3: So let's do a itt up about geitub.
Speaker 4: So this is how its gets started, and it's actually
Speaker 4: a user group because it's led by the community. I'm
Speaker 4: not working at Guitab, I'm not working at Microsoft, they're
Speaker 4: not paying me in any way.
Speaker 3: I'm just doing it on moren free time.
Speaker 4: So this is why it's called user group, and it's
Speaker 4: actually was surprisingly growing by itself because the first meetup
Speaker 4: was among one of the twenty people that register, and
Speaker 4: the last meetup that we did was eight hundred people registered.
Speaker 3: So because of the numbers that were, where do you
Speaker 3: ask all those people?
Speaker 4: Yeah, so the other numbers it's on nine, so it's
Speaker 4: usually it's on nine. We don't have a big place
Speaker 4: to hold so many people. And also there's like a
Speaker 4: benchmark that you know that if you have eight hundred
Speaker 4: people that are registering, not all will come. It's only
Speaker 4: thirty percent usually, so that's fine. But again it's a
Speaker 4: lot of beer and a lot of pizza to bring
Speaker 4: to Amita.
Speaker 2: Okidding, Well, that's great, congratulations on that.
Speaker 5: I mean, it's always fun to be part of a
Speaker 5: community like that and to get so much enthusiasm about
Speaker 5: whether you decided to start. I know that this has
Speaker 5: to feel good or maybe overwhelming or both.
Speaker 4: Another fun fact, actually, my co founder that was also
Speaker 4: the on episod number seventy six again or about the
Speaker 4: cross reference here, is actually leading the local AWS community,
Speaker 4: which is also the biggest one in the world.
Speaker 3: So it's a.
Speaker 4: Little bit of a fight because it got acquired by Microsoft.
Speaker 4: So I'm like on this side easy the data by
Speaker 4: West side, and we are working in the same company,
Speaker 4: but we're still good friends and we love each other.
Speaker 5: The group, because they're kind of Google related, that would
Speaker 5: be a nice little trifector.
Speaker 4: So they started, they started from Google, but right more
Speaker 4: they're standing by themselves. Yeah, it's like part of the
Speaker 4: CNCF and organizations, so it's like Google studied. But I
Speaker 4: think it was really nice that they say, like, Okay,
Speaker 4: we realized that it's something that is bigger than Google
Speaker 4: and we want the community to enjoy it. So hey, CNCF,
Speaker 4: take this wonderful child and pa raise it for us
Speaker 4: the world.
Speaker 6: Is there eight w us in Israel?
Speaker 4: Like local locally you mean like like salvers, like physical service?
Speaker 6: Yeah they do, they have like an office? Do they
Speaker 6: do they have like the physical presence?
Speaker 4: Oh okay, So we have R and D and in
Speaker 4: Israel for and right now they're actually building like we
Speaker 4: that data.
Speaker 3: Something centers in Israel.
Speaker 4: So we're also going to have the computers themselves, like
Speaker 4: the machines on Israel Land.
Speaker 3: We don't have it, so it will be all it
Speaker 3: will be holy service, I guess.
Speaker 1: And there's something you said, Julian you said you don't
Speaker 1: have a w S, right, we don't.
Speaker 6: Have a WUS like locally in the Middle East. So
Speaker 6: in the GCC, although they might be in Bob right now,
Speaker 6: I'm not sure, but within Uee and Doha we only
Speaker 6: have a JURE, which is a problem for me in
Speaker 6: getting local clients because I don't want to have to
Speaker 6: learn a lot of things, like I'm kind of lazy
Speaker 6: and a w US is enough, all right. It has
Speaker 6: a lot of things that I up with and that
Speaker 6: could be another story for another time, but like, yeah,
Speaker 6: for real, I don't want to move on to another
Speaker 6: hosting provider cloud provider. So that's been my public service
Speaker 6: announcement for the day. I guess.
Speaker 4: Yeah, there are a lot a lot of the centers
Speaker 4: in Israel we also have in the like there are
Speaker 4: a lot of the companies that Valenti is in here
Speaker 4: and because we have a lot of people that a
Speaker 4: lot of developers, a lot of qualified people to do that.
Speaker 4: The only thing that we still don't have is like
Speaker 4: the cloud provided themselves the mid local missions.
Speaker 3: But like I said, it's going to be changed.
Speaker 4: I know that Google is going not Google, but as
Speaker 4: she was going to open and a w is a
Speaker 4: going to open. We are using a west Virginia at aws.
Speaker 1: By the way, everybody's using west Virginia cool. Anything else
Speaker 1: you don't want to talk about.
Speaker 4: No, I think you got it all covered. So just
Speaker 4: to summarize it all, you should all validated, kubernet is filed.
Speaker 4: You should all do it as soon as possible. If
Speaker 4: it's possible to do it locally, to do it then
Speaker 4: if it's not possible, at least do it in YOURCI
Speaker 4: and I give some tips about how to do it.
Speaker 4: You can do it with the different tools that we mentioned.
Speaker 4: You can do it with the tree, but you can
Speaker 4: also do it with the other open source tools. You
Speaker 4: can do it with native tools with like you cattle.
Speaker 4: You can do it, but you then you need to
Speaker 4: put a connection to a cluster and if someone have
Speaker 4: any questions regarding that. If someone have any feedback regarding
Speaker 4: this article, please contact me. I think you will also
Speaker 4: leave my information on this and we are going through
Speaker 4: aust this so we have all my information and feel
Speaker 4: free like I'm super richable. My email addresses all pen
Speaker 4: and you can find me on get a project if
Speaker 4: you want to paint me.
Speaker 3: Whatever you choose that's.
Speaker 2: It, right on.
Speaker 1: Yep, we will put your contact info in the show
Speaker 1: notes and then the last thing for us to do.
Speaker 1: Here are our picks for the show. Jonathan, you're excited.
Speaker 1: Do you want to go first?
Speaker 2: Sure, of course, bring it on.
Speaker 5: I'm reading, or actually listening to an audiobook that I
Speaker 5: think is amazing. I usually read boring stuff like O'Reilly
Speaker 5: books about Kubernetes and helm charts and stuff like that,
Speaker 5: but I decided to branch out a little bit, and
Speaker 5: I'm reading this Sid Meyers memoir, which is still nerdy
Speaker 5: because he's a nerd, but it's so fun and he
Speaker 5: talks about game design and how he invented these games
Speaker 5: that he made for those who aren't familiar. Everybody's familiar, right,
Speaker 5: but if you're not. He's the creator of games like
Speaker 5: Civilization and Pirates and a bunch of they're really popular games,
Speaker 5: early flight simulators. It's a great book. I don't know,
Speaker 5: and it's he reads the audiobook. He reads himself, so
Speaker 5: I feel like I'm having a fireplace conversation with Sid
Speaker 5: Meyer when I read this.
Speaker 2: Oh that's super cool.
Speaker 1: Yeah, I played Civilization from way back in the day,
Speaker 1: Like what was the first day first version it was
Speaker 1: on Microsoft Doss. I think it it was either version one,
Speaker 1: it might have been two. I want to say it
Speaker 1: was version one.
Speaker 5: I think I starned with two, and I played like
Speaker 5: the sixteen different expansions for version two, and then I
Speaker 5: think I played every version since such a great game.
Speaker 6: Civilization is good, it's safe. I mean, probably more of
Speaker 6: my husband in sanity when I was on bed rest
Speaker 6: with my oldest because I had something to like obsess
Speaker 6: over besides kind of bossing him around.
Speaker 2: So that's that's my story, Jillian, You've got pick for us.
Speaker 6: I do. So. I've been on a quest to go
Speaker 6: and clean up a lot of my terraform recipes and
Speaker 6: release them publicly out into the wild. And I found
Speaker 6: it really good template for doing that from this group
Speaker 6: called cloud Posse. It's I think it's spelled pretty much
Speaker 6: like it sounds. They have a really nice like terraform
Speaker 6: GitHub template, you know, like the how you can actually
Speaker 6: create templates straight from gehub repositories now, like you press
Speaker 6: the button and it creates you a new repo with
Speaker 6: the file structure and all that kind of thing, and
Speaker 6: I really like it. They also have this really nice
Speaker 6: make file that just does like everything, Like there's so
Speaker 6: much stuff in that make file. It's amazing. So yeah,
Speaker 6: I've been cleaning up a lot of my terraform recipes
Speaker 6: for that and using like using that template as the base,
Speaker 6: and I think it's it's just a really nice terraform template.
Speaker 6: Check it out right on.
Speaker 2: That's awesome.
Speaker 1: Yeah, make files, make files and read me I think
Speaker 1: might be two of the hardest problems and software engineering.
Speaker 6: I still haven't given up. It's really it's becoming like
Speaker 6: a cultural age gap kind of problem for me. When
Speaker 6: I talk to new developers, I'm like, it's all in
Speaker 6: the make file. It's like, it's there, right, And I'm like,
Speaker 6: what's the make file, especially if they've been using like
Speaker 6: node and they're used to the package dot Jason, and
Speaker 6: then I'm like, what's a make file?
Speaker 3: Like?
Speaker 6: Sit down, you need to talk about this.
Speaker 2: Sit down in that chair, we're gonna talk.
Speaker 6: That's right, That is it?
Speaker 2: Yeah, have you got a pick for us?
Speaker 3: I didn't know that that is one. Sorry, I didn't know.
Speaker 3: You just make my own walk.
Speaker 2: That's quite all right, I've got one.
Speaker 1: And it's funny because I've heard about this for quite
Speaker 1: a while, and I was like, yeah, yeah, yeah, whatever,
Speaker 1: it's fine, and it's a screen protector for my iPad.
Speaker 1: But it's from paper Like, and it's as you might
Speaker 1: have guessed, it's very paper like because one of the
Speaker 1: things with using my my iPad and the Apple pencil
Speaker 1: is it felt really slippery. Plus I'm left handed, you know,
Speaker 1: so I have this thing where I wrapped my arm
Speaker 1: around three hundred and sixty degrees in order to be
Speaker 1: able to write anything and then curl up in a
Speaker 1: fetal position. But it was really hard to write on
Speaker 1: my iPad, but I wanted to do it, and so
Speaker 1: I finally broke down and bought this screen protector called
Speaker 1: paper Like, and I put it on and felt it
Speaker 1: with my fingers and I was like, yeah whatever. But
Speaker 1: then I actually I started using it with the Apple pencil.
Speaker 1: It was like, holy cow, this is really like writing
Speaker 1: on a piece of paper. So that's my pick for
Speaker 1: today is if you have an iPad and the Apple
Speaker 1: pencil but you are struggling to use it because it
Speaker 1: feels like it just slides all over the place, the
Speaker 1: paper Like screen protector has solved that problem for me.
Speaker 2: Is it iPad specific I will work on any tablet
Speaker 2: that you use with the stilist. That's a great question.
Speaker 2: I don't know.
Speaker 1: I only looked for the iPad version. I would imagine
Speaker 1: that they've got it for pretty much any tablet. Yeah,
Speaker 1: because it's just, I mean, it's just it looks just
Speaker 1: like a screen protector you know that you buy for
Speaker 1: your phone or any tablet. There's nothing significant about it,
Speaker 1: but the texture of it feels like paper. So props
Speaker 1: to their marketing team for naming the product as well.
Speaker 1: All Right, I think that's it. We've got a wrap.
Speaker 1: Thank you everyone for listening. Yeah, thank you for joining us.
Speaker 1: This was a great chat. And Jonathan, Jillian welcome. Happy
Speaker 1: to have you guys here, and we'll see y'all next time.