The Stack Overflow Podcast

There’s no coding Oscars. Write software that works

Episode Summary

The home team welcomes its newest member, Stack Overflow’s brand-new technical advocate, Matt Kiernander! They chat about what tools are top-of-mind when they get work done and the best font for VS Code when you’re live-streaming a programming session.

Episode Notes

Ceora has her second brain stored in Notion, complete with GIFs and pretty color to get that aesthetic.

Ancient history in blog years: Cassidy talks about the perils of being bleeding-edge instead of cutting-edge: Apollo Mission: The pros and cons of being an early adopter of new technology 

Everybody is aboard the VS Code train, which has the hottest TikTok around. Cassidy recommends the MonoLisa font helping viewers read your code during a livestream.

Today’s lifeboat goes to Bill the Lizard for Using IFF in Python.

Episode Transcription

Cassidy Williams I think that's why I like Obsidian so much because it has that flexibility. Since it's just a pile of Markdown files I can add whatever tags I want to it, whatever backlinks I want to it. I could add nothing. I can add aliases or IDs or nothing. It's that flexible where, because it's just files on my computer, I don't have to worry about, like, if I switched to another note-taking system, how am I going to export all of it? It's already on my machine. 

Ceora Ford Hmm. That’s a good point.

Matt Kiernander I just Googled Obsidian just to have a quick look while you're doing it. “Obsidian makes me more productive on every device. My entire second brain now gets backed up easily and is customized to my liking. — Cassidy Williams”

All [laughter]

CW Yes, I gave them a quote! I like them, okay?

Ben Popper Cassidy, if you're being paid to promote them you have to disclose that.

CW I’m not! I just like them that much. 

[intro music plays]

BP Hello, everybody. Welcome back to the Stack Overflow podcast. I am Ben Popper, the Director of Content here at Stack Overflow, and I'm coming to you with your new home team crew, the three folks who I will be handing a lot of the reins to for the show, hopefully this coming year. So I'm gonna let us do a little round robin here and have them introduce ourselves. 

CW Hello everybody! My name's Cassidy. I'm Head of Developer Experience and Education at Remote. 

CF I'm Ceora Ford. I'm a Developer Advocate at ApolloGraphQL, and I'll pass it off to our newest member, Matt. 

MK Hello! I'm the Technical Evangelist at Stack Overflow. Just joined the team, very excited to be here with three other lovely hosts. It's going to be a wild ride. I think it’s going to be fun.

BP Before you guys were heard talking here, there was a whole disclaimer. None of the hosts’ opinions reflect on that of Stack Overflow or their employer. So you're totally in the clear. You can say whatever you want now.

CW Now, Ceora tell us your opinion on grits and coleslaw.

CF [laughter] Oh my goodness.

BP So I wanted to throw a topic in the ring today, and then I'll step back and let you three give me some thoughts, but I saw a tweet and, this is perennially interesting no matter what industry you work in, but I think especially for folks in software development who sit in front of the computer all day. It was the tech stack for 2022 and talking about everything from the editor to the font, to the calendar, to the notes, to the email. So yeah, maybe we could do a little bit of a round robin here and talk about sort of like, what are the things when you sit down to make something or just to get a day of work done, that you find yourself turning to, tools that you're really loving? In this case it was everything from the front-end editor to the database, to the payments, to the hosting. Curious to hear sort of the tech stacks folks are working with, maybe how that's evolved a little over the last couple of years, and then maybe some dream, some look to the future and tell me what it is you're excited to be working with.

CW It's been exciting to see, like, developer tools and productivity tools are really popular right now and there's tons of companies disrupting the space and everything, which has been great for users of these tools because now we get to use all kinds of new shiny things and they solve a lot of our problems which has been really nice to see.

CF Yeah. Probably for me my most, like, oh my goodness. This is going to be super on-brand for me, especially if you follow me on Twitter. But the thing I use the most, well, not the most, but the thing I'm most excited about to use every day is Notion. I'm like, obsessed with Notion. I make my Notion spreads super aesthetically pleasing and I add .GIFs and pictures and colors and all that kind of good stuff. It just helps me. I think people use the term second brain, so I put everything there. My whole life is in Notion right now. I wouldn't be able to get anything done without it. So I keep track of my daily task in there, reminders for like, “Don't forget to do this tomorrow or else you'll get fired.” That kind of stuff. So Notion is probably my number one favorite thing to use nowadays. Which is not super developer-y.

CW It's pretty developer-y. A lot of developers use Notion. 

CF Yeah! Okay, okay. It counts then.

MK There's a hell of a lot you can do to customize it, and I got down the YouTube rabbit hole where I watched one Notion setup video, and then I have like 50 different people being like, “This is my Notion set up for 2022!” It's been really cool to see. And one of the things I love about it as well is that, unlike other note-taking apps, you can make something public. So if you created a page that you want to share with somebody it's super easy to do that.

CF Yeah. I've been sharing templates with people on Twitter because I'm that much of a Notion nerd. I'm like, “Here use this! I use this to organize everything. Use it!”

CW I also use Notion, but not as my daily driver of note-taking. I can't believe I just said that, but I use Obsidian for my note-taking, and I've mentioned it on this show before. I'm obsessed with Obsidian. I tried to make Notion work as a second brain thing and honestly, it just wasn't fast enough for me. I think because, there are some times where I can be forgetful if I'm very busy and by the time the Notion app loads I have forgotten what I wanted to write down. And that's because it has that online element to it. And with Obsidian, everything is local first which has pros and cons, but I love being able to just own all of my files, have it just local on my computer, and sync to other devices and stuff. I have everything from project planning, to-do lists, remembering people's addresses– everything is in Obsidian. Sometimes it's just a one-line note and sometimes it's a full-on essay blog post of some kind. And then if I do want to publish it I can go to Notion and put it in a public page. 

CF I think part of it might also be that Notion has that new aesthetic that people really like with the branding and everything. They're also really good at branding, which is a whole other podcast episode. Don't get me started on branding and marketing because I'll talk all day about it, but they're really good at that. 

MK I think there is definitely a kind of element of flashiness with a lot of the note-taking apps. Because it's fun picking up a new note-taking app and being like, “This makes my life so much easier!” And then you kind of use that for a little while and you get embedded in the system and then something else comes along and you're like, “Ooh, that's shiny. I kind of like how they do that because that fixes the problem with the other thing that I have.” And then it's relatively easy to pick something up and run with it and start investing in it.

CW I think that's why I like Obsidian so much because it has that flexibility. Since it's just a pile of Markdown files I can add whatever tags I want to it whatever backlinks I want to it. I could add nothing. I can add aliases or IDs or nothing. It's that flexible where, because it's just files on my computer, I don't have to worry about, like, if I switched to another note-taking system, how am I going to export all of it? It's already on my machine. 

CF Hmm. That’s a good point.

MK I just Googled Obsidian just to have a quick look while you're doing it. “Obsidian makes me more productive on every device. My entire second brain now gets backed up easily and is customized to my liking. — Cassidy Williams”

All [laughter]

CW Yes, I gave them a quote! I like them, okay?

BP Cassidy, if you're being paid to promote them you have to disclose that.

CW I’m not! I just like them that much! They also have an open plugin system, which is amazing. If you want to write like a JavaScript module of some kind to make your notes even better you can. And the things that I've seen people do with it are just incredible. Where there's this one person that is studying to be a Chess Grandmaster and they were able to put in a syntax and it renders chess boards in Obsidian.

CF Wow.

CW Yeah, there's a lot of really cool things to it. I'm able to query my notes like it's a database just like you can do in Notion as well, but you can choose to do that. And their open plugin system, the fact that it's cross-platform and again, local first, I am a big fan. 

CF Yeah. I'm interested in using Notion’s API. I've been saying this since their API has been public. I want to see how far I can take that but I just haven't carved out the time to do that yet. So maybe in a future episode I'll be like, “Oh my gosh. You guys, hear about all the amazing things I did with Notion’s API.” We'll see.

CW I think it's probably a good thing actually, that you've waited. I actually wrote a blog post on this subject, on the Stack Overflow blog back in the day, basically about being cutting edge versus bleeding edge. I think right now with the Notion API, it's just new enough that it needs a lot of kinks ironed out. So it might be a good thing that you haven't played with it just yet.

BP Yeah. Let's take this full circle. Cassidy, wasn't that post about ApolloGraphQL?

CW It was! Ceora!

CF Wow! Look at us!

BP It’s meant to be. 

CF Yeah, we’re all connected.

BP I like that we've been doing content long enough that we can be like, “Remember that old thing? Take that out of the archives, dust that old post off in the archives. It’s still relevant.” Alright, let's look at some other stuff here. We covered note-taking, but note-taking obviously in this format can be quite flexible. What about building something or calendar, or email. Somebody shout me out a tool that they're loving and we'll take it from there.

CW For calendar, I’ll shoutout Cron. I've been really liking Cron. 

BP I like the name.

CW A lot of devs are like, “You mean like cron jobs?” No, but spelled the same. It's at chron.app and what's cool about it is, I was using Vimcal for most of last year, which I liked because it was

kind of on top of Google Calendar and you could navigate your entire calendar with keyboard shortcuts, which was so nice because it was very quick and Cron lets you do that plus a little bit more and has some really good native desktop apps. What's nice is I can say, for example, “Oh, I have a meeting right now.” I just do this keyboard command and it opens the zoom for that meeting. Or I could say, “Oh, I want to see my coworker's calendar.” I just type one command and then their email and then I see their whole calendar. Or let's just say, I want to send my availability to someone instead of looking through my calendar manually or pulling up a Calendly or something, I basically select the time slots I want to send them and then they get a booking link and they can go from there. So there's a lot of really nice-to-have tools built into the calendar app itself. 

CF I'm boring. I just use Google calendar. I just stick with that.

MK Does it integrate? Because a lot of our work stuff is with G Suite. Is it possible to link through your Google account and set up everything so it's nice and easy?

CW I link all my Google accounts in there. 

MK Ooh. Okay. Something to try this afternoon. 

All [laughter]

CF Yeah. What about other stuff like the post you sent Ben? The person was talking about what they use for their database, all that kind of stuff. I don't work with databases that often, but in my day to day workflow I wake up– 

CW –and I open a database.

All [laughter]

CF No, what I usually do is I open up Notion. That's the first thing I do. And then if I, depending on what is set for my day, I may test out some apps or work on some coding samples and things like that as a developer advocate. I usually use VS Code. That's the thing that I'm mostly working in. What about you guys? 

CW I also use VS Code. I was very much on team VIM for a very long time, but I have been converted.

MK Wes Bos hooked me into the VS Code ecosystem and I just love it. It's so good. He makes it so nice! And he does this really cool custom theme as well which makes everything so pretty and satisfying to use. I'm a big fan. Yeah. Code is great. 

CW I love using pretty tools. It’s so nice. Are you the type of people who are picky about your font or anything? 

MK Just a little bit.

CF No, I'm not picky about my fonts, but I'm picky about my themes. My VS Code theme has to be cute otherwise I'm not going to code at all. [laughter]

CW I started using a font called MonoLisa and I love it. Particularly because it's really, really wide, so it's really easy to read, where there's a lot of coding fonts that lean in on making things super narrow. It fits more stuff on the screen, but especially if I'm teaching something or live streaming and showing a lot of code on the screen, it's nice to have just really, really visible letters and it's a nice wide font that I recommend. 

BP Hmm. That's so nice. You know, we had a piece the other day about being empathetic with code comments and things that you're going to be sharing with other folks online. It's like, yeah, you can make it really narrow so you can fit more on the screen, or you can make it really wide so other people can read it or learn from you while you're doing it. So two different things.

CW What a concept!

CF I actually had to consider that for the first time. Well, not the first time, but I've given talks before and I'll have code samples on the slide, but I've never had to live code before, like on a stream, until last week. Yeah, last week was the first time. I was on a stream where I got to try out Vue for the first time ever.

CW Nice!

CF It was the first time I had to think about how I have to make sure that other people can actually see my code and read it and read the documentation I'm reading and all that kind of stuff. So it's definitely something to consider, especially if you're doing streams or pair programming or whatever, where people have to see your screen.

CW Yeah. When I was teaching workshops fulltime I basically had a set up for, “Is my code going to be on a TV screen, on a projector, shared over zoom?” Because it actually does make a difference on people's screens, the fonts that you use, the color schemes that you use and how people can actually read it.

CF Is there anything to make that more responsive so you don't have to manually do it?

CW There are shortcuts in VS Code, actually, that you can do. For example, control or command+B will move the file tree to shrink it or expand it and stuff. There's little commands where, if you have to show your screen a lot, it's nice to memorize those or have a post-it note of those so that way you can quickly change it. If you want to change your color scheme you can do it in like three keystrokes if you know the commands.

CF Ah! I'll have to figure those out. 

CW Yeah it's super useful.

MK It would be an extremely niche episode or video or tutorial, but I think this would be so useful for anyone who has to present. And just talk about how to use VS Code to present in a way that makes it accessible to the people that are actually trying to understand what you're doing. 

BP Oh yeah. Don't worry too much about the show being accessible. I'm pretty sure Paul Ford has done multiple episodes on the font he prefers and we've done multiple episodes on the oil Cassidy prefers for her keyboard so it can go down a rabbit hole or two. It’s okay.

CW Very true. It’s very real though because I have different commands for changing the line links of my code so that way it wraps shorter if I'm zoomed in at a certain point, or if I want there to be more space in between my lines. All kinds of things where it just helps. If you are in front of a group and you have to move fast to get to the point. 

CF Yeah. I'll definitely need that. I'll need to look into that. I'm realizing that VS Code has so many different shortcuts and extensions and all that kind of stuff. I really don't think I know how to use it to the fullest. That’s one of the things I'm supposed to be learning this year is how to really use VS Code. I used to ignore all the articles that are like, “How to use VS Code productively as an engineer.” I used to ignore them. 

CW Twenty Productivity Hacks! Smash that subscribe button!

All [laughter]

CF Right! I'm like, “I'm not watching that.” But now I'm like, “Oh, maybe that would be useful for me.”

BP Y'all are hating, but I'm pretty sure we're going to own, unless it's already been taken, top fonts for live streaming or teaching. I mean this is an unexplored topic. That’s greenfield.

You could pioneer that, get in there early, grab that SEO. Think about it.

CF Yeah, look at that. Next article, Cassidy?

CW Yeah. Okay. I'll write it down. In Obsidian!

All [laughter]

CW Do all of you use just Gmail for your email or do you have any clients on top of it or any other things? 

CF Just Gmail. 

MK Just good old Gmail.

CW I do too. I admit I want to switch if I can. It's something that I've been interested in, like, I see people switching to Fastmail and ProtonMail and stuff to have more privacy friendly options, but Gmail is just so convenient. It's hard for me to think about switching but at the same time, I would love to own a little bit more of my data. 

CF Yeah, that's a good point. That's a really good point. 

MK I feel like it's a hard balance just with software development in general. There are so many different tools available for you to use and sometimes you just need to make the call around, “This makes my life easier. It might not be the best or the flashiest, but it works and I don't have to worry about it.”

CF Yep. What I’ve found is that, especially with software development stuff, like, “Oh, I like to use this framework or I like to use this static site generator, whatever.” I feel like there isn't really a best one, it just depends on what you and your specific needs are. That's why when people make those snarky Twitter posts or articles where it's like, “This is why XYZ is better than ABC.” It really depends on what you're using it for and what you're trying to accomplish. I've realized that very recently that sometimes it may not be the flashiest, it may not be the fastest, but if it's the easiest thing for you to use, then go for it, you know?

CW Ceora I think you’re an official senior developer. You're answering, “It depends.” It happened.

All [laughter]

BP This whole episode you’re supposed to bring strong opinions and if people want to ratio you after, that's fine. But you're bringing the fire.

CF Oh no, I've been ratioed enough so I'm not going to do that today. 

CW There's a quote that I read recently that messed with my brain in a good way where it was just like, nobody's giving awards for the best code. Unless you are making things that developers are using specifically to use your code. If you're just building something, just build it. It kind of got me over a mental hurdle where I had some side projects where I've been trying to think deeply about the architecture of it and being just like, “Okay, well I want to optimize this and do that.” And I realized it just has to work. I can always optimize later, but the longer I think about optimizing first the longer it's not out the door for people to actually use and see.

BP I think that there's a pretty famous old blog that we've referenced a few times along that line, which is like, “Product market fit first. Optimize down the road.” You know, like you can get sort of in that analysis paralysis early on trying to over-optimize before you even know if people really want to use this tool, right? Better to make sure there's demand there and then find out what the users want and kind of work from there. Plus, I think what you said was really awesome, like, how many of them are peeking under the hood to see if the code's good or not as opposed to the experience? But I would love kind of like a coding Oscars. You know the technical ones where it's like for editing or sound mixing or things that nobody notices? But if it was just like, “These are the top 10 apps. Now we're going to go under the hood. Who has the cleanest code?” I don't know what standards you would use to evaluate that, but that would be fun.

CW I was working on one of my projects yesterday and I optimized it way too much, like over-optimized, but it's perfect. And as I finished it and I was just admiring my own work, I was like, “Man, nobody's ever going to see this.” Why did I spend so much time on being like, “I shouldn't use if else statements, I'll do a switch statement! And then I'll make this big object that does this and that.” Like, designing data structures and stuff. I didn't need to do that. And I probably could have gotten it done hours earlier if I had just done it.

BP But did it make you happy?

CW You know, I was able to be like, “I'm a genius!”, and then later be like, “Am I an idiot?” It's a good balance to have. 

CF That's why we build projects, though. So we can have that one second of like, “I'm actually so smart. No one is smarter than me. I'm the smartest developer in the world.”

CW I’m incredible!

CF Yeah. And then immediately after that you spiral out of control and you think you're the worst person in the world. So, you know, is it worth it? Ehh we'll discuss that later. 

CW It’s good to have that balance. 

CF Yeah, my leading philosophy with creating developer content like articles, tutorials, or when I'm editing something else someone wrote, or if I’m writing code, my leading philosophy so far has been clarity over brevity. I think when I was first learning how to code people drilled the DRY thing into my brain like, “Do not repeat yourself ever! You want everything to be as reusable as possible.” But what I'm finding is that, especially if it's code that other people have to use or learn from, or if it's an article that other people have to learn from or consume in some way shape or form, it's much better for it to be longer but more clear what the meaning is or the function is than for it to be short and succinct and like super pretty. But if someone else is looking at my code they'll be like, “What is happening here?” So that's what I've kind of been trying to lead with. I think so far so good, but it does mean that sometimes it's not the flashiest or the most intelligent way to do things, but sometimes that’s okay.

CW But if it works, it works and it's out there. That's what matters. 

BP Right. Matt, I want to hear from you about how you approach code quality in your projects. But before I pass the mic, I have to say one thing which is that working at Stack Overflow has been so nice for me as a former journalist because the stories we write for the blog can be as long as we want. Developers do not care if you give them 3000 words with no images, as long as it's interesting they will read the entire thing. That is very different from working in mainstream media where it's like 300 words and then a slideshow. Otherwise you're not going to pay attention. Matt, you've done some live coding stuff and have some ideas for doing that at Stack Overflow, as well as cutting things down so that they work for people who mostly consume video and social media. So I guess I'd be curious to hear from Matt, and also Cassidy and Ceora, what do you enjoy, in the year of our Lord 2022, when it comes to doing dev advocacy, which might mean sharing code or projects, but in sort of that snackable way? Like what's fun and what do you think people are doing well? Where you kind of feel like, “Oh, this works. It's interesting. I'm getting a technical perspective, but also it's easy to flip through and maybe if I want to dive deeper I could.” 

MK Yeah. I mean, it's one of the things I really enjoy about Twitter, basically, because of the ability to post little .GIFs or one minute videos. It’s basically tip city. You can get a whole bunch of different things that you never even knew was possible with tools that you use every single day. You know, you might be scrolling on Twitter and something will pop up and you'll be like, “I didn't even realize that existed in my current tool set.” And then it sends you on this whole rabbit hole of like, “Oh no, I'm going to do this and that and this and that.” And then you become an expert and like, for VS Code for me, that was one of the things that I really enjoyed because I'd saw somebody post up, I think it was Emmet abbreviations or something like that for creating React classes. And I was just like, “What? I've been copying and pasting this default class this whole time?” So, I would love to hear Cassidy and Ceora what your opinions on that would be as well.

CF I'm excited to see what, of course this is very Gen Z of me, but I'm excited to see what developers do with TikTok. I've seen a couple university students make videos of like, “Oh, here's this interesting thing I'm building.” I saw one person, she was an intern, I believe at YouTube in San Francisco, and she actually made a piece of art that was somehow an instrument, but with like code?

CW I saw that! It was amazing!

CF Yeah! So I thought that was so cool, and she does a day in the life of a YouTube engineer and I think it's awesome. And I'm interested in seeing more content like that on TikTok. Because I feel like on TikTok you can do one minute videos or three minute videos, so I think we'll see a lot more of the like, “Here's a demo of this awesome project I'm doing that really has no value monetarily but it's still super cool. Look at it.” I'm interested in seeing stuff like that on TikTok a lot more. 

CW It probably sounds super boring, but the VS Code TikTok is actually really good for that. It’s amazing.

MK It’s great!

CF Whoa! Let me see! Let me see!

CW They have so many commands where they're just like, “Oh, you want to do this in VS Code? We'll show you.” And they do those little snippets and I've learned so many little tricks that I had no idea VS Code could do from their TikTok account. So I highly agree with you, Ceora, just because I didn't expect it from their account. I was kind of just like, “Oh, that's nice. I'll support them.” And ever since following them, I'm like, “Dang, this is solid.”

CF Whoa! I know my goodness. I’m so hype.

MK We should get whoever runs that TikTok account on the podcast and just have a chat about their strategy and what they're doing. 

CF Please! Can I reach out to them?

CW There have been some pretty cool ones and they also have their team rotate on the account so there's probably a few people we could reach out to. It's great. 

CF Yeah. I love TikTok. I spend too much time there.

CW I know, it's dangerous. 

MK It's like half an hour just melts away and it's ridiculous. 

CW It's dangerous. So many memes. There's this tool that I tried out recently, and I'm really excited to see where it goes because it's still early stages. Like, you have to request access to try it. But it's called incredible.dev and literally their URL is incredible.dev. It's kind of like a video editor but it's specifically made for developers to share presentations and code and stuff. So let's just say I want to say, “Okay, here's how you want to make a React function.” I could be recording myself describing it, and then the code can animate in in different segments and you can put together both code blocks and visuals of yourself or different aspects of your code at once. And it just kind of all animates together while you are talking and it's really, really nice.

It feels like it's a combination of fancy keynote animations and video editing in one tool. It was really, really cool. And I'll be interested to see how that sort of space takes off because I think sharing those kinds of tidbits and everything, like you said, both of you with TikTok and with tip city on Twitter and stuff. I feel like a tool like this could be really useful for it.

BP Sweet.

[music plays]

BP Alright everybody. It is that time of the show. I'm going to shout out the winner of a lifeboat badge, somebody who came on Stack Overflow and helped to rescue a question from the dustbin of obscurity. Today, it was awarded to Bill the Lizard, who I happen to know. I don't remember how but we've sent a few DMs on Twitter. So anyway, thank you Bill, awarded nine hours ago, bill has 381,000 reps. So he's been hanging around for a while. The question is, “Is there a way to write an IFF statement, i.e., if and only if, in Python?” So if you wanted to write an if only statement if in Python, we've got an answer for you. I am Ben Popper. I'm the Director of Content Marketing here at Stack Overflow. You can always find me on Twitter @BenPopper. If there's things that you want to hear us talk about on the show or folks who want to come on, email us podcast@stackoverflow.com. And, if you like the show, leave us a rating and a review. It really helps.

CW I'm Cassidy Williams. I am Head of Developer Experience and Education at Remote. You can find me at CASSIDOO on most things. 

CF I'm Ceora Ford. I'm a Developer Advocate at ApolloGraphQL. You can find me on Twitter. My username there is @Ceeoreo_. And maybe soon you'll find me on TikTok at the same username. We'll see.

MK I’m Matt Kiernander. I'm a Technical Evangelist here at Stack Overflow. You can find me online in many places at MattKander.

BP Alright. Excellent. Thanks for listening everybody and we will talk to you soon.

[outro music plays]