1 00:00:02,780 --> 00:00:04,360 - Welcome to the CircuitPython Show. 2 00:00:04,660 --> 00:00:05,700 I'm your host, Paul Cutler. 3 00:00:06,020 --> 00:00:08,160 This episode, I'm joined by Sean Carolan. 4 00:00:08,820 --> 00:00:10,880 Sean is a maker and gardener in upstate New York 5 00:00:10,940 --> 00:00:12,200 who enjoys playing video games 6 00:00:12,260 --> 00:00:13,740 and building projects with CircuitPython. 7 00:00:15,320 --> 00:00:17,620 Sean got his start with computers on a Commodore 64 8 00:00:17,960 --> 00:00:20,360 and worked for Electronic Arts as a systems administrator. 9 00:00:21,220 --> 00:00:23,520 Sean works as a sales engineer for Grafana Labs, 10 00:00:23,620 --> 00:00:26,440 an open source monitoring and observability company. 11 00:00:27,080 --> 00:00:28,540 He lives with his wife, two cats, 12 00:00:28,640 --> 00:00:31,200 in a Shiba Inu near Albany, the state capital. 13 00:00:32,340 --> 00:00:33,180 Sean, welcome to the show. 14 00:00:34,120 --> 00:00:35,280 - Hi Paul, thanks for having me. 15 00:00:35,840 --> 00:00:36,260 - Glad you're here. 16 00:00:36,420 --> 00:00:38,660 How did you first get started with computers and electronics? 17 00:00:39,360 --> 00:00:42,640 - Well, as a child, I went to a computer class 18 00:00:42,640 --> 00:00:43,400 with my parents. 19 00:00:43,540 --> 00:00:46,020 They decided, let's go and learn more about computers. 20 00:00:46,600 --> 00:00:49,620 At that time, like, it wasn't really that common 21 00:00:49,940 --> 00:00:53,000 for folks to have a personal computer in the home. 22 00:00:53,060 --> 00:00:54,380 I was just getting started. 23 00:00:55,040 --> 00:00:58,720 And I took this class and I was terribly shy and nerdy, 24 00:00:59,240 --> 00:01:01,360 but I had a really nice lady instructor 25 00:01:01,780 --> 00:01:04,440 who took a liking to me and encouraged me. 26 00:01:04,960 --> 00:01:06,240 And she told my mom and dad, 27 00:01:06,340 --> 00:01:08,420 "Hey, you should get this kid a computer." 28 00:01:08,660 --> 00:01:10,000 So I was really, really lucky. 29 00:01:10,280 --> 00:01:13,640 And a few months later Commodore 64 showed up 30 00:01:13,780 --> 00:01:16,240 and I was, you know, love at first sight. 31 00:01:16,760 --> 00:01:18,580 I jumped right in and, you know, 32 00:01:18,760 --> 00:01:20,840 typed in the program from the magazine. 33 00:01:21,380 --> 00:01:24,020 And it's been a lifelong journey since then, 34 00:01:24,320 --> 00:01:31,080 you know, watching the technology evolve from these 8-bit machines, you know, to, you know, 35 00:01:31,580 --> 00:01:33,140 supercomputers that you hold in your pocket. 36 00:01:34,540 --> 00:01:37,100 You've created a Pac-Man clone written in Just Circuit Python. 37 00:01:37,920 --> 00:01:38,920 Why choose Pac-Man? 38 00:01:40,080 --> 00:01:41,260 Yeah, that's a great question. 39 00:01:42,300 --> 00:01:46,280 Pac-Man was one of the first video games I remember playing as a kid. 40 00:01:47,260 --> 00:01:50,020 You know, kind of a fun way to gauge someone's age. 41 00:01:50,100 --> 00:01:52,759 Just ask them, "What is the first game you remember playing?" 42 00:01:52,760 --> 00:01:55,100 You can kind of tell what era they're from. 43 00:01:55,720 --> 00:01:57,200 So, meet Pac-Man. 44 00:01:57,720 --> 00:01:59,520 It was in an ice cream parlor. 45 00:02:00,400 --> 00:02:03,140 And we walked in and there was this machine 46 00:02:03,320 --> 00:02:05,880 making beeps and boops and had color graphics. 47 00:02:06,260 --> 00:02:08,060 And this was kind of mind-blowing 48 00:02:08,320 --> 00:02:12,340 because before Pac-Man we had Space Invaders and Pong. 49 00:02:13,620 --> 00:02:14,460 And they were okay. 50 00:02:14,980 --> 00:02:16,640 But then all of a sudden there's this game 51 00:02:16,700 --> 00:02:20,540 with color and ghosts and a little guy eating stuff. 52 00:02:21,220 --> 00:02:26,640 I begged for a quarter to play the game and I've been hooked ever since. 53 00:02:26,720 --> 00:02:29,340 I've been playing Pac-Man ever since 1981. 54 00:02:30,980 --> 00:02:34,720 Before we get into how you coded it, tell me about the hardware you used to get Pac-Man 55 00:02:34,840 --> 00:02:36,560 up and running, the Seeed WIO Terminal. 56 00:02:37,300 --> 00:02:44,620 Yeah, so the Seeed WIO Terminal is a nice all-in-one microcontroller that comes with some fun accessories 57 00:02:44,840 --> 00:02:47,680 like a display, it's got a little joystick, a few buttons. 58 00:02:48,440 --> 00:02:56,000 even a light sensor on the back. And typically you'd program these devices with like Arduino 59 00:02:56,160 --> 00:03:02,740 or something. And you know, Arduino is hard. You've got to download the IDE and learn how to 60 00:03:03,020 --> 00:03:09,780 get the libraries in place. And I learned that this device was now supported on CircuitPython. 61 00:03:10,260 --> 00:03:16,340 So I flashed it with CircuitPython and all of a sudden it became really easy to program. 62 00:03:16,840 --> 00:03:22,520 With CircuitPython, you just basically edit a file, hit save, and then immediately it runs 63 00:03:22,650 --> 00:03:28,120 on the device. So it's a really fun little device for prototyping. I had it sitting in a drawer. 64 00:03:28,880 --> 00:03:36,640 I'd actually taken a stab at trying to build Pac-Man several months earlier. I got as far as 65 00:03:36,880 --> 00:03:46,820 moving Pac-Man with the joystick. There was no maze, no ghosts. I put the Wio back in the 66 00:03:47,460 --> 00:03:52,580 it's gotten easier to write code, you know, using like a coding assistant or copilot. 67 00:03:53,380 --> 00:03:57,420 So I thought, well, why not give this a try, you know, pull the device out. 68 00:03:57,420 --> 00:03:59,380 And I looked at it and thought, it's got a joystick. 69 00:03:59,840 --> 00:04:01,480 The screen's about the right size. 70 00:04:02,220 --> 00:04:04,040 This would look great, you know, running Pac-Man. 71 00:04:04,840 --> 00:04:07,040 And so you were able to do that in just a day. 72 00:04:07,420 --> 00:04:11,860 How were you able to code all of Pac-Man in CircuitPython in under a day? 73 00:04:12,800 --> 00:04:13,820 Well, I had some help. 74 00:04:13,820 --> 00:04:16,640 I did use AI and AI Copilot. 75 00:04:17,220 --> 00:04:22,600 So it was actually Visual Studio Code, which is your programmer's editor. 76 00:04:23,560 --> 00:04:32,000 And I used the built-in GitHub Copilot feature with the Cloud Opus 4.5 model. 77 00:04:33,080 --> 00:04:41,060 And it took a lot of iteration and different exploring different avenues and kind of like 78 00:04:41,140 --> 00:04:42,360 coaching the AI. 79 00:04:42,700 --> 00:04:48,340 I was able to build it in a day with this co-pilot assistant, sort of doing the very 80 00:04:48,620 --> 00:04:53,040 technical tasks like drawing the maze and working out the logic for the ghosts. 81 00:04:53,820 --> 00:05:01,000 And I ended up actually acting more like a QA tester, sort of architect/tester, where 82 00:05:01,120 --> 00:05:07,340 the co-pilot AI would write some code and then we would flash it to the device, and 83 00:05:07,340 --> 00:05:09,740 then I'd play the game for a little bit and see what happened. 84 00:05:10,500 --> 00:05:11,920 So that was the process. 85 00:05:13,000 --> 00:05:16,620 Starting in the morning and by evening time, I had Pac-Man ready to ship. 86 00:05:17,570 --> 00:05:19,380 Where did you get the art assets for the game? 87 00:05:20,200 --> 00:05:24,480 So the art assets came from a site called Spriter's Resource. 88 00:05:25,960 --> 00:05:30,040 Now this is a huge database of game sprites. 89 00:05:30,640 --> 00:05:32,660 A lot of them are commercially owned, though. 90 00:05:32,920 --> 00:05:35,560 So just a warning for the listeners out there. 91 00:05:36,380 --> 00:05:42,160 Don't try to take Mario and build a game and sell it, because Nintendo will send its lawyers 92 00:05:42,320 --> 00:05:42,840 after you. 93 00:05:43,580 --> 00:05:51,300 But you can use these assets for free projects, demos, proofs of concept, as long as you're 94 00:05:51,320 --> 00:05:55,580 not trying to commercially benefit from some licensed character. 95 00:05:56,380 --> 00:05:59,040 It seems like it's an okay thing. 96 00:05:59,320 --> 00:06:01,380 So Bandai Namco, please don't sue me. 97 00:06:01,520 --> 00:06:02,520 I love Pac-Man. 98 00:06:03,020 --> 00:06:06,820 This is a tribute to your awesome game and I don't make any money from it. 99 00:06:07,680 --> 00:06:08,800 Anyway, Spriter's Resource. 100 00:06:09,060 --> 00:06:09,460 Check it out. 101 00:06:09,580 --> 00:06:11,960 There's a ton of cool sprite sheets that you can use. 102 00:06:12,700 --> 00:06:16,700 There are also some other sites out there too where you can get free sprite sheets. 103 00:06:17,440 --> 00:06:20,820 Another one I just found recently is called KENNY. 104 00:06:22,860 --> 00:06:29,780 This developer kind of makes money just selling packs of assets for people who want to develop 105 00:06:29,880 --> 00:06:30,240 games. 106 00:06:31,100 --> 00:06:32,800 So you can download some of them for free. 107 00:06:33,060 --> 00:06:35,520 If you want the whole collection, you pay. 108 00:06:36,240 --> 00:06:39,220 It's kind of really cool because I'm not a graphic artist myself. 109 00:06:40,180 --> 00:06:45,600 So it was really nice to discover that someone else had graphic titles and textures and things 110 00:06:45,660 --> 00:06:47,820 that you could use right away for your game. 111 00:06:48,360 --> 00:06:48,840 That's pretty neat. 112 00:06:48,880 --> 00:06:50,520 I'll have to link to both of those in the show notes. 113 00:06:51,650 --> 00:06:53,440 How did you replicate the sounds in the game? 114 00:06:54,300 --> 00:06:56,580 The sounds of Pac-Man are very classic. 115 00:06:56,960 --> 00:06:58,340 You know, they're sort of unforgettable. 116 00:06:58,340 --> 00:06:59,980 like the waka waka waka, you know, 117 00:07:00,060 --> 00:07:01,500 Pac-Man's eating dots. 118 00:07:01,620 --> 00:07:04,240 And there's a little music, you know, 119 00:07:04,330 --> 00:07:05,780 kind of a little jaunty little tune 120 00:07:05,880 --> 00:07:07,620 that plays at the beginning of each level 121 00:07:08,010 --> 00:07:09,500 to get you fired up and, you know, 122 00:07:09,640 --> 00:07:11,760 get the player ready to play the level. 123 00:07:13,020 --> 00:07:16,100 On the microcontroller, there is a little speaker. 124 00:07:17,020 --> 00:07:18,740 And so with these microcontrollers, 125 00:07:18,800 --> 00:07:20,940 you can actually kind of make beeps and boops 126 00:07:21,280 --> 00:07:25,320 without having to download an MP3 or a digital sound file. 127 00:07:26,040 --> 00:07:27,840 So I thought, let's just go retro. 128 00:07:28,060 --> 00:07:29,960 we'll just try it, see what happens. 129 00:07:30,200 --> 00:07:33,060 You know, if we send a signal to the speaker, 130 00:07:33,880 --> 00:07:36,420 you could tweak it to get different notes, right? 131 00:07:36,680 --> 00:07:40,120 And so I worked with, again, the co-pilot and said, 132 00:07:40,240 --> 00:07:42,000 could you make the waka waka sound? 133 00:07:42,780 --> 00:07:44,260 You know, and it's pretty close. 134 00:07:44,900 --> 00:07:47,060 You can hear it when you play the game, you know, 135 00:07:47,120 --> 00:07:48,940 Pac-Man just sort of doing that thing. 136 00:07:49,860 --> 00:07:52,460 And then I really wanted to have the music, you know, 137 00:07:53,020 --> 00:07:55,180 the start level music is so iconic 138 00:07:55,440 --> 00:07:57,140 and it just sets the Pac-Man mood. 139 00:07:57,400 --> 00:08:00,600 But the AI wasn't quite getting it right, you know. 140 00:08:01,140 --> 00:08:08,020 So I went and found basically sheet music, the musical notation of the Pac-Man startup 141 00:08:08,200 --> 00:08:12,100 song and fed that to the co-pilot AI. 142 00:08:12,860 --> 00:08:15,640 And then it was able to write the song like, you know, pitch perfect. 143 00:08:16,490 --> 00:08:17,000 No kidding. 144 00:08:17,700 --> 00:08:21,000 That little doo-doo-doo-doo-doo-doo-doo, like music that starts the level. 145 00:08:22,520 --> 00:08:24,040 It's very recognizable, right? 146 00:08:24,520 --> 00:08:27,940 who played the original game will go, "Oh yeah, that's the song." 147 00:08:28,900 --> 00:08:31,160 Pac-Man also runs on the Adafruit FruitJam. 148 00:08:31,350 --> 00:08:32,400 How did that come to be? 149 00:08:33,280 --> 00:08:34,460 That was entirely organic. 150 00:08:34,630 --> 00:08:39,520 And it's one of the things I love about working with open source software and frameworks is 151 00:08:40,419 --> 00:08:43,979 the community will pick up something and make it better. 152 00:08:44,700 --> 00:08:51,359 So my afternoon project on one CircuitPython device, the WIO terminal, became something 153 00:08:51,360 --> 00:08:54,680 that a whole lot more people can enjoy on the Fruit Jam. 154 00:08:55,240 --> 00:08:57,420 Because the Fruit Jam, you can hook it up to a TV, 155 00:08:57,900 --> 00:09:01,760 and it's got proper peripherals and sound and all of that. 156 00:09:02,340 --> 00:09:07,280 So I just got this notification in GitHub one day, 157 00:09:07,340 --> 00:09:09,280 and I looked, and someone had basically 158 00:09:09,620 --> 00:09:11,780 ported the entire game to the Fruit Jam 159 00:09:12,660 --> 00:09:16,420 and sent me a pull request, all tied up with a neat bow. 160 00:09:16,600 --> 00:09:18,600 And it was really, really a nice thing. 161 00:09:18,720 --> 00:09:22,680 So the community member, Cooper Dalrymple, 162 00:09:23,260 --> 00:09:26,640 he's relic-se on GitHub, took what I wrote 163 00:09:27,180 --> 00:09:31,380 and spent another afternoon porting it to the Fruit Jam. 164 00:09:32,200 --> 00:09:34,000 So this is kind of the beauty and strength 165 00:09:34,060 --> 00:09:35,700 of the CircuitPython platform. 166 00:09:36,800 --> 00:09:39,480 These are two completely different microcontroller chips, 167 00:09:40,460 --> 00:09:41,800 but because the code was written 168 00:09:41,900 --> 00:09:43,980 in this CircuitPython language, 169 00:09:44,110 --> 00:09:45,720 it was easy to map everything over. 170 00:09:46,440 --> 00:09:49,300 So Cooper was also able to get that version working in one day. 171 00:09:50,030 --> 00:09:50,740 >> That's amazing. 172 00:09:51,730 --> 00:09:55,000 You mentioned that you used Copilot with Cloud Opus 4.5. 173 00:09:55,560 --> 00:09:57,540 What was your overall experience using AI? 174 00:09:57,660 --> 00:09:58,320 What worked well? 175 00:09:59,370 --> 00:10:04,800 >> I'm kind of an AI skeptic, at least I was until so very recently. 176 00:10:05,660 --> 00:10:08,840 Previous attempts to code using AI didn't go well. 177 00:10:09,200 --> 00:10:14,759 This Opus 4.5 model though seems to have finally 178 00:10:14,760 --> 00:10:18,660 reach a useful enough stage where you can give it 179 00:10:18,680 --> 00:10:20,600 instructions, complex instructions, 180 00:10:21,000 --> 00:10:22,600 or even have it help you make a plan. 181 00:10:23,280 --> 00:10:25,820 And it gets eventually to the right answer. 182 00:10:27,040 --> 00:10:29,900 And so that was the game changer. 183 00:10:30,580 --> 00:10:35,300 Working with Claude Opus 4.5, I was 184 00:10:35,480 --> 00:10:39,460 able to just express what I wanted out of the game 185 00:10:40,080 --> 00:10:42,720 without having to worry too much about the technical details. 186 00:10:43,640 --> 00:10:45,860 So there are a lot of small details in Pac-Man 187 00:10:46,220 --> 00:10:48,800 that you'll notice if you study the game. 188 00:10:49,560 --> 00:10:52,880 Each ghost has its own personality and behavior. 189 00:10:53,900 --> 00:10:56,400 And they actually change the behavior 190 00:10:56,640 --> 00:10:59,220 from kind of go back to the corners, 191 00:10:59,670 --> 00:11:03,560 and then about 9 or 10 seconds later, they flip. 192 00:11:03,640 --> 00:11:05,580 And you can see the change in the movement. 193 00:11:05,840 --> 00:11:07,360 Like if you watch the game of Pac-Man, 194 00:11:07,520 --> 00:11:08,920 the ghosts will be sort of looking 195 00:11:08,980 --> 00:11:10,360 like they're just randomly moving. 196 00:11:10,420 --> 00:11:12,519 And then all of a sudden, the red ghost 197 00:11:12,520 --> 00:11:14,900 starts coming like, you know, for Pac-Man, 198 00:11:15,060 --> 00:11:17,300 like the Terminator, you know, beeline. 199 00:11:18,040 --> 00:11:20,460 You know, the other ghosts have complex, like AI 200 00:11:20,760 --> 00:11:22,860 that tries to chase, you know, 201 00:11:23,020 --> 00:11:25,360 four squares ahead of where Pac-Man is. 202 00:11:26,400 --> 00:11:27,240 Here's a pro tip. 203 00:11:27,580 --> 00:11:30,580 If the pink ghost is in front of you, run towards her. 204 00:11:30,940 --> 00:11:31,360 - Good to know. 205 00:11:32,100 --> 00:11:33,020 - Pinky will run away. 206 00:11:33,340 --> 00:11:35,840 So it's the one ghost you can do that with. 207 00:11:35,940 --> 00:11:38,880 Don't panic, just run towards Pinky if you get boxed in, 208 00:11:39,500 --> 00:11:41,000 and then you might be able to escape. 209 00:11:41,640 --> 00:11:44,620 That was one of the things I really wanted to replicate 210 00:11:45,380 --> 00:11:48,980 because the original arcade has the ghost AI 211 00:11:49,300 --> 00:11:51,400 that is unforgettable. 212 00:11:52,160 --> 00:11:54,520 And so I just told Claude, 213 00:11:55,180 --> 00:11:59,100 "Could you please make this just like the arcade, 214 00:11:59,640 --> 00:12:01,500 authentic AI?" 215 00:12:01,500 --> 00:12:02,560 And it knew what I meant. 216 00:12:03,420 --> 00:12:04,920 And that was really insightful to me. 217 00:12:05,120 --> 00:12:07,320 I didn't have to go explain or figure out, 218 00:12:07,600 --> 00:12:10,280 to go research what Blinky was supposed to do. 219 00:12:10,400 --> 00:12:13,580 And that all just came in organically. 220 00:12:14,299 --> 00:12:16,920 And then I was just able to test the game and play it 221 00:12:16,920 --> 00:12:18,040 and go, yeah, that looks right. 222 00:12:18,180 --> 00:12:19,080 That feels right. 223 00:12:19,420 --> 00:12:22,740 The ghosts kind of are acting the way they did in the arcade. 224 00:12:23,480 --> 00:12:24,620 - So it's really like you said before, 225 00:12:24,700 --> 00:12:26,820 you were the architect giving it the strict prompts 226 00:12:26,880 --> 00:12:29,220 or re-prompts to do it again. 227 00:12:29,680 --> 00:12:30,780 And then you just got to play it 228 00:12:30,780 --> 00:12:32,620 and be the QA tester over and over again. 229 00:12:33,340 --> 00:12:35,820 - Yeah, that's what's new and game changing, 230 00:12:36,280 --> 00:12:39,060 if I may make a pun about this whole thing, 231 00:12:39,200 --> 00:12:43,880 is that you can now write code entirely without an IDE, 232 00:12:44,360 --> 00:12:45,620 right, without a text editor, 233 00:12:46,520 --> 00:12:50,020 and actually build useful and entertaining software. 234 00:12:50,740 --> 00:12:51,820 - So that's what worked well. 235 00:12:51,820 --> 00:12:53,460 What were the challenges in using AI? 236 00:12:54,680 --> 00:12:57,840 - Oh, there were lots, especially in the beginning. 237 00:12:58,600 --> 00:13:01,780 I spent a ton of time just trying to figure out 238 00:13:02,260 --> 00:13:05,300 how to not get the ghosts to get stuck in the walls. 239 00:13:06,180 --> 00:13:06,960 It sounds silly, 240 00:13:07,120 --> 00:13:09,600 but these are the things you have to account for, 241 00:13:09,890 --> 00:13:11,720 you know, in an arcade game. 242 00:13:11,770 --> 00:13:14,120 It's like, well, where am I allowed to move? 243 00:13:14,700 --> 00:13:16,880 And, you know, in every loop of the program, 244 00:13:16,950 --> 00:13:19,580 you have to detect, am I touching a wall 245 00:13:19,680 --> 00:13:20,920 or am I close to a wall? 246 00:13:22,140 --> 00:13:24,920 So there were some weird bugs that emerged, right? 247 00:13:25,000 --> 00:13:29,120 Like Pac-Man goes out of the maze and just disappears. 248 00:13:31,000 --> 00:13:33,120 Whereas, you know, he's supposed to go through the tunnel 249 00:13:33,280 --> 00:13:35,580 and come back through the other side, right? 250 00:13:35,840 --> 00:13:38,220 So we had to iterate through that. 251 00:13:38,900 --> 00:13:40,840 Another bug that I found was that Pac-Man 252 00:13:40,960 --> 00:13:42,500 could get inside the ghost box. 253 00:13:43,100 --> 00:13:45,900 And in the arcade game, Pac-Man doesn't go in the ghost box. 254 00:13:45,940 --> 00:13:46,820 It's a one-way door. 255 00:13:47,680 --> 00:13:52,220 So each of these things came up and I had to tell Claude, 256 00:13:52,340 --> 00:13:56,200 no, can you please fix this or make it like this? 257 00:13:56,400 --> 00:13:57,380 It's not quite right. 258 00:13:58,480 --> 00:14:00,060 Yeah, so it's sort of weird, right? 259 00:14:00,140 --> 00:14:05,220 Because now the computer or the AI is doing the work. 260 00:14:05,220 --> 00:14:12,200 and you are the organic eyes and fingers that play the game and test it. 261 00:14:12,550 --> 00:14:14,020 It's a strange feeling, you know? 262 00:14:15,660 --> 00:14:19,300 What recommendations would you have for someone interested in programming with AI? 263 00:14:20,360 --> 00:14:25,520 Start small and pick a little project that you can tackle. 264 00:14:26,060 --> 00:14:29,700 I recommend a browser-based retro game. 265 00:14:30,940 --> 00:14:34,360 Because web browsers nowadays are very powerful. 266 00:14:34,360 --> 00:14:46,880 They come with all sorts of built-in stuff that you can do with JavaScript that lets you build almost any classic video game, especially Atari games. 267 00:14:47,660 --> 00:14:51,160 You might start with something like Breakout because it's very simple. 268 00:14:51,420 --> 00:15:00,560 You don't need a bunch of graphics because it's rectangles and a ball and basically some physics, right? 269 00:15:00,560 --> 00:15:04,340 but start small and have a plan. 270 00:15:05,200 --> 00:15:06,900 When you start to code with AI, 271 00:15:08,319 --> 00:15:10,180 especially cloud code, 272 00:15:10,330 --> 00:15:12,060 you can use directly in the terminal, 273 00:15:12,580 --> 00:15:14,960 or you can do this with GitHub Copilot too. 274 00:15:15,060 --> 00:15:18,860 But the first step should always be, let's make a plan. 275 00:15:19,420 --> 00:15:22,600 And most of these AIs will understand what you mean 276 00:15:22,860 --> 00:15:24,460 and go into sort of plan mode 277 00:15:24,460 --> 00:15:26,780 where they deeply research a topic 278 00:15:27,020 --> 00:15:29,260 and try to work out any kinks ahead of time. 279 00:15:29,940 --> 00:15:32,040 And then it presents you back the plan. 280 00:15:32,220 --> 00:15:35,220 So you can review the plan and say, yeah, that looks good, 281 00:15:35,220 --> 00:15:36,560 or I'd like to make some changes. 282 00:15:37,520 --> 00:15:40,360 Sometimes it'll even interrogate you a little bit. 283 00:15:40,840 --> 00:15:43,440 I noticed Cloud Code does this, where it'll say, 284 00:15:44,740 --> 00:15:49,120 do you want retro sprites for your Space Invaders game? 285 00:15:49,900 --> 00:15:52,440 Do you need a high score thing at the top? 286 00:15:52,500 --> 00:15:55,000 And it'll ask you some preference-like questions 287 00:15:55,120 --> 00:15:58,120 before it actually initiates and starts building stuff. 288 00:15:59,220 --> 00:16:02,780 Other point of advice is don't over-task the AI. 289 00:16:03,560 --> 00:16:06,760 Make it break all of the things down into stages. 290 00:16:07,940 --> 00:16:09,980 The way I was able to build Pac-Man in a day 291 00:16:10,040 --> 00:16:13,320 was just in little bites, again with the puns, 292 00:16:13,440 --> 00:16:15,040 but I can't help it, sorry. 293 00:16:16,060 --> 00:16:16,960 - No, it's all good. 294 00:16:18,280 --> 00:16:20,540 - Bite off a little bit at a time, right? 295 00:16:20,800 --> 00:16:23,940 And get something working and then iterate, 296 00:16:24,500 --> 00:16:26,300 add some more and keep going. 297 00:16:27,040 --> 00:16:30,900 And then, you know, you'll eventually get to the goal, right? 298 00:16:31,060 --> 00:16:32,700 But do it in smaller steps. 299 00:16:33,200 --> 00:16:35,540 So those are my pointers for like coding with AI. 300 00:16:36,300 --> 00:16:37,120 - That's good advice. 301 00:16:37,980 --> 00:16:40,300 If anyone wants to learn more about you and your work, 302 00:16:40,460 --> 00:16:41,100 where should they go? 303 00:16:42,160 --> 00:16:43,800 - I've got a GitHub pages site. 304 00:16:44,260 --> 00:16:47,660 So it's just scarolan.github.io. 305 00:16:48,540 --> 00:16:51,400 And that's got my portfolio and a bunch of stuff. 306 00:16:51,500 --> 00:16:52,680 You can also find me on LinkedIn, 307 00:16:53,380 --> 00:16:54,839 just search for Sean Carolan 308 00:16:54,840 --> 00:16:57,040 and I'll show up somewhere in the top five. 309 00:16:57,760 --> 00:16:58,720 - I'll make sure we link to that 310 00:16:58,760 --> 00:17:00,260 in the show notes as well. 311 00:17:00,959 --> 00:17:02,720 Last question I ask each guest, 312 00:17:02,930 --> 00:17:05,839 if starting a new CircuitPython or microcontroller project, 313 00:17:06,199 --> 00:17:07,420 which board do you reach for? 314 00:17:08,839 --> 00:17:10,880 - So it depends on the use case. 315 00:17:11,319 --> 00:17:13,780 If we're talking about like a wearable, 316 00:17:14,610 --> 00:17:17,319 I would go with the Circuit Playground. 317 00:17:18,720 --> 00:17:23,480 So Adafruit makes this gorgeous like round device 318 00:17:23,480 --> 00:17:25,920 that is so fun and it's got Bluetooth 319 00:17:26,260 --> 00:17:28,980 and NeoPixels around the edges. 320 00:17:29,350 --> 00:17:31,660 You can even use it without soldering. 321 00:17:32,150 --> 00:17:34,500 So you could take alligator clips to this thing 322 00:17:35,080 --> 00:17:37,980 or even like conductive thread, right? 323 00:17:38,200 --> 00:17:41,360 If you are into like textiles and sewing, 324 00:17:41,360 --> 00:17:45,120 you can literally like sew an interactive costume 325 00:17:45,480 --> 00:17:46,620 using a circuit Python. 326 00:17:47,980 --> 00:17:50,679 If it's a smaller like IoT device 327 00:17:50,680 --> 00:17:53,280 or something that needs to be very low powered, 328 00:17:53,700 --> 00:17:56,620 I'll typically go with like the Seeed Xiao. 329 00:17:57,400 --> 00:17:59,080 It's a tiny little, you know, 330 00:17:59,160 --> 00:18:02,060 like stamp sized microcontroller. 331 00:18:03,060 --> 00:18:04,640 Also the Adafruit QT PY. 332 00:18:06,200 --> 00:18:10,400 My go-to chip is like ESP32 S3. 333 00:18:11,560 --> 00:18:13,340 I like it 'cause it's got really good 334 00:18:13,620 --> 00:18:15,180 like deep sleep capabilities. 335 00:18:15,870 --> 00:18:17,960 So I actually have outside in the garden, 336 00:18:18,940 --> 00:18:21,380 a device that spends most of its time sleeping, 337 00:18:21,700 --> 00:18:24,620 but that's 'cause it's got a battery and a solar panel, 338 00:18:25,040 --> 00:18:28,960 right, so it just wakes up, it does its little thing, 339 00:18:29,260 --> 00:18:30,540 and then it goes back to sleep. 340 00:18:31,160 --> 00:18:32,900 And you can run all these things. 341 00:18:33,060 --> 00:18:34,740 CircuitPython runs all of them nowadays. 342 00:18:35,160 --> 00:18:35,600 It's amazing. 343 00:18:36,400 --> 00:18:37,140 - Those are great choices. 344 00:18:37,940 --> 00:18:39,380 Sean, thanks so much for coming on the show. 345 00:18:40,290 --> 00:18:41,180 - Hey, thanks for having me. 346 00:18:42,780 --> 00:18:44,760 - Thank you for listening to the CircuitPython Show. 347 00:18:45,140 --> 00:18:46,200 For show notes and transcript, 348 00:18:46,460 --> 00:18:49,640 please visit www.circuitpythonshow.com. 349 00:18:50,050 --> 00:18:51,960 Until next time, stay positive.