[00:00:08] (Music) SY: Welcome to the CodeNewbie podcast, where we talk to people on their coding journey in hopes of helping you on yours. I'm your host Saron and today we're talking about open source hardware. (music) Suz is an engineer. 

[00:00:22] SH: Hey I'm Suz Hinton. I am a cloud developer advocate Microsoft where I get to focus on improving Azure IoT. 

[00:00:30] SY: And in her spare time... 

[00:00:31] SH: I am also an open source maintainer, and I tend to focus on hardware and IoT libraries, particularly in the language Javascript. 

[00:00:40] SY: But what does open source look like in the world of hardware? And if you want to build a little IoT project for yourself like, for example, a doorbell that sends you a text, which is a project she's working on right now—more on that later—where do you start? Suz gives us newbie-friendly tour of the hardware world and how open source fits in, after this. 

[00:01:03] When I first learned to code, all I wanted was to be a developer. But then I actually learned to code and realized that you don't become a developer, you become a front-end developer or a rails developer or a full stack engineer or a back-end engineer or the million other job titles that involve coding. So how do you pick? And once you get that first job, how do you turn it into a career? You can use the Dice careers mobile app. This is the tool I wish I had when I first started. You pick the tech skills you either have or hope to have in the future, you type in your desired job title and Dice helps you find other job titles you might also be interested in and maybe didn't know about. But they take it a step further by telling you what skills these job titles require, how much they pay and, based on your profile, they tell you what skills you might want to learn so you can one day apply for those jobs. They simplify a lot of the chaos of job hunting, and it's totally free. So check out the Dice careers mobile app. Go to dice.com/codenewbie for more info. That's dice.com/codenewbie. 

[00:02:02] Flatiron School teaches you how to code from anywhere. They've got an awesome community of career-changers and a number of different options for you to pick from to become a software engineer. They've got full-time in-person courses, self-directed introductory courses and a remote online web developer program. They even have a free 75-hour online prep course where you can learn Javascript, Ruby and do some interview prep. Go to flatironschool.com/podcast to learn more. That's flatironschool.com/podcast. Link is in your show notes.  

[00:02:35] One of the best parts of being a coder is finally being able to bring your passions to life. You have the skills to design, to code, to create the thing you're excited about and share that passion with the world. And Hover can help you with the first step of sharing your passion with the world: getting your domain name. They've got a really beautiful and easy-to-use interface where you can find and register your new domain name in just a few steps. And to give you full control, they separate your domain name from your hosting so you're never stuck with one service. They keep your domain name safe while giving you the flexibility to use whatever hosting service is best for you. They also give you free WHOIS privacy, so your personal information is safe, too. To get started, go over to hover.com/newbie to save 10% off your first purchase. That's hover.com/newbie. (Music) Link is in the show notes.

[00:03:25] SY: OK. So when I think of a cloud developer advocate, I don't necessarily think of open source IoT. Like when I, when I hear open source IoT, I'm thinking open source stuff, but you're making the garage door open by tapping the closet door. Like that, that kind of... that's like the visual that I have. How are those two related? Or are they related?

[00:03:49] SH: Yeah, they're totally related. So IoT is definitely becoming more and more open source these days because so many people are really excited about the topic and they want to know where to get started. And a lot of people also want to be able to sort of own their own system and not sort of use these hidden away proprietary systems. So it's definitely become a big hobby for people in their spare time. And also companies are starting to open source their tools just so that it's a little bit more I guess attractive to people who are trying to make use of it. 

[00:04:18] SY: Ok. I definitely want to dig into the IoT world a bit, but before that, I wanna talk about what it means to be open source because I'm used to open source in a software context. I've, I've never honestly before talking to you, I never really thought of it in a hardware context. What does it mean to be open source when you're doing hardware? 

[00:04:39] SH: So a lot of hardware still runs software. So there can be open source hardware on the software side. But when we talk specifically about open source hardware, which is a lot more confusing, we're talking about the actual board design itself and the files around how you create these printed circuit boards, which is kind of what the boards are actually called, you know, on their most basic level. And so similar to how you would be editing a photo in Photoshop if you want to create a circuit board, then you have specialized software to do that, too. 

[00:05:12] SY: Oh. 

[00:05:12] SH: And you can actually just publish those files on Github so that other people can download them. There's a concept known as schematics as well that just shows how all of the pieces on your board are, are connected together with their wiring. And then you can actually improve upon that or you can just completely change it or you can just open source your own adjustments and then order a custom board from there, which is pretty cool. 

[00:05:34] SY: Ok, so when you talk about schematics, is that kind of like, like a floor plan? Like a blueprint?

[00:05:41] SH: Yeah, I think that's a really good way of thinking about it. So I would say it is kind of like a blueprint. You know, imagine that you had a board that had some lights and a microphone and you wanted to be able to connect them to the power cord, you know, that the board actually has plugged into it. You have to be able to connect all those things up, right? And so that's sort of what we talk about when we talk about schematics. It's showing like where are all the paths? And where are they actually going to? And what is connected to what on the actual board?

[00:06:14] SY: Ok, that makes sense. So when I think about open source for software, it feels very intuitive and kind of obvious why you would need it to be open source to see what it's doing because the way I interact with software is usually through an app or a website, right? So I—besides doing view source, which really only gives me the HTML and CSS and maybe some javascript, I don't have access to the server. I don't get to see anything. So it's kind of a black box in terms of understanding how it was put together. But when I think about hardware, I could technically just bust open my computer, right? Like I can open it up, I can put all the pieces down, I can, you know, identify where, where it comes from so what does open sourcing hardware give me that I can't just open up and see for myself?

 [00:07:03] SH: So when you open source hardware, you also give things like a bill of materials. It feels like some of the components are so tiny. And instead of having to stare at the board and sort of do what we call as reverse engineering, which takes a lot of effort. You end up having to write down all the tiny little numbers and letters that are on every single little chip on the board. And then you have to Google everything separately. And then you have to figure out ok well is that the microphone? Or is this the chip that's sort of processing the audio coming in from the microphone? And things like that. And so sometimes it's just a really complicated circuit or the components are so small you can barely even look at it. So imagine being able to open something up and everything is clearly listed out as far as the exact pieces where to actually source and buy them from. And then you can shortcut to finding out where all the paths are connecting them all up together I guess. And it's so, so helpful, especially when it comes to—let's say you haven't used a certain sensor before, like a temperature sensor. You can actually look at open source boards to see what different components they put together to get it to work. You can practically sort of copy and paste other people's circuits into your own custom board and then you can sort of concentrate on just getting all of these smaller circuits coming together as one big circuit. 

[00:08:25] SY: Ah, ok. That makes a lot of sense. Ok, so you mentioned that looking at the actual schematics and like the project file is its own thing. What is that thing? Are there popular programs or languages or tools that are associated with, with that?

[00:08:43] SH: Yeah. So just like with Photoshop or Illustrator or even CSS files or Javascript files, there's always like a special format for these kind of things. There's a variety of different software packages you can use, but generally, there tends to be only a couple of standards that you sort of output those files as if that makes sense. And so I consult with the software. And so one of the most popular ones is called EAGLE, and EAGLE is used by professionals. You can find a lot of tutorials online for it. There's also KiCad. And one that I find is the most user-friendly to get started with is called Fritzing.

[00:09:19] SY: Oh, that's fun.

[00:09:19] SH: And that's with like a Z. Yeah, so F-R-I-T-Z-I-N-G. And that one is aimed more at people who are sort of—they've done some stuff with Arduino boards, which is like an open-source prototyping board that you can sort of get started with if you're a beginner. A lot of people are like, "yeah, but I want to make this professional-looking board with the circuit that I created with my Arduino," right? And so Fritzing is usually the natural first step for people wanting to get started with that. But no matter which software you use, you tend to output this file format called Gerber or Gerber—starts with G. So it depends on what side you are on the gif, gif fence I guess. 

[00:09:59] SY: Wait, what, what side are you on?

[00:10:00] SH: I'm on the gif, the hard G.

[00:10:02] SY: Ok, we can still be friends.

[00:10:03] SH: Ok, ok. But it's actually super interesting because you're going to be sending those files to the printed circuit board manufacturers and they use those files as like the instructions for their machines to be doing all the different layers on the board which is really cool.

[00:10:20] SY: Ok, so this seems like a lot of stuff, but also very separate and different from the software side of things.

[00:10:28] SH: Yeah. It's really, really different because the files that you send to the manufacturer are basically instructing super heavy machinery to do things like cut through the fiberglass that the circuit board is made of. And it also tells it where to put the screen print. So like, you know, the painted design on top. Or which areas of the copper layer to sort of scrape off the top of that fiberglass board. So the things that you send off have like physical world ramifications.

[00:10:55] SY: Yeah. That would suck to get wrong.

[00:10:58] SH: Yeah, absolutely. And so you can wait if you wanna order boards that are more affordable, you don't really have to wait a little while. And so you sort of wait for three weeks, and it comes back, and you're like, "well if there's one mistake on it it's not gonna to work." And so that feedback cycle is a lot slower than software where...

[00:11:11] SY: Right.

[00:11:11] SH: ...you break production and you're like oopsie, and then you can just deploy something in five minutes.

[00:11:18] SY: Yeah. Yeah. Ok, so what kind of stuff do you make? And specifically do you, Suz, make? Because, again, when I think of the hardware IoT, I'm thinking like I push a button and this other button turns green. Like that's really the scope of IoT imagination. So what kind kind of stuff have you, have you made?

[00:11:38] SH: So I've made everything from artistic boards that don't really do anything but they're sort of trying to turn circuit boards into art. And then I've also made sort of more practical things that tend to be like IoT. So there were two artistic boards that I designed. The first one was designed in the shape and it actually looked almost exactly the same as a New York City MTA Metrocard.

[00:12:01] SY: Oh.

[00:12:02] SH: Yeah, it has like the metro card design and everything. It has like the magnetic strip. But that's sort of, sort of done with the different screen printing layers, and I also used the copper layer for a little bit of that decorative-ness as well. And what it does is it has an SD card sort of slot on the back, and it also has a little speaker that's glued to the front of it, and you can load up the SD card with sound files from the subway. And then you can hold this button down, and it'll play sounds from the subway for you.

[00:12:29] SY: Oh my God. I love—how big is it? Is it the size of a subway card?

[00:12:30] SH: Yes, it's exactly the same size. So I basically scanned in like my own metro card and traced over it in Fritzing to get that going.

[00:12:40] SY: Wow. What did you, what did you do with it?

[00:12:41] SH: I was trying to couple it with this software sort of art project that I did where I tried to visualize what the Subway sounds look like. So you know just using the web audio API to kind of paint pixels based on like the frequencies of the sounds.

[00:12:56] SY: Oh, cool.

[00:12:56] SH: And I wanted to have a cool sort of like hardware artistic companion to go with it. And I think I ended up making those two projects and then presented them at a conference.

[00:13:07] SY: I love that. Oh, that's really cool. So tell me a little bit about the product development of that. What were the, the high-level steps that you had to do to end up with that project?

[00:13:18] SH: So it starts with basically writing out the requirements of what you want it to do. In this case, because it's an artistic PCB, you sort of have constraints around what you want it to look like too, right? And so a lot of people can just stuff a lot of components all in one little space, and it doesn't really matter what the size of the borders or anything like that. And in my case, I wanted it to look good, but I also wanted a certain amount of functionality on it. So those were the two things that I started with. I sort of sketched out pictures of where I might put the speaker and things like that. But I also wrote down just a bullet list of okay, when you hold the button down, it should play audio sounds. And so I would write a list of things I needed to research such as what is the best speaker, and what size speaker should I put on there to look aesthetically pleasing? A lot of the small microcontrollers don't have a lot of memory on them, and so, you know storing something like a .WAV file or an MP3 file is actually like way too large. So I had to come up with a solution for well how can I store those files? And then how do I get the files onto the board in the first place, right?

[00:14:22] SY: Yeah. 

[00:14:22] SH: And so you kind of write down all of these different questions that you need to answer. And then you go and sort of just Google. 

[00:14:29] SY: Yeah, the Google hole. Absolutely. How much of what you did were you already familiar with? Because, you know, maybe you didn't know the exact answers, or maybe you had to use new tools, but were you at that point comfortable with that space?

[00:14:47] SY: I was definitely comfortable with a couple of parts. So the first part was I knew that I just wanted to use a very standard microcontroller, which you can think of as the brain of it. You know, that's the thing that's listening for a button press and telling the SD card to kind of load a sound. I knew that I just wanted to use a very common chip because it was this long skinny chip—and it's actually the one that's used on most of the common Arduino boards—but it's this long narrow chip and it was the exact size that would fit kind of along where that stripe at the bottom of the metro card is. And so aesthetically that was a good look. From there, I'd used speakers before, and I looked into a few of the SD cards—sort of what we call breakout boards, which I mentioned before. And a breakout board is essentially taking a component—and it creates a little printed circuit board with the component on it, but then it creates these paths that you can easily connect to so that you can sort of experiment in and play with at first. I was able to look at a bunch of sort of existing breakout boards for an SD card slide. And I figured out that I kind of already knew the specific sort of communication protocol that that specific breakout board spoke. I guess what I'm trying to say is there were little bits and pieces I already knew and so that definitely made me feel confident enough to sort of fill in all the little gaps in between, if that makes sense.

[00:16:18] SY: Yeah, that makes a lot of sense. So at that point, how much hardware stuff had you done?

[00:16:25] SH: So I'm gonna say something that I don't want to intimidate people, but I've been doing hardware for quite a long time, and so the Arduino was sort of the beginning for me and my adult life because it always tinkered with circuits—a couple with my dad when I was growing up. But I picked up the Arduino probably when it first came out, so I think 2008, 2009 or something like that. Prior to this project, I’d literally never made my own PCB before, so I had to learn all of that stuff from scratch. For me, the biggest challenge was, “yeah, but how do I take it from these wires everywhere on the Arduino to actually like a really nice-looking, polished final thing?” That's what the hardest thing for me was to learn because it's a brand new paradigm of thinking about how you're designing things I guess. 

[00:17:11] SY: Yeah, that makes sense. Okay, so we talked about the art piece. Tell me about one of your more—I wouldn't say functional because I think the art piece functioned. You know, it had some functionality, but maybe more practical applications?

[00:17:24] SH: I can tell you about something that I'm working on right now. 

[00:17:26] SY: Yeah. Go for it. 

[00:17:27] SH: So I just moved into a new apartment, and over the last few weeks, I've sort of been looking around for things that, you know, I could—even though I'm renting, you know, maybe I could have temporary solutions for. And the one thing that I noticed was that I don't actually have a doorbell.

 [00:17:39] SY: Oh. 

[00:17:40] SH: My front door is actually like inside the building. So if someone knocked on the door on the outside of the building, you know, the outside door, I wouldn't actually know. The thing is though that I hate doorbells because like they, (Laughter) they make the doorbell sound. So what I thought I could do was I like to have my own home-rolled solutions. Even though I really like IoT, I'm a little bit of a tinfoil hat wearer where I don't like inviting lots of different IoT companies into my home because they all have...

[00:18:13] SY: I completely agree.

[00:18:14] SH: Right? 'Cause they all have their own database, and they all have these little minute things about like your activities and things like that, right?

[00:18:21] SY: Yep.

[00:18:21] SH: So I wanted to roll my own. And it's not 100 percent, you know, private and without using a provider or anything like that, but what I wanted to do was be able to somehow capture the signal from when someone pushes the doorbell. And if it picks up on that, then it will, instead it'll send me a text message saying someone has rung the doorbell. 

[00:18:40] SY: Nice. I like that. Ok. Now how long did that take to build? 

[00:18:44] SH: Yeah, so I'm building it right now. It took about an hour of research where I was like ok, well how do doorbells send signals? And you know, what kind of technology is it? Because it's probably not Bluetooth, and it's probably not Wi-Fi unless you have one of the fancy ones. So I did some research just until like ok, so how do doorbells even talk to each other? Like how does the receiver upstairs talk to the button downstairs? When I found out that it was just like RF, I just looked up to see if I could get any like RF receiver breakout boards. So I found just some hobbyist RF transmitter and receiver breakouts so that you can just hook up to a regular Arduino or a Raspberry Pi, which is sort of like a little tiny computer that you can treat sort of like an Arduino. So I ordered a bunch of those so they came in the mail this week. 

[00:19:33] SY: Nice. 

[00:19:34] SH: So what I'm essentially gonna do is I'm just gonna open up the doorbell, and then I'm going to plug the little RF receiver into my Arduino, and then I'm gonna start like pushing the button to see if it picks up on anything. And thankfully, there's a lot of open source libraries that I can use with this breakout board that will work with it. So I barely have to write five lines of code to start picking up on that signal, which is really, really cool. And so from there, I'm going to figure out which board I want to use. I'm probably gonna use a Wi-Fi-enabled board rather than just an Arduino because then it can connect to my router in order to be able to like dispatch a text message to me. 

[00:20:07] SY: Ok so how much of that is relying on open source? How much of that can you do just as a, you know, a plug-and-play—I'm gonna put this tool here, and I don't really need to know how it's made or, you know, what it looks like on the inside and how much of it is helped by the fact that there are open source tools available. 

[00:20:27] SH: So much of this project is based on open source hardware and also like open sourced software that runs on that hardware. And so I don't know if you've heard of a company called Adafruit. 

[00:20:36] SY: Yeah.

[00:20:37] SH: Adafruit is a really cool company started by Limor Fried, and they sell a ton of these sort of little breakout boards, and they also sell lots of different components and things. And their website is amazing because it basically usually couples like a tutorial along with that product... 

[00:20:52] SY: Yeah. 

[00:20:53] SH: So that you can get started with it immediately, which is amazing. And so they open source just about every single library that they write for their breakout boards. But they also most of the time open source their breakout boards, too. And so that's really, really great because you can sort of have a look at how it's done, but also what it means is a lot of the time other manufacturers will take those, and then they'll manufacture their own version of it, right? And so you have this huge variety of different companies you can choose to buy this breakout board from. I would say that at least 90 percent of the code that I'm gonna write for this project will be either from open source Github repositories or it will be (Music) just copy pasted from, you know, someone's blog post on how to do it.

[00:21:37] SY: Wow. Yeah.

[00:21:37] SH: Yeah, and then I can just tweak it to what I want to do with it. 

[00:21:43] SY: Coming up next, Suz shares what it feels like to livestream her coding process and how sharing all her wins and frustrations online has shaped how she feels about herself as a developer. After this.

[00:21:57] When I learned to code, I was so excited to finally bring my passions to life. I could build things that I really cared about and share them with the world. And the first step in sharing is getting a great domain name. That's where Hover comes in. They've got a really slick east-to-use interface. They've got awesome domain names to pick from and they separate your domain from your hosting so you have full control and flexibility over your online identity. So go to hover.com/newbie to save 10% off your first purchase. That's hover.com/newbie. Link is in the show notes. 

[00:22:29] You want to get serious about learning to code, but where do you start? Flatiron School's got the perfect thing. They're offering their free 75-hour online prep course, where you dig into Javascript, Ruby and more. If you're not sure where to start, start there. And when you're done, you can keep learning with their self-directed introductory courses, remote online web developer program or full-time in-person courses. Whatever your schedule, they've got options to help you reach your coding goals. To learn more, go to flatironschool.com/podcast. That's flatironschool.com/podcast. Link is in your show notes.

[00:23:07] Getting a job is one thing. Building a career is another. With Dice, you can do both. They've been helping tech professionals advance their careers for over twenty years, which means they have a ton of data and tools to help you navigate yours. Looking for a job right now? They've got thousands of positions available from top companies like AT&T, Dreamworks, Adobe, IBM and Dell. Wondering what's next in your career? Use their career pathing tool to find new roles based on your profile and see how much more money you can make. Not sure if you're getting paid what you're worth? Use the Dice salary predictor to see real numbers on what your skills are worth. Don't just look for a job. Manage your career with Dice. (Music) For more info go to dice.com/codenewbie. 

[00:23:50] SY: Ok, so what I find very interesting about all of this is you don't just build stuff for yourself. You actually build stuff in front of people on the Internet via a video live streaming channel on Twitch, which sounds very intense and kind of scary. 

[00:24:11] SH: (Laughter) Yes, it's still scary for me. I mean I've been doing it for two years now, and I still get nerves before I hit that stream button every time. 

[00:24:17] SY: So why do you do it? 

[00:24:19] SH: (Laughter) Yeah, I ask myself that a lot, (Laughter) but I think back to why I originally did it for the first time. And it was because I would give these talks a conferences or I would make these projects like the metro card, and you could tell people were like well Suz just must be especially talented to be able to do these things. And I don't think that of myself. And they're obviously not there at midnight when I'm really struggling with a project and  Google literally has no answers and I'm just throwing spaghetti at the wall trying to see what actually sticks, right? And so I wanted people to see that side and I wanted people to know that senior developers such as myself, we still get stuck or we still make typos or we still sometimes don't know how to answer an issue on Github if we're open source maintainers. And so for me, I was kind of hoping to get some more contributors to some of my open source just by showing them, you know, how it all works so that they feel less scared to try to understand it, but also I just wanted to encourage people to keep trying if they're a beginner because I think that we're all lifelong learners where we're all code newbies. 

[00:25:36] SY: Absolutely. I wanna go back to that point you said about how you'd go to these conferences, do these talks and people would think like, "oh man, like you know that's... she's an expert. So clearly that means, you know, if I'm an expert, I can't do it." Why is it important for people to see the mistakes in the typos? Why is that important?

[00:25:57] SH: In the past, when I've worked with junior developers who have worked at the same company on the same team as me, they'll get a list of requirements, you know, for a certain feature or something like that if we're working on a product. And then, you know, we'll get together to sort of make a start on it. And I just see them staring at the blank file in their code editor, and they have absolutely no idea where to start. And what they usually said to me and usually it took a while to sort of drag it out of them because they weren't really sure how to describe it to me was that they felt that they needed to just write correct working perfect code literally out of the gate. And that's not even how a lot of senior developers work at all. It's not how I work.

[00:26:35] SY: Yeah.

[00:26:35] SH: You know? Don't sit here thinking you have to write stuff perfect because that's just not how I operate at all. And then I just realized that this was not enough instances where people are watching other peers just coding. You know? It's not a polished screencast tutorial where you know obviously they're doing everything perfectly because they're trying to show you how to do it right. But there just wasn't enough resources where people could just go and say, "well how do other people do this? Like are they making the same mistakes as me? Are they googling the same things as I am? You know, like how long does it take for their code to compile generally, you know, without any mistakes?" And so I just thought there was a huge gap there.

[00:27:18] SY: Ok. So tell me a little bit more about the logistics of this livestream situation. You decide you want to do a livestream, and then you do what? Turn on the camera and just kind of start talking?

[00:27:34] SH: Yeah, that's pretty much it. So rubber ducky programming or rubber ducky debugging is a really fun concept that already exists where, you know, it doesn't have to be a rubber duck, but you essentially take something on your desk and you pretend that it's a person and you explain your code to that object. And it's really good for debugging because you tend to like catch yourself halfway through, right? And that's a really, really fun thing to do. And then people can see your face when you're stuck. You know, you can see the furrowed brow. To me, it's a really emotionally intimate way of programming. It's very, very different from other online sort of video content.

[00:28:12] SY: How do you decide what to do in the livestream?

[00:28:12] SH: The first four episodes, I'll admit I actually just solved the problem the night before. And then I would get up in the morning, I would turn my stream on and then I would just solve the problem again in front of people. Most of the time, I made the exact mistakes I made than before, right? Because like I went to sleep and I forgot about how I actually implement it, but I just wanted to be confident that I could fix it. But after four episodes, I realized I was just doubling the work, and that was just silly. And so then I just started coming up with a loose plan. And so I would pick a couple of issues, and I would write them in a little list in a textedit file. And that's when I would just sort of start tackling them and get as many done as I could in about two hours. And that's generally what I do now. I just reserve a couple of things that I think will be informative for people and I'll just save them for my Sunday stream when I start working on them.

[00:29:02] SY: So I think that the idea of messing up—not just, you know, like oh, I made a typo messing up, and messing it up in a way that you can't get unstuck, right? That to me is a terrifying feeling. Was it that you felt that way and you just decided it was worth it? Or were you actually confident and felt like, you know what? Chances are pretty high that I can eventually figure this out.

[00:29:27] SH: Definitely the former.

[00:29:29] SY: Ok.

[00:29:29] SH: I've definitely woken up on the wrong side of the bed before. I've definitely on that day run into something, realised either that I'm going to have to refactor an entire thing and it's gonna be super boring to watch or I just have no idea how to fix something. You know, a lot of the stuff that I work on, as we've talked about, is open source hardware and the board worked yesterday, but it doesn't work today, and you literally have no reason for it.

[00:29:52] SY: Ok, right. Yeah.

[00:29:52] SH: It's a huge bummer. There's been times where I've turned the stream off earlier. I'm like, "you know what, folks? Like I could maybe push on, and we could maybe start brainstorming and figuring it out, but I think today I'm just not feeling it. I'm kind of feeling pretty down on myself for not being able to figure this out. So you know what? I'm actually just gonna turn the stream off. I'm gonna go for a walk. I'll come back. And if I figure it out, I'll actually just tweet the solution for you."

[00:30:11] SY: Ok.

[00:30:11] SH: And so that's always really I guess triumphant for me because you don't necessarily—it doesn't have to be over when you turn off the stream, you know?

[00:30:19] SY: Yeah. Ok, so in those moments when you've, you've had to do that, what has the response been from the community? Is anyone like upset with you for kind of leaving it unfinished?

[00:30:30] SH: No, people have usually been upset at me because I'm being too down on myself.

[00:30:34] SY: Really? Oh, wow. You have a nice community.

[00:30:36] SH: Yeah, everyone's so nice. They like serious chill, you know? And if you want to take ten minutes to stare at it in silence, we'll be here. You know? Or, you know... and so a lot of people are just like—they're like cheerleaders, which is very, very heartwarming. They're just like, "you got this, Suz. You got this." Or, "oh maybe it's just, you know, not the day to work on this." And so it's been...

[00:30:55] SY: Yeah.

[00:30:55] SH: ...really, really amazing.

[00:30:56] SY: So does it end up being a kind of community pair programming session? Which, you know, that's commonly known as a like a mob programming, is that what it ends up being? Or is it mostly you coding and them like watching and cheering on the sidelines?

[00:31:10] SH: I think it depends on what I work on. If it's something that no one understands what's going on, they'll just ask lots of questions and they'll cheer me on. But generally, I've found that because I try to work on at least the most accessible stuff that I have to do. So I try not to go super low level unless I'm just gonna spend the whole hour explaining it to everyone, which, I'm usually happy to do. But what's nice is that it's people typing into a chatroom, so instead of lots of people yelling at you at once, you know, you can kind of collect your thoughts and then look at the chat and read what everyone else has to say. And we can sort of have some consensus from there, which is fun.

[00:31:44] SY: So have you ever had any negative experiences on Twitch? Because when I think of Twitch, I definitely, you know, my mind goes to just a kind of toxic environment of lots of really angry people watching competitive video games. Like that's, you know, really my, my only knowledge and association with that community. And it's surprising and impressive that you've built a very kind one. But was it always that way or was there a time when you were dealing with some of the unfortunate things that we hear on that platform?

[00:32:14] SH: I got lucky because I'm in a huge niche in Twitch. So, you know, the most I've had watching has been about 600 people, which sounds terrifying, but that's actually very low for Twitch. (Laughter)

[00:32:23] SY: I was gonna say, that sounds like a lot. That's basically a conference.

[00:32:27] SH: I think someone super high profile in the tech scene retweeted my streaming link one Sunday, and so everyone just came in. But usually now I get between two and three hundred people. So it's a lot less than that.

[00:32:38] SY: Nice.

[00:32:38] SH: But what's interesting is that I think there's a few factors at play here. I think, first of all, I stream on a Sunday morning, so I think all the trolls are sleeping in from being up all night trolling everyone else. (Laughter) Second of all, as I said, I'm streaming within a niche, but also I've always had things on Twitch like chat roles. I've always moderated chat very heavily so even if it's just the smallest thing, I'll correct someone immediately just so that people don't think that they can normalize that kind of behavior. And so some of the worst things I get are really what you would not really consider to be bad. It's usually someone bashing the language that you've chosen to program in. I mean, that's literally Twitter.com anyway, right?

[00:33:21] SY: Yeah.

[00:33:22] SH: That's literally online. It's like, "why are you using this language? You should use this." Right? And so I have that in my chat rolls now: no language bashing. And I'll just say, "hey. You don't have to stay and watch. Like if you don't like Javascript then, you know, there's some other languages going on right now on Twitch. You should check them out." And then they kind of get a little bit ashamed. They're like, "oh she's being really nice to me and like yeah, maybe (Laughter) maybe I shouldn't be a jerk." And then sometimes I get people who—they're not used to seeing like a woman programming, especially on Twitch. And so they'll just be so gobsmacked that they'll just sit in there exclaiming, "oh my God. I can't believe there's a girl programming." And, you know, usually my community's like, "first of all, she's a woman. Second of all, you can just...

[00:34:02] SY: Right.

[00:34:02] SH: ...get over it." You know, it's not a big deal. There's a lot of women programmers out there.

[00:34:07] SY: So do you plan on being on Twitch for I guess like forever? Do you feel like you've found a home there where you wanna grow and, you know, really invest in that channel?

[00:34:18] SH: I definitely wanna keep streaming at least for the time being. I think I've grown my community to the point now where it could probably grow a little bit more, but it's so good right now that I almost just don't (Laughter) wanna change it. And so...

[00:34:33] SY: Yeah. You don't wanna mess with it.

[00:34:35] SH: Yeah. So I tend to not really—like I haven't really budged from the two to three hundred, you know, followers—sorry, like live viewers every Sunday. I haven't really grown beyond that for at least six months now. And that's not necessarily something that I want to grow out of control because that's when you really do get those issues. And so for me, I'm more happy to see the regulars always coming back every week and feeling that the chat is, you know, not so overwhelming that they can't contribute. And so for me, I see it more of a deep compliment that you just always get the same people coming back every time rather than just lots and lots of random people that decided to check out your stream.

[00:35:16] SY: Yeah, absolutely. So I wanna, I wanna read a Twitter thread that you posted almost two years ago, 2016. And it says, "I have a weird relationship with the things I do in a technical sense. I feel pressure from this industry that the only things of value are heroic, super amazing technical feats of perfection. I mix that with low perception of my abilities and value as a dev. And anything that I accomplish can't have value because 'even I could do it.' I think everything I do must have been easy, because I don't think I can do hard things, and I wrongly conflate easy with not valuable. It's something I am still trying to unpack every single day as a developer, and I'm not making super great progress." How do you feel hearing that today two years later?

[00:36:05] SH: Yeah, that was a really difficult time for me. I think that was when I think I was being asked more and more for advice from junior developers on, you know, how to get better as a programmer, but also how to, how to have a larger profile online and things like that. I definitely think that I've come a long way since then. I remember the room I was sitting in. I remember actually doing those tweets. And I just felt so down on myself. And I, I couldn't get out of that weird catch-22 that I felt it was, but I think I'm doing a lot better now. I think nowadays I look at everything that I don't know yet. And I look at people who know things that I don't know. And I think, you know, they're anything from like one night to six months away, you know, depending on how hard it is. You know, you're anywhere from one day to six months away from actually like knowing that thing that you wanna know that other people know. And instead of respecting something because it's this huge technical feat and valuing it because of that, I actually more so these days value the amount of effort and time someone was able to put into something in order to know it or be really good at it. And you know, obviously like time is such a privilege as well, and so I actually valued the time that was invested and the dedication that person had rather than just the skill alone by itself, which I think just doesn't tell the whole story.

[00:37:29] SY: Yeah. What do you think helped get you there?

[00:37:33] SH: I think for me it actually was the Twitch streaming. I think that having to break down my thinking and my steps over and over again, you know, to show people how I'm solving something—people would hit me up and say, "hey I like know a ton of stuff about the topic that you were using, but this one thing you did in the command line today I've never seen before. And like it blew my mind to know." I think it's really cool.

[00:37:59] SY: Wow.

[00:37:59] SH: And that's when I realized that yeah, and that was really cool. And I thought, ok, so it's more about the fact that we're all just an accumulation of random little bits (Laughter) and pieces like that. And it's about like a lot of people specialize in maybe three or four topics. And if they do that, it looks like they know everything about everything. But they're just being very careful about, you know, the boundaries of that conversation and keeping (Laughter) it to what they know best, right? And so now I just, I respect—again, I respect the craft of them putting time and effort and being passionate enough to go after that.

[00:38:36] SY: Yeah. It's super easy to be impressed by people and, and not really understand the depths of things. And it really does take a lot of effort and time and work to get deep in a knowledge. So respecting that time is huge. So what I love about this, this—what I appreciate about this Twitter thread is that it feels very familiar. You know, I hear sentiments of that in a lot of conversations in, in our community among code newbies where it's not so much imposter syndrome, you know, I think people misuse that term a lot where—I'm gonna say it, you actually are an expert. You know, you, you have a lot of experience in this. And I see a lot of people who are really, really new say that they have imposter syndrome, when really it's just beginner syndrome. It's just, "I'm starting, and I don't know what I'm doing." And that actually makes sense, syndrome. But they hit a wall so many times, and they say it's too hard.  And then they finally break through. They get the thing that, you know, seemed impossible just moments ago. And then all of a sudden it becomes easy and then the fact that they struggled and worked really hard—that kind of just gets lost, right? It becomes so natural so quickly. And then it's easy for that to turn into, "well, you know, it maybe wasn't really that hard. And, you know, it's, it's actually pretty easy, which means I can't give myself credit, right? I can't give myself credit, a pat on the back for getting it because it feels easy now, which means it probably was never really hard. It's just that I couldn't do it. I couldn't get it. You become your own problem instead of it just being the way learning works. Does that make sense?

[00:40:12] SH: Yeah, it's so true. And you can feel that cycle in there, right? It's like every time you learn a new thing, you'll immediately devalue it. And so you will always feel unsatisfied.

[00:40:24] SY: Yeah.

[00:40:25] SH: And you will always feel like, "but if I know this next thing then ok, that's when I'll feel like, you know, I've got this and that I have good valuable knowledge." And it's not true. You, you get another little baby step up, and then you're not satisfied again with, with what you know. And so I think it's really dangerous to devalue things just because they're easy as well because easy is so subjective. It's not necessarily easy to—you know, for everyone to do something. It's easy for some, it's not easy for others. And easy doesn't really describe the end result that it has, you know?

[00:41:01] SY: Yes. Yeah.

[00:41:02] SH: It's easy to say thank you, but not everyone says thank you, right? (Laughter) And so remembering to say thank you may be the harder part of that. But I think that yeah, like just 'cause something's easy doesn't mean that it doesn't have value. And I definitely think that in our culture, we do put a lot of pressure on people to be heroic and to do the hard thing because, you know, that's, that's definitely seen as, as more valuable. And in our technical field, it's just not always true. Some easy things really are incredibly helpful for other people.

[00:41:34] SY: Oh, I love that. I love that distinction between effort and value effort and output. Sometimes they're related in the same, but a lot of times, they're just not. And just because things feel easy doesn't mean that we don't get to take credit and feel good about ourselves.

[00:41:49] SH: That's right. And I think the credit thing that you touched on is so important. Refusing to give yourself credit for learning something new is just... I believe is the recipe for just self-destruction, you know? And again that never being satisfied thing, always be striving thing? It's great when you wanna experience a lot of growth in a short period of time, but you should always, always be able to step back and say, "hey these things didn't feel like a big deal, but when you add them all together, I've come like a massively long way." And, you know, that's when you buy yourself a donut on the way to work. (Laughter)

[00:42:20] SY: That's right. That is right. So what advice do you have for people who may be listening and may be currently doubting themselves and, you know, frustrated with how hard something is or, you know, maybe they, they are technically learning, but it feels easy and just not very valuable... what advice do you have for those folks?

[00:42:39] SH: Yeah, I would say that what you're doing is you're actively building that foundation of knowledge so that the next hard thing that you try, you're actually going to hit a lot less walls or a lot fewer walls. And so for me, I didn't really appreciate that when I was learning. Like it's kind of like what you said: any way you're turning you're hitting walls or every single thing that you need to do or every line of code you need to write, you have to go and Google it. And it just feels like you're never actually going to get there. And for me, I just try to see every small thing I had to learn to do something as building that foundation so that every single day, I'm gonna be less, you know, I'm gonna be stuck less often, and I'm gonna be more and more productive. And there's just no shortcut to doing that unfortunately. And so for me, I'm always like this is everyone's typical journey. So if you're feeling super bummed out, you're not the only one and that you are really laying that foundation. And you will hit that spot where you're (Music) like, "huh. I actually enjoyed today because I felt those little bits and pieces being used."

[00:43:48] SY: Yeah. Well, thank you so much, Suz, for educating us all about hardware and open source and IoT and Twitch and—we just covered so many good things in this. Thank you so much. You wanna say goodbye?

[00:43:58] SH: Yeah. Thanks for having me. This was really fun

[00:44:01] SY: And that's the end of the episode. Let me know what you think. Tweet me @CodeNewbies or send me an email hello@codenewbie.org. Make sure to check out or local CodeNewbie meetup groups. We've got community coding sessions and awesome events each month. So if you're looking for real-life human coding interaction, look us up on meetup.com. For more info on the podcast, check out www.codenewbie.org/podcast. And join us for our weekly Twitter chats—we've got our Wednesday chats at 9PM EST and our weekly coding check-in every Sunday at 2 PM EST. Thanks for listening. See you next week.

Copyright © Dev Community Inc.