 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. So crossing fingers that it does not get weirder, shutting off, turning off monitors. 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. And we have the nice little thrust and fire action going on there. 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. You don't have to turn down your volume, hopefully, because this time it won't peek and make you scared. 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. We grab that little string and then we customize what happens. 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