These days it seems that every Tom, Dick, and trash collector is live streaming. In today’s episode of The Rabbit Hole Podcast, we speak with Melissa Wahnish about her experiences with live coding. Melissa has been live coding for years and even has her own website full of tips and tutorials called Ruby Thursday as well as a YouTube channel of the same name. We talk all about how Melissa got started and the many ways that audience feedback can help you get unstuck when you can’t solve a problem. The experience is also useful for young coders who have an opportunity to realize that even experienced coders get stuck and need to consult Google when they run into problems. It takes bravery to take on live coding but having a sense of humor and willingness to be vulnerable online are indispensable allies that help you access the many benefits of live coding. Melissa shares some of her early stumbles and what she learned from them. We also get a great run down for first-time live coders on how to set up their first live coding session, along with plenty of tips to help make it an awesome experience. It turns out that live coding is an excellent way to access the broader community, share knowledge, and hold yourself accountable to finish projects and keep that momentum going. For all this and more, join us today!
Key Points From This Episode:
Transcript for Episode 204. Live Coding with Melissa Wahnish
[0:00:01.9] MN: Hello and welcome to The Rabbit Hole, the definitive developer’s podcast, living large in New York. I’m your host, Michael Nuñez. Our co-host today.
[0:00:09.5] DA: Dave Anderson.
[0:00:11.2] MN: Today, we’ll be talking about live coding.
[0:00:13.6] DA: Everybody streaming these days, the coders are streaming, the people picking up trash are streaming.
[0:00:20.9] MN: Yeah, you can stream someone’s window and you can get your window streamed and share it with the world.
[0:00:20.9] DA: Yeah, I’m tired of my window, I want someone else’s window.
[0:00:27.9] MN: We code for a living but I can also enjoy watching another person code very similar to how I would enjoy someone playing video games, I imagine that that would be a fun time for me to learn and grow as an individual.
[0:00:41.3] DA: I feel like you’ll be more interested and more informative than watching someone pickup trash and run it early. We happen to have someone who is quite experienced in live coding and streaming.
[0:00:53.8] MN: Yeah, today we have Melissa Wahnish. How’s it going, Melissa?
[0:00:56.6] MW: Hello, thank you so much for having me on the show, I’m a big fan.
[0:01:01.6] MN: Awesome. Melissa, tell us a little bit about yourself?
[0:01:06.0] MW: Well, I am a consulting software developer with Stride and before that, I actually did a lot of my own consulting and launched a blog/YouTube channel called Ruby Thursday and I was doing that for five years now or so and then the live coding piece of it, came about four years ago when I did it for two years, pretty regularly and then I took a two-year hiatus because I happen to also have had my second kid. Two kids is just, it was just too much and –
[0:01:41.2] DA: Two kids, a blog, live coding, I feel like a blog and live coding is like two kids as well so it’s like four kids.
[0:01:47.7] MW: Yes, that’s a lot of kids. Now, the kids are now getting older and so I’m going to be – I’ve started it back up and I’m excited to do more of it and to tell you about my adventures with it.
[0:02:03.4] MN: Awesome. Let’s start with what came about where you wanted to live code, I would ask?
[0:02:10.8] MW: Yeah, that came about – I also started to sort of see what other people were doing as far as content for different blogs or different ways to teach coding and I saw lots of people live coding and especially on platforms like Twitch and I was also having a little trouble at the time finding new contents, new blogpost, new things to talk about.
I was like, “Well, let me just build a project in front of everyone” and do it live and people can comment, they can ask questions, it would be very interactive and also, I was doing a course at the time and the solutions of it, I decided to do without a whole lot of editing like see my mistakes. The feedback was that the students really enjoyed that piece of it too. They really liked seeing how maybe I went off and googled something or I had to redo a whole piece of it maybe and they really thought that was very informative of this is real life coding, not everything comes to you right away.
You do have to do research, you do have to make mistakes and come back.
[0:03:29.6] DA: Yeah, that’s interesting. I feel like the genre of live coding that I have seen the most, because I don’t really watch live streams of coding that often, more watching the guy pickup trash for some reason. At conferences, sometimes people will do live coding, demos of their software or concepts but they’re like performances, their performance art pieces, they’ve rehearsed it so much, there’s a messiness to it but I think there’s something like a lot more accessible about seeing like the iterative aspect of software development when you’re just building a whole thing from scratch, that’s kind of amazing.
Although it doesn’t really fit into a 40-minute conference slot, I guess.
[0:04:13.4] MW: No. It’s the minimum is at least an hour to have anything to kind of talk about and show. It is definitely time consuming, but I felt like it was almost as much time consuming as trying to find a little slice for like a blogpost.
[0:04:33.4] DA: Right.
[0:04:33.8] MW: Making it organized and making it perfect, it was almost the same amount of time. I said, “Well, let me just build this thing.” I usually pick projects that I was going to have some kind of use later. We did actually use the invoicing app, my husband and I for a couple of years and so, that was really fun to do in front of people.
[0:04:54.3] DA: That’s cool. Even if you're learning and you don’t know the thing, it’s possible to still model and teach people at all levels as you’re going on and also like get the feedback from people. Maybe if you are lucky enough to not be live coding to an empty room.
[0:05:11.7] MW: Yes, which does happen.
[0:05:13.5] DA: I feel like William has talked about this before where like, he was live coding on an application and was getting some feedback from people who were like, “No-no, not that one, use this other thing.” He’s like, “Okay, great.”
[0:05:26.1] MW: Yes, that actually happened to me last Thursday, the most recent live coding is actually bringing the Ruby Thursday site from rails five to rails six and I got really good feedback, someone had just done it a couple of weeks ago and so I was kind of struggling – you know, okay, this bundle error is happening, another bundle layer is happening and he said, “You know what? I commented every gem out, except for rails, I let it come in and then I added each gem back one by one.”
[0:05:57.7] MN: Boy, how many gems do you have?
[0:05:59.4] MW: I know, luckily, I don’t have too many and I only got up to finally, rails finished. Finally, then it was like an hour 15 in and I was like, “Okay, I got to go, we’re going to continue.” It was actually pretty painful but it was great that people were helping in suggesting and giving their feedback, that was great.
[0:06:22.4] DA: Yeah, that’s awesome. It’s like something that it’s hard to learn from that because you do it once and there might not be like a good blog post on it like you’re saying. It’s not going to expose all of those warts of like, “Yeah, I just had to comment out every single line in my dependency file.” That’s like, maybe that’s a blogpost, I don’t know but you’d have to – how do you find it?
[0:06:46.2] MW: Yeah, like the horrors of legacy code, the trouble with updating very old software, so it’s not even that old, I mean, it’s a couple of years.
[0:06:57.0] DA: Yeah, right. It’s really five, I know people are like, trying to upgrade Ruby four, I think.
[0:07:04.4] MW: Yeah, the worst I’ve experienced so far, although I’m not done with five to six was three to four.
[0:07:10.9] DA: Yeah.
[0:07:11.7] MW: I thought that was really –
[0:07:12.9] DA: That is a speed bump.
[0:07:13.9] MW: That’s the great part about doing it live as well, if people come and they have the experience of just having done it or experience of a different library or a different, I was actually really great, I’ve been using Ubuntu as well. I had a terminal open and I hadn’t quite figured out the copy paste functionality of that terminal and they’re like, “Oh try this instead” and it worked. I was like, “Thank you” You also learn a lot when you’re live coding because people are coming from all kinds of experiences to come and watch, it’s a huge learning experience in that way too.
[0:07:54.3] DA: It sounds a lot like pair programming in a way because that’s something that always seems to happen, like one of those have a knock-on effects of pair programming. Those little things that you don’t really think about that help you be a better developer like just find a way to cross the boundaries between people.
[0:08:13.5] MN: Like pair programming is with one person, right? You get and learn your tips and tricks off and bounce ideas off of one person. You have mob programming, I guess you have more than one person like your entire team, maybe four or five developers and then you have live coding, which is five plus, plus, plus, plus I imagine, Melissa, you have –
[0:08:34.0] DA: She’s the world.
[0:08:34.8] MN: All sorts of people get – just the world just throwing all their ideas at you and you got to be like, “Okay, yes, I’ll try that, do that and go, go, go.”
[0:08:43.4] MW: Yeah, I mean, it can be a lot of information, that’s probably one of the harder parts for me for live coding is keeping up with the comments.
[0:08:53.0] MN: Right.
[0:08:53.6] MW: My lovely husband was helping out this first time around, getting back to it and he would text me. I’d look at the text message and he’d say, “Hey, go check your chat.” I’ll be like, “Oh, okay.”
[0:09:08.3] MN: You're in the zone, yeah, you’re in the zone.
[0:09:08.7] MW: You know, you're in the zone and you don’t necessarily want it all to show on the screen at the same time so you have the chat off to the side. You do have to take those breaks or take a moment to look because then, somebody gives a great suggestion that keeps you moving as opposed to floundering.
[0:09:27.4] MN: Right.
[0:09:28.0] MW: Which can happen.
[0:09:29.4] DA: Yeah, I imagine that probably makes it a lot more fun too, to actually have that engagement with people and making that connection in the moment.
[0:09:38.8] MW: Yeah, absolutely. It’s definitely more fun if people are watching, it’s easier to keep talking, there’s definitely been days when I was doing it like two or three times a week, there were definitely days when maybe one person would pop in and then pop out and then just sort of be doing it by myself, that is a hard thing too. Nobody’s there, you’re programming to the universe. It’s still useful to think out loud and to say things and even if nobody’s there. The Internet is my duck.
[0:10:09.0] DA: Yeah, this guy, forever duck.
[0:10:11.8] MW: Yes.
[0:10:12.6] MN: Using the Internet as your duck is pretty – I need to try and do that myself just to talk out loud but know that the Internet is there, I guess.
[0:10:21.9] DA: I mean, you got Gio too, I’m sure he’ll be out there.
[0:10:24.9] MN: Gio has opinions, he’ll bash on the keyboard and stuff like that for sure.
[0:10:30.1] DA: He knows the proper keyboard shortcut.
[0:10:32.7] MN: Yeah. You mentioned the website is Ruby Thursday? Where did that name come about?
[0:10:38.6] MW: That is an awesome name. When my husband was at Marvel Comics, he was in the digital advertising area and he was part of a project that was bringing back these old, old comic characters, all right? Sort of the really kind of bad ones and so – because they have thousands and thousands of characters.
[0:11:01.9] MN: They have so many of them, yeah.
[0:11:02.6] MW: He’s doing this animation and he found this character named Ruby Thursday and he loved the character so much that he actually bought the URL, rubythursday.com and the fun part about this character is that she’s from the 70s, okay? To give a little context.
[0:11:20.8] MN: Okay.
[0:11:21.8] DA: It was a different era.
[0:11:22.3] MW: Comic book writers in that day were maybe partaking of extracurricular substances.
[0:11:31.0] MN: Substances? I see where this is going, let’s go.
[0:11:34.5] MW: They came up with this character that she is a brilliant scientist, so smart. She was also very good looking and she was tired. So tired of all these other brilliant scientists, not appreciating her for her brain and so she decided to remove her head and replace it with a super computer, a completely round, circular, red supercomputer.
[0:12:04.5] DA: I’m looking at a photo, it looks like a barbershop pole or like a gumdrop or something.
[0:12:10.7] MW: Yeah, this huge orb on top of this like svelte – you know how comic book women are drawn, you know? Voluptuous, lots of skin.
[0:12:18.1] DA: Right, yeah, it was just funny because she’s like, I was tired of people looking at her so she took off her head but then left her body.
[0:12:27.3] MW: Yeah, now you really just look at the body because there’s this weird orb on top of her head. That is the Ruby Thursday character and I’ve been coding Ruby on Rails for eight plus years now and so I wanted something with Ruby in the title and we have this URL and I said, let’s do it.
[0:12:47.1] MN: Let’s do it.
[0:12:47.5] DA: That’s so funny.
[0:12:48.7] MW: Do it, let’s use it.
[0:12:50.1] MN: That’s awesome.
[0:12:51.3] DA: Do you have – are you just sitting on a mountain of underutilized Marvel character domain names just waiting for them to have to buy it back from you?
[0:13:03.6] MW: That is an excellent strategy. I think this is the only one we bought.
[0:13:07.5] DA: Yeah, what happens when Ruby Thursday –
[0:13:08.1] MW: I don’t think he did that because you have like the unicorn and I’ll have to send you the – it’s called All Winners Squad, I don’t know if I can Google that real quick. It’s called All Winners Squad.
[0:13:20.6] DA: I love the name so much but I’m like, “Oh no, what happens when Ruby Thursday finally makes it into the MCU?”
[0:13:27.9] MN: Yeah, when that movie comes out Melissa, what’s going to happen?
[0:13:31.6] MW: What’s going to happen?
[0:13:32.9] MN: They’re going to have to go and get rubythursday-themovie.com is probably –
[0:13:37.7] DA: Right, sorry guys, get out of here.
[0:13:38.7] MW: Right, that’s right.
[0:13:40.1] MN: Because we got the Ruby Thursday right here, right now. We now know Ruby Thursday, not the Marvel character but the website in which you live code in front of the universe and I imagine that’s pretty – even me saying that out loud is giving me like, it’s making me terrified. What’s scary and hard and difficult about the live coding aspect when you set up or what is it about the live coding that makes it difficult or scary or hard? Is it scary or hard?
[0:14:13.7] MW: Yeah, it can definitely be hard. The scary part sometimes is like I mentioned, when you are doing it by yourself. You’re hoping that you are producing content that’s useful, that people will enjoy, you’re a little worried that, “Okay, I need to keep things moving. You know, I can’t get stuck.” Getting stuck I think is my biggest fear, right? Because there definitely are times you get stuck and then in real life, you would put it away, you’d go have coffee and you come back.
Okay, well you don’t really have that option. You’re live coding, you have to keep moving. That is the hardest part like it’s that fear of getting stuck. Sometimes you just have to – you keep talking and you say, “Look, I’m stuck. I don’t know what to do now” and it’s very vulnerable and you have to be I think, have that kind of personality that is okay with being vulnerable in front of lots of people because if not, you are going to second-guess yourself too much and not just keep going or have a sense of humor about it.
That’s the hardest part I think is the fear of getting stuck, you know hopefully, you get past it or if it’s a half-hour in and nobody is there helping you, you just say, “Okay, bye.”
[0:15:27.0] MN: We’ll try again tomorrow.
[0:15:28.2] MW: I am going to try again tomorrow.
[0:15:29.3] DA: Can I get that coffee.
[0:15:30.2] MW: This is – I’ve got to go, it’s too hard. It is helpful to have sort of a guideline as well. You know, if you have Trello cards or specific tasks like anything, you need to project manage it I think because if you’re just kind of playing with stuff, you need to have borders to it or again, it’s just going to go on.
[0:15:51.8] DA: Yeah, like how do you bound what’s done. What is the chunk that is interesting, so that’s kind of an interesting concept, grooming a backlog of stories as a means to then have a series of pieces of content that people can enjoy as well.
[0:16:09.5] MW: Yeah. If you have, I mean you do have to be agile in it, in their story or [inaudible 0:16:14.6] I mean however you want to say it but you have to have a series of work or at least that’s what I found worked best if you had this little chunk that you said, “Okay, this is done” and yes, maybe it took me two hours but then I’m done and you can feel like you’ve wrapped up and you feel like you did that, so or things continue, to be continued. It is a difficult part of like, “Okay, how long do I go?”
[0:16:39.5] DA: Do you have any war stories, any technical difficulties or things like that?
[0:16:45.5] MW: I think there was a whole 15 minutes, I came back from a break that I had not put on my microphone and finally, somebody came back and said, “Oh Melissa, we can’t hear you.”
[0:16:57.7] MN: Oh no.
[0:16:59.1] MW: That’s probably also another fear is that if nobody is coming back from the break, if you’re going for two hours, you got to go take a five-minute break so you put a little like, “Hey, I’ll be back in five minutes” so that is also a fear that somehow, you started and nobody has sound checked you and you don’t know if people can hear you.
[0:17:19.7] DA: Yeah, that’s why I got this post-it right here.
[0:17:21.5] MW: Yeah.
[0:17:22.4] MN: Recording? Check.
[0:17:24.8] MW: Exactly, check and you know to be honest, I got on there and nobody – I don’t know if nobody wanted to speak up or it was very foreign to last week’s live coding session that somebody said, “Well, you know, the font could be bigger” I was like, “Well, just tell me that. Look, easy, bigger.”
[0:17:43.4] MN: Command plus-plus-plus-plus.
[0:17:44.8] MW: Now it’s like a comment like, “Oh, you can’t see anything.” So next week will be bigger because I’m on a new computer and so you know? I didn’t know and I am doing a big screen.
[0:17:52.0] DA: Yeah and if they keep complaining and it just keeps on getting bigger and bigger.
[0:17:57.3] MW: It’s just like one letter on the screen, yeah, so that’s also like the technical difficulties, you want to make sure you can be heard and seen. You got to have that extra help to get set-up and a thumbs up.
[0:18:09.8] DA: Right, a spotter like you’re saying, I have someone on the comments kind of giving you a heads up when there’s something you should check out.
[0:18:17.6] MN: All right, Melissa, I’m fired up. I want to see if I can try doing some form of live coding and I have no idea where to start, how to begin. Do you have any tips and tricks for someone like a noob developer like myself who could get started with some live coding?
[0:18:35.0] MW: Yeah, absolutely. I would choose a project, something small that you could do fairly easily if it’s your first rodeo and yeah, I would just get started. You have to pick – you have to get all the technical things aligned. The first time around I was using OBS, which is a streaming software that can go to multiple platforms. At the time, I was also streaming to Twitch and YouTube at the same time and that was a little harder because then you were looking at different comment streams.
[0:19:12.4] MN: Right.
[0:19:12.8] MW: Now, there’ve been newer, you know, since streaming is becoming a thing, there are newer platforms. So I’ve just started playing around with Streamyard and I do recommend it. They had a fun feature where you could take a comment and then put it on the screen and so everybody could see the comment and it didn’t matter where it was coming from. Right now, I have the free version, which only goes to one platform. Right now I am doing YouTube. I have been liking it so I may go ahead and do the paid version so I could go then to Twitch and YouTube and then it would pull all the comments into one place.
[0:19:47.4] MN: That’s awesome.
[0:19:48.5] MW: Yeah, so I do recommend that. Of course you need a good microphone, absolutely crucial. You do want to have – I do recommend I guess you could do it on one screen but it is much easier if you have two screens so that you could have your, you know, sort of comments area down below so that you could look at it and then up above. Again, have somebody help you get it all – do a test drive, make sure your fonts are big enough and –
[0:20:15.1] MN: The soundcheck, just sound check.
[0:20:16.4] MW: Soundchecks, you know just have a buddy that comes on at the beginning, checks to makes sure you can see all the comments, have somebody help you. You can’t do it all by yourself really. Those are some tips and then otherwise really, it is about continuing to keep talking. Of course you can take breaks, you don’t have to all the time but you know, like pairing or mob pairing, you want to be describing what you’re doing, what your thought process is.
I have if I just am completely lost and gone to Stack overflow, I read out loud what I’m reading and so it’s important to keep that going. That is a skill to develop because a lot of times, if you’re coding especially by yourself on a project and you feel all alone, you’re not going to talk. That’s the performative aspect of the live coding is that you have to talk about it.
[0:21:10.4] MN: Right.
[0:21:10.9] MW: It makes it more fun and be yourself, you on your best day of coding. And again, have a sense of humor because you’re going to get stuck, you’re going to make mistakes but that’s what people love to watch and love to see especially for younger developers to see you get out of the stuck is the content, is the value that you’re giving and if you just remember that, you’ll be good.
[0:21:36.4] MN: Yeah, I think as you mentioned, younger developers think that all developers got it in their head and they know exactly what to put on the screen and to make it work and I think the idea as you mentioned, the fumbling that happens in real life, people may not know that that happens until they see someone do that and start going to Google and figuring out what to do, “Oh yeah, just copy paste and that works? Cool, keep them moving” and to do that live screen is - I find that to be really brave.
Just the idea of putting yourself out there in front of the universe, in front of the Internet, nothing ever gets erased once it’s on the Internet and you’re there coding, building a project, making it happen Ruby Thursday baby, it’s going down live coding. That’s so great though, I really appreciate the tips and tricks and I actually have used OBS when I wanted to be a gamer, when I was trying to get people to follow me. I am not that great at video games but Streamyard is new, right? As you’ve mentioned.
[0:22:40.6] MW: It’s pretty new. It was a recommendation from a friend who has another YouTube channel and they just chat and he does live streaming drawing sometimes like comic art and so it’s actually – that is the group that started using it first where the comic artists in the live drawing but like anything, it’s useful for any streamer.
[0:23:06.8] DA: Totally.
[0:23:07.7] MN: If you’re listening to this and you’re still locked down wherever you are, live coding is a great way to socialize with the community to get your project started. I think that’s another thing too, Melissa, do you think that by doing the live coding, you’re more pressured to continue doing the project that you’re doing?
[0:23:27.1] MW: Yes.
[0:23:27.6] MN: It’s like when they said, “Oh, if you have a goal, you have to write it down so you really mean it” but now you just mentioned the project in front of the whole universe, so you kind of have to like show up.
[0:23:37.9] MW: You have to show up, yes especially if you’ve gathered up a list like I have and you email and say, “I’m going to be there at this time” and even if you’re not feeling so great, you really have to show up and even if you’re like, “Oh, I don’t really feel like it now” but now you’ve told even if it’s a 100 people that you’re going to be there, then you need to be there and you definitely get things done because absolutely right, I’m not totally sure I would have finished the projects that I have if I havdn’t been live coding it.
Yeah, I definitely look forward to doing it more and more now that the lovely young children are older and mostly going to bed.
[0:24:20.4] MN: They can self-sustain themselves for the most part and put themselves to sleep if they have to. I can’t wait to just –
[0:24:26.6] MW: Although I just heard they are not asleep.
[0:24:29.0] MN: Well, they’re having a ball down sure, yeah.
[0:24:32.4] DA: Oh no.
[0:24:32.8] MW: Uh-oh dad’s in charge. I just heard him come in.
[0:24:37.3] MN: Oh yeah, if Jill gets bigger enough to self-sustain maybe I’ll do some live coding myself. How can people contact you, Melissa?
[0:24:46.8] MW: Yes, absolutely go to rubythursday.com and right away, you’ll be prompted to put in your email address so you’ll get onto my email list and I give a couple of hours’ notice. I set up to live code every Thursday at 8:30, so you’ll get an email with the link that is usually going to YouTube and when I start up on Twitch again I’ll put both of those in there, folks like Twitch better and then you can follow along. It’s also Ruby Thursday is on YouTube, you can subscribe and you’ll get pinged that way as well.
[0:25:22.7] MN: Awesome.
[0:25:24.4] DA: It sounds like so much fun.
[0:25:25.3] MN: Yeah, I know. I’m about to go find, go on my Twitch right now, you know, I’ll have to pump my video game watching on hold on Thursdays so that I could watch some live coding going down.
[0:25:38.2] DA: Yeah, we will ask for the largest font possible.
[0:25:43.3] MN: There you go. If you can’t see it and if you – I’m sure Melissa, there if you need it, if you wanted some feedback, I’m sure they’ll be able to reach out to you via Twitch, via YouTube.
[0:25:53.3] MW: Yeah or it’s just firstname.lastname@example.org. I’m an old soul in that I like email.
[0:26:04.7] MN: Awesome, looking forward to more live coding from you Melissa.
[0:26:07.8] MW: Thank you. Thank you for having me.
[END OF INTERVIEW]
[0:26:10.3] MN: Follow us now on Twitter @radiofreerabbit so we can keep the conversation going. Like what you hear? Give us a five-star review and help developers like you find their way into The Rabbit Hole and never miss an episode, subscribe now however you listen to your favorite podcast. On behalf of our producer extraordinaire, William Jeffries, and my amazing co-host, Dave Anderson, and me, your host, Michael Nuñez, thanks for listening to The Rabbit Hole.
Links and Resources: