Good morning. Hello. Greetings. Good day. Just give people a couple of minutes. Liz, we will likely have time for open floor today. We will likely have time to what so open floor is basically things so just kind of keep that in mind as far as the things that we currently have on the agenda are not likely to take the full hour. Okay. All right. Have we got 24 is actually pretty pretty much a good turnout for us these days. We got we got good representation from the TOC, Amy. We're getting there. Few more people rolling on in but we don't need quorum for this particular meeting today. So, I'm keeping an eye on it. Yeah, cool. Yeah. All right. Maybe we can get started. So, welcome everyone. Normal things. Normal behavior. And, yeah, so, as Amy mentioned, we'll probably have time for some open floor. But we thought we could have a look at the current set of projects that are applying for graduation and incubation and just try and get a read and discuss maybe some feedback for those projects. And I don't know if we have this on the slides but I'm sure a lot of people will be aware we've been talking about. And there is a PR I'm sure someone can find the PR for streamlining the graduation process such that we will have a quick discussion in the TOC just to sort of get a read on whether there are any. Well, either sponsors who are very keen to take that project through graduation or possibly if there are concerns that people have that basically say we, you know, we know we're going to struggle to vote in favor of graduation, because that's what concern XYZ. So that proposal is out there. We haven't had a vote on it yet, but there's no reason why we couldn't start having those kind of discussions. You know, now anyway, the process is about kind of formalizing something that we believe we should be doing anyway. Amy has posted that PR. Thank you Amy. Right, so I guess the projects that we have on deck for graduation. I think that's has been there for a long time. GRPC has been there for a while Falco has been there for a while. And not so long actually Falcos are more recent application. And we could probably just have a discussion about the status of those projects and see whether or not we have a TSE member forthcoming who wants to sponsor them, or whether we have any particular feedback for those projects at this stage. And I think you know it's useful to get input from the wider TSE community as well. But for both incubation and graduation we do need a sponsor to step forward if it's going to, if the process is going to go ahead so if there is an absence of TSE sponsor that basically said the project is not going to get through that next stage. So it would be helpful if we can articulate feedback to the projects about, you know, why people are not feeling confident to step forward. Does that make sense. Any questions or comments about that right now. Okay, do we are we also soliciting at all the tags prior to that. I think if there is. Yeah, I think the way that we described it in that PR it doesn't affect what we would do with tags at all this is supposed to be more of a shortcut process to say, you know, if there's some if the TSE. If there's someone who's really keen to sponsor a project, they can step forward earlier in the process and make themselves known earlier. And equally if there are people who have serious reservations we can make that known earlier in the process those reservations might turn out to be unfounded or wrong. But that could be input into what the, what the, what we asked the tags to look into, or, you know, if we, if we were to say, you know, particular project we don't believe is ready for graduation, that project would be able to come back quickly and say actually we'd like to do this because we think you're wrong for, for whatever reasons. That seems, you know, I think that's better than our current limbo situation but I don't think it actually changes. It's more about forcing us to have a conversation earlier, rather than changing the thing about how the tags involvement fits into the sort of. Yeah, I just wondered if the tags, if they had serious reservations like I don't know that every TOC we've had has fully represented the spectrum of technology that is the umbrella, right. Of the CNCF and so I just wondered if, if we also have that kind of that check with the tags if they had like, there are more boots on the ground understand maybe some of the interactions that they would be able to at that point. If they had serious, I guess I'm more in that if they had serious reservations they could also bring that up at that point. Definitely. Yeah. Yeah. Yeah. This, this early stage isn't supposed to be about like making a. Like, it's not about deciding whether things go into graduation or incubation it's more about deciding okay how are we going to go through this process are there some immediate things we want to get investigated or get dealt with. You know, if we have blocking issues that it might be better to tell the project, kind of straight away rather than saying yeah okay after six months of deliberation we've decided that this thing we already knew was going to be an issue. Right, I was just honestly thinking of like open EBS is an example, like, maybe that was well known in the, what would have been the six then at the tax now and not necessarily to the TOC, unless it been brought up through that process so I just wondered if we wanted to formalize that. You know, touch. Yeah, I mean I think they would still be able to bring up those concerns, you know it doesn't change the due diligence process in either case. Yeah, is that does that make sense to. Yep. Great, thank you. Any other questions or comments about the sort of general principle of that process change. All right. So, and this was admittedly quite a late breaking choice to discuss these on the agenda today so. I appreciate this is. We haven't had a lot of chance to go and research the projects but let's air the things that we know and and see where that takes us. So nets have been applying for graduation for a very long time, and we have historically had concerns about the, the kind of vendor independence of nets. The last we discussed it to my recollection that was a suggestion that perhaps going along the lines of an advisory group. I don't know if it like link ID have have put in place might be a way forward, but I don't know if that's actually made any progress in that direction. If anyone is aware or would like to comment. If we have anyone from. Hi, this is Ginger Collison. Nice team. That's Nadia hi. You know, we've been watching the changes in the TOC and. You know, the different criteria and changes to graduation requirements. We had discussed putting in a steering governing committee kind of thing and at the time we were doing this, and the level of effort it was going to take more discussions around the contributor strategy group and with the TOC was that that may or may not help us with graduation. So we kind of put a pause on it to see where the TOC was going to land and their graduation requirements before we move forward. So that's kind of where we are now. With link or D going through with graduation. So it's a little disappointing, frankly, just because we tried. And actually our diversity or contributorship or whatever, in my opinion, was greater than link or D's and it didn't seem, excuse me, that link or D went through the same rigorous due diligence that the Nats team had to go through so right now we're just kind of in a holding to see what we're going to do next and what is the best way forward for us. Right so. I guess we, you know, this doesn't have to be a kind of comparison of link or D and.  We did. And I think they have. Actually, there's a lot in common between those two projects that there's, you know, there's a single company, and that for which many of the maintainers work, and I think actually William articulated very, very well that you know the challenge that if they have a really good approach to the project they want to hire that person and that's good for their business. So I think the fact that, you know, they came up with a steering committee model they work pretty hard to try and make sure that that steering steering committee had, you know, teeth within the governance process. They put the steering in committee in place a few months, you know, before they came back and reapplied for graduation so that we could see that it. Had.  So I think that could be a good model for a steering committee for other projects in a similar. In a similar situation like Max is in where there's, you know, for good reason, one company who are tending to hire the contributors and the maintainers for for that project. Okay, and a question also. So when we applied for graduation at that point the tags were not doing the due diligence documentation. To move forward would we have to go through like with tag network would we go through the due diligence with them all over again. So we should be able to reuse the incubation due diligence is starting point and the graduation due diligence is is a much kind of, you know, it should be a smaller process is really up to the TOC person who sponsors graduation to decide how much they want to delegate to the tag. Okay, and I don't even recall who our sponsor was at the time it might have been Alexis but he's no longer at the TOC so I assume we would have to get a new sponsor. Yes, that would be correct. Yeah, okay. Yeah. Thank you. I think if there were a because in many respects, you know, Max is a very mature project. I think if there were a good solution to the steering committee I wouldn't want to stand in the way of anybody else sponsoring it and this is very much predicated on there being some, you know, good stable steering committee solution in place but if that were in place I would sponsor it. Yeah, good to know. Thank you. Anyone else got any other comments or questions on that? Anyone else from the TSE got any opinions on Max's readiness for graduation. And so I would say the steering committee is a requirement for projects that don't have multiple organizations like as committers. I've talked a few times about how we want to document this and I think Josh is here and may have some additional things he might want to weigh in from the contributor strategy governance group. I think we always ended up in a situation where we didn't want to say a steering committee is like the solution we want because we would prefer projects to have contributors from multiple organizations. That's the better solution in many cases, but we have this situation where there are projects that have, you know, a very close relationship with one vendor. They, you know, have been there, they've been part of the CNCF for many years and we want to be able to support those projects in a way that doesn't, you know, that still provides the guarantees that we want to provide guarantee is a strong word but still de risks. You know that the project isn't quite that it isn't at risk of a vendor just kind of deciding to do things like feature hold back. I think that's one of the real risks. Yeah, the previous TOC decided that the two, the two reasons for the multi organization requirements the two things that the CNCF wanted to emphasize were number one that the project is open to contributions from people working for companies other than the original sponsoring vendor. And obviously, if you have a maintainer who works for a different company that that readily demonstrates that. And the second thing is that the project will survive something happening to the original vendor. Or has at least the possibility of surviving. Obviously, lots of projects have a problem in the second. So it's more of a matter of, you know, how risky is that particular risk. And, and, you know, when we discussed this multi organization requirement last year those those were the two things we're emphasizing. So I think on the new graduation short form there's a question specifically about the second. There is. Yeah. Yeah, it's something maybe dims or dims is sent his apologies but dims might remember the wording but yeah it's something like how will you ensure the longevity of your project in the event that the original founding company stops supporting it or something like that. Yeah, I mean my question was more about whether the TOC has thought about formalizing that type of process or maybe. Yeah, we didn't we didn't want to like write down a prescriptive. Like a lot of things in the CNCF and the TOC is sort of based on prior examples. So we didn't want to say a steering committee like this is the solution that we would accept because maybe that wouldn't be right for all projects for which is, and I think we would always be asking a project why it needed a steering committee rather than having multiple organizations represented amongst the maintainers. So for good reasons why that's the case for a project, you know we should be open to kind of, I think the steering committee model is a creative solution to, you know, addressing very much the first of those two points that Josh mentioned that the one about ensuring that the project is open to contributions and that the roadmap isn't entirely steered for the benefit of one company. I think the types of steering committees are also a little bit different across the projects because if you look at the Lingardee steering committee it's an end user steering committee. So it doesn't actually have. It doesn't have much say over the technical aspects, like the Kubernetes steering committee does so it's it's a different type of steering committee. So, so we're also not necessarily specifying what type of steering committee we're talking about so I think there are multiple types depending on the project. Yeah. Yeah, I think it also depends on the, the founding organization, maybe the founding organization is this really stable company too so I mean, would they need a steering committee. I mean, in the case of Kubernetes you know it's Google right so Google. I'm sorry like Kubernetes has a lot of you know different organizations contributing right so that's not a good example. I mean, I think the Kubernetes is a really interesting sort of mental experiment that you know you'd obviously had its roots in Google and Google is still a huge contributor to the project but if Google were to, I don't know just suddenly decide that it was not doing anything in the world of Kubernetes. The project would have, you know, some serious gaps to fill but I think it would still carry on I think that's the sort of the level of the risking that way that we would like to see and I think it is harder for a project to demonstrate that if it doesn't have contributors from or maintainers from from lots of different organizations. And we do have projects with like a pretty low bus factor as well where you know there would be a serious risk to the project if a particular you know, particular individual that they'd have. Yeah, but hopefully none of the graduation projects would just not survive you know I think we want to be in a position where the graduation products can pick themselves up dust themselves off after a catastrophic disaster like that. Liz would it be fair to say really this is about the longevity of projects and trying to guarantee that. I think so yeah. And I think from the TOC perspective it's less trying to be prescriptive about how to do that. It's like these committees are one way to do that. But it sounds like the TOC is open to kind of other options, as long as kind of that end goal is met. And that's why it's not a requirement per se. I think that's that's well articulated. I think GRPC may have some similar. It feels like there's some parallels between GRPC and that. Do we have any GRPC maintainers here? Yeah, I'm here. Hey April, hi. Hey Liz.  GRPC kind of went through a similar experience of you know feeling kind of like the goalposts requirements were kind of moving and changing on us. It was kind of hard to commit to that big governance overhaul like Ginger was saying as well. So from the GRPC perspective we're also in that weird spot where it's a library.  So, you know, it's, it's kind of hard to say that like in your example of Kubernetes if Google were to just decide we're not going to do GRPC anymore. You know, there's still companies that would keep the project would still going, keep going. I mean, people are using this in production. So it's just kind of this weirdness of trying to solve for whatever the particular maintainer requirement was, and not really finding a way that would really change. You know, it's our, it's our opinion that we do have the maintainer diversity. And, you know, I think also one of the things to consider when we talk about steering committees and everything else is like what is the problem we're actually trying to solve. The maintainer diversity is one thing I think we all are feeling that especially post pandemic a lot of projects are, you know, seeing that there's also the, you know, when you talk about the longevity issue. You know, there's two things one it's open source. So it's always if the maintainer steps down to hopefully someone else will pick it up and run with it. And that's also I think why we donate to CNCF is so that there is that community of people that care about a project and would let it go. I mean, you know, keep it going I think that's kind of the advantage of doing that so that's kind of my thoughts. But from gRPC's perspective, we are very much, you know, engaged with the community we have a well documented process for putting in a new feature request we hold ourselves to it just as much as everyone else. And I said, you know, we've got great maintainer Microsoft in particular has just done a fantastic job supporting their dot net implementation. So we certainly work with others and we are very much used in production so. Yeah, I would say and maybe I'm not looking in the right place I'm just looking in gRPC gRPC and the maintainers. Oh there is one Dropbox maintainer. There are three, there are three, there's one from Skyscanner and one from somewhere else. Yeah, and that's just more implementation I mean when you look at the dot net. It's pretty much all Microsoft and that would be in a different reply with it. Right that's the that's the problem with gRPC is it's not just one maintainers file it's a maintainers file for each language implementation. Yeah, yeah that's has the same issue with regard because we are an entire, you know, Oregon GitHub and we have, you know, 30 some clients that you know complement the not server and are required for the not server to work in production and we have contributors from individuals to different companies that contribute to all those different clients as well as connectors that are not in our necessarily our GitHub organization, but they are, you know, all over the community so. Yeah, I think that's one part like you know with obviously nets went for graduation before gRPC did but we both kind of hit the same spot in the process where we are different than, you know, a traditional project since we are kind of that library structure, and that's where we both have hit that same kind of pain point of no if you look at the core repo, you know, there, there is largely Google maintained, of course, we're running it ourselves in production. But when you look at, you know, the other repos there, a lot of them we don't even know, you know, the Swift repo I'm not sure what Apple's up to with it and that's fine, you know, back into history and this is an X member of the TOC and, you know, so who no longer, you know, has a has a binding but I recall there was a concern. This is historical so hopefully things have moved on. There was a concern that it was hard to get proposals accepted into gRPC unless you were from Google. I don't know, you know, a fair concern but that I remember being brought up. I mean I would, of course, ask for an example, which I realize it's historical. Maybe the way to address that is to say well here are some counter examples here are things that have been proposed by, you know, people outside the organization that would, I think go a long way to addressing that. Yeah, I mean it's like I said it's kind of two fold again of, we do have a documented process for G a G. Gosh, it's too early gRPC gRFC, because we like our acronyms. So, you know, you make the proposal you fill out the standard document, kind of similar to how the TOC does we have a two week process, you know. So no, not everything is going to go through, but you know we we definitely have a well documented process and other things have, and then that's countered by that's one library that is, you know, particularly strict perhaps. You can counter that with, you know, when you look at like I said, the Swift repo, the Rust repo, you know, those process they have the same process but you know the level of getting something in in terms of a new feature is probably easier on some of the newer repos that don't have as much of a legacy code issue. So I think that's you know some of it like if we keep going back to the main repo which is the C, you know, that's got a ton of technical debt and other issues. So it's not necessarily as easy to put in a new feature as it would be in some of the other languages and that's not a project specific barrier that's just that particular you know technical spec. The GRFC proposal website though has the governance of this list one specific person as the approver, unless someone else is assigned doesn't seem to be seems seems to have a specific named individual as the approver for all GRFCs, which doesn't seem a very open process. Let me check at that because normally what we all of our GitHub is set up with teams. So I'm wondering if that's just a technical issue, but I will check on that but no it's it's it's all reviewed by the same maintainer list. So it could just be a, I will double check on that but yeah it's all, and I think in the governance. There's a separate governance md that describes the process more, but if we have it, not properly documented on that RFC page I will update that. So thank you for calling that out. I feel like, you know, time has you know that's that's clearly a thing that needs to be to be addressed but you know that doesn't seem insurmountable. I wonder whether we should be well first of all let me just see if there's anyone from the TSE here today who would be interested in sponsoring GRPC. Through the process subject to things like this being fixed up. We don't necessarily have all members anyway. I could probably do it. I once I've finished my incubation. Great, great. Okay, so that sounds like there is appetite there to dive into this and see whether we can't find a way for GRPC to sort of answer those questions about longevity and risk. Because I think in many other respects it's an extremely, you know, widely used project. Yeah, and I guess I mean it feels like we're kind of coming back to we're having like I'm not sure what more we we need to do to address the longevity and risk. I mean, you know, that's the nature of open source right everybody's a volunteer so I can't guarantee in the future that if we were to just suddenly stop working on GRPC I can't speak for anyone else. And guarantee it would continue on. So I don't know if that's that's the piece that I feel like, you know, if I can speak for the Nats folks as well like we're feeling a little in the dark on exactly how we're supposed to solve a, you know, the longevity of an open source project like isn't that the whole reason we make them open source and donate it to a foundation. Maybe one way to think about this is how would you if you had an end user company who was relying on GRPC or on something else that was relying on GRPC how would you articulate to them. You know this is a. This is something we believe you can depend on, you know, like you say it's open source it's not like things are set in stone and guaranteed and it's not something you pay for but you want to have some. And you don't answer this now I'm saying I think that's that's maybe a way to think about like articulating it and saying this is why we don't think it's at risk, if this happened. This is what we think would be the outcome. Well and that's what I think like having that requirement for graduation that it's you know used in production like well. That's why I don't think it's going to go anywhere because it's being used in production at Google and Netflix and you know a lot of big companies that are involved in the CNCF as well. So I mean if I was speaking to an end user that's what I would say and I think that's how they've adopted it. And that is even with that like there's always that inherent risk of open source like anytime you bring a dependency and who knows. I think we all recognize that when we do when we use open source so that's the piece that it's, we're kind of constantly coming up against this and. And of course I mean this is this is where the you know the multi vendor thing addresses the risk thing to some extent because it basically says you know, if one company decides not to participate anymore there are other people who are still interested, we think you know we we have that you know, so that could well be the you know sufficient answer to that question. Speaking as an end user. So, for example, Kubernetes. I know there is a lot of involvement from vendors like VMware and red hat, and that gives a lot of trust. And I'm not talking about the technical contributions. And if in addition to project adoption by the vendors or contribution from the vendors, there would be more trust. I hear you and I what I'm saying also is for like I feel like on grpcs perspective and that's as well, we have, we have done that. So, but we're still coming up against this, and we have for years. My sense is April that, you know, time has passed things do you look very stable there's, you know, a lot of usage of grpc so I, I don't want to prejudge anything but I think the fact that Justin has volunteered to put that on his Q is is a step in the right direction towards graduation. Great.  Yeah, let's go. I have pancakes is ready pancakes has a cap and gown he is ready to go.  Yeah, excellent. There's your incentive right there you get a sticker. So, yeah, wonderful. Thank you. All right. And then Falco, which is a considerably less long in the two applications and the grpc and that's one so. I think I saw the Leo on dance here so we have some folks here from Falco. Yeah. One of the Falco maintainers. Yeah, we've definitely been in the queue less than the other projects it's been probably at this point around four months something like that in a general way from our perspective is more like like waiting for guidance understanding from the to see what's your view. If you if you think we are ready. And if yes, if somebody would like to sponsor us if not, we'd love to understand what we can do here to move the project in the proper direction direction to our graduation. I guess I had put a few thoughts on the PR for this a few days ago. I would say at the moment, it feels to me like it's not as stable as I would like to see. I'm not saying it's unstable but I would like to see kind of a broader set of maintainers and students over time through, you know, if I if I compare it to, if I compare it to that so grpc for example the the number of people and the, the the momentum behind it has been. I guess it just doesn't feel as established for graduating projects. How would we measure it and what would you like to see, we've seen in a general way, pretty strong adoption of the project including several users using it to scale in in production. We've documented some of them in in our PR in a general way this point. Yes, you know, since this is the company that originally contributed it but the community, we feel it's pretty healthy, pretty much this point largely on autopilot we have constant discussions, like constant contributions, including contributions from our, some of our direct competitors that are participating to the project we have many companies with commercial products, basic basic solutions on top of palco. So, what, what can we, what can we show you. Can I kind of add to this and sorry lords, I can just add to this. And there's also if you look at our adopters file. And by the way, I'm Dan Papandre, I'm the director of open source community and ecosystem for Falco. And so if you look at kind of the adopters file and also like, you know, if you look at the names in terms of hyperscale you see like the AWS and red hats of the world I just was late to this call because I was on a call with Microsoft are looking to integrate us from the, from the Azure perspective right. And so there's that. In terms of main maintainers that are you know external to statistic. Again, it's when you're created the project you kind of have to spare the special spearhead especially because of the interesting, you know, like the introspection point that we have with the BPF and those types of things there's a limited set of folks that understand how to do that. We've made it very much inroads with the Falco sidekick project with which has, you know, many external contribute contributors and so much in fact that we've created seven direct blogs that have integrations to things like, you know, Prometheus, Open Fuzz, you know, Tecton, Argo CD, which is also a project looking to get graduated so there's a lot of community integration and also we're seeing maintainers that are of a wider, a wider main maintainers base from that perspective. So we're just looking at it this like, yeah, I think we're much more established than we were during incubation, for instance, if we look at it for docker pools, for instance, it was from 8.2 million docker pools as of this morning to 29 million. So we know this project is being used. So we just want to understand from the talk, what is our next steps what can we do to put the talk at ease for either one for us to get a sponsor or two for us to graduate, or both.  The sidekick, fabulous, wonderful that you have people contributing to it but people contributing to sidekick are not necessarily going to be able to maintain the EBPF code or the kernel module code if you're using that side of things. I mean, if I look at the contributors to the core file code code, you know, that it's, it's pretty cystic dominated we've talked before about how that doesn't have to be a blocker that can, you know, there can be ways of having steering committees to ensure that, you know, the project isn't that's been driven for the benefit of that one commercial company. But you know if I look at, again, you have the disadvantage that I know some of these people or the fact that two of the top three contributors have moved on and they made it they're still contributing so that's great but I would want to see them contributing over a period of months to say that that's actually stable. On the EBPF side again we've made inroads talking to other projects that are using EBPF and as mainstay projects of this so if you look at like we've talked to like it for instance from Tracy to see if maybe there's ways we can come up with a universal rule set or contribution to like you know he asked us to look into creating a driver kit update so we can all have a standard place there that's one in terms of, you know, like we talked about before and you're in this space and you understand this it's very hard to find folks that understand EBPF, you know, XDP all those types of things and so, you know, that's something that, you know, because we, you know, cystic has that underlying expertise, it's and as I'm sure the same as for Isabel or Sonia. I mean, I'm currently doing the incubation review for Sillium and they have nine external contributors contributing to the core. Those are people who, you know, will be working with EBPF and I've been talking to end users about EBPF and that's not the part of it that they have problems contributing with because I asked explicitly about that because it's obviously an issue so I actually don't think that's an excuse for not having maintainers on the EBPF code. That's a fair statement and again it's also I think having like CNI integrations as well I mean is this specific to EBPF capabilities or just overall. So it's more just looking at the, you know, if I look at the core code, you know, if I look or if I look at the core repo, knowing that, you know, I mean, I'm just looking at the grass now I'm going to guess that two thirds of the contributions in the last month came from people who've recently changed from cystic to something else. I'm just doing that by I don't, you know, with, you know, and that's great it's fantastic that there could be another company supporting the, you know, the project going forward, but I wouldn't want to, you know, say to an end user that that's it's multi vendor it's the risk I want to see that over a longer period of time. Yeah, that's that's my honest opinion of it is it just doesn't feel that we have an established stable group of cross, you know multi vendor contributors at this point. So you can get that as we can find people to contribute to, to that and you know if for example, and you know collaborating with aqua comes to pass that would be a really good way of, you know, having a multi vendor input, but I just don't think it's there yet. What would you like to see at this point trying to understand you know what the next steps for us could be and what, what, what can we do here and what can be the metrics for us to be considered worth graduating. So the, the criteria require the TOC to feel that is sufficiently mature, which is a pretty, you know, subjective measure, but that allows us to, you know, look at the maturity of different projects along a lot of different axes. As I say I just have this flag right now that the core project has a small number of maintainers, those maintainers are almost exclusively from Cystic or just left Cystic, I would want to see over a period of months, some stability around that and never a continued activity to, to make people confident that that is a project that isn't just going to get parked. It's not the answer you want to hear but that's mine. Yeah, I think it just needs some time. So in practice this means we come back again in a certain month, a month of months, and if yes what would you recommend these amount is. I think usually when we've had situations where we've suggested people go away and come back again it's usually been sort of six months. And there could be other people in the TOC who disagree with me, I, you know, it's not just me, I feel a bit like I've done a lot of talking. Yeah, we recommend to check in with the TOC periodically, maybe once a month or something like that and see how the project. I think once a month will be pretty, you know, pretty frequent for us, given the rate of things that we get through. And once in two months or something like that, I don't know. Yeah. Yeah, I think there may be. Yeah, go ahead. I was going to say is there like a tag maybe that they could sync up with to be to do those kind of regular check ins or think that's the thing that Laura said in the beginning that we're kind of confused by and we're trying to figure is that process right it's it's kind of like now we have we've heard this now right and now we know what we need to do, but this took X amount of time and I know we know you ever talk as we understand that. As much as we might disagree right and we still have to make sure that we're following the talk process because we do want to graduate do feel that the adoption of this project is is is making this thing like where it's, it's a project out there so we will continue to do that so I guess the question more is like, what, what is the periodicity should we should do check ins for this. And, and, and what would you like to see to avoid the being in the situation again. Is it specific to this or is the is the goalpost going to change at a given point so if we come back and we have we get we have more people contributing at the core level we're at the ebpf and all those things is there other things that we have to address. I can't speak for the whole to see I can only tell you what I the concerns I have. And, you know, in, I mean I would say maybe you know, six months seems like a reasonable period of time for things to have a, you know, if you came back and said actually yeah look at this, you know, it's the same group of maintenance but now they're working for different organizations so we kind of proved that multi vendor thing and it's been stable for six months and you know an adoption still going up that would feel, you know, more likely to, to kind of meet the criteria you know equally in six months time, you know, maybe I wouldn't be on the TOC anymore maybe it'd be different.  The criteria are we know we're trying to write down the criteria to the best that we can but it is a judgment call in the end of the day. And we want it to be hard because we want the graduation to mean something, you know, for, for end users. There's no denying the, the adoption of NADS, GRPC and Falco and they'll continue to be adopted and used regardless of, you know, again we really appreciate the, you know, the graduation kind of spec and all that it's awesome we love to hear and that's the other thing we just want to make sure that we understand what is necessary to get over there so there isn't that, you know, that object and trying to promote a project so let's let's figure that out and we appreciate everyone giving their feedback here. I think where we have had historically concerns about projects a lot of the time it's come down to this. There isn't multi vendor multi organization maintainers, you know, some projects demonstrate that very clearly I mean, you know kubernetes is a fabulous example for that. You know, projects don't do that and different TSE members have historically had stronger or different feelings about how, how crucial multiple vendors is how we, you know, we understand I'm sorry to interrupt you but we definitely understand that we do have aspects of multi vendors and in terms of the maintainers aspect on the core side it just seems like that seems to be the reflect the inflection point at this point maybe if I'm missing it right or wrong but it makes sense. Yeah, yeah. Yeah, I think that's from my perspective. It's also trying to balance as a project, the future of the project because in a general way, being part for a very long time as the potential to for example disincentivize people from from contributing or using the project and essentially understanding what the rules are because as you were saying these rules by nature are subject to interpretation so that makes it more complicated for us to just, you know, exactly understand what to do and how to do it you know we're committed to do whatever is required, but clarity definitely helps us and minimizes the potential damage that is done to the project. Yeah, I'm not quite sure where the damage comes from but, you know, because CNCF is still, you know, it's an incubation which is a pretty big, you know, sign of confidence and support. Yeah, to give you an example, there was a junior developer in the project that started making contributions and wasn't sure if this was the right project to contribute for him based on the uncertainty on the future of Falco. Okay, so I'm going to turn that round to you and say if there's a junior developer contributing to the project who isn't sure about the longevity of the project. It's reasonable for me to have like, okay, you know, is that ready to graduate. You know, you know, the CNCF's role in this is not to provide the de-risking. The CNCF's role here is to support the project in incubation such that it can get to a place of de-risking. Yes, again, we're committed to do whatever is good for the project and we'll do our best to do it. Wonderful. Is anybody else? I mean, we're almost running up to the hour. Does anyone else have anything they want to say about Falco? I'm just wondering if there's anyone from Six Security here, for example. Yeah, and I wish there was a way of being able to sort of articulate that saying that a project is not, in my opinion, ready for graduation is not, it's not like a vote of, you know, I still have confidence in the project so I still think it's a good project. In terms of tag security, just one kind of note further talk, we've, we're kind of almost a gold standard for the vulnerability assessment aspects and those things that have been done. So, like, I've been told from members of the tag security that, like, it's really was done well from that perspective. So I think their concerns in terms of, you know, the vulnerability that they've looked into were addressed as part of this initial process. So if you look in the PR that has that being addressed, so I think that should be less of a concern. Obviously, we'll run into that as we go. But that's definitely something that we've, as a security product, we want to ensure that we're addressing. And again, we appreciate the talk giving us the time to be able to speak about Falco because we feel very strongly about it and we'll continue to feel strongly about it. So we know it's a product, excuse me, it's a project people are using and people are contributing to and are adopting. Great. Keep that up and see I see we'll want to graduate it. All right, so we definitely didn't have enough time to talk. We didn't even have time to touch in on the incubation. Actually, we've got like one minute. Okay, so does anyone who's on the call, any sponsors want to make any comments about how they're getting on with the incubation and due diligence. If the sodium is nearly done, I will be bringing it right soon. Question on virtual cubelit because I know that's been out there for a while. I think I still have no, okay, change drop the call never mind. No, I'm here. Okay, sorry, carry on. Yeah, I, I mean, there's a virtual cubelit community meeting actually on Thursday in couple days. So I don't know if anyone from that community is on this call but I intend to attend the virtual cubelit meeting and have a discussion about the, you know, the issue is really compliance. What's the current situation, what we believe should be the should be the right stance. You know, at least I want the project have a strong opinion of this, then, then I could bring it back to TLC to have a discussion, because right now we don't seem to know where we really are clearly and we have a strong opinion. That was the question of compliance with like, what is a key with, with, yeah, with real cubelit with the non virtual cubelit. The virtual cubelit has a lot of implementations but but but they're they're complying in various different ways. So, so it's very tricky because how, how, how strongly do we hold compliance anyway so I think we've talked enough. Okay. Please feel free to reach out to me if any, any virtual cubelit members on this call and maybe we can have a chat even before Thursday's meeting. I hope that, I mean, I think talking about, well, I hope this is this has been a productive meeting. Thanks everyone for joining us. And yeah, see you next time. Thank you, Liz. Thank you. Thank you.


Hey, hello, and welcome to the show. It's time for John Park's workshop. That's me. I'm John Park. This is Adafruit. Not really. This is my workshop here in sunny Southern California. And hello to the people of the chat. We've got people over in the YouTube. And I want to say hi to Mr. Certainly and Dave Odessa. Hello, and welcome to the show. Over in our Discord, which is at adafruit.it slash discord, if you want to go and check it out. We've got Dexter Starbird, C Grover, Gary Z. Hello, doctor. Oh, wait, that may be from yesterday. I'm looking at some people from the past. Yeah, all right. Well, hey there, Karin. Nice to see you. It is excessively sunny this Southern California of ours. You can see me trying to keep my glasses from sliding down my nose there with the heat. So you know what? I don't mind the heat so much, but you know what? Mind the heat? This broadcasting workstation. That's what I'm going to blame the bizarre behavior of this workstation on the heat, because it's doing weird things.  I've got the AC running, so hopefully it'll stay good. But I just had some restarts and things going on right before we launched. So let's all think happy broadcasting thoughts, shall we? So let's see. How about we start off with the ye old job board? Adafruit has a job board. Did you know about it? If you head to jobs.adafruit.com, you can check it out. Check it out along with me. Let's do that. Here's the job board. I say that, but I've got a spinning beach ball on my machine as it struggles to move to the next screen. Hey, look, there it is. And the jobs board is not only job postings, but also you can post your resume. So I wanted to point out today that if you go to this available for hire section, you will see we've got a tremendous number of skills on display, people who are experienced hardware designers, coders, a recent EE graduate, hobbyist circuit designer and programmer, creative concepts design and marketing, if you're looking for art and design work from someone. And on and on, there is even someone with technical services who is ready to get off the couch and move to their office chair in Saga Tuck, Michigan. Well, come on. That sounds like it's probably worth checking out. So head on over to jobs.adafruit.com and you can check this out. It's free to post your positions. It's free to post your resume. And hopefully, we make a work connection. So that's jobs.adafruit.com. In other news slash information, I've got a show I do on Tuesdays. It's called JP's Product Pick of the Week. And on that show, I like to highlight something cool, something that we make, that I like, that Pick of the Week, good just during the time period of the live stream. That shows on four o'clock Eastern times on Tuesdays. This is what we looked at this past week, which is an old favorite, the PiBatch, which is a M4 based at SAMD51 processor. Great screen on there, lots of buttons, feather headers, and more and more, Neopixels, AMP, and a little speaker. You can add a speaker. Lipo charging, so lots of good stuff on that. And I'll give you a little recap. It's usually a 15 minute long show. Here's a little one minute recap for you. Product Pick of the Week, it is the Adafruit PiBatch. We have this cool little Asteroids game that Todd Kurt just created and posted. And you can see this is using wave playback on the audio.  So those are wave playback, which is really straightforward to do inside of Circuit Python. Very straightforward. You can also see we've got some Neopixels on the bottom there that light up when we hit an asteroid or when I hit one with a projectile. There we go, you can see that goes yellow or blue when I crash into one. PiBatch, it's designed to be worn as a badge. I added a little bit of cord here so that I could hang it from my board. You could also make a lovely little bracelet or hand held with it or wearable. So that's going to do it. I'm going to hang that from my pegboard. Yeah, and you may say to yourself, wow, that John Park, he is a broadcasting professional. Well, I'll tell you what, the very first thing I did during that broadcast was misidentify the thing as the pi gamer. It was like the first words out of my mouth when I said, this week we've got. So that was during the live stream, thankfully, due to the magic of editing, I was able to correct my mistake and make it look like I knew what I was talking about. Let's see. We've got a question actually based on that I see. Casey Grover in our Discord chat asks, let me bring that up, in fact, will your sound effect mods be submitted to Todd's repo? Yeah, so I added sound effects. I added a color overlay as well. And I'll submit a pull request to Todd's GitHub repo so that we can add those in. I actually just grabbed some wave files that I found online that I probably have no right to be using, so we may have to record our own or go to freesounds.org and get some free space sounds to put in there for the pew pew. But thank you, yeah, thanks for the question. I will go ahead and add those, hopefully, this weekend. All right, let's see. One thing I wanted to mention is, if you have heard about our Ada boxes, you'll know that they're lots of fun and they're a quarterly subscription box that comes with something cool. This past Ada box was a, one of these right here, was an Ada fruit macro pad. And that was Ada box 19. Well, we've got Ada box 20 coming in October. So if you take a look right here, pull that out of the way, head to Ada box.com. You'll see this has a countdown, 41 days, 8 hours, 51 minutes, 30 seconds. I don't know how accurate that is, but it sounds official. And I will be excited to dig into that one. It's in the works right now. We're working on it hard. Phil B is working on silk screens and layouts. And LaMoure is doing some board layouts for that. So it's going to be cool, as Lady Ada mentioned yesterday. It's going to be Halloween themed. This is October. It's going to be the Halloween one. And we are selling through these pretty quickly. So I believe you can still get some now, but there won't be that many subscriptions available. I think we have a total of somewhere around 4,000, maybe a few more subscriptions available. And this, unfortunately, due to the way shipping in the world is going right now internationally, we're only offering these in the US. I believe, not sure about Canada right now. So that's what opened up some of the subscriptions. So there are about 4,000 and 4,100, something like that available. So head on over there or subscribe to someone else if you want to give it as a gift, you can do that too. And that's at AdaBox.com. You'll find all the info there. All right, let's see what's happening. The next thing. Hey, how about we do a Circuit Python parsec? And by popular request, I fixed some audio peeking on the little theme song I did for it. And I re-recorded the vocoder part. So you don't have to hide. You don't have to tear off your headphones.  So here we go. Yes, Circuit Python. All right, let me fix one thing. I see one of my cameras went and found a different camera to be looking at. So hold on one moment while I reconnect. There we go. All right, so dramatic reveal. Let me get set up so we can do this fluidly. All right, for the Circuit Python parsec today, I want to show how you can use the os.uname command to figure out which board you're using. And when you figure out which board you're using in your code, you can write code that runs on a lot of different boards without having to go and save different files all over the place. What we're going to do is we're going to save one code.py file that has the smarts to figure out which board it's running on and therefore run custom code depending on the board. So if you look at what I have here, I have a whole bunch of different Circuit Python boards that are all running the same code.py. And what they do is they blink every quarter of a second. They blink a blue LED or a set of blue LEDs or in some cases they're neopixels, in some cases they're dot stars, in some cases it's just one, in some cases it's many. So these are unique things to each board and there's a bit of unique setup for them. So what you'll see is I can head over to the finder here and let me move this out of the way. You go out of the way, thank you. And so this one code.py file, I can drag on to all of these different Circuit Python devices, I haven't plugged into a USB hub. So what you'll see here is in my code, if I go and change, let's say what the blink color is, I'm just going to make this kind of a pink. I'm going to resave that code.py file and I'm not doing anything clever here with like mass distributing it to boards. I'm just going to drag it onto each of these boards here and I'll replace the existing code.py file. And what you'll see is now my Circuit Playground blue fruit has gone pink and now I'll put this onto the feather. That one's going to go pink and let's do them all. So I'm going to drop this onto the macro pad, replace that. Okay, that's probably enough of them to get the idea. Now, the reason this works is in my code, you can see I'm importing some libraries, including time, board and OS. OS allows me to do this, a board type variable is equal to the OS.uname machine. That asks what's the machine we're running on. Then I am turning that into kind of a nice name and then based on what it shows, it will do things like say, this is a trinket M0, this is a QT Pi M0.  So if the board is a trinket, then I import dot star and I set up the dot star. If I am importing the board as a QT Pi M0, that one doesn't have a dot star, it has a NeoPixel. So we grab the NeoPixel library, we set up one NeoPixel. If it happens to be, let's say, a macro pad, that's got 12 NeoPixels on it. So we're going to set that up differently if it's a circuit playground, blue fruit, that one has 10 NeoPixels. So all of those if statements at the beginning tell us to do special things depending on the board we're running on. Then inside of my code, I have a little variable that says which LED styles. Since some of these are similar, I can reuse code down here and be a little bit more efficient. And so that is a way that you can run code on multiple boards and deal with the customizations per board all in one code dot Pi file. And that is your CircuitPython Parsec. CircuitPython. All right, and you know what? I would love to also of course give credit where it's due. This came out of the Asteroids game that Todd Kurt did and we were showing off the last couple of days. Has some nice code at the beginning. I've actually never seen this in CircuitPython code. It's something I know you'll run into a lot of our example code on Arduino, which will say, particularly for feathers, if this is an M0 do this, if it's an M4 do that, if it's ESP32 do that. So we can deal with some of the differences of the different boards all in one code file, which is really nice, really helpful. Let's see, DexterStarboard says can't see the boards. Could you see them when I was talking? Hopefully. Here, let's have a nice. All right, let's see if that comes back to life for us. Anything, anything yet? Hey, starting to come back to life. All right, looks like YouTube is back. Looks like Restream is back. So hopefully that takes care of Facebook and Twitch and a couple of other places. Good, all right. So, tell me this, did we make it all the way through the CircuitPython Parsec? That would be nice if we did because otherwise I'm gonna have to rerecord that. Show of hands because otherwise I will redo that because I wanna have that to play later. So you tell me over in the chat, did we make it through the CircuitPython Parsec or was that thing frozen? Show of hands. Looks okay now, thank you, David Dessa. Must have been YouTube issue, other stream, having an issue, you turned the lights green. Yeah, I can, we could do that. If I have to rerecord this, we'll make it green, how about? We made it through, okay, yeah. All right, here's what I'm gonna do. I'm gonna actually start my local disc recording so that I have a safety, a little backup. I don't always do this, but let's start a recording. This machine has enough horsepower, generally speaking, to do that and not influence the stream. So here we go. I know you're right, Dr. I should always record while I'm streaming by default. It's a good point. CPU usage right now is hovering around 8%. So yeah, this machine is way buff for what it's trying to do. That's what Wirecast is reporting at least. All right, let's do this from scratch. So take yourself back in time five minutes ago when you didn't know any of this and be amazed, please, I encourage you. You don't have to be, it's your life. But let me look at my notes here and oh yeah, Gary says it dropped after Circuit Python Parsec. I don't trust it though, because I've seen pickups in what YouTube records. So I will work off of this local copy. Let me just grab some notes here. All right, ready? Aim, Circuit Python Parsec, take two. All right, so for the circuit, starting again, for the Circuit Python Parsec today, what I wanted to do is show how we can account for different microcontroller boards inside of one piece of code. So as you can see here, I have a whole bunch of different microcontrollers. They're all running the same code, but the code is aware of which board it's running on and therefore can accommodate for differences where we have dot stars versus neopixels, one neopixel versus many. And so the way we do this, if you look at the code here, is we're importing time and board and we're importing OS. Using OS.uname.machine command, I'm able to set this variable called board type, which just asks the board, hey, what type of board are you? Which returns a string. When we then proceed with the code, we can do things like, if the word trinket was in the board name, set it up as a dot star. If QDPyM0HackPress was in the board name, set it up as a single neopixel. If this happens to be a, let's say a feather, that's gonna be a neopixel. If it's a macro pad, we're gonna use the actual macro pad library to talk to the whole set of 12 neopixels and so forth. So this is what happens at the top of the code. We figure out which board we're using and then we set things up and port libraries, do what's necessary for that board. Then inside of the main loop of the code, I'm checking a variable I created called ledstyle. So some of these actually are pretty similar once they've been set up. So ledstyle zero means there is no led, so we'll just print to the serial port. If it's ledstyle one, it's gonna use a dot star. If it's style two, it's gonna use however many neopixels are on there. If it's the style four, we know it's the macro pad and we're gonna use some different code for that. Now you can see this in action. If we go up to where I've set up the colors I'm using, I'm gonna change this to be just pure green. So 00FF00 is the hex code for pure green. I'm gonna save that file. Now you can see over here in the finder, I'm not doing anything so fancy like saving to multiple boards at once. That would be awesome, but I don't know how to do that. That's weird. So what I'm gonna do instead is just copy the code one at a time. So we'll go to the circle playground, blue fruit. I'll hit save and now you see that blue fruit board is a green set of neopixels. If we drop that onto the macro pad, replace. And you can see here, I'm not having to save eight different code.py files. I can use them all on any of these boards because we have accommodated for their differences. And this is really useful when you wanna write some code and deploy it on a bunch of different pieces of hardware and not have to maintain separate code all over the place. So it's really useful. And this is something that I hope you find some use for. You'll see that it's really useful for display based boards such as the Fun House and the macro pad and Pi Badge, Pi Game or anything that has a display on it. There's gonna be some differences in how you set those up. So that's one use case for this. And so that is how you can accommodate for different boards inside of your code.py inside of circuitpython. And that is your circuitpython parsec. That's circuitpy. All right, hey, well thank you for putting up with take two of that. And hopefully that one worked. And if it didn't, well, I have it saved to disk this time. So I promise you, we're not going to take three on that. Two takes at the most. Basta. DRW says the first take is going on to the JP Blooper Reel. You should see that Blooper Reel, it's fun. All right, so, and let's see. If you didn't hear me before when I said it, by the way, this is a really cool tip that was courtesy of Todd's Asteroids game that I was showing earlier. So since he was dealing with four different boards, ultimately with different display resolutions and paths to some different sprites and that sort of thing, it made sense, but you don't have to remember to port changes over to a bunch of different pieces of code. Of course, there's a lot of ways to do this, but this is a fun one for sure. All right, I am going to unplug all these things because they're just sitting here blinking at me and I just have a single hub that they're plugged into. So I'm just going to unplug that hub and its power and be done with that. All right, so let's see what else is happening here. I've got a gear report that I wanted to do, just some fun stuff I picked up recently and talk about those a bit. So let's jump over to the workbench here and I'm going to show you, get Woody out of the way, I was using him for focus. So went to an estate sale, got a couple really cool items. So one of them is this gorgeous Model 500D telephone. So this was developed by Henry Dreyfus at Bell, manufactured by Western Electric. And this is a classic phone, this one was made in 1981. And it's real similar to the ones that I had growing up. Rotary dial pulse phone. This one is the DM model, which means modular, which means it had the RJ11 jack to plug in the twisted pairs into the wall versus hardwired ones. And it also uses that same or similar, it's that I think it's RJ10 is the one to connect the handset to the receiver. So gorgeous phone in pretty darn good shape. I got it for $7, not to brag, but I'm very excited about that. I have not had one of these, I've been wanting one. I think the closest I have, I've shown you before is this Rotary linemen's handset that I have for a Bell repair person, also called a butt set or a buttinsky. So not sure what I'm going to do with that, but the thing I was amazed by is I plugged it into my cable modem, which provides our telephone service and it worked. So hats off to whoever was writing firmware and putting in hardware on the cable modem we use to actually allow pulse dialing. I made a phone call with it, I was amazed. So that's one item from my gear report. And the other one is this cool little pocket knife. So this is an old timer by Shraid Cutlery, this one, I'm not sure exactly when this one was made. Could be a typical little pocket knife, sometime called the knife like grandad's, that's one of their bits of ad copy. So it's kind of nice blades on it. This one's unused, it was actually in a plastic bag inside this case. Real happy with that and one of the weird things about it, I had never known this, but I looked at this box here and it says Shraid Cutlery Corporation, Ellenville, New York. I lived in Ellenville, New York when I was in I think preschool or maybe kindergarten for a year. So it's near where I grew up in the Hudson Valley, New York. I had no idea that was there so now I've got a little knife from Ellenville. How about that? So that's my gear report, just fun stuff and happy to have been able to get out to a couple of estate sales this weekend. So yeah, let us know over in the chat if any of you have thoughts and feelings and experiences with either those gorgeous telephones or Shraid knives. By the way, on the phone thing, let me pull up a webpage that I went to look at a little bit about the history of the Model 500. This is the Cooper Hewitt Museum. So there's a nice page on the phone and it's history. This was introduced in 1949, this design. And the interesting thing is this was actually a revision on the earlier, also modern classic which was the 302 and two things that were done in particular to increase the usability when they developed the 500 series phones was one, get the numbers and letters outside of the dial so you don't rub them off with your fingers because on the original you were rubbing across that paint or silkscreen or whatever it is, every number you dialed. And the other thing was this flat back on the receiver because for those of you who are, maybe have never used this kind of phone, this is a really typical way to use this when you're writing and doing things with your hands as you would stick this on your shoulder. Well, the original design had almost like a fin shape there and so it didn't wanna stay straight, it wanted to flop over sideways. So there are other things that they changed as well but I thought those were some nice design implementations for usability for human usability and they did a lot of research usability studies with people to figure out what some of the optimal sizes of these distance between the mic and the earpiece and so on. Beautiful phone, I'm really happy to have one and you don't have to buy it for $120 on Etsy, you just have to be persistent in checking checking estate sales, you will find them eventually, there were so many of them. Todd Bada in the chat asks, how are you gonna get Circuit Python to, how are you gonna get that phone to run Circuit Python? Yeah, we're gonna do a purely mechanical implementation of Circuit Python, sort of like a Babbage engine that's maybe not so realistic. Yeah, you may remember with this one, I actually modified this handset so that it's not actually, it wouldn't work right now as a pulse dialer. I rewired it so it's just acting essentially as an on-off switch for the leads and I was reading those pulses on that Circuit Playground Express board so that I could enter in numbers as HID. But I don't know, you need 48 volts I think to get these to actually do what they're supposed to do. They sell little gizmos for making, you could build one of course as well but they sell little gizmos for getting a dial tone and other things to simulate the exchange that you would have been unplugged in. I don't know, phones are fun, so. Let's see, what else is happening? So let's take advantage of the fact that things not would seem to continue to work on this live stream and I'm gonna jump straight to the project for this week. So this is a continuation of some of the number pad work that I've been doing. So we looked at the layout of these keypads when we wanna use non-1U sized key caps. So if you'll remember I've got, grab a couple keys here. I've got a 2U height key right there for the plus and I don't have a key in there right now but right above it would be a 1U. So to lay out these we're gonna snap apart the ortho keypad and then we wanna place them in the right place so that we can solder them up and they'll be stable in use and really the best way to do this if you're not making a custom PCB and you're instead using these hot swap sockets or you're free wiring them is to create a switch plate. So that's what I've got this one in here. There's a little 3D printed switch plate I made that has the proper spacing and gives each of those switches some stability. They click into those. And so designing that I did some measurements with calipers and modeled them inside of a CAD package I used called Rhino with a parametric add-on called Grasshopper. Well, our good friends Dylan and Jepler of Adafruit told me about a couple of tools that allow you to design a keyboard layout and then generate from that the curve files that you need to bring into a CAD program as a tool path, a laser cutter to cut something or the sort of starting point to extrude and create a 3D model if you're 3D printing them. So I wanted to show that often and there's some really cool tools. Let's jump over to first the keyboard layout program here. I'll go to that view right there and I'll even make this a little bit bigger if I dare just so you can see more of it. So this is at, you can't see the URL too well up there this is at keyboard-layout-editor.com keyboard-layout-editor.com and you can I believe sign in using your GitHub login if you want to save these but you don't have to if you don't want to. So this is really cool. The way this works is that, let me see if I can just force this to be a bit bigger. I'm not sure what it does to the graphics if I scale those get bigger. A little bigger, yeah. So you can see here we have a sort of, what you see is what you get layout up at the top of a sort of default keypad. So what I'll do is I'll hit delete keys and this might take a while it's acting a little sluggish. There we go, that's a little better. And we'll start one from scratch and I'll show you what some of the settings you would use to create something like that number pad that I made. And the nice thing is that this generates a little text file that is kind of a markup language for keyboard layout. So what I'll do is I'll do a simplified version of just a couple keys where one of them is maybe five keys, a couple that are one U sized and a two U maybe an extra one with an offset. So what we'll do is we'll hit add key. That will add a one U key, one unit, sort of square normal key, alpha key. And if you look at the interface here, it lets you do things like change the offset vertically and horizontally, rotate them, change the height and width of them. So this is a one U key. I'm gonna add another key, puts it side by side by default. Let's, I think if we change the color on these right now, it'll maintain that. I just wanna make something a little darker. So let's, I'm gonna go to a white legend color and I'll go to a blue key. And if I put a legend on these, let's do about A, it'll put it on all of them if you have them all selected or you can select individual ones. Set this one to B. I think it still thinks I have both picked. You can do it, there we go. And so on. And you can also change the size of the legends. So I'll go up to full, full size on these, oops. Which is nine, I think is the highest size. And sorry, this is acting a little unresponsive on my machine right now for reasons unknown but it actually works really nicely. I think sometimes it has to do with the connection to the screen share that I'm doing makes things a little slow. I won't get into some things like you can change what the profile, the key caps are which won't really matter that much in this case. Let's change this one back to B for clarity. But I'm gonna scroll down to the width and height and offset. So I'm gonna offset this by one key in the Y direction. So that'll drop it down. I will come back over. Oh no, someone said it's frozen. Oh, nevermind, okay. And then I'm gonna change the width of this key to be two U-sized. So two units which is what these number pad keys are like such as this big honkin zero key. Let's see right there. So that lives neatly under two columns. This is actually kind of a nice layout to do instead of some of the fractional sized keys that you find. Okay, so now what we can do is head to the raw data. Here's the little markup language that says what the keys are, what their profiles or legends are, their size, their placement, all that's embedded in that color. I'll copy that and then I'm gonna head over to this other tool which is the plate and case builder and this is at, I think this is big blue saw friendly if you're familiar with big blue saw is a water jet cutting service that you can use online. And this is called builder.swillkb.com and I think someone put the links over in the Discord chat if you're curious. So what I'm gonna do is I'm gonna paste the layout into this plate layout section and then I'm gonna make some choices. Like I'll use just square profiles. You can use some tabbed ones if you have modified keys or have some need but actually the square ones work well. I've been doing the tabbed ones but the square ones hold it a little more snugly. They work with the KL box switches that we have. They work with Cherry MX. And then there are settings in here if you wanna do things like create a stacked layered case design, put holes in for mounting and so on. I'm just gonna go with the basics and then when I hit draw my CAD, this will generate the CAD drawing we need to make this little three key keyboard. You can see here it put in stabilizer, place holes to put stabilizers because two U-keys typically you'll have a stabilizer so they don't get a little wobbly and wonky. I'm gonna ignore that. I won't use it but I'll fix that in CAD. It's just you can also fix it by editing your text file to tell it to use no stabilizers but I'll leave this as it is. And then you can export from here either a DXF file which is what I'll use, I like those or an SVG file or an EPS. So I'm gonna export DXF. I found that both the DXF and the SVG import nicely into Rhino with the proper units. So these are properly sized one to one which is good. And now what I'll do is I'll head over to Rhino and Grasshopper and switch my view there so you can see these. And what I'll do is I will just get a fresh scene so I'm just gonna delete what's there, what curves were there in Rhino. And over in Grasshopper I have a little parametric setup that I created for turning those curves into my switch plate. So the first step I'll do here is import that DXF file. And I'm just gonna go to my downloads folder where that file landed. You should see that come in here. And I will, since I don't want those stabilizers in there I'm just gonna actually make a duplicate of one of these other curves and place it there. Actually one thing I need to do the DXF file treats these as separate polylines so I'm just gonna type in join and join those into closed curves. Now I will take this, one of these squares and I'll just make a copy of it that I'll snap to the midpoint if I can. Oh, there it is, you snap into the midpoint. Ooh, this is acting weird and sluggish for me, sorry. Hold on one second, let me see if I can convince it to behave. Yeah, a lot of these apps are angry about being video captured, I think. Let's try that again. I'm copying you, hopefully you've got, there we go, I had to try on midpoint snapping, that's why. Midpoint to midpoint, great. And I'm just gonna delete that stabilizer version. Okay, so there's the layout that I need, it's one you, one you and two you. And then what I'll do is over here in this little flow graph, this little data flow graph, I'm gonna set my curve that I import for the sort of base plate itself into this top node and then however many keys I've got, I'll bring into this bottom node, which I called curve switch holes. So I'll set multiple curves there and now it's running those curves through a few different steps, a few different procedures in order to generate that final model, which I can then export to 3D print or we could just stick with the curves and do some laser cutting or some build some tool paths for CNC. What's happening here? I'm taking the curve that we started with and you can see here if I go to a wireframe, I'm in a wireframe view, let me hide this render to x-ray. You can see the curve I started with is that minimal curve that was generated by the website. I just told it to offset that a bit and put some rounded corners on it, so it looks a little nicer. So that is what these steps do, I take the curve and then I offset it, I then extrude it on a vector, on the z vector, a certain amount and that's what this little dial here I made us for. Then I cap that extrusion and I do the same for the keys and then I cut the key shapes out of the plate shapes with a boolean. So if you look at the little perspective view here, it's just fun to play with the little dial. So I've created this little dial widget that lets me decide how thick that's gonna be and 1.6 millimeters I think is the typical PCB thickness of PCB based boards and that seems to work pretty well. So I went with that, you could tune that if you wanted a slightly tighter fit on your keys but that seems to be a size that the keys like to snap into. So let's see, then the result of that is just an export of the file as a STL file if you're doing 3D printing, which is what I did and then out of that I get something like this. So it's not super, it's 3D printed plastic that's not very thick, so it's got a little wobble to it. You may wanna go thicker just for that reason the keys seem to still stay put if you make a nice thick board you're just gonna have a little longer print time and so with that we can make pretty much any keyboard layout we want. If you look at the, let me jump back to that. Software in the page here, if you look at the keyboard layout here I think I have saved, let me grab my 10 key layout that I did. So I'm gonna copy and paste some text. I think I can paste that into the raw data field here. Let's see if it works. So this is the raw data that we copied before. You can see here when I paste in new stuff I get my layout so even if you're not logging in and saving that somehow some way just that little markup file is all you need and that is my layout. I've actually got it disassembled right now because I was shooting some photos of it for documentation so I've just got it sitting here in this tray ready to fall out at a moment's notice but that's the layout I did to mock up what I'm building as my lovely little numpad 4000 as I call it. You can see there I got pretty close to the colors, the legends and so on so that it really has the feel of it. And so if we take that one you can see if I take that same data and paste that into the plate and case builder. Let's go in here, paste, draw my CAD. There you can see we get that's the actual layout that I started with to go over to Rhino. And in this case I did just hand edit for some reason there don't make stabilizers thing wasn't working so I just hand edited to put after those two U keys a little piece of markup that's I think underscore S colon zero and that's stabilizer style zero. You should be able to do that from the UI with this little stabilizer type drop down but for some reason remove stabilizer is grayed out and that may just I don't know why actually that may just be a bug but it wouldn't allow me to do it in the UI so I just hand edited that up here. So that's the keyboard builder and it's also got some nice presets you can head to let's say you wanna do a 10 key layout keyboard you'll find things like that in here or here's a 60% ISO that's okay I don't need to save it so there you'll get nice ISO style big enter key over there and now we can take that over to the plate builder and build it so I think this is really cool if you're using these Adafruit ortho PCB snap aparts just type in ortho and search and these are back in stock by the way so if you grab these you're set up for five by six or bigger you can tear off the top and bottom and lay these side by side as long as you have enough GPIO on your board that you're using a feather let's say to have a good bit of IO for the matrix column and row matrix then you can use that keyboard builder to design what you want snap apart what you need and place those and then build your switch plate. So let's see any questions in the chat let me know hopefully that stream continued on marching along mightily after a little bit of a glitch there and I think that's gonna do it did we cover everything? Let's see the chat in the YouTube I saw someone mention David SS said old phones still worked during power outage phone company supplied the 48 volts yeah this is true do you still have Dave you have one you say you keep on standby do you still have it going to your phone companies do you still have pot lines do they still provide that that's great if they do that's a really good solid connection yeah so the phone company was also the electric company just a little mini version that sent out the 48 volts for I think is that what's ringing I think ringing might be spiking up to 48 and less for other uses anyway fascinating thing the phone system the doctor asks over in discord chat have you here let me bring up the discord this is a picture of a funny cat there people don't want to see that right this is a gift let's hover over the gift a laser it's a laser cat Jesus terrifying oh wow Todd says the ringing spikes up to 200 volts AC don't screw around with your phones man don't lick the wires I have not done any modding of switches so I might do some of that it would be fun to demonstrate it on the really big switch that I have that really big kale do I have that here I think it's elsewhere right now but these switches you can open them there's little tabs on the sides that allow it to pop off and then there are things people do such as changing out which spring is in there for a different strength of spring lubing various parts so they slide instead of scrape and adding a little film in there little plastic films that people add so there's a few things that you can do if you're super into it I've not been that into it but hey why not all right yeah doctor says took apart a blue and a red gatter on switch interesting to see for sure yeah I'm able to do a switch dissection with those big switches that I have because I now have a linear a tactile and a clicky of the big kale switches oh Todd correction 100 volt AC for the for the phone so could you power your TV if you just had the phone ringing like 10 phones constantly ringing out of phase with each other could you turn on the TV what's the current how much current could they throw probably not that much all right well thanks everyone for stopping by and thanks for putting up with fun with broadcasting it seems like things settled down which I am very happy happy to say I'll continue tinkering with things and see if I can make this computer happy why unhappy computer yeah I don't know if the Facebook feed continued on all right Joel H says they felt that signal it hurts yeah now tiny current all right don't like it anyway all right thanks everyone and that's going to do it for today I believe Scott is doing a deep dive tomorrow so head on over to the blog to check you can also check in the in the chat on discord to see when the next show is and then we'll be back next week with all kinds of great stuff there'll probably be a desk with Lady Aida over the weekend possibly we never know but they do happen and then we'll be on to the next product pick of the week on Tuesday Noah and Pedro are back from their vacation next Wednesday I believe with a 3D Hangouts and then there'll be a show and tell and ask an engineer on Wednesday and it repeats so it's been so much fun having you come on back next time bye everyone


But I don't think you should ever underestimate ever ever the power of kindness. Especially when no one is being kind to you, when someone is being kind to you, when you are in a famine of kindness, I've got to tell you, it sticks in your head for 20 years. So your act of kindness today will cost you nothing. But to the person on the receiving end, it could be a complete life-saving miracle because of the nightmare they're going through.