1 00:00:00,000 --> 00:00:03,040 [MUSIC PLAYING] 2 00:00:03,040 --> 00:00:04,800 Welcome to the Circuit Python Show. 3 00:00:04,800 --> 00:00:06,240 I'm your host, Paul Cutler. 4 00:00:06,240 --> 00:00:08,400 This episode, I welcome Debra Ansell. 5 00:00:08,400 --> 00:00:10,080 Debra studied physics and applied math 6 00:00:10,080 --> 00:00:12,600 before becoming a software engineer in the mid '90s. 7 00:00:12,600 --> 00:00:14,360 She quit to stay home with her three boys 8 00:00:14,360 --> 00:00:16,320 after the internet bust, then rediscovered 9 00:00:16,320 --> 00:00:18,900 her love of technology as a first LEGO League robotics 10 00:00:18,900 --> 00:00:19,480 coach. 11 00:00:19,480 --> 00:00:24,320 She has been making open source projects ever since. 12 00:00:24,320 --> 00:00:25,920 Debra, welcome to the show. 13 00:00:25,920 --> 00:00:26,880 Thank you, Paul. 14 00:00:26,880 --> 00:00:28,200 It's really nice to be here. 15 00:00:28,200 --> 00:00:30,120 Thanks for having me on. 16 00:00:30,120 --> 00:00:33,320 How did you first get started with computers and electronics? 17 00:00:33,320 --> 00:00:36,040 Well, I got started with computers. 18 00:00:36,040 --> 00:00:38,700 Those are actually two slightly different topics. 19 00:00:38,700 --> 00:00:41,560 I got started with computers in graduate school. 20 00:00:41,560 --> 00:00:44,120 I had taken a year of coding in college 21 00:00:44,120 --> 00:00:46,320 and felt a little bit intimidated, frankly, 22 00:00:46,320 --> 00:00:48,040 because I think most of the people who took the class-- 23 00:00:48,040 --> 00:00:49,500 I was a novice, and a lot of people 24 00:00:49,500 --> 00:00:53,520 had been hacking either TS-80s or whatever in high school 25 00:00:53,520 --> 00:00:54,300 before I got there. 26 00:00:54,300 --> 00:00:55,480 But I knew enough to code. 27 00:00:55,480 --> 00:00:57,640 And then in graduate school, I did a fair amount 28 00:00:57,640 --> 00:00:59,720 of coding with Fortran and numerical recipes 29 00:00:59,720 --> 00:01:01,080 to analyze my data. 30 00:01:01,080 --> 00:01:02,880 So I was in graduate school for physics 31 00:01:02,880 --> 00:01:05,640 and decided against an academic career 32 00:01:05,640 --> 00:01:09,720 and came back to Los Angeles and ended up 33 00:01:09,720 --> 00:01:12,760 working for an internet startup as a software engineer. 34 00:01:12,760 --> 00:01:15,680 And I've been fairly comfortable with coding for a while, 35 00:01:15,680 --> 00:01:19,600 though I did retire from that job about 24 years ago 36 00:01:19,600 --> 00:01:22,540 and have only coded as a hobby since. 37 00:01:22,540 --> 00:01:25,200 I had technically learned electronics in graduate school. 38 00:01:25,200 --> 00:01:27,320 You know, I'd learned a little bit about circuits and things 39 00:01:27,320 --> 00:01:30,600 like that, but only in the lab and only in very small amounts. 40 00:01:30,600 --> 00:01:33,040 So I really didn't have any practical experience with that. 41 00:01:33,040 --> 00:01:37,460 That part all started when my middle son turned eight 42 00:01:37,460 --> 00:01:39,920 and was an enormous LEGO fan and decided 43 00:01:39,920 --> 00:01:42,620 he wanted to join a LEGO robotics team. 44 00:01:42,620 --> 00:01:44,000 But we couldn't find a local team. 45 00:01:44,000 --> 00:01:46,360 And given that I was a stay-at-home mom with coding 46 00:01:46,360 --> 00:01:48,240 experience, I figured I could coach it. 47 00:01:48,240 --> 00:01:51,520 And I have told this story before, but it doesn't get old. 48 00:01:51,520 --> 00:01:54,160 It was a blast to coach, but I was very jealous of the kids. 49 00:01:54,160 --> 00:01:56,040 Because if you're a good coach, your job 50 00:01:56,040 --> 00:02:00,360 is to stand back and let them do the work while you just stop 51 00:02:00,360 --> 00:02:02,120 them from doing anything dangerous. 52 00:02:02,120 --> 00:02:06,480 But I really, really wanted to get in there and build robots 53 00:02:06,480 --> 00:02:09,040 and make them do the things the kids were doing. 54 00:02:09,040 --> 00:02:10,240 And somebody said to me-- 55 00:02:10,240 --> 00:02:11,800 another coach from another team said, 56 00:02:11,800 --> 00:02:13,080 well, if you think the robots are cool, 57 00:02:13,080 --> 00:02:14,520 you should look into Arduino. 58 00:02:14,520 --> 00:02:15,720 And I said, what's that? 59 00:02:15,720 --> 00:02:17,240 And he went on to explain. 60 00:02:17,240 --> 00:02:18,960 And I did a little research online 61 00:02:18,960 --> 00:02:23,400 and found a great deal of information on people's blogs 62 00:02:23,400 --> 00:02:25,640 on the internet and also managed to attend 63 00:02:25,640 --> 00:02:28,320 a workshop nearby that had an Arduino lily pad. 64 00:02:28,320 --> 00:02:31,840 And so my first exposure to Arduino in person 65 00:02:31,840 --> 00:02:32,840 was blinky lights. 66 00:02:32,840 --> 00:02:36,240 And it seems it never really left. 67 00:02:36,240 --> 00:02:38,200 I never really kind of graduated past that. 68 00:02:38,200 --> 00:02:41,440 Just the complexity has grown, but the focus has stayed. 69 00:02:41,440 --> 00:02:42,840 But that just started everything. 70 00:02:42,840 --> 00:02:44,680 I started building projects on my own 71 00:02:44,680 --> 00:02:47,600 and then writing my own blog once I started doing projects 72 00:02:47,600 --> 00:02:50,120 that were original so I could kind of give back 73 00:02:50,120 --> 00:02:52,480 because I'd gained so much from what I'd 74 00:02:52,480 --> 00:02:54,680 write on other people's blogs. 75 00:02:54,680 --> 00:02:56,560 You're well known for your LED projects. 76 00:02:56,560 --> 00:02:59,280 And earlier this year, you shared the orb-cessed LED 77 00:02:59,280 --> 00:02:59,920 sphere. 78 00:02:59,920 --> 00:03:03,400 How did you make an LED cube into an orb? 79 00:03:03,400 --> 00:03:04,320 Thank you for asking. 80 00:03:04,320 --> 00:03:06,320 I'm very proud of that project. 81 00:03:06,320 --> 00:03:09,480 That was one of those aha moments that just worked. 82 00:03:09,480 --> 00:03:11,120 In general, I have a lot of ideas. 83 00:03:11,120 --> 00:03:13,760 And about 80% of them just never go anywhere. 84 00:03:13,760 --> 00:03:16,160 But they're fun to think about. 85 00:03:16,160 --> 00:03:18,800 I think most people, when you're talking about electronics, 86 00:03:18,800 --> 00:03:23,160 it's just cooler to see them in shapes that aren't square, 87 00:03:23,160 --> 00:03:24,800 that don't have sharp corners. 88 00:03:24,800 --> 00:03:28,000 So a sphere is obviously the ultimate interesting shape. 89 00:03:28,000 --> 00:03:29,800 But it's very hard to get circuit boards 90 00:03:29,800 --> 00:03:34,360 into a spherical shape or get lights 91 00:03:34,360 --> 00:03:37,560 on the exterior of a sphere unless you're pushing a string 92 00:03:37,560 --> 00:03:38,840 through holes or something. 93 00:03:38,840 --> 00:03:41,280 And so it always been in the back of my mind 94 00:03:41,280 --> 00:03:43,040 to do an LED sphere. 95 00:03:43,040 --> 00:03:45,640 And I'd never really come across a good idea until-- 96 00:03:45,640 --> 00:03:50,040 unrelated, I can't remember quite what I was looking for. 97 00:03:50,040 --> 00:03:54,120 I was looking for a way to map, just map computer graphics. 98 00:03:54,120 --> 00:03:56,400 And I found this projection mapping 99 00:03:56,400 --> 00:03:59,600 that people often use to go from the surface of a cube 100 00:03:59,600 --> 00:04:01,560 to a sphere called a quad sphere. 101 00:04:01,560 --> 00:04:04,160 And they use that rather than the traditional latitude, 102 00:04:04,160 --> 00:04:07,560 longitude mapping because you don't have the singularity 103 00:04:07,560 --> 00:04:09,120 at the poles that you normally do. 104 00:04:09,120 --> 00:04:11,920 And I saw that and I said, well, wait a second. 105 00:04:11,920 --> 00:04:13,720 I know how to pipe light. 106 00:04:13,720 --> 00:04:15,880 I spent a lot of my projects on how do I get light 107 00:04:15,880 --> 00:04:16,880 from one place to another. 108 00:04:16,880 --> 00:04:19,360 And you get very interesting diffusion effects. 109 00:04:19,360 --> 00:04:22,160 So this is a mapping that if I could make a cube, 110 00:04:22,160 --> 00:04:23,960 would really make it look nice in the sphere. 111 00:04:23,960 --> 00:04:26,800 And I just began to obsessively work on it. 112 00:04:26,800 --> 00:04:28,440 And there's a reason-- 113 00:04:28,440 --> 00:04:29,400 it's funny. 114 00:04:29,400 --> 00:04:31,280 It's a joke, but it's also true. 115 00:04:31,280 --> 00:04:33,400 The title of the article is Or obsession. 116 00:04:33,400 --> 00:04:36,280 And it really did become an obsession for a very long time. 117 00:04:36,280 --> 00:04:39,440 It's just seeing how far I could take that project. 118 00:04:39,440 --> 00:04:42,000 So yeah, it was kind of that aha moment that said, 119 00:04:42,000 --> 00:04:43,080 wait, I got to try this. 120 00:04:43,080 --> 00:04:44,880 And everything really-- it was the click 121 00:04:44,880 --> 00:04:46,400 that everything fell into place from. 122 00:04:46,400 --> 00:04:47,680 It was so satisfying. 123 00:04:47,680 --> 00:04:49,360 It only took a couple of iterations 124 00:04:49,360 --> 00:04:51,320 to really get a working shell that I 125 00:04:51,320 --> 00:04:56,200 could place over on the outside of a pre-built LED cube. 126 00:04:56,200 --> 00:04:59,600 People have done LED cubes for a long time. 127 00:04:59,600 --> 00:05:03,440 And I've seen LED spheres, by the way, too, in clever ways, 128 00:05:03,440 --> 00:05:05,440 but nothing quite like the way I did it. 129 00:05:05,440 --> 00:05:06,800 So that was very, very satisfying 130 00:05:06,800 --> 00:05:08,280 when it all came together. 131 00:05:08,280 --> 00:05:10,640 How did CircuitPython help with the project? 132 00:05:10,640 --> 00:05:12,880 Well, I used CircuitPython for the version 133 00:05:12,880 --> 00:05:15,240 I wrote up for Make Magazine. 134 00:05:15,240 --> 00:05:18,360 And I always prototype, with few exceptions. 135 00:05:18,360 --> 00:05:22,240 Most of my LED projects are prototyped in CircuitPython 136 00:05:22,240 --> 00:05:26,560 because I like the dynamic interactive nature of being 137 00:05:26,560 --> 00:05:30,760 able to change the code and see the changes instantly 138 00:05:30,760 --> 00:05:32,160 in the LED patterns. 139 00:05:32,160 --> 00:05:35,280 I was using a small microcontroller, one 140 00:05:35,280 --> 00:05:37,560 of the Jao's-- I think the one with Bluetooth, 141 00:05:37,560 --> 00:05:40,520 NRF 52840 that runs CircuitPython. 142 00:05:40,520 --> 00:05:44,080 And what's nice, of course, is there's a wonderful LED 143 00:05:44,080 --> 00:05:47,200 animations library that Adafruit has written. 144 00:05:47,200 --> 00:05:49,200 So it's got a bunch of pre-built animations. 145 00:05:49,200 --> 00:05:52,840 And I often will use that and extend onto that library. 146 00:05:52,840 --> 00:05:55,960 So it was made mapping the sphere much easier 147 00:05:55,960 --> 00:05:58,520 because the order in which the-- I 148 00:05:58,520 --> 00:06:00,640 wanted to know where the pixels were in 3D space 149 00:06:00,640 --> 00:06:03,040 because it's much cooler if the patterns respond, 150 00:06:03,040 --> 00:06:06,000 have a 3D spatial orientation. 151 00:06:06,000 --> 00:06:07,880 I was able to use the CircuitPython libraries. 152 00:06:07,880 --> 00:06:10,240 First of all, the controller I used-- ah, that's right. 153 00:06:10,240 --> 00:06:11,920 I used the NRF cents. 154 00:06:11,920 --> 00:06:13,440 I'm going to get the numbers wrong. 155 00:06:13,440 --> 00:06:16,320 So it had a built-in accelerometer and microphone. 156 00:06:16,320 --> 00:06:18,680 And there's an Adafruit library already ready 157 00:06:18,680 --> 00:06:20,920 to how to get that data out of the accelerometer. 158 00:06:20,920 --> 00:06:21,880 And that was great. 159 00:06:21,880 --> 00:06:23,260 So I'm very lazy. 160 00:06:23,260 --> 00:06:25,560 I'm not going to do any more work than I have to. 161 00:06:25,560 --> 00:06:27,920 So I could use the library for the accelerometer, the LED 162 00:06:27,920 --> 00:06:30,840 animations library, and then combine the two very simply 163 00:06:30,840 --> 00:06:32,600 to create a new animation that responded 164 00:06:32,600 --> 00:06:34,560 to orientation of the sphere. 165 00:06:34,560 --> 00:06:36,960 And then when I'm mapping the sphere, 166 00:06:36,960 --> 00:06:39,920 if I were very organized, I would 167 00:06:39,920 --> 00:06:42,880 have planned ahead for where the orientation of the pixels 168 00:06:42,880 --> 00:06:44,200 are going to be given the mapping. 169 00:06:44,200 --> 00:06:45,560 But of course, I didn't. 170 00:06:45,560 --> 00:06:47,400 But the nice thing about mapping the sphere 171 00:06:47,400 --> 00:06:50,400 is to figure out the orientation of the matrices that 172 00:06:50,400 --> 00:06:52,440 made up the side, I could just light up a few pixels 173 00:06:52,440 --> 00:06:55,400 at a time with just a few CircuitPython commands 174 00:06:55,400 --> 00:06:57,640 and figure out what the orientation was as I went. 175 00:06:57,640 --> 00:07:00,040 So it just makes my life a lot easier. 176 00:07:00,040 --> 00:07:03,680 I'm a big fan of the interactive nature 177 00:07:03,680 --> 00:07:07,520 of the language for prototyping and the vast array of libraries 178 00:07:07,520 --> 00:07:09,880 that let me take advantage of a lot of hardware that's 179 00:07:09,880 --> 00:07:11,140 out there. 180 00:07:11,140 --> 00:07:13,520 Your projects often combine a variety of skills, 181 00:07:13,520 --> 00:07:17,160 including CAD, 3D printing, coding, sewing, and more. 182 00:07:17,160 --> 00:07:19,760 Is there one skill you enjoy more than the others or one 183 00:07:19,760 --> 00:07:21,920 that you find more challenging? 184 00:07:21,920 --> 00:07:26,320 The answer to that is I like all the skills. 185 00:07:26,320 --> 00:07:28,600 I love gaining new skills. 186 00:07:28,600 --> 00:07:31,160 And probably my favorite skill is whatever 187 00:07:31,160 --> 00:07:32,840 I'm working with at the time. 188 00:07:32,840 --> 00:07:36,440 And I don't like anyone more than any of the others, 189 00:07:36,440 --> 00:07:38,760 but I love to combine them in unusual ways. 190 00:07:38,760 --> 00:07:41,580 Like sewing and electronics is one of my favorites. 191 00:07:41,580 --> 00:07:45,700 I love wearables where you're creating an accessory 192 00:07:45,700 --> 00:07:48,620 or a clothing item that's designed specifically 193 00:07:48,620 --> 00:07:51,260 to hold the LED strip or string that you're 194 00:07:51,260 --> 00:07:52,920 wearing with a pocket for the controller, 195 00:07:52,920 --> 00:07:55,700 or 3D printing and electronics, which a lot of people do. 196 00:07:55,700 --> 00:07:58,560 That's a great way to protect your electronics. 197 00:07:58,560 --> 00:08:01,060 But if I can come up with a new way 198 00:08:01,060 --> 00:08:03,260 to combine skills that I've learned, 199 00:08:03,260 --> 00:08:04,340 it makes me really happy. 200 00:08:04,340 --> 00:08:05,760 And frankly, the more, the better. 201 00:08:05,760 --> 00:08:08,480 I think the one I published recently in Make Magazine 202 00:08:08,480 --> 00:08:11,760 was LED tote bag we called Back to the Future, which 203 00:08:11,760 --> 00:08:15,400 combined 3D printing and sewing and electronics 204 00:08:15,400 --> 00:08:18,400 and a Pixel Blaze controller to make the patterns work. 205 00:08:18,400 --> 00:08:21,480 So that was really fun to see what you can do. 206 00:08:21,480 --> 00:08:23,200 Anytime I learn a new skill, it kind of 207 00:08:23,200 --> 00:08:24,700 guarantees that I'm going to come up 208 00:08:24,700 --> 00:08:26,640 with a new idea, which I really enjoy. 209 00:08:26,640 --> 00:08:29,120 You mentioned sewing and Pixel Blaze. 210 00:08:29,120 --> 00:08:31,800 And I wanted to ask you about the Pixel Blaze pillow project 211 00:08:31,800 --> 00:08:34,260 that you did earlier this year, which uses the Pixel Blaze 212 00:08:34,260 --> 00:08:35,040 controller. 213 00:08:35,040 --> 00:08:38,960 What is Pixel Blaze, and how did it help with the project? 214 00:08:38,960 --> 00:08:42,480 Pixel Blaze is a wonderful, wonderful controller 215 00:08:42,480 --> 00:08:44,680 that makes-- like Circuit Python, actually, 216 00:08:44,680 --> 00:08:48,640 just makes my life easier when doing LED projects. 217 00:08:48,640 --> 00:08:52,880 It was designed by a very smart programmer named Ben Henke, who 218 00:08:52,880 --> 00:08:54,920 does wonderful LED installations. 219 00:08:54,920 --> 00:08:57,520 And it is its own controller. 220 00:08:57,520 --> 00:09:02,080 It works as its own access point to launch a web-based coding 221 00:09:02,080 --> 00:09:06,500 interface, which has a JavaScript-based editor window. 222 00:09:06,500 --> 00:09:09,760 And you can code your LED patterns 223 00:09:09,760 --> 00:09:12,480 and see the changes on the fly, which is wonderful. 224 00:09:12,480 --> 00:09:15,440 Again, makes seeing how the code you're writing 225 00:09:15,440 --> 00:09:17,800 affects the patterns very easy, because it's sometimes 226 00:09:17,800 --> 00:09:20,840 hard to predict how things will look versus the code you're 227 00:09:20,840 --> 00:09:21,860 writing on the page. 228 00:09:21,860 --> 00:09:25,480 And it has a large number of preconfigured patterns 229 00:09:25,480 --> 00:09:29,680 that people contribute to the library and a very active forum 230 00:09:29,680 --> 00:09:32,360 that you can ask and answer questions in. 231 00:09:32,360 --> 00:09:35,920 So it's a very active kind of user base that's very helpful. 232 00:09:35,920 --> 00:09:38,240 My favorite thing about the Pixel Blaze 233 00:09:38,240 --> 00:09:40,600 is that it has a pattern of libraries 234 00:09:40,600 --> 00:09:43,200 separate from the pixel map. 235 00:09:43,200 --> 00:09:46,440 So you can specify for any project you do. 236 00:09:46,440 --> 00:09:48,740 You can go ahead and use whatever patterns you've 237 00:09:48,740 --> 00:09:49,540 written. 238 00:09:49,540 --> 00:09:52,920 And then in a separate area of the controller, 239 00:09:52,920 --> 00:09:55,720 you can specify, well, here's where my pixels are in space. 240 00:09:55,720 --> 00:09:58,000 And it will automatically map whatever pattern 241 00:09:58,000 --> 00:10:00,160 you've created, as long as it has the correct number 242 00:10:00,160 --> 00:10:02,720 of dimensions, to the location of your pixels. 243 00:10:02,720 --> 00:10:04,000 So that's very nice, too. 244 00:10:04,000 --> 00:10:07,920 I can take patterns that I've written, and I frequently do. 245 00:10:07,920 --> 00:10:10,640 There's some patterns that run on my sphere on my orb 246 00:10:10,640 --> 00:10:13,600 that the large version of my orb uses the Pixel Blaze. 247 00:10:13,600 --> 00:10:15,800 The smaller version uses Circuit Python. 248 00:10:15,800 --> 00:10:19,100 But I can take patterns for the large version of the orb that 249 00:10:19,100 --> 00:10:23,320 will also run on my tote bag, that will also run on a pendant. 250 00:10:23,320 --> 00:10:26,760 The versatility and the ease of use 251 00:10:26,760 --> 00:10:29,480 and the built-ins on that controller 252 00:10:29,480 --> 00:10:32,760 are very, very nice for anyone who works with LEDs. 253 00:10:32,760 --> 00:10:34,560 One of your first Circuit Python projects 254 00:10:34,560 --> 00:10:37,840 combined a Trinket M0 and a Raspberry Pi 0W 255 00:10:37,840 --> 00:10:40,080 to control LEDs sewn into a jacket. 256 00:10:40,080 --> 00:10:41,680 How did they work together? 257 00:10:41,680 --> 00:10:43,080 That was a great project. 258 00:10:43,080 --> 00:10:44,720 I really enjoyed that. 259 00:10:44,720 --> 00:10:46,840 There were a couple of steps in that process. 260 00:10:46,840 --> 00:10:48,780 I'd been playing with jackets and LEDs, 261 00:10:48,780 --> 00:10:50,480 and they'd all had controllers based 262 00:10:50,480 --> 00:10:53,980 on Circuit Python and the LED anima-- using the LED 263 00:10:53,980 --> 00:10:55,340 animations library. 264 00:10:55,340 --> 00:10:58,000 And I was going to wear the jacket to Maker Faire, 265 00:10:58,000 --> 00:11:01,700 the last one right before everything shut down. 266 00:11:01,700 --> 00:11:04,360 And last minute, I decided, well, it'd 267 00:11:04,360 --> 00:11:08,480 be really cool if people could program this jacket on the fly. 268 00:11:08,480 --> 00:11:11,280 So I wanted to use an access point 269 00:11:11,280 --> 00:11:13,320 and have people via a web browser 270 00:11:13,320 --> 00:11:15,920 be able to log in to the jacket and change 271 00:11:15,920 --> 00:11:17,520 the animations remotely. 272 00:11:17,520 --> 00:11:21,960 So I set up a Raspberry Pi 0 and didn't then and still 273 00:11:21,960 --> 00:11:23,600 know very, very little about Apache, 274 00:11:23,600 --> 00:11:25,200 but set up an Apache server. 275 00:11:25,200 --> 00:11:28,180 And I could figure out just enough about the Apache server. 276 00:11:28,180 --> 00:11:31,300 I could get it to serve a web page that 277 00:11:31,300 --> 00:11:34,760 allowed you to use a drag and drop block code to create 278 00:11:34,760 --> 00:11:35,800 Circuit Python patterns. 279 00:11:35,800 --> 00:11:38,040 The block code is based on the Blockly coding language. 280 00:11:38,040 --> 00:11:39,380 That I could get set up. 281 00:11:39,380 --> 00:11:41,440 But I couldn't, for the life of me, 282 00:11:41,440 --> 00:11:45,180 figure out how to get those new patterns onto the jacket 283 00:11:45,180 --> 00:11:48,660 until I realized that the-- 284 00:11:48,660 --> 00:11:51,520 I believe it was a Trinket M0 I was running the Circuit Python 285 00:11:51,520 --> 00:11:54,400 code on initially-- worked as a separate drive 286 00:11:54,400 --> 00:11:56,520 for the Raspberry Pi 0. 287 00:11:56,520 --> 00:12:00,080 So all I had to do was then, once the code was generated 288 00:12:00,080 --> 00:12:03,920 in the web interface, save the Python file directly 289 00:12:03,920 --> 00:12:04,520 to the drive. 290 00:12:04,520 --> 00:12:06,440 And that I could do relatively simply 291 00:12:06,440 --> 00:12:08,820 without having to go into any kind of operating system 292 00:12:08,820 --> 00:12:09,680 or anything like that. 293 00:12:09,680 --> 00:12:11,680 Because you just save the file and Circuit Python 294 00:12:11,680 --> 00:12:14,120 automatically picks up the code and runs it on the jacket. 295 00:12:14,120 --> 00:12:16,520 So there's probably a better way to do it. 296 00:12:16,520 --> 00:12:20,080 But the way that works is always the best way at the time. 297 00:12:20,080 --> 00:12:20,900 And it worked. 298 00:12:20,900 --> 00:12:21,920 And I got it. 299 00:12:21,920 --> 00:12:22,960 And I was thrilled. 300 00:12:22,960 --> 00:12:24,640 And it was just a nice little bonus 301 00:12:24,640 --> 00:12:27,480 of just the convenience of Circuit Python showing up 302 00:12:27,480 --> 00:12:28,280 as-- 303 00:12:28,280 --> 00:12:31,760 the controller showing up as a drive on whatever computer 304 00:12:31,760 --> 00:12:32,500 you attach it to. 305 00:12:32,500 --> 00:12:33,640 So that was a lot of fun. 306 00:12:33,640 --> 00:12:35,320 And I was very proud of myself for getting it working. 307 00:12:35,320 --> 00:12:38,440 And I still have no idea how Apache actually works. 308 00:12:38,440 --> 00:12:41,720 I don't think anyone knows how Apache really works. 309 00:12:41,720 --> 00:12:43,240 Probably true. 310 00:12:43,240 --> 00:12:45,240 If people want to learn more about your projects, 311 00:12:45,240 --> 00:12:46,440 where should they go? 312 00:12:46,440 --> 00:12:50,440 So my older projects are available on my blog, 313 00:12:50,440 --> 00:12:52,040 geekmomprojects.com. 314 00:12:52,040 --> 00:12:54,080 Those are mostly the kid-friendly ones. 315 00:12:54,080 --> 00:12:57,440 And the really well-documented ones, you can find-- 316 00:12:57,440 --> 00:13:01,280 I've written seven or eight articles from Make Magazine. 317 00:13:01,280 --> 00:13:03,180 You can look at-- that's a good place 318 00:13:03,180 --> 00:13:05,280 to go to look up archives of some 319 00:13:05,280 --> 00:13:06,780 of my more interesting projects. 320 00:13:06,780 --> 00:13:08,360 Those are the two best places to go. 321 00:13:08,360 --> 00:13:10,040 If you'd like a full instruction set, 322 00:13:10,040 --> 00:13:13,600 I do tend to post finished builds to social media, 323 00:13:13,600 --> 00:13:15,160 Instagram and Mastodon. 324 00:13:15,160 --> 00:13:19,400 But for instructions, my blog and Make Magazine 325 00:13:19,400 --> 00:13:21,160 are best places to go. 326 00:13:21,160 --> 00:13:23,560 I'll make sure I link to those in the show notes as well. 327 00:13:23,560 --> 00:13:24,480 Thank you. 328 00:13:24,480 --> 00:13:26,380 Last question I ask each guest. 329 00:13:26,380 --> 00:13:28,780 You're starting a new project or a prototype. 330 00:13:28,780 --> 00:13:30,880 Which board do you reach for? 331 00:13:30,880 --> 00:13:34,880 It's almost always the smallest Circuit Python controller 332 00:13:34,880 --> 00:13:35,600 I have on hand. 333 00:13:35,600 --> 00:13:37,640 So these days, it's a QDPI or a Zhao. 334 00:13:37,640 --> 00:13:39,520 Because there's such a range of both of those. 335 00:13:39,520 --> 00:13:42,160 I think they just came out with a Zhao with a camera. 336 00:13:42,160 --> 00:13:44,160 And I've been dying to work that into a project. 337 00:13:44,160 --> 00:13:45,640 And the QDPI is great. 338 00:13:45,640 --> 00:13:46,680 I'm a big fan of that too. 339 00:13:46,680 --> 00:13:48,240 I like the little connector. 340 00:13:48,240 --> 00:13:49,240 What's that? 341 00:13:49,240 --> 00:13:51,480 They call it the Stemic-QT, I think, connector. 342 00:13:51,480 --> 00:13:55,360 Which makes it very easy to, when you're prototyping, 343 00:13:55,360 --> 00:13:59,160 attach a variety of peripherals very easily and access them. 344 00:13:59,160 --> 00:14:01,720 So both of those are kind of my go-to boards. 345 00:14:01,720 --> 00:14:03,480 And they're cheap, which is great. 346 00:14:03,480 --> 00:14:05,520 Debra, thanks so much for being on the show. 347 00:14:05,520 --> 00:14:06,760 Thank you for having me, Paul. 348 00:14:06,760 --> 00:14:09,280 I really enjoyed it. 349 00:14:09,280 --> 00:14:10,600 Thank you for listening. 350 00:14:10,600 --> 00:14:13,080 Transcripts are available in most podcast players. 351 00:14:13,080 --> 00:14:17,520 And show notes are available at www.circuitpythonshow.com. 352 00:14:17,520 --> 00:14:20,560 Until next time, stay positive. 353 00:14:20,560 --> 00:14:27,060 ( calling for help )