1 00:00:00,001 --> 00:00:08,100 Welcome to the Bootloader. I'm Tod Kurt. And I'm Paul Cutler. This is episode 9 and the show works 2 00:00:08,100 --> 00:00:12,400 like this. Tod and I have each brought three things to share. We'll chat about each for a 3 00:00:12,400 --> 00:00:16,760 few minutes but no more than five. If you want to learn more visit the detailed show notes at 4 00:00:16,760 --> 00:00:22,560 thebootloader.net. Tod what's your first one? Alright so I'm gonna start it off really nerdy. 5 00:00:22,560 --> 00:00:28,720 You know I like the little tiny microcontroller boards that do various fun things and I just 6 00:00:28,720 --> 00:00:35,960 discovered one a couple weeks ago called the M5 Stack Cardputer. Like computer but card. It's 7 00:00:35,960 --> 00:00:42,720 about the size of a deck of playing cards and it's got an ESP32-S3 chip in it which means it does Wi-Fi 8 00:00:42,720 --> 00:00:47,880 and Bluetooth. It's got a little screen a little keyboard and it's all in a little case. So it's 9 00:00:47,880 --> 00:00:53,760 almost like a little consumer electronics product. It's pretty well designed our industrial design 10 00:00:53,760 --> 00:01:00,160 wise but it's got a full QWERTY keyboard in something the size of a deck of cards. So the 11 00:01:00,160 --> 00:01:05,280 buttons are very small especially for my big old meat meaty mitts but they work. And so it's it's 12 00:01:05,280 --> 00:01:10,040 it's a pretty useful little device just right there just with those features just with the 13 00:01:10,040 --> 00:01:16,000 screen keyboard and having Wi-Fi and Bluetooth. But it's also got a microphone and an I2S amplifier 14 00:01:16,000 --> 00:01:22,680 to a speaker. It's got a microSD slot. It's got infrared I think both to receive and send. And 15 00:01:22,680 --> 00:01:27,960 then it's also got a 1400 milliamp hour battery so it can just be this like you know portable thing 16 00:01:27,960 --> 00:01:34,440 you can have in your bag to play with all the time. And on top of all this it's only $30. So I got a 17 00:01:34,440 --> 00:01:38,680 couple couple weeks ago been playing around with it. The little app that comes with it is actually 18 00:01:38,680 --> 00:01:44,680 remarkably full featured. It's like a little almost tiny little OS you to choose from different little 19 00:01:44,680 --> 00:01:51,240 apps. There's a pretend your Bluetooth keyboard pretend your Wi-Fi keyboard. There's you know scan 20 00:01:51,240 --> 00:01:57,160 your Wi-Fi. There's a full Python REPL. You can just like start and then start doing MicroPython. 21 00:01:57,160 --> 00:02:01,280 A bunch of other stuff and of course that all that code is available so you can download and look at 22 00:02:01,280 --> 00:02:07,400 it and everything else. But because it's ESP32-S3 it works with all the other software that we've 23 00:02:07,400 --> 00:02:11,960 been using in Arduino and CircuitPython all these years. Like there's a CircuitPython build for it 24 00:02:11,960 --> 00:02:17,120 which you can just run it and it sets up the display and all the keys and stuff for you. So 25 00:02:17,120 --> 00:02:21,440 you can just like start going or going doing CircuitPython stuff with it. While it is a 26 00:02:21,440 --> 00:02:27,640 Chinese based company M5Stack makes all these interesting little sort of pluggable computer 27 00:02:27,640 --> 00:02:32,320 things. They're sort of like the QDPI in size but they have a much higher density pinout because 28 00:02:32,320 --> 00:02:37,720 they're made to be plugged into into PCBs rather than plugged into a breadboard. But you can get 29 00:02:37,720 --> 00:02:43,800 them shipped from the US from electromaker.io. And so I got a couple I've been playing around with 30 00:02:43,800 --> 00:02:49,520 them. I'm a big fan of the ESP32-S3 chipset because it can do Wi-Fi and it's very fast. It's 31 00:02:49,520 --> 00:02:53,320 good for doing synthesizer stuff. So I've been doing a little synthesizer experiments on it 32 00:02:53,320 --> 00:02:59,880 because hey it's got that speaker output that's hooked up to an I2S audio DAC. And yeah it's a I 33 00:02:59,880 --> 00:03:04,680 think if someone wants to have something to play with that's really tiny and you can just kind of 34 00:03:04,680 --> 00:03:11,520 kind of you know hide it in your bag. I say it's a good $30 well spent. I've been following along 35 00:03:11,520 --> 00:03:15,840 with some of the pull requests to get that up and running with CircuitPython. I didn't realize it 36 00:03:15,840 --> 00:03:22,040 was only 30 bucks. Yeah. That's amazing how much functionality comes for that price. Yeah I mean 37 00:03:22,040 --> 00:03:28,320 especially because it's got this full multi-piece injection molded enclosure with a bunch of buttons 38 00:03:28,320 --> 00:03:32,640 and stuff. It's like you know just the injection molding of that is pretty expensive and so they 39 00:03:32,640 --> 00:03:37,240 it seems like they approached it as almost a consumer product. Like how much consumer 40 00:03:37,240 --> 00:03:43,320 productness can we fit with a retail price of $30 and using ESP32 and they just went from there. 41 00:03:43,320 --> 00:03:51,160 What comes pre-loaded on it? Is it MicroPython? It's an Arduino sketch. I think that somehow is 42 00:03:51,160 --> 00:03:57,000 embedding MicroPython. I need to look into it more. I unfortunately blew it away because I was 43 00:03:57,000 --> 00:04:04,000 playing around with CircuitPython stuff. But on my to-do list is to read I think I found the code 44 00:04:04,000 --> 00:04:08,760 that came on it. I want to like recompile it and reload it and see if I can get it and see what 45 00:04:08,760 --> 00:04:13,600 actually going on because it was amazing what it did. It had these little apps and you go back back 46 00:04:13,600 --> 00:04:21,880 to the main app launching screen. It's kind of surprising how good it was. You'll have to give 47 00:04:21,880 --> 00:04:29,520 us an update next episode. Yeah totally. Alright so what's your number one for this week? My first 48 00:04:29,520 --> 00:04:35,480 one is RadioFreeFedi and I'm all in on the Fediverse. I really enjoy using Mastodon for 49 00:04:35,480 --> 00:04:41,160 social media, PixelFed for sharing photos usually of which records I'm playing, and then there's 50 00:04:41,160 --> 00:04:45,640 RadioFreeFedi. Longtime listeners know I'm really into music and I have to give a shout out 51 00:04:45,640 --> 00:04:51,680 to Axwax on Mastodon for introducing me to RadioFreeFedi. Axel if you're listening, thank you. 52 00:04:51,680 --> 00:04:56,560 RadioFreeFedi is an online music stream dedicated to independent artists on the Fediverse. 53 00:04:56,560 --> 00:05:01,120 It turns out there's a whole world of artists making music on the Fediverse in every genre. If 54 00:05:01,120 --> 00:05:06,400 you visit RadioFreeFedi.net you will find three channels you can listen to. The first is the main 55 00:05:06,400 --> 00:05:11,760 channel. You'll hear songs from almost every genre and as the website says some of the songs will 56 00:05:11,760 --> 00:05:16,440 challenge you with music you may not normally listen to but it is curated and if you don't 57 00:05:16,440 --> 00:05:21,720 like a song another one will be on in just a few minutes. The second channel is called Comfy which 58 00:05:21,720 --> 00:05:26,520 smooths out the edges for those who might want a softer experience. This is my go-to channel in 59 00:05:26,520 --> 00:05:31,000 the mornings when I want something a little quieter than the main channel. And then there's a specialty 60 00:05:31,000 --> 00:05:36,180 channel which hosts a block of songs around a theme which changes every hour. They also at the 61 00:05:36,180 --> 00:05:41,120 top and bottom of the hour have a little spoken word section. Sometimes this could be a poem but 62 00:05:41,120 --> 00:05:45,800 it's really it's a really neat feature that they break up the music with with spoken words and 63 00:05:45,800 --> 00:05:51,440 people can actually volunteer to read station IDs as well. I need to work up the courage and 64 00:05:51,440 --> 00:05:57,120 volunteer to do that because I really enjoy RadioFreeFedi. That sounds fun yeah. If I was smart 65 00:05:57,120 --> 00:06:02,520 I would have mentioned RadioFreeFedi on the last episode because in May they host FediVision 66 00:06:02,520 --> 00:06:07,440 which just wrapped up. It's a take on Eurovision where Feddy artists submit songs from fictitious 67 00:06:07,440 --> 00:06:12,200 countries and listeners can vote on their favorite songs. It was really fun listening to all the 68 00:06:12,200 --> 00:06:17,480 entries on the special channel that RadioFreeFedi set up to stream those songs. Going back 69 00:06:17,480 --> 00:06:22,840 to my shout out to Axwax who tirelessly promotes musicians on the Fediverse especially on Bandcamp 70 00:06:22,840 --> 00:06:28,560 Friday and Faircamp Friday. If you haven't heard of that Bandcamp used to host Bandcamp Fridays 71 00:06:28,560 --> 00:06:34,480 where 100% of the music proceeds would go to the artists and none of the fees went to Bandcamp. And 72 00:06:34,480 --> 00:06:40,980 it started during the pandemic as a way to help boost those artists revenue streams because they 73 00:06:40,980 --> 00:06:47,520 couldn't tour for example. Yeah well Bandcamp's been sold twice in the last few years and an 74 00:06:47,520 --> 00:06:53,040 alternative open source solution has popped up called Faircamp. Musicians can install Faircamp 75 00:06:53,040 --> 00:06:58,000 pointed at a directory of songs and it will create a static website you can host to stream the songs 76 00:06:58,000 --> 00:07:03,420 and it integrates with payment processors like Stripe so you can offer purchases to your listeners 77 00:07:03,420 --> 00:07:09,280 as well. If you enjoy music and if you enjoy being on the Fediverse I strongly encourage you to check 78 00:07:09,280 --> 00:07:13,160 out RadioFreeFedi. There's links in the show notes to some of the artists I've discovered that 79 00:07:13,160 --> 00:07:18,100 I like and if you like RadioFreeFedi check out their state of the station on how they're doing 80 00:07:18,100 --> 00:07:23,320 and how to support them. Running an online radio station isn't cheap and if you come across an 81 00:07:23,320 --> 00:07:29,560 artist you like share it on the Fediverse and let others know. That's really cool I really like the 82 00:07:29,560 --> 00:07:36,800 Faircamp thing because I mean it's a static site generator geared towards making playlists that you 83 00:07:36,800 --> 00:07:41,360 can listen to stream audio online from various websites. That seems to be one of the places 84 00:07:41,360 --> 00:07:45,320 where the static site generators I've seen kind of fall down they don't really have a way of serving 85 00:07:45,320 --> 00:07:51,960 up mp3s or whatever and so yeah that's pretty cool. I'm a big fan of online streaming radio 86 00:07:51,960 --> 00:07:57,560 stations I've been a big supporter of Soma FM but they're like more traditional like real quote 87 00:07:57,560 --> 00:08:03,600 unquote real musicians that have record deals and such. I really like the "hey let's all listen to 88 00:08:03,600 --> 00:08:09,080 each other's stuff" because it's so nice and easy to make your own music now. Yeah and Faircamp's 89 00:08:09,080 --> 00:08:13,840 really neat if you don't have cover art it's got a generative AI built in so it'll create cover art 90 00:08:13,840 --> 00:08:21,200 for you. That's hilarious. Yeah what's your next one? All right so I build a lot of little circuits 91 00:08:21,200 --> 00:08:27,000 I make PCBs to house those circuits or to be the infrastructure for those circuits and for about 92 00:08:27,000 --> 00:08:35,320 20 years I've used this program called Eagle to design those PCBs. It was a okay program it's 93 00:08:35,320 --> 00:08:41,480 gone through multiple users sorry multiple owners over that 20 year period the latest of which is 94 00:08:41,480 --> 00:08:47,280 Autodesk and Autodesk initially improved it a lot but in the last several years like last four years 95 00:08:47,280 --> 00:08:52,360 or whatever they've kind of abandoned it and they've officially said in 2026 they're going to 96 00:08:52,360 --> 00:08:59,120 stop supporting Eagle at all which is frustrating because one of the last changes they made was you 97 00:08:59,120 --> 00:09:05,040 had to log into the Autodesk authentication servers to use the program which I assume means in 2026 I 98 00:09:05,040 --> 00:09:09,640 won't even be able to open up Eagle anymore. So it's been on my to-do list to shift to this open 99 00:09:09,640 --> 00:09:15,280 source schematic program called KiCad or KiCad. I think KiCad is the appropriate way to pronounce 100 00:09:15,280 --> 00:09:22,840 it but I always pronounce it KiCad because I'm American I guess and earlier earlier this year I 101 00:09:22,840 --> 00:09:28,080 finally made the jump and I decided that for my next circuit board I'm going to design it in KiCad 102 00:09:28,080 --> 00:09:32,840 KiCad and for every circuit board after that I'm going to try to do it in KiCad. Looking around 103 00:09:32,840 --> 00:09:37,320 there's lots of instructional material on it which is on KiCad which is great but it's been around 104 00:09:37,320 --> 00:09:42,200 for a long time and it's been evolving and getting so much easier to use than it has than it was just 105 00:09:42,200 --> 00:09:47,760 a few years ago and so it's like well what which videos should you watch and also for me I'm kind 106 00:09:47,760 --> 00:09:51,720 of this immigrant from from Eagle like which one is more appropriate to me because I know the 107 00:09:51,720 --> 00:09:56,720 concepts of how to do schematics I just don't know the particulars and so I found this one really 108 00:09:56,720 --> 00:10:04,720 great YouTube channel called Plum Pot. Plum Pot is a couple it's um Carrie Plumstead and JP Potgieter 109 00:10:04,720 --> 00:10:11,680 so Plum Pot they had this really great long playlist of YouTube videos that's how to go from 110 00:10:11,680 --> 00:10:19,160 installing KiCad to creating the symbols in the schematic and the footprints on the PCB and to 111 00:10:19,160 --> 00:10:25,240 ordering those PCBs with generating the Gerber files that the PCB house needs and while it is 112 00:10:25,240 --> 00:10:30,720 an older series it was done with KiCad 5 almost everything they've talked that they talk about is 113 00:10:30,720 --> 00:10:35,040 relevant especially some of the more advanced topics which hasn't really changed much like in 114 00:10:35,040 --> 00:10:42,280 the last several several versions of KiCad they have made the UI a lot easier to to work with at 115 00:10:42,280 --> 00:10:45,280 least to me when I like back when I tried this a couple years ago I found I found KiCad kind of 116 00:10:45,280 --> 00:10:50,400 weird and this is someone who has used Eagle for so many years which has the weirdest UI but but 117 00:10:50,400 --> 00:10:54,760 in the last several years it seems like the usability has has just gone over a hill where 118 00:10:54,760 --> 00:10:59,240 it's just everything is so much simpler and that's been really great so I was able to do some of the 119 00:10:59,240 --> 00:11:04,120 like just getting started stuff much easier than I could before but some of these tricky things I 120 00:11:04,120 --> 00:11:09,080 couldn't quite get going and watching the PlumPot videos really helped thank you to Kerry Plumstead 121 00:11:09,080 --> 00:11:14,720 and JP Pottinger for helping me get over the hump of getting into KiCad and I'm full full-time KiCad 122 00:11:14,720 --> 00:11:20,640 person now what's been the most challenging part of the transition from Eagle to KiCad for you so 123 00:11:20,640 --> 00:11:28,400 I think the main thing is in Eagle when you so in circus you have you have a part like say a a knob 124 00:11:28,400 --> 00:11:34,160 a potentiometer and you have two different representations of that part you have the 125 00:11:34,160 --> 00:11:40,440 schematic symbol that's the sort of semantic how the pot is wired up to your circuit and then you 126 00:11:40,440 --> 00:11:47,760 have the physical layout of that pot solder footprint which is somewhere on your PCB like 127 00:11:47,760 --> 00:11:52,560 physically like it's three inches over and two inches down and it's rotated 90 degrees and all 128 00:11:52,560 --> 00:11:58,560 that kind of stuff and in Eagle those two representations these sort of semantic schematic 129 00:11:58,560 --> 00:12:05,240 representation and the physical layout footprint specification are joined together and that makes 130 00:12:05,240 --> 00:12:09,400 it it's very it's a very logical way of thinking about it in some ways because you're like oh yeah 131 00:12:09,400 --> 00:12:16,800 I just want to plop down this exact pot the downside with the Eagle format is that there 132 00:12:16,800 --> 00:12:23,360 are literally tens of thousands of different kinds of potentiometer so you have this you have this one 133 00:12:23,360 --> 00:12:29,560 single symbol in the schematic but you have 10 the 10,000 different variations in your circuit board 134 00:12:29,560 --> 00:12:34,840 in the in the physical reality of it you know is it a horizontal potentiometer that sticks out 135 00:12:34,840 --> 00:12:39,320 towards kind of towards you or does it a vertical potentiometer that sticks up it is a six millimeter 136 00:12:39,320 --> 00:12:43,620 or nine millimeter potentiometer it's like there's all these different variations and so if Eagle you 137 00:12:43,620 --> 00:12:49,480 could run into the problem where you have in your schematic the choice of like well which several 138 00:12:49,480 --> 00:12:55,380 hundred of those did these different same looking symbols am I going to use and whereas KiCad it's 139 00:12:55,380 --> 00:13:00,720 totally separate you have just the potentiometer symbol that you use when you're drawing schematics 140 00:13:00,720 --> 00:13:06,080 and then at some point later you have to you have to go through this process of assigning the 141 00:13:06,080 --> 00:13:12,440 footprints where you say this part needs that exact footprint and in retrospect now that makes 142 00:13:12,440 --> 00:13:18,060 a lot of sense but at the time I was like how do I take my schematic and turn it into the actual 143 00:13:18,060 --> 00:13:23,440 PCB it was like it just seemed like it didn't make much sense to me that was like the biggest hurdle 144 00:13:23,440 --> 00:13:31,180 for me was getting over this binding of the schematic to the PCB footprint part problem 145 00:13:31,180 --> 00:13:37,400 that that Eagle kind of solves invisibly for you. Has there been something that surprised you on how 146 00:13:37,400 --> 00:13:43,200 easy it was to do in KiCad? Oh yeah the 3d visualization so when you're laying out a circuit 147 00:13:43,200 --> 00:13:49,120 board and you're like putting down like a switch and a knob and a display and like the some micro 148 00:13:49,120 --> 00:13:55,280 controller board it's kind of hard to tell how how that will actually look and so like what are 149 00:13:55,280 --> 00:14:01,360 the things one would do to visualize that that is one of the things I used to do is I would print 150 00:14:01,360 --> 00:14:06,280 out on paper a one-to-one representation of that circuit board and then I would lay parts on top 151 00:14:06,280 --> 00:14:11,160 of it to sort of feel kind of how the parts are interacting because because you're looking at a 152 00:14:11,160 --> 00:14:16,920 2d representation just a flat sort of vector art view of what the PCB looks like but real parts 153 00:14:16,920 --> 00:14:23,720 have 3d height and they kind of overlap a little bit sometimes they have overhangs sometimes when 154 00:14:23,720 --> 00:14:27,720 you need to place a part your fingers have to go on each side of it so there needs to be room on 155 00:14:27,720 --> 00:14:33,320 each side of the part so your fingers can actually push the part in things like that and so it was 156 00:14:33,320 --> 00:14:36,600 really hard it's like okay well I'll print it out on paper and I'll lay the parts out like a little 157 00:14:36,600 --> 00:14:43,600 scale model or what I was doing in Eagle is I was exporting a version of it into fusion 360 which is 158 00:14:43,600 --> 00:14:50,600 a 3d CAD program and finding 3d representations for close enough analogs to the parts I was going 159 00:14:50,600 --> 00:14:57,480 to use and plopping them onto this this 3d model and then looking to the 3d model in KiCad keycad 160 00:14:57,480 --> 00:15:05,760 you can just press option f3 or something and it will generate a 3d model for you right there so 161 00:15:05,760 --> 00:15:10,320 you can just immediately go what does this look like and you just see what it looks like you go 162 00:15:10,320 --> 00:15:14,720 oh okay it's actually these two these parts that you close together I'll never get be able to get 163 00:15:14,720 --> 00:15:19,440 my fingers in between there and so you can just start nudging nudging it and so being able to just 164 00:15:19,440 --> 00:15:26,240 really quickly see the visual 3d representation of the board is so cool very cool anyway yeah 165 00:15:26,240 --> 00:15:35,400 KiCad very awesome so so Paul what's your number two my number two is André Costa and the Pico W 166 00:15:35,400 --> 00:15:40,640 air so continuing on that meet the maker thing I started last episode I wanted to share a cool 167 00:15:40,640 --> 00:15:46,520 product by André the Pico W air André is more well known for being the creator of RPI locator 168 00:15:46,520 --> 00:15:51,280 a website and Mastodon bot that alerts you in a Raspberry Pi becomes available for sale online 169 00:15:51,280 --> 00:15:57,120 he was recently in magpie magazine who did a great story on him and RPI locator I'll link to that in 170 00:15:57,120 --> 00:16:03,480 the show notes but he's also created the Pico W air a wireless air quality monitor powered by 171 00:16:03,480 --> 00:16:09,120 CircuitPython and CircuitPythons HTTP server I don't think I've seen another product for sale 172 00:16:09,120 --> 00:16:16,120 that actually uses CircuitPythons HTTP server and for just under 13 bucks you get a custom PCB with 173 00:16:16,120 --> 00:16:22,040 a Pico W mounted to it with a connector for a particulate matter sensor and a quick connector 174 00:16:22,040 --> 00:16:26,120 for additional sensors like the recommended temperature and humidity sensor for example 175 00:16:26,120 --> 00:16:32,520 he also has a particulate matter sensor available as an add-on for sale on his Tindie store so you 176 00:16:32,520 --> 00:16:38,160 could actually bundle them both together what I think is innovative is not only does it have MQTT 177 00:16:38,160 --> 00:16:44,040 but it takes advantage of HTTP server just add your Wi-Fi settings in the settings that Tomo like 178 00:16:44,040 --> 00:16:49,440 you would do in a normal CircuitPython microcontroller find the IP of the device and 179 00:16:49,440 --> 00:16:54,560 you can connect to it from your phone or from another computer and you can view all the stats 180 00:16:54,560 --> 00:16:59,440 right there in a web browser nicely formatted so you can see it what's your air quality what's the 181 00:16:59,440 --> 00:17:04,680 temperature what's the humidity if you have added those sensors for example and since it works with 182 00:17:04,680 --> 00:17:10,880 MQTT it's easy to add to home assistant as well it also has a JSON API so you can interact with 183 00:17:10,880 --> 00:17:15,880 it through the API too. I talked about the micro dot web server last episode in the fact that 184 00:17:15,880 --> 00:17:20,920 MicroPython has over a dozen different web servers CircuitPython has just this one and 185 00:17:20,920 --> 00:17:26,920 I think this is a really interesting use case for it yeah totally I really like how he supports 186 00:17:26,920 --> 00:17:34,680 multiple ways of looking at the data like over the net like he's got MQTT HTML and JSON API like 187 00:17:34,680 --> 00:17:39,480 that's like normally in these CircuitPython projects you kind of see these really stripped 188 00:17:39,480 --> 00:17:44,600 down examples of how to do one aspect of that but he's developed a full application that kind of 189 00:17:44,600 --> 00:17:49,200 offers all the things you want to have when you have something like a sensor like this exactly 190 00:17:49,200 --> 00:17:54,800 it's a really neat product and I'll make sure I link to his Tindie store and to follow him on 191 00:17:54,800 --> 00:17:58,320 Mastodon in the show notes as well yeah I'm looking at it right now and it's great because the whole 192 00:17:58,320 --> 00:18:02,760 PCB with the Pico mounted is like basically the size of you know it fits in your hand and the 193 00:18:02,760 --> 00:18:06,440 look the sensor is basically the same size so it's made to go just right on top of the sensor 194 00:18:06,440 --> 00:18:13,280 that's great yep what's your next one this is another YouTube thing this is so there's this 195 00:18:13,280 --> 00:18:20,000 game designer named Freya Holmér and she makes I think I think mostly her job like her job she does 196 00:18:20,000 --> 00:18:27,080 for money is she designs tools and shaders for unity which is a 3d game engine and but one of 197 00:18:27,080 --> 00:18:31,480 the things that I mostly know her from are these beautiful YouTube videos that she makes about 198 00:18:31,480 --> 00:18:37,960 algorithms the reason why this came up recently is because just a day or two ago she released a talk 199 00:18:37,960 --> 00:18:44,960 that she gave called lerp smoothing is broken and lerp is a is the sort of gaming term for linear 200 00:18:44,960 --> 00:18:50,640 interpolation it's when you have it reaches it reaches destination in a smooth fashion rather 201 00:18:50,640 --> 00:18:55,840 than abruptly so it feels more realistic you might you might you might hear easing as a nether way of 202 00:18:55,840 --> 00:19:02,640 doing that but easing is more fixed in the way it approaches its destination whereas lerp is kind of 203 00:19:02,640 --> 00:19:09,280 responsive to the changes in the destination the reason why this perked up my ears is because the 204 00:19:09,280 --> 00:19:14,800 the equation for lerp is very similar to the technique I use to smooth sensor inputs like knob 205 00:19:14,800 --> 00:19:20,240 inputs called exponential smoothing or basically you take the last value and multiply it fractionally 206 00:19:20,240 --> 00:19:25,600 plus the new value of your pot reading say and you combine them together to give you a smoother 207 00:19:25,600 --> 00:19:31,760 thing and both of these techniques both lerp and exponential smoothing suffer from the problem of 208 00:19:31,760 --> 00:19:37,360 they change how they look with the frame rate changing because the way it works is you multiply 209 00:19:37,360 --> 00:19:43,680 a percent of the old value add it to a percent of the new value if you're reading the new for 210 00:19:43,680 --> 00:19:50,400 exponential smoothing if we're reading that value a lot your resulting smooth value kind of matches 211 00:19:50,400 --> 00:19:56,160 too quickly your red value so the filtering doesn't look as good so you kind of want to slow that down 212 00:19:56,160 --> 00:20:02,400 and similarly in lerp if you if your frame rate is lower the object appears to move slower because 213 00:20:02,400 --> 00:20:07,360 it's not being updated as frequently and so so she talks about and this video is great because it 214 00:20:07,360 --> 00:20:13,520 talks about some frame rate independent techniques for dealing with changeable frame rate like in in 215 00:20:13,520 --> 00:20:18,880 her case because she's a game person she's like well you know some people might be what playing 216 00:20:18,880 --> 00:20:23,200 this game at a cinematic 20 frame 24 frames per second but some person might might have a high-end 217 00:20:23,200 --> 00:20:28,720 gaming rig that's had 120 games 20 hundred 120 frames per second and those two people will have 218 00:20:28,720 --> 00:20:35,120 two very different experiences because the lerp will be essentially five times slower on the on 219 00:20:35,120 --> 00:20:41,120 the slower frames per second person's computer and the video before that that I was I was most 220 00:20:41,120 --> 00:20:46,320 enamored with was this one called the beauty of bezier curves and I don't know i'm sure everyone 221 00:20:46,320 --> 00:20:51,840 has has used a graphics program like illustrator and they've tried to use the bezier design tool 222 00:20:51,840 --> 00:20:55,680 and it's always been a little bit mystifying to me about how the heck it's supposed to work like 223 00:20:55,680 --> 00:20:59,520 i just want the curve to kind of look like this how am I supposed to do that with these control 224 00:20:59,520 --> 00:21:06,320 points or whatever and this like almost hour-long video talks about the math behind bezier curves 225 00:21:06,320 --> 00:21:14,320 and explains what's going on and gives you a sort of intuition as to what's happening 226 00:21:14,960 --> 00:21:19,120 with those control points and why why you would put them where you'd want to put them and so it's 227 00:21:19,120 --> 00:21:26,320 i don't know I i plus her animations she does for the for these videos are just spot on so 228 00:21:26,320 --> 00:21:31,600 so wonderful looking so I say put this on you might learn some things if not it's really cool 229 00:21:31,600 --> 00:21:37,360 to look at yeah it's on my list to watch I didn't get a chance to watch it before we recorded but 230 00:21:37,360 --> 00:21:42,480 it sounds really neat especially the bezier curves one because as you said that's just a mystery on 231 00:21:42,480 --> 00:21:48,240 how that works totally and then one last one last video is if you're doing anything in uh say 232 00:21:48,240 --> 00:21:52,320 CircuitPython Arduino with any type of little video game you want to make or any sort of little 233 00:21:52,320 --> 00:21:56,960 generative art you almost will always be using vectors you know vectors are really just two 234 00:21:56,960 --> 00:22:02,640 numbers like usually x comma y that you use to represent a position in space or maybe a direction 235 00:22:02,640 --> 00:22:08,720 in space and you usually want to combine vectors like if you're a spaceship spaceship has a velocity 236 00:22:08,720 --> 00:22:14,320 and when you push the go button you've got a thrust acceleration vector that needs to be added 237 00:22:14,320 --> 00:22:19,120 to your spaceship's velocity vector how do you do that and so there are many different ways to 238 00:22:19,120 --> 00:22:23,840 multiply vectors some of them give you interesting information like how close the vectors are 239 00:22:23,840 --> 00:22:29,360 pointing towards each other other ones would be like how to just scale a vector the other is uh 240 00:22:29,360 --> 00:22:36,800 how to tell like together what direction the two vectors are sort of pointing right angles to so 241 00:22:36,800 --> 00:22:40,400 like you if you have an x and y if you look at them in a certain way and multiplying a certain 242 00:22:40,400 --> 00:22:44,720 way it'll tell you which way is z which which is really handy and so she goes into this really 243 00:22:44,720 --> 00:22:50,480 really great discussion as to how to think about the many different ways you can multiply vectors 244 00:22:50,480 --> 00:22:54,960 because it's not a straightforward thing just as multiplying two numbers and you used it in a game 245 00:22:54,960 --> 00:23:00,480 i understand if I would have watched her video I might have been able to write my little arcade 246 00:23:00,480 --> 00:23:06,400 game called CircuitPython starroids um a little faster because a lot of this vector stuff i 247 00:23:06,400 --> 00:23:11,200 learned way back in college and kind of forgot because you know when I was doing web stuff you 248 00:23:11,200 --> 00:23:18,800 don't really use these sort of game vectors right okay paul what's your number three my last one is 249 00:23:18,800 --> 00:23:24,880 the CircuitPython online ide so as folks who use CircuitPython know there's a number of ways you 250 00:23:24,880 --> 00:23:29,200 can program your microcontroller and CircuitPython most folks just plug it into usb and use 251 00:23:29,200 --> 00:23:34,000 a text editor to do it but you can program it over bluetooth there's now the web workflow where you 252 00:23:34,000 --> 00:23:38,880 can do it wirelessly and there's also code.circuitpython.org where you can use a chrome 253 00:23:38,880 --> 00:23:44,320 based browser and program it right there in your browser River Wang has also created an online 254 00:23:44,320 --> 00:23:48,800 editor for CircuitPython which i've linked to in the show notes it has some really innovative 255 00:23:48,800 --> 00:23:53,760 features and if someone was going to ask which online editor they should use this is the one i'd 256 00:23:53,760 --> 00:23:58,880 pick over the one that Adafruit developed when you first load the web page it has three steps for you 257 00:23:58,880 --> 00:24:04,320 to connect making it super easy to understand you install CircuitPython on your microcontroller if 258 00:24:04,320 --> 00:24:09,520 you haven't done that already open the CIRCUITPY drive and then connect to the serial port that's 259 00:24:09,520 --> 00:24:14,480 it it also has a nice youtube video embedded with a quick start guide for additional help if you need 260 00:24:14,480 --> 00:24:19,360 it once you're connected there's a folder view on the left that lists all the files on your 261 00:24:19,360 --> 00:24:24,960 microcontroller that's something that code.circuitpython.org doesn't have so you can edit 262 00:24:24,960 --> 00:24:30,720 your settings at toeml you can edit your code.py you just double click to edit it and the file opens 263 00:24:30,720 --> 00:24:35,760 right there in your browser the serial console is on the right making it really easy to see if 264 00:24:35,760 --> 00:24:40,800 you have any errors in your code or what's going on behind the scenes a couple of things that set 265 00:24:40,800 --> 00:24:46,160 it apart is that it has tabs so you can have multiple files open right in your browser 266 00:24:46,160 --> 00:24:52,480 it has easy access to control d and control c as buttons so if you want to stop or restart the 267 00:24:52,480 --> 00:24:57,040 program it's just click of a button in your browser and it also has a plotter function 268 00:24:57,040 --> 00:25:02,880 similar to Mu though you have to add some code to make the plotter work but it has a good example 269 00:25:02,880 --> 00:25:07,440 to get you started I think that's pretty cool because a lot of people graduate from Mu to a 270 00:25:07,440 --> 00:25:13,440 text editor that no text editor that i've seen other than Mu has that plotter built in the other 271 00:25:13,440 --> 00:25:18,000 thing I think is just awesome is I love seeing community members create projects like this it 272 00:25:18,000 --> 00:25:22,800 shows the growing community around CircuitPython and you don't always have to rely on Adafruit for 273 00:25:22,800 --> 00:25:28,720 everything I especially like how River is driving innovation by using the browser to write your code 274 00:25:28,720 --> 00:25:33,840 another interesting use case might be hosting your own server I can see a classroom environment doing 275 00:25:33,840 --> 00:25:37,920 that especially with Mu not getting a lot of love the last couple of years there hasn't been a moo 276 00:25:37,920 --> 00:25:42,800 release in almost two years a couple of the bugs are starting to surface but if you're interested 277 00:25:42,800 --> 00:25:48,400 check out the links in the show notes to the online ide and give it a try yeah it's it's I i 278 00:25:48,400 --> 00:25:53,200 follow River on Mastodon and i'm really impressed whenever they make up an update to it because it 279 00:25:53,200 --> 00:25:57,440 just keeps getting better and better I didn't know about the plotter function that's one of the 280 00:25:57,440 --> 00:26:03,280 things I really miss about the Adafruit sorry the Adafruit the Arduino ide is it's got a really good 281 00:26:03,280 --> 00:26:09,920 serial plotter it's kind of a hidden like special feature special uh yeah special feature of the app 282 00:26:09,920 --> 00:26:15,840 and sometimes I will actually open up Arduino just to run the serial plotter for a CircuitPython 283 00:26:15,840 --> 00:26:20,880 sketch just so I can get the really good plotter but uh but that's really troublesome because 284 00:26:20,880 --> 00:26:24,320 Arduino likes to sort of try to connect to the serial port when you're when you're trying to 285 00:26:24,320 --> 00:26:30,960 use it so it's be nice to have it all in one thing yeah I agree well that's our show for detailed show 286 00:26:30,960 --> 00:26:36,400 notes visit the bootloader.net you can follow Tod and I on Mastodon check out thebootloader.net for 287 00:26:36,400 --> 00:26:47,760 links to that as well and we will see you next episode. Stay positive!