Skip to main content.

Josh - The Life of a Full Time Open Source Developer

Season 8, Episode 6 | July 19, 2023

In this episode, Dan and Bekah explore the fascinating journey of being a full-time open source contributor with Josh Goldberg. We discuss the challenges and rewards of dedicating yourself to the open source ecosystem, TypeScript's growing popularity, and how Josh supports the tech community.


This episode is brought to you by:


Josh Golberg

Hi, I’m Josh! I’m an independent full time open source developer. I work on projects in the TypeScript ecosystem, most notably typescript-eslint: the tooling that enables ESLint and Prettier to run on TypeScript code. I’m also the author of the O’Reilly Learning TypeScript book, a Microsoft MVP for developer technologies, and an active conference speaker.

Show Notes:

Join Bekah and Dan in this week's episode, where they talk with Josh Goldberg, an independent full time open source developer working on projects in the TypeScript ecosystem, where he shares valuable tips and insights on how you can get started with contributing to open source, whether you're a seasoned developer or just dipping your toes into OSS. Josh also shares the story of his prolific speaking journey over the last couple of years and how staying involved in the tech community has been a rewarding experience.

Links:


Sponsor Virtual Coffee!

Your support is incredibly valuable to us. Direct financial support will help us to continue serving the Virtual Coffee community.

Please visit our sponsorship page on GitHub for more information - you can even sponsor an episode of the podcast!

Virtual Coffee:

Transcript:

Bekah:

Hello, and welcome to season eight, episode six of the Virtual Coffee Podcast. I'm Bekah, and this is a podcast that features members of the Virtual Coffee community. Virtual Coffee is an intimate community of people at all stages of their tech journey, and they're here on this podcast sharing their stories and what they've learned, and we are here to share it with you. You with me today is my co-host Dan Ott.

Dan:

What up, Beck? How is it going?

Bekah:

It is fan.

Dan:

You're talking real weird today.

Bekah:

It's just how I talk.

Dan:

Oh yeah. Okay. Sorry. Um, hi. So yeah, we have a great episode for y'all today. We have Josh Goldberg on and um, Josh is an independent, full-time open source developer, and that is a pretty interesting thing. It's the first time we've talked to anybody like that. Um, he works on open source projects and he. Does it full-time? He does. He's not paid by another company. Um, you know, so sometimes you have people that their main job is working on open source projects, but they are employed by a company that maybe backs them or something like that. And Josh is totally on his own and, um, makes money from sponsorships and speaking opportunities and things like that. And it was a fascinating conversation. Oh, and he, and he, yes, that's right. And he, and he wrote a book, uh, published by O'Reilly and it's, it, it was a really great conversation, and I think you'll hear I pretty much just took up all the time asking my own questions because I was fascinated by his story.

Bekah:

Yeah. One of the things I love about Josh is how friendly he is to folks who are in open source, and I got to meet him in January at that comp and he. Is one of the most genuine, authentic people that I think that you can meet. So, um, he's helped a ton of people and he spends a lot of his time mentoring and supporting new contributors. And I think that that really shows through that. Like he cares about what he's doing and this is the reason why he's doing it. And I just find that to be incredibly refreshing.

Dan:

Absolutely. And he, he cares about it and he's also excited about it. Um, you know, he was, I, I said, I asked a lot of questions and I did, but he was very happy to answer them as well. Um, and so, I don't know. It was, it was a really great time. I think you all are going to enjoy it a lot.

Bekah:

Angie will enjoy our intro question too. We start every episode of the podcast, like we start every virtual coffee. We introduce ourselves with our names, where we're from, what we do, and our random check-in question. We hope you enjoy this episode. Today's random question is, what is your favorite type of sandwich? My name is Bekah. I am developer experience lead at Open Sauce from a small town in Ohio. And my favorite sandwich is definitely a buffalo chicken sandwich, like sandwiches a lot, but nothing. Beets a buffalo chicken sandwich.

Dan:

I just had a buffalo chicken sandwich for lunch yesterday. Uh, that's why I was eating while I was room leading at Virtual Coffee. And, uh, it was very messy and not a good idea, but it was delicious. So, uh, it's a good call. Um, yeah, I'm Dan. I. Live in Lakewood, Ohio, which is the first suburb west of Cleveland. And um, I do computer stuff, you know, and favorite sandwich, uh, It depends on my mood. I have lots of different favorite sandwiches. Right. So I'm just gonna say the one that, uh, comes to mind. So this is not an all the time sandwich, like I couldn't eat this all the time, but it's, uh, mostly a camping thing, right? And it's gonna sound gross, but if you try it, you'll like it. Uh, if you eat, eat meat anyway, it's uh, peanut bread and summer sausage, like slice, uh, peanut butter and honey. And it sounds so weird, but it is the best thing, especially when you are out, um, you know, you've been like, Camping, like, you know, hiking, working, working hard, anything like that. Um, so we, we take it to the cabin. We, we take a camping. Um, it also obviously packs very well, but has a lot of, uh, good nutritious calories and, um, it is delicious. It's very tasty. So she try it sometime if you're into that sort of thing. Uh, so. I, I think that's my top, you know, it's, it's not, it's near the top of the list. Yeah. We have Josh Goldberg here today. Go ahead, Josh.

Josh:

Hi.

Dan:

Oh, no.

Josh:

Oh, yeah, that's, that's a good, thank you. Um, I actually, a couple days ago, spent about 15 minutes trying to evangelize the concept of a donut burger to a bunch of Australian friends. They, they didn't really understand at first, but I think I convinced a few. Uh, but no, my, my favorite sandwich is a New York deli, bacon, egg, and cheese. Every time I visit the city, I'll get back. Oh

Dan:

So is that like on a, um, like a croissant or a, what do you got?

Josh:

Yeah, like on a, a croissant or a roll, I normally do roll with just a little bit of ketchup, some salt, pepper,

Dan:

Yeah, that sounds really good.

Bekah:

I would swap it out with hot sauce for the ketchup, but, uh, breakfast sandwiches that, that's a very close second for me, so,

Dan:

Yeah. Some sriracha or something like that. Oh yeah, that sounds really good. Can you tell me a little bit more about the donut burger? You have peaked my interest.

Josh:

Yeah, so like the classic donut burger, uh, very slowly becoming more and more of a thing over the years. It's a glazed donut, like a crispy Kreme style donut as the buns, and then just meat, maybe bacon in there. Um, I've heard that people are starting to try out veggie burgers for it, which is good. Um, I personally really enjoyed a variation from a place in my college town at Cho New York that did peanut butter in there, so donut. Uh, peanut butter, meat, bacon, peanut butter donut, bottom to top. It's so luxurious and decadent, but it's the softness and the sweetness mixing together that makes it actually

Dan:

It sounds so good for you too.

Bekah:

peanut butter and then meat, and then peanut butter. What kind of meat are you putting on that?

Josh:

Just like a classic

Dan:

burger. It's a Burger,

Josh:

Burger,

Dan:

That sounds good. I, I mean, a peanut burger is like, I'm down with that. Like, we have, there's a, there's

Bekah:

Nina Burger, is that what you called it?

Dan:

that's what they call it at the restaurant that I've had it at. I don't know, it's just like peanut burger, peanut butter, and, you know, whatever. I, it, it doesn't have a donut though. It's just normal hamburger buns, but it is delicious. Peanut butter should be on almost everything, you know? It's, it's one of the best. What do you call it? Do you call it peanut butter or condiment? No, it's a,

Bekah:

Well, you're using it as a condiment if you're putting it on a

Dan:

I mean, that's true. That's true. I'm gonna have to,

Josh:

Wait, hang on, hang on. I don't follow. I don't agree with that. Logic. Is cheese a condiment?

Dan:

uh, cheese is a

Bekah:

But it's not though. If it's spreadable, it's a condiment.

Dan:

oh no.

Josh:

Some cheese is spreadable

Bekah:

What if you cheese on top of it? Then that would be a condiment,

Dan:

Or like cream cheese.

Bekah:

A slice of, yeah. Cream cheese, definitely a condiment. Unless it's the main, the main P part of the sandwich, like peanut butter and jelly. Then it's not a condiment because that's the main

Dan:

Hmm.

Bekah:

middle

Josh:

Hmm,

Dan:

What if you put bacon in your peanut butter and jelly sandwich? Have you now made, oh, bacon's the con,

Josh:

beacons the

Dan:

spreadable. Now we're finding all sorts of holes in this.

Josh:

My mind is whirling and whizzing with new potential here.

Bekah:

Yeah, I do. I mean, then I think I would consider the peanut butter and the jelly, the condiment, if there is bacon on the sandwich.

Dan:

So then it's just a bacon sandwich with peanut butter and jelly. That's what we're saying.

Bekah:

Yeah, toppings. Those are the toppings for the p for the

Dan:

Well, those are the condiments.

Bekah:

Yeah.

Josh:

What's the difference between

Bekah:

is a topping. It's a kind of topping. It's a scy topping.

Dan:

Okay. Well this has been a great start to this podcast.

Bekah:

Wait. I feel like Josh has something very profound to say. He was really thinking about it.

Josh:

This isn't the thing that I was thinking was, huh? I wonder if there's a difference if, if it's a slice of bacon versus little chopped up bacon bits. That was what was going through my mind with a wistful look on my

Bekah:

yeah. Well that would be interesting because then if it kind of folds into the jelly, then it becomes like a bacon jam, right? Or bacon jelly.

Josh:

are really good. An intentionally made jams that are a little savory. Yeah.

Bekah:

Well, welcome to the show, Josh. We are very excited to have you here and we start this podcast like we start every podcast after the intros with your origin story. So we wanna know how you got into tech and how you got to where you are now.

Josh:

Sure. Um, I started programming in high school with, um, in New York. It's AP Computer Science. Um, I did a four year CS degree also in upstate New York at rpi. Um, I interned at a neuroscience lab, which was very cool and fun. I did their website and then I interned at Microsoft and then started full-time at Microsoft. After that, I went to Code Academy full-time in New York City, and for the last year and a half or so, I've been a full-time independent open source maintainer. Which means instead of having a, I'm trying not to say real job, instead of having a traditional job with a company, I am independent and I work in open source projects that sometimes pay money not very often.

Bekah:

Well, you, you do a lot of things for the community too, right? Like you're out there giving talks, you're helping people out. Can you talk a little bit about the community involvement that you have and, um, maybe like how that's progressed throughout those jobs?

Josh:

Yeah, definitely. Um, I think I really like tech education and that has mixed well with a lot of the professional stuff I've done. Um, so I. Back when I had full-time job, I was a staff software developer in the web platform team at Code Academy, which meant that I did a lot of mentoring work. I worked on the tooling and processes that folks use to build the website and associated stuffs. Um, I also do a lot of work with bootcamps, mostly d e i oriented or focused ones. Um, so I'll, at any given week, have some number of mentee meetings. I'll be giving workshops on typescripts, helping people with resume reviews, stuff like that. One of the nice things about being independent is that I get to kind of choose my own adventure a lot. In the past year or so, that's been a lot of conference talks, so I've been going to conferences maybe one or two a month on average, which is a little exhausting since a lot of them are often Europe or Australia. But I've always wanted to travel, so I'm low key, very happy to be exhausted on, on that level. Uh, so a lot of the focus I've been doing in evangelism is helping people figure out how to get the best tooling for their projects. Whether it's figuring out what TypeScript is or setting up the linter and formatter properly, I think being able to help people help themselves, whether it's general mentorship or specific to tools, anything that's a force multiplier for someone makes me happy.

Bekah:

And so as you talk a little bit to more about that journey from working full-time for someone else and then making. That decision to go full-time doing your own open source thing.

Josh:

Yeah. Um, I found in my career I kept stepping backwards or shifting left or whatever the industry term is where I wanted to do client facing work, like consumer services at Microsoft. It was this awesome product no one's heard of called Sway. Which is really cool. Highly recommend. Uh, S w a Y. The joke on the team was, it's a four letter word that begins with s and I found that I just really enjoyed the performance work. The, the developer tooling. At the time, TS lint was the big TypeScript. Linter, And then at Code Academy I stayed roughly on performance, client facing, consumer facing stuff. And then I worked on developer tooling a lot. So we formed and switched over to a web platform team. Fun fact, I started and led and then handed over to other folks the accessibility initiative at Code Academy, which is another thing near and dear to my heart. And then I just kept wanting to do more things that helped people who were doing the stuff I was doing. So I just kept backing up in, in the area of tech until now I'm working on language services and, and linters stuff that help people who are helping people. It just, I dunno. It feels good to me. This feels like something that's impactful and, and is technically cool.

Dan:

That's all. That's, I mean, that's really cool. And I, I like that. I like that, uh, conscious, um, I don't know when you became conscious of it, but that idea of stepping back or, you know, I don't, stepping back sounds maybe negative, but like stepping lower maybe, you know, like in a lower level. Right. Uh, and, and finding tools and finding a place for yourself to, um, concentrate on something like that. Something that made you feel, you know, satisfied and, and Good. I was wondering if you could talk a little bit more about how it works to be. A full-time open source developer, uh, both from like a what, what you do like day to day, like, aside from the traveling, the talks and stuff like that, what you do day to day. And also I'm sure a lot of people, uh, would like to know how you make money if, if you make money. You know, like what, how, how, how that part works, uh, as well. Um, you know, via being an open source developer full-time.

Josh:

Sure, I'll try to answer each of

Dan:

Yeah. Sorry, I know there was a bunch of questions, but

Josh:

It's a big topic. Uh, but yeah, to start, what I do day to day is a mix of evangelism work and project management work and development work. Um, for the evangelism work. I'll start there. It's writing blog posts, tweeting. I'm on Twitter and blue sky and now threads and all these other things mastered on way too much. Um, but just. Talking about the tooling that I work on, telling people about new features. I have these searches set ups that whenever someone mentions TS lint, I know to yell at them that it's deprecated and to go use type 50 B lint now and all these things. Um, a lot of people don't realize that because open source projects are oftentimes not associated with any one company, telling people about new features or about new best practices is very difficult. It takes a lot of energy. Um, like if you look at Redux, a lot of people are still using. The original form of Redux. Even though for years now, Mark Erickson and other Redux maintainers have been beating their chests and screaming, that Redux toolkit is much easier and much better, which is correct. So yeah, that's, that's the first third of what I do.

Dan:

Yeah. Uh, well, so now I, it's making me dig in, wanna dig into more of these topics, but I want, I, I, I feel like I can remember the rest of my question. So, uh, specifically about, about that. Um, One of the things I was wondering. Yeah, so you mentioned Redux and, and I imagine one of the reasons that happens, especially with Redux, cuz I feel like at least back in the day there all of the React tutorials, right? Used Redux. They're like use Redux once you get to a certain, you know, a after like step two or whatever. And probably a lot of them, Haven't updated their content. Right. Um, blog posts or tutorials or, or things like that. Uh, is that something you run into with the, or any of your other projects? And if so, like, do you try to reach out to blog? Like, you know, do you try to reach out to those content, uh, creators and have them update their old stuff or, or anything like that?

Josh:

Yeah, it's tricky because I don't work on Esent itself. I've occasionally contributed to it, but I work on TypeScript

Dan:

Sorry. Yes.

Josh:

the tooling that allows Oh, no, no. It's, it's all, it's all in the same area. Um, so I don't have a lot of say on Es lent itself, and there's some best practices that we, on ts lens and. The Corey Slen team don't fully agree on like where the delineation between, let's say a formatter and style and rules and blah, blah, blah is, which is a whole other subject we can get into. Lovely. Um, but yeah, uh, we do oftentimes reach out to people. Um, we're about to release a, uh, a new version of TypeScript B Slan, a new major version, which has a few breaking changes. And, um, I've been using source graph to search for repos that use the old deprecated and or removed APIs, uh, just to, to let 'em know. Uh, but yeah, it, there is, this is one of the problems with rapidly moving areas of tech, such as all of JavaScript and the web that people make content and then it is a total pain in the butt to update that content within a year of it coming out.

Dan:

yeah, I mean, it, it's very, it's very interesting, so, Okay. I, I wanted to, I have so many topics, but I wanted to go back to my original, like huge list of questions. So, um, so yeah, can you talk a little bit about your, like, I, I guess you did a little bit, but, uh, talk some more about like, what it's like being a, an open source developer full-time and maybe dig into, you know, also like ways that you are able to make money. Um, various ways. I'm sure, I'm sure it's kind of spread out, I would assume, but, uh,

Bekah:

you said there were like three things that you do every day, evangelism, and then there were two more. I can't remember what the next two were.

Josh:

Yes, PM work and dev work. So I'm kind of the holy trinity of the developer advocate slash avocado, the project manager and the developer. But really there's a quady because also there's a bit of design work in there, but fortunately I don't have to do

Bekah:

really a word?

Josh:

I believe it is. I don't think it's, well, the word I'm looking for, I think I used it wrong, but Yeah.

Bekah:

Cool. I like it. I just wanna know if I should add that to my vocabulary.

Josh:

Yeah, halo. Halo became a Quad trilogy and then Halo five came out and ruined everything. So anyway, um, yeah, I do a lot of PM work, which is to say I open my GitHub notifications queue every morning and it's too big, and I go through those notifications. A lot of that is someone has filed an issue, hopefully using the templates we provided, sometimes not, and I go through what they're saying, see if it's a. Bug or feature request or et cetera that is valid. Oftentimes there'll be duplicates of something else or there'll just be something not in the purview of the project, but sometimes it's, and oftentimes it is something that we legitimately would want. So I'll label the issue accordingly or close it. Then similar with pull requests, this is getting more into the dev side of things. I'll review the pull request, make sure it adds tests. The tests look good, the source code looks good, updates any docs it needs to, and hopefully approve the pr, merge it in. And that takes up a lot of time, a lot of time. Uh, the, the, the beauty of open source is that it's open. Anyone can contribute and the horrible thing is that it's open and can contribute. So it's, it's not the same as just writing code in the open, it's, it's collaborating with

Dan:

I'm looking right now at the uh, TypeScript Dent Repository and there's 55 open pull requests and 391 issues. Which is actually less than I would've than I was, than I was imagining. So that's, I feel like you're doing pretty good with that. Uh,

Josh:

thanks. Every once in a while I get all excited about reducing the prq down to 25, so it's on one page, and this was a few months ago. We got it to 26 or 27, and then we started working on V6 and now it's up to 55. So maybe one day it'll be

Dan:

Yeah.

Josh:

double tickets for well,

Dan:

yeah. Um, sorry, I, I was just, I, I was just looking up cuz I've been on the next Js stocks a lot and, uh, they're getto repo and they have right now like 1,900 open issues.

Josh:

Woohoo.

Dan:

And 237 open pull requests. Uh, one of which is mine. So, you know, I've been chicken, I mean, It might be, it was a few months ago, so, you know, no big deal. Um, sorry, I didn't mean to interrupt, but like, that was just to illustrate like all of the like stuff that you were looking at, uh, every day just for that one, just for that one project. Right. Um,

Josh:

Yeah, and that is the biggest project. I, I actively am a maintainer on everything else I do, for the most part, is much smaller, which I like. I like having kind of a, an exponential curve of, I got this one really big project, which brings in a majority of my revenue. Uh, and then I have a lot of personal projects, one of which has something like 300 stars, and then the rest of all dozens or single digit stars. Um, which brings up the, another question you've asked of money. So for starters, o we in open source, most of us do not make a lot of money, um, because it's not a company, there's no profit model. And while some open source projects have been able to monetize and are well positioned to do so, some are not. For example, TypeScript, a lint is a linter that exists in your editor. This is something one, I don't think should monetize significantly. Um, and you, a lot of open source projects alternately have set up consulting models, which can be very lucrative. There's a joke about PHB developers all driving Lamborghinis on this, but I don't wanna do that. I would rather spend time working on the project itself. So we have an open collective on TypeScript BS lunch, which is just a way for companies to give us money one time and or regularly. And then that gets distributed to the maintainers. I get the lion's share. Um, I think it's two shares compared to the one share each for the other full-time maintainers, one of whom is a student, gets half, but it's, it's I think at most 30,000 a year split up between four or five of us. So it's, it's not a lot of money.

Dan:

Is there. So we at, at Virtual Coffee use the GitHub sponsors, um, you know, set up. Is there, have you ever thought about that? Is there a reason you use Open Collective versus GitHub sponsors or, you know, I, I feel like you probably have some opinions on this. You've flipped it up a little bit more since you know, it's the main

Josh:

No, not really. No. Um, it, it predates my getting involved with the project. It's just, it's always been open collective for types skippy evidence. I have a personal GitHub sponsors, which nets me about $300 a month. So that's as I, I like to joke, that's the latte

Dan:

yeah, right.

Josh:

actually we got an espresso machine at home, so now it's the latte syrups budget and the coffee.

Dan:

Nice. Um, yeah, that's, that's, that's really cool. Um, it's. The, the idea of sponsoring open source, uh, projects is one that's, you know, important to me. And I, I try to, you know, I try to sponsor projects that, uh, that I use that aren't backed by obviously I, I guess there's probably not a lot of projects that have open sponsorships that are backed by companies. But, um, the ones that I use a lot and it's, it's easy to forget about it, you know, as a, as a consumer of, of the projects, as a su a consumer of these packages or whatever. Um, and I feel like there is a lot of people in your boat where, Well, maybe not quite your, maybe not with the commitment that you've made to go full-time, but, um, that spend a lot of time because I think anybody you ask that works on open source, uh, as a maintainer will tell you how much work it is Right. And how time consuming it is, even aside from all the extra stuff you do. Right. The, the evangelizing and the conference talks and all that stuff. Just dealing with both. All of the pull requests and issues and also moving the project forward. Right. Um, it's, it's a lot of work. Uh, so I would, and if, if, if you're listening, I would, I would encourage you to go check out the packages that you maybe you love or use a lot, or, um, depend on, you know, and see if they have a, a, a, a sponsorship. Because I, uh, I, I mean, speaking of somebody who. Does this for virtual coffee. We do this for virtual coffee, but, uh, even like the five, whatever, $1, anything helps, anything helps people. And it also, um, it also helps, uh, spread the word, you know, to other people sort of passively, right? Uh, the projects I'm sponsoring show up on my GitHub profile and et cetera, et cetera. So, um, it's, it's

Josh:

you for, for pointing

Dan:

oh yeah, no, absolutely. I, I mean it's, it's a, it's a big thing and, and I, you know, I, I kind of believe in it. Um, Even for people who aren't like, like you, like a full-time, you know, person. Um, it's still just, it's so much work and it's, uh, maybe you can speak a little bit more to this, but I feel like a, a lot of times fairly thankless. Um, uh,

Josh:

You know, not as thankless as I thought it would be. I actually get a, a lot of, I think, I think the industry is starting to understand better and better over the last few years, especially what open source is. So I get a lot more sympathy and kind of nice messages online than what I've seen in the past, which is really nice.

Dan:

That is, that's really good to hear. Um, have there been any, like, have, have you ever tried to reach out to larger companies to try to, you know, um, actively get sponsorships, things like that? Or do you kind of, is it more of a passive, you know, passive thing where you're, where you're just kind of like putting it out there and, and helping people subscribe?

Josh:

It's a bit of both. We actually do have a few larger company sponsorships. Um, I'm just, if you go to the TypeScript Esent website, TypeScript esent.io also shows up on Google very nicely. And scroll down a little bit. We have a financial contributors section, um, which has platinum, gold, silver supporters and especially indeed anx by Narwhal es Land Hugging Face, Airbnb Code Academy. Those are the top six sponsors. They've given us each a, a good amount of money, and I think about it. Two or three of those, a good chunk. Maybe a third of the contributors on the homepage are just from us meeting someone at a conference or talking online and then setting up a sponsorship. One of the, one of the unfortunate skills that I've had to start getting better at is asking for money, which I hate. I truly adore asking for money, but you gotta do it otherwise you don't get it.

Dan:

Right.

Bekah:

wanna hire someone to ask for money for me.

Josh:

Yeah.

Dan:

Those people exist. The problem is you have to pay them as well. So, you know, they have to be really, really good at their job.

Josh:

Yeah. Every, every minute I spend writing a carefully crafted email begging for money is a minute that I'm not writing a carefully crafted issue. Rejection notice on GitHub. It's sad.

Dan:

that's cool. Lin is Lin, um, are they, uh Oh, geez.

Josh:

Oh, they're, I, I misspoke. They're not a company. They, they're just a very, very well run open source project that gives dependence Dependencies. Dependencies. Yeah. We actually have been learning from Lin recently. Um, we're currently in the discussion, open discussion phase of a governance proposal, uh, prior to this past. Month or two. Uh, the types two Es l maintenance crew has just kind of chugged along. It hasn't had a formalized process, uh, but especially now that we're growing as a project and I'm on full time, uh, we were formalizing that into documentation. So it's on our GitHub on our discussions page. We've gotten a, a few up votes, a few friendly emojis. No actual responses to the proposal I put up, which is probably a good sign. And then part of the governance proposal is our next up, uh, what we wanna do as a B 1.1, 1.2. And we're looking into, can we do what Esent does and give money to the major open source packages that we rely on. But for now, it's, it's mostly around explaining how the money comes in and what we do with it, and how we maintain, and how the bigger decisions get made.

Dan:

Yeah, that's, that's really cool. And, and actually that, uh, gets into one of the things I was wondering about Les with the, at this point now, uh, uh, with, with the financial part of it. But, um, I was wondering if you could talk just as a, as an open source maintainer with other maintainers, um, from a project perspective, like how, how that works. Like how do you. And your team plan, plan features, like how do you, um, work together to, I don't know, to move the project forward and, and, and keep, keep working on it?

Josh:

Yeah, different projects do this very differently. Some projects, especially larger ones that have a lot of impact in the ecosystem such as e es, Lin, have a technical steering committee. They have regular meetings. Someone takes notes, they post the notes online. Um, they have a process for voting and so on. We don't, we instead just kind of. Casually chat on, on Discord. We have a public open discord with a few private channels, and that has served us well so far. We're not so large as a crew or differing in opinions that, um, that's been an issue so far. I recognize that as we continue to grow and the project grows bigger, we will probably, eventually maybe have to have something more formal. But I, I really like what we have now. Um, I've learned a lot from, um, especially Brad Zacker and James Henry two maintainers who've been on prior to me. And it's, it's been fantastic. We, we just chug along and what gets done, gets done.

Dan:

That's really cool.

Josh:

That's, I realize that's a very shallow answer that does not go deep into anything, but it, it's, it's an answer that makes me

Dan:

Yeah. No, it's, it's cool and it's good to hear, like you, you, you, you all have a good system. Um, and yeah, that idea of having multiple people, um, and working together, you know, there's, I'm sure yeah, I'm sure you've run into lots of different situations there. Um, and I dunno, that sounds like you have a good setup over there.

Josh:

Yeah. Yeah. I've never met any of them in real life. Uh, and I've only had a meeting with maybe three in total, maybe four at once. There's a maintainer who I don't know anything about other than their name. I believe they're pronouns, so, I think their location from GitHub on their profile, uh, don't know what they look like or what they sound like.

Dan:

Okay.

Josh:

But yeah, we do, we do have a lot, I will say of discussions in the open, uh, which is intentional and we wanna keep it that way so people can at the very least, see why we do things. Um, for example, uh, we have a lot of discussions with community members about what should or shouldn't be a lint rule in TypeScript, E Esent core people ask for a lot of lin rules that are kind of specific to their project or to their tech stack. So we'll, we'll discuss that in the open of whether it's applicable to everyone, for example, just on an

Dan:

Yeah, yeah, yeah, that's right. So, so you do a lot of work in, in GitHub, like in the, in the open, open sections and stuff. Yeah, I think that's, that's really cool. Um, that's good to hear. Um, oh

Bekah:

I wanna a little bit, if that's

Dan:

All right, cool. No, that's fine. I've been, I've been ask, I've been just picking his brain so you.

Bekah:

Uh, on your, on your website, you list all of your talks and it's like the most prolific list of talks in three years that I have ever seen. Um, so talk a little bit about, it looks like 2019 is the first one that you listed, so I don't know if you were speaking before then and they're just not up, or if you just like made a decision, I'm gonna start giving talks, and then you just went. All in, uh, what was that like and, and why?

Josh:

I do have a few talks that predate that 2019 ts conf talk, binary arithmetic in the TypeScript type system, which is as ridiculous as it sounds, but they're all smaller meetups. Um, I made a definite decision that I wanted to get into speaking and I worked on it, and I'm very proud of this cuz I grew up as a weird, sad, lonely, awkward, annoying child. I did not have. A lot of deep friendships, a lot of people who did not enjoy being around me for legitimately correct reasons. Um, so talking to other people, let alone in front of them on stage has always been very scary and intimidating to me. But I think it's really useful. It grows your network, which is especially particularly important now that I'm open source. Uh, it helps you get your opinions in front of other people. It helps you validate your opinions. Um, and it looks great on a resume. So, Also I should. No, it looks great on a resume in part because it's a really good skill to have at work. If you're trying to roll out a new, whatever, a p i web platform, framework, whatever, on a team, you should be able to communicate it. That's very useful. So I started doing meetups in Seattle. I lived there when I was working at Microsoft at the time, uh, attending and then speaking. I remember my first meetup talk was a really cool subject. It was about how generators and promises and async await all work together. I didn't have slides. I just showed off my medium post, which is, I don't think a very good way to do a talk. Uh, yeah. But no, I just kept, I kept applying to conferences and eventually I went from a 0% acceptance rate to a 1% to a 10%. Now I'm something like 30 to 40 acceptance rate percentage, which I'm very

Bekah:

Which is wild. I mean, you must be applying all the time. Are you applying to every

Josh:

Oh, yeah. Yeah, everyone that I do not have an intersection, well, I'm scheduling conflict over that in any way pertains to my area of work, which is pretty wide because I'm also very passionate about people skills, things like good interview practices. Uh, so yeah, I, I just apply to every conference that could possibly match that. I don't have too many conflicts over.

Dan:

Excuse, like, do you have a set of different talks? Do you use the same talk when for, for a period of time? Or how do you, like when you're applying for, when you're applying for conferences, you know, like,

Josh:

Yeah, and no. When I started off, I would have a different talk for every proposal because I didn't have as many proposals going out and I thought, you know, I don't wanna keep doing the same. I feel like that's corporate almost. That was an incorrect opinion. Giving the same talk multiple times in a row lets you iterate on the talk. You learn from how people receive it. You update it over time. It's great. So I have, this is, by the way, all public. I have on my blog. I have an entire article and a set of FAQs longer than that article of how I apply to conferences. And you can, it has, they both have links to my notion tracking spreadsheet, which tracks all of the conferences I've applied to, whether I was rejected, accepted, never heard back, et cetera. Um, including the submission contents. And yeah, I have a set of talks that I. Just always submit. Uh, one of them is TypeScript for JavaScript is I wrote currently the, like the most popular TypeScript book. So I feel like I'm a pretty good speaker on that one. Buy it now. Um, but I also have a few wacky talks here and there that I like to sprinkle in. And it's interesting too because I see different talks start to get more or less popular based on industry trends. Like, um, TypeScript is a very popular one, but recently I've started to see better reception to my. Type safe CSS or type, safe styled themed something or other talk, which I'm gonna give for the first time in a few months.

Dan:

Workshop, that title a little bit,

Josh:

Oh yeah.

Dan:

css, something or other.

Josh:

I always like to do little like acronyms. It's safe styled systems. I

Dan:

Yeah. I mean, honestly that, that the, uh, you know, CSS type script, something or other, I'd probably go to that talk anyway, so.

Josh:

Yeah.

Bekah:

Okay,

Josh:

People's two favorite talks

Bekah:

how often are you giving the same talk or a version of the same talk? I'm asking for selfish reasons. Like

Josh:

Oh yeah. What are

Bekah:

just, I find myself like getting bored after like three times and then I'm like, eh, I don't wanna do this anymore. I'm ready, ready for the next thing. Which last year was not great because I gave a lot of different talks and I was like, I, I maybe should have not written this many talks in one year.

Josh:

It's a legitimate time crunch, right? When you have so many talks to give that you have to write 'em all. I've started mix and matching, um, which I've found allows me to create much better. I still use PowerPoint because Ive yet to find a slide creation tool as wonderful and powerful. That's it. As much as I hate

Bekah:

out to Canva.

Josh:

um, oh, love Canva. Uh, one of my co maintainers I mentioned Brad, he works at, uh, Canberra. Great, great company. Al. Another fun fact as I continue to procrastinate, answering your question, uh, when I was on Sway, we did like a whole competitive analysis on the industry for other intent based authoring tools, tools that do a lot of the layout and formatting for you. And Canva was one of the big, oh, we like this one. But yeah. Um, I only really give one to two conference talks a month typically, or maybe two to three. Um, my spouse and I have agreed that we, I should limit my trips to maybe one a month, uh, because spending time at home with your loved ones is good and by loved ones I of course mean her and the three cats. But, uh, I think I just going through it, I give maybe three or four copy pastas of the same talk a year at most. It's actually not that bad.

Bekah:

So at what point do you feel that it continues to be beneficial to you? Go out and, and then, you know, maybe your reasons for giving talks. I mean, you talked about like enjoying travel and getting out there, but you know, it has to benefit you, I think in some way. Um, the, the, because of the trade offs of like travel time, money, if you're paying, if you have to pay for your travel, you don't have a company that's paying. And, um, so making that decision, I think it, it has to be an active decision making process, right.

Josh:

Yeah. Um, I almost always, um, have the conference pay for my travel and accommodations. There are a few conferences I've gone to, for example, where, where we met, where, um, the. It, uh, that didn't happen. And that's always because it's a conference that does not have the budget to do it. I, there are these big corporate conferences that cost 500, a thousand dollars a ticket that don't pay for speaker travel. That's stupid. That's ridiculous. But if it's like $200 a ticket and it's small community run, humans are organizing it, not some company, then yeah, it's, that's okay. But for the most part, it's, it's. If, if you want me to benefit you, you have to pay me to do it. But yeah, the benefits for me are, are significant. As you mentioned, I love travel. Um, I grew up in a family that did not travel outside of the United States except for visiting relatives in Canada. So being able to see the world has been eyeopening and beautiful and wonderful. I think everyone should do it if they have the privilege and ability. Um, but I get to advertise myself for sponsorships. I get to plug my book Learning TypeScript, buy Riley, buy it now. Of five stars. Um, I get to evangelize. Yeah. Hell yeah. Um, another, another thing that helps me do that is podcasts, but I, I also just really find it professionally useful. I mean, I can, I can espouse the best practices, the latest and greatest things. We have all sorts of new awesome stuff in TypeScript Lin that people often would not know about. Were it not for that one conference talk and I get to talk with other maintainers, learn from them. Help explain my stuff to them. Same with just regular users. I love going to a talk or pardon me to a conference and talking about my stuff before explaining to people that I work on it and just hearing what people have to say about type three Bs N, which is not as negative often as a lot of people would expect. I'm, I'm always surprised.

Bekah:

That's awesome. I, yeah, those conference experiences can be really great and you know, you are a super approachable person, so I think that that probably helps too in making those connections and people feeling like they can talk to you. And just for reference, Josh and I have met twice now, I think.

Josh:

Twice, I think. Yeah, it feels like more because I joined virtual coffee. Shout out virtual coffee. Great thing. Thank you again for letting me in. Uh, but yeah.

Bekah:

Yeah, so I, I can verify that Josh is a super cool person in real life too. So, um, what's been your favorite experience during all of this?

Josh:

Hmm, whew. There've been a lot of amazing ones. Um, I think what I always go back to is that first one in 2019, my first time talking in front of people. I've been at every TS comp, the TypeScript conference, um, and I've spoken it all about the first one. That was, first of all, touch script is my favorite thing. It's like the tech open source project that I'm the most excited about, uh, that area of stuff. I love the language. I think the maintainer team is cool. Uh, oh my god. Love TypeScript. So the combination of giving a talk for the first time at a conference. On my favorite subject in front of a lot of the people who somewhat nerve wracking, I rely on to reprove my poll requests. Um, and it was this ridiculous subject implementing binary arithmetic in a type system. Like what, who, why would, that was a very, very good experience. Um, even though it was in Seattle, which is where I lived at the time. So slightly less exciting for travel. I do really love Seattle though, so great city.

Bekah:

Okay, so this is, again, taking in a little bit different direction, but for listeners out there who are not currently using TypeScript in their projects, what would you say to them?

Josh:

Um, if you're not using TypeScript, that's okay. Um, but TypeScript is awesome and you totally should consider it. Um, I'll say that. There are folks who are in tech stacks that do not align well with TypeScript. Like if you're writing a Java app, TypeScript is irrelevant to you. Uh, it's, it's for Java script e tech stacks. If you are on a JavaScript tech stack such as Nocha, yes, uh, then I highly recommend it for a few reasons. It brings very good bug catching. I've never seen a large project convert to TypeScript without finding bugs. A lot of bugs. It is much better for developer tooling. It enables a lot of really cool things like refactoring, find all references, go to definition, and it provides a really nice low level documentation format. Instead of using weird non-standard JS doc or double slash or triple slash or whatever comments, it bakes in a unified way to describe what things are. Uh, describe that as JavaScript lets you tell the computer what the values are. TypeScript additionally lets you describe what the intent is. So at the cost of forcing you to align to the type system and taking a little longer to learn and write stuff, you get a lot of time savings and product quality improvements. So highly recommend at least considering it and learning enough to make an informed decision.

Bekah:

Yeah.

Josh:

Sparkle emoji all.

Dan:

Um, yeah, no, that was, well, that was well said. So if you are using TypeScript, and let's assume that you're using VS code right now. Um, What does TypeScript lent do for you and can like, and how do you get it to do what it does?

Josh:

Sure TypeScript ES Lent is the tooling that allows standard JavaScript tools such as Es Lent and prettier to work on TypeScript code. So most commonly that is relevant to people because they have an esent config or they just want to lin their TypeScript code. And Eoin does not natively support Typescripts syntax. The project has made a very reasonable decision that they are working for JavaScript. EO Lin understands JavaScript. A new random wacky syntax such as TypeScript or Flow or others is not recognized. So the first thing we provide that people use is a parser, which lets you just run your eoin config on TypeScript code. And that is enough for some people. They have a set of rules they've enabled and they wanted to work on TypeScript. But we also provide a few more things On top of that, we provide a set of rules that work on TypeScript code that are specific to TypeScript. For example, we can help you standardize what syntax you want to use to declare a array or um, object types, whether it's an interface or type or whatever. And we have a couple of good recommended configs that allow you to enable a bunch of really good preset rule settings at once without having to go through the giant list of rules we provide and make your own decisions. So I highly recommend, at the very least, using our recommended rules, the which recommended rule set to use is actually a choice you can make as well. Um, we have two types of rules. There are traditional rules and type checked rules, type checked or type informed rules. Use the awesome power of the TypeScript type system to make more informed decisions. For example, if they can let you know if you create a promise. Then never handle it, which can result in a bug, a floating promise, a promise that fails and is just floating off into the distance. The problem is it takes a little bit more configuration, a couple extra lines, and they run slower because they use the awesome power of the TypeScript type system. So we provide a recommended rule set and a recommended type check rule set one is a super set of the other. Furthermore, we in type two v6, which is. Launching middle of July should be out by the time this releases. Um, separates out all stylistic rules into a couple of rule sets. Uh, types could be a linked stylistic and stylistic type checked. So if you don't agree without stylistic preferences, you do you, that's fine. But if you want just a good set of standardized things that normalize how your code looks, definitely recommend enabling one of them. And because most people listening have already tuned out and forgotten at least three quarters of what I've said. This is all documented on TypeScript BS link.io so that you don't have to memorize any of this. Just go through the docs, please read our documentation. It's

Dan:

And give it five stars. So,

Josh:

Yay. Thanks.

Dan:

Uh, no, I mean, thank you for that explanation. I, and I think that that made sense. You know, I we're almost outta time, so I'm not gonna like really dig into some more questions I have. But, um, one thing I was wondering was, so this is like, and we were talking about this, you know, at the beginning, uh, sort of a lower level thing, right? And lots of times, um, and correct me if I'm wrong here, but lots of times, uh, users aren't going to be. Installing this on their own right? Or, or not even, maybe even configuring or maybe not even knowing that it exists, right? So, uh, N js for instance, um, if you used the TypeScript Next Js like create an X js app or whatever it's called, um, it has, it installs TypeScript DS sent for you, um, and configures it and all that stuff. And I don't even know what configuration. If it's using, you know, I, I don't like, I mean, it, you can, like, I'm sure I could look it up and figure it out, but, um, I have benefited from Esent, you know, TypeScript related es lent rules, uh, while using xgs. So I was wondering if you can speak, uh, for the last couple minutes, just about, um, how, uh, like how, how you interface with, with, with, uh, consumers of. I don't know what you call it, but like, these are like middle people, consumers, right? So like, I'm a consumer, but uh, next JS is the thing that is actually in, you know, you know what I mean? Like, I, yes, I'm using ent, but, or, uh, texture desant. But, um, rappers, I don't know. It's like a middleman sort of thing, but that's not quite right. But either way, uh, how, like do you, do you like talk to the next JS team? Do you talk to other teams that, uh, install your program and then, but, but like release it in other packages? You know, I dunno if that question makes sense at all, but.

Josh:

No, it makes total sense. It's been top of mind for me recently and I'm gonna annoyingly start off with a big semantics discussion cuz whenever you talk to someone who works in languages, they get very particular about words. I talk with the remix team and I talk to the next JS team and I wanna give a shout out to the remix team here because I filed issues on both remix or pardon me, discussions on both remix and next Js saying, Hey, your recommended rule sets don't enable the TypeScript b Aslin recommended ones. And I've had a very lovely dialogue with the remix team. And now the latest versions of Remix do enable our recommended rule set, and we're gonna work on enabling recommended type checked. The next JS team is a wonderful team full of very excellent people as well, but they're kind of a victim of their own success. I think they've got a lot going on and we haven't been able to continue that discussion yet. So the next JS preset does not actually enable our recommended

Dan:

Okay. So they're just picking

Josh:

You have to do it manually. Yeah. They do enable a lot of really good rules and next to Lynch, the command is perfectly fine and good. It's just I'm hoping to work with them soon to make it better.

Dan:

Yeah. No, that's, that's really, I mean, thank you for that answer. That's, that's really interesting. And also, um, your, some of my experiences, uh, trying, I mean, not that I am, uh, representing a another package or anything, but just a, as a, as a potential contributor. Um, it does seem like next GS has a lot of, a lot of things going on over there. Uh, and they're, they're trying to work. They're, I mean, I know they're working really hard, so, um, that's cool. That's, that's very interesting. It's not really a thing that I. Consider it until you're, I listened to you talking, um, and was thinking about the configurations, and I'm like, wait a minute, uh, do I even use typer sl? And it turns out I do. I just, you know, didn't even really know that I did.

Josh:

This is a growth in the industry and this really excites me. We, as we progress over time, the things that don't matter get abstracted away from us. Like what? You use the trans pile, like who actually, as long as it works, it works. Right? Um, I know that quite a few open source maintainers would be very upset and would point out flaws in what I said. But anyway, uh, and now the things that do matter such as your linter config are maybe easier for you to do and people know to care about them more and they get better over time. As a result, this, this is the wonderful part of the industry that really excites me and gets me juiced about working in open source, that I can help push forward and evangelize new, better, best practices. I think it's awesome.

Dan:

That's awesome. I, I, I think that's awesome too. That's really well said.

Josh:

Yay.

Bekah:

All right. Well as we wrap up, I have one more question for you and that is, um, for folks who are interested in. Pursuing open source, whether as a contributor, as a maintainer, what advice do you have for them?

Josh:

Hmm. A few pieces of advice and it's a great question. I'm both excited that you're asking it, and I'm excited that a lot of people are through you asking it as well. Um, open source is great. I would say first of all, my path was to have six to eight years in industry, uh, that I used to build up connections with people. Technical skills slash people skills. That's very useful. A lot of the skills you get at a a traditional job are very good, relevant and important in and out of open source, so it's totally reasonable to not do it right away. It's also reasonable to not do it at all if you want to, but you just don't have the time. You have eight plus hours a day coding or similar, and then you go home and you're like, no, I don't want to, that's fine too. Um, I know people with children may or may not have a lot of free time on their heads, but if you do have the time building energy to get into it, I'd recommend start small. Work your way up. Don't try to contribute a giant new language feature to Typescripts as your first pr. That's, that you might be able to do it, but that's a lot of pain and there are a lot of skills associated with filing good issues, improving documentation, sending in small bug fixes and feature, uh, changes that are probably good to, to wrap up with. Keep doing it. Um, it's, it's not something you can get into immediately. You have to keep going and going and going kinda like any skill or any new activity, right? You didn't become a programmer or a designer or whatever it is overnight. You, you learned the foundations and built on them. And then also don't be afraid to talk to other people. Uh, open sources and open collaborative environment and you'll get nowhere if you don't, at the very least, learn what other people are doing in your space, whatever that space may be.

Bekah:

Love it. That was a great answer. Thanks Josh, and thanks for being here with us today. We really appreciate it.

Josh:

Thank you for having me. This has been

Dan:

Hey, thanks Josh. This was awesome. And, uh, maybe I will pass through some more questions, uh, at, at a later date. Um, cause this, this was really fun.

Josh:

Do it. I'm always available. Definitely whenever you want. Wherever you want. I love, love to chat. Love to help. Love to learn what other people are

Dan:

All right. All right. Thank you, Josh.

Bekah:

Bye.

Dan:

Thank you so much for listening to this episode of the Virtual Coffee Podcast. This episode was produced by Dan Ott and Bekah Hawrot Weigel, and edited by Ashley Mulder. If you have questions or comments, you can hit us up on Twitter @VirtualCoffeeIO or email us at podcast@virtualcoffee.io. You can find the show notes, sign up for the newsletter, buy some VC merch, and check out all of our other resources on our website, virtualcoffee.io. If you're interested in sponsoring virtual Coffee, you can find out more information on our website at virtualcoffee.io/sponsorship. Please subscribe to our podcast and be sure to leave us a review. Thanks for listening and we'll see you next week.


The Virtual Coffee Podcast is produced by Dan Ott and Bekah Hawrot Weigel and edited by Dan Ott.