*music* CHRIS: Welcome to Elixir Outlaws - the hallway track of the Elixir community. *music* AMOS: Are you guys old enough to remember 321 Contact? ANNA: Mmm… No. I don’t know what that is. CHRIS: No. I don’t know that at all. AMOS: I’m so old. CHRIS: How old are you? AMOS: Shhh… CHRIS: Do you wanna say? AMOS: I don’t mind. CHRIS: You can tell me after this. Off the air. AMOS: I’ll be thirty seven in August. ANNA: Oh, you’re not that old. CHRIS: That’s not that old. AMOS: Yeah, but you’re like four years younger than me? Don’t tell me ten. ANNA: Uh… Five? And I think Chris is even younger. AMOS: So that makes a big difference in what we watch on TV though. Think of what you watched when you were in kindergarten versus fifth grade. And fifth grade versus tenth grade. And 321 Contact I think might have gone off the air - it was a Channel 9 show. It’s where the Bloodhound Gang got their name. CHRIS: Yeah, I don’t understand that reference. I’m seven years younger than you though. AMOS: Oh my gosh. You guys are babies. ANNA: I mean, technically Chris is the youngest, so he is the baby. AMOS: He is the baby, but he has more facial hair than you so he looks older. *laughter* ANNA: That’s fair. AMOS: And than me. ‘Cause I can’t grow facial hair. ANNA: Maybe he looks oldest. CHRIS: You also have like a thousand kids, so - and I think each kid adds something like ten years. So you’re like… That’s really old, at this point AMOS: I’ve heard a lot of people say, at this point, that for every kid you have, you lose half of your brain, so I’m kind of done. CHRIS: Is everyone recording yet? ANNA: Yeah, I think we’re all recording. AMOS: Yeah, yeah, I think we’re all recording. ANNA: This is the show. CHRIS: Is this the show? ANNA: Yeah. Yep. CHRIS: Everybody, check your levels. Check your levels. AMOS: Double checking, double checking. ANNA: We’re working on that, we’re working on that. Checking. AMOS: See, the problem is, when I laugh, it gets way louder, so then… ANNA: Yeah… So just don’t laugh. It’s fine. CHRIS: Never laugh. ANNA: It’s totally fine, as long as you don’t laugh. AMOS: So… The biggest news, I think, that I’ve heard all week in the Elixir world - or Erlang world, is Erlang OTP 21 came out, and then Elixir released 1.6.6, which supports Erlang 21 - like, you can compile your stuff, but it doesn’t support all the features - oh, I keep saying Erlang - of OTP 21. But that’s pretty cool - and then I heard about a new feature of Continue in the GenServer. ANNA: Handle. Handle Continue. Yeah, that’s rad. AMOS: Which, when I went to research it, I found out that Jose submitted that like - a year ago, to OTP. But, I’m pretty excited about that. ANNA: For folks that aren’t familiar, do you want to maybe explain it a little bit? AMOS: Oh, okay, yeah. So, whenever you start a GenServer, the steps that it goes through in the back end are to assign its name to its bid. And your init call is actually pretty far down - which, isn’t too bad, but if you want to do like an after init - so, you do like a process send after, or just send, back to yourself to have something like - if you had something that was going to be blocking, you don’t want that in your init, so you put it in a callback. If you do that, then there’s a time period between the process being named and your callback being named where other messages can come into your processes, especially if it’s named. If you wanna do it without naming, you gotta be able to hand the pit out to somebody else while you’re setting up, which just seems crazy. So you have this gap, and the biggest problem where things can occur is where you have a process that fails and it’s restarting, so other things are already trying to write things to that named process. What Continue does is in the time out, when you do a return, in the time out part of an OTP return, you’d do a reply - whatever a reply is - your state, and then you can put a timeout - is it called hibernate? I don’t remember. Somebody help me out. CHRIS: That seems… ANNA: Yeah. AMOS: Okay. So if you pass in Continue - like a tuple with the atom Continue and then whatever arguments you want to go to that, then you can have a handle Continue callback, and it is grabbed and processed before the mailbox is checked. So your init can finish and return and then your - the handle continue will take over. So you - like, anything - your process isn’t in the startup state anymore like it was initially. Does that make sense? CHRIS: Right, so you have a - I’m gonna say some of the things you just said back to you to make sure we get it right, okay? But you have some process that needs to do some long-running thing or do a lot of state, um, or whatever it is. Some long, expensive process. And the way supervision trees start all their processes that are underneath them is depth first, and they all block. So, if you have some expensive thing in a process, it’ll block until that’s done. That might not be very useful for your system, or you might want to avoid that. The method I see people use a lot is that they um - in their init callback, they’ll send themselves a message. They’ll have the process send itself a message, which is like ‘do the expensive load thing’. But if it’s a named process, you can’t guarantee that’s a first message that that process will get, because someone else could be sending messages to that name, in which case it would arrive in the mailbox first, and this is a way around that problem. AMOS: And currently, I’ve seen people like. Send the message back to themselves if that init process isn’t done - that init callback - um, which - you know, that’s time consuming. And, you know, it doesn’t look great. And then there’s proclib, and - I forget what else. If you go look at Ranch documentation, they’ll tell you what it is because they need it for socket stuff, but there’s a way to do this. If you’re using proclib and - oh, interloop. GenServer interloop. If you use those two together, it gives you some really fine grain control of your startup, but it’s - I want to say esoteric. It’s a little hard to read if somebody doesn’t know what is happening there. They’re like ‘what the heck are you doing?’ and will probably switch back to ascend after. And I think that Continue is a much cleaner, more elegant solution. I felt a little weird about it using the hibernate section, you know, where you put in a time out, but I like it also that you can have - it doesn’t just have to be on init. You can have a handle call that sends a reply and sends back some current data and maybe you need to process something after you send that back, so you can do a Continue there and have that next thing do some background processing. Let’s say that you need to send some data, and then you need to write from the database, but you really don’t - like, the user doesn’t need to wait for that writing to the database. That would be one way that you could handle that pretty well. And so, ever since I found out about this, I’ve been wanting to hop into Elixir’s GenServer and put in support for it. But I’ve been a little busy. Haven’t been able to make it there. So that was my favorite feature, just cause it made the ideas go in my head. I’ve used the send after and such for initializing a process, and the - you know, don’t reply til later… What’s that called? Where you get a call and you send ‘no reply’ back? And then you have another message handler that ultimately does a reply. I’ve done stuff like that, but I think this is a really nice way to break that stuff up. CHRIS: Yeah, it seems like a really good time. ANNA: Yeah. It sounds like it. I like it. CHRIS: And you don’t have to worry about the standard ‘gotchas’ which is really nice. You don’t have to worry about those when you’re doing this, so that feels nice. AMOS: And it makes it very explicit, so the send after is not necessarily all that explicit to people. And if you document it well, they’re not gonna even go there. How about you, Anna? What have you been up to? ANNA: In Elixir Land… We’re having an Elixir Bridge this weekend, so, shoring up some of the curriculum stuff, and there’s a couple folks that actually want to contribute and write some new curriculum, which is rad and I’m actually really excited about that. And as far as my own Elixir stuff - mostly outside of work right now, but working on a project that I’m actually talking about at Elixir conf. It’s just building on the crypto stuff I’ve been talking about before, but it’s been really fun. AMOS: So all of your talks have this theme. I really like that. Like - like a group theme. Not just a single talk theme. ANNA: Two things that I’m interested in right now, which… Clearly Elixir I’m interested in ‘cause I’m here, but also the craziness of the crypto world, so… AMOS: And when you say crypto, you’re talking about cryptocurrency, right? ANNA: Mmhm. Yeah. AMOS: I thought so. I just wanted to clarify, ‘cause… That term is so overloaded right now, unfortunately. ANNA: It is, it is. It is very overloaded. There’s a lot going on. What about you Chris? Anything interesting? Especially with new stuff at Bleacher Report, or stuff that you’re working on? CHRIS: Yeah, um… The work stuff has been really good. Very fulfilling. Very challenging. We’re doing some cool stuff that I can’t talk too much about right now… Yeah, but it’s been good. And I’m getting to play around with some stuff in Elixir that I’ve been wanting to do for a while, and we’re able to leverage some useful tools that have been used to solve different problems which have been really cool. And that’s exciting to me, just on like a personal growth level. So that’s good. That part’s great. I don’t know. The rest of my Elixir front - I’m just feeling really done right now. I don’t know. This is a real downer. We don’t have to talk about this if y’all don’t want to. ANNA: What are you feeling? CHRIS: I just… I feel super burt out. And I don’t really know why. And this was actually something I wanted to talk to you about with all of the different crypto things that you’re working on and get your take on it. What’s the motivation behind the kind of stuff that you do and then like, how do you - oh, what’s the right way to put this… How do you continue to find excitement or motivation or… I hate using passion or words like that, but how do you continue down like. Continue working on stuff like that, you know - on your own time when you have stuff going on and you have podcasts to edit, and you know, like… all that kind of stuff, and people are mad at you because the levels weren’t good or something like that - how do you continue to find motivation through all that. ANNA: Yeah, I mean - that’s a good question. I ask myself - I think. I think what you’re feeling is normal. I think everybody who gives their time feels that at one point or another. And there are moments where I’m like ‘I need to take a break. I can’t do anything for a month or whatever. Like, I just need to take a step back and regroup and chill and have some time to myself outside of work. But I think the thing that really keeps me motivated is trying to help build a community that I want to see, right? Like I want to see more diversity in the Elixir community. I want to see more underrepresented folks in the community, I want to see, you know, new people speaking. I want to see people sharing their ideas and feeling comfortable sharing their ideas even if they aren’t experienced yet. And there are a lot of things that I want to see, and I feel like if I want to see those things, I need to try and make them happen, and because I’m in a position where I can try and make them happen, I should. I think those larger goals are what really keep me motivated. The thing that got me really interested in crypto - I mean, I thought it was interesting for many reasons, from the technology standpoint and currency and the politics and economics and everything, but I mean, there’s also this complexity - or, perceived complexity - and the reason I wanted to start talking about it is because people were talking about it like it’s this - I mean, there is complexity, but it’s also possible for everybody to understand what this thing is, and it doesn’t need to be so obscure. And again, bringing more people in, right. That’s kind of my goal and has always been my goal in regards to most of the work I do. And so that’s what keeps me motivated, partially because that’s the community I want to be apart of. Selfishly. I mean. If that answers your question. CHRIS: Yeah, I mean. It totally does. I’ve been - I’ve been fighting a lot recently internally with picking up all the open source stuff that I ostensibly maintain. Um. Just because its such a drag right now. Like, somebody opened up some issues on Wollaby the other day and it was a couple days before I responded to it, and they were like ‘your lack of communication is really hindering us getting stuff done’. And it’s like. Whatever. The fact is, is that it’s probably true. And they probably have these things and they’re trying to do their job as well. But at the same time I’m just like - it’s so hard to feel motivated to like. Work on this stuff. The same thing is true with all the Raft stuff I’ve been trying to work on. It’s just, like, discouraging. Half the questions I have to answer are just like ‘you didn’t actually read the paper’. I think it becomes discouraging - or, well, at least, it becomes demotivating. Because the reason you build a thing - or, some of the reason I built these things is because these are problems that I had or they’re problems I saw in the community. And on some level, I think they’re still important, but people are either not equipped to discuss them or they’re not interested in discussing it, or they’re interested in some facet of it that they think is useful, but they want to reinvent giant pieces of it, or - I don’t know. It’s demotivating, because it’s like, well, I was really hoping this would be a thing that was useful but - I mean, I think. I think part of it is in distributive systems stuff, people are naturally very distrustful of solutions, which is fair - that’s a fair feeling to have, because this stuff is tricky and its hard and we’ve seen teen blog posts about how everything is broken, everybody who works on this crap will tell you that it’s broken, and its really hard to get right, and I think there’s a nat - It’s basically warning labels at this point - which is to say it’s a piece of documentation that everybody looks at and is like ‘well, that’s not for me. That’s for the dumb people. That’s for the people who would mess these things up. I don’t need a warning label. I’m not going to get hurt. Of course, that’s when people get hurt. But I think there’s a natural inclination to figure this stuff out on your own, and it’s just kind of discouraging ‘cause - I don’t know. On some level, it’s all about - it’s marketing and everything else, and you just feel - I sort of continuously feel like I haven’t done a good job and I’ve spent a bunch of time working on stuff that people don’t like, or is bad, or isn’t useful to the community, or isn’t - you know what I mean, it feels like time wasted, I guess. AMOS: So, I think that - I don’t think that it’s just distributed systems. I think that in general, wether you’re putting out open source software or a product or anything, especially when you’re that close to it still - I’m sure that many people at Microsoft don’t care - don’t get every little detail, but when you’re at like a startup, or open source, you’re really close to the people using it. You get all the feedback, you get all of that on yourself. And when it’s something that you are putting out there, and you’re putting yourself out there, it can feel like a personal attack. Or, like you said, they didn’t read the paper or read it and didn’t understand, and then they’re coming in and trying to change things. You know, especially in open source, we go from inventor, engineer, teacher, helpdesk. Like, you have all of these jobs and I - that’s why the bigger, more successful open source projects have a larger core team, and hopefully the community gets big enough that they take that off you, that’s why all of my open source stuff is like 400 lines of code or less ‘cause I don’t want to deal with it… ANNA: And to be fair, Chris, open source stuff is hard, right. Especially when you’re putting out your own projects like Amos just said. I think open source stuff is hard, whether it’s like teaching or putting on workshops or writing software, or like… it’s hard. You’re giving your free time to do something that you think will be helpful, and people start using it and people have expectations, and they don’t necessarily know that ‘hey, this is being maintained by like one person who’s giving up their free time, and so… I think it’s just hard. I think what you’re feeling is totally normal. I also think like. If it’s not serving you, right, then there’s also a point where you have to reevaluate and be like ‘well, is this project still serving me, is it still serving my interests, is there a way to shift, and like. Give it to the community - and if someone wants to pick it up and continue maintaining it, maybe that can be a thing’. AMOS: You have to be okay with letting it go though, too. ANNA: Yeah, you have to be okay with letting it go, but if you’re done, then that’s also something. That’s why it is open source - you’re like ‘okay, I maintained this for a little while, and I really care about this thing, but you know what, I can’t do this anymore. And I give it to the open source community’. CHRIS: Right. And I think that - the letting go of things is really hard. I know I have real problems with that. ‘Cause you sort of - you start to develop a certain like - well, ‘this is a big part of myself identity. This is a big part of who I am or what I do, or whatever’ - um.. And that starts to feed back in a lot of - in a very negative way in a lot of places. And another problem, at least for me, is like no one tells you that you’re doing a good job. It’s only criticism. It’s not like personal criticism. It’s not like ‘you are bad’. It’s like - it’s ‘I had these problems’ or ‘this is wrong’ or ‘why doesn’t it do this’ or… You know. ‘Hey, you’re not being responsive enough for these tickets’… Most of it is totally valid and the people submitting issues are malicious evil people or whatever, but all you see is negative feedback. Or people duplicate your work and they’re like ‘eh, that was way too complicated, I’m going to do it a different way’. Even though their way is fundamentally flawed and isn’t going to actually work… AMOS: You have to be okay with that though. CHRIS: Yeah, that’s fine, that’s fine. But I - That’s what I’m saying though - I’m not sure I’m cut out for that. I’m not sure I’m cut out to be a maintainer of these things because of that. I do take those things like. Somewhat personally. ANNA: This is not indifferent to a conversation we had last week with Jose and Chris when people are like ‘I would like all of these things please because this is terrible and broken’, and they were like ‘well, here’s the reason behind all of these things’. It’s similar, right? Like. If you - that’s always gonna happen. People are going to have really strong opinions, which we all do… Especially in developed - in software development, and on some level if you’re not okay with somebody being like ‘eh, well. I’m gonna do my own thing’ and maybe redoing the whole thing, that is going to be hard ‘cause it’s gonna happen. CHRIS: No, I mean. You’re 100% right. AMOS: Even if they do that though, you made something that they got into enough, and you - in some way - inspired them to do something else, and that is also a benefit to the community. And although you may not agree with their approach or it might just not actually work and you might go, ‘you know, there’s some mathematical - there’s some proof that their version doesn’t work’ - you gotta be okay with that, and don’t take that upon yourself, and - that was their choice to go out and do something different. And maybe they learned a lot a long the way. I used to hear this guy in this specific ORM - not gonna talk about it, but - over and over and every time he would complain about it, I would say ‘go write your own’, ‘go write your own’, ‘go write your own’, and eventually he did and they used it in production for over a year - I think he worked on it - and he was in charge of the team and there was a lot of frustration, and he started to learn why these choices were made in the ORM, but he couldn’t see it until he tried. And maybe that’s what some of those people were doing too - they’re not gonna see it until they try. Or, they might amaze you. It’s hard to take that step back. ANNA: And to Amos’s point, Chris, it really does just dpeends also on your goals - like, what are your goals with the things you’re putting out there. Like, we’ve been doing Elixir bridge meets for a couple years. Some of them are really small - righ, we only get a few people. But if I, in the whole time that I’m doing this, get a couple people who are like ‘this is really awesome’ or ‘this makes more sense’ or ‘Elixir is rad’, or like, ‘yeah, I wanna dive more into this’ or ‘I feel more comfortable coming to these meetups’. Like, that’s a win for me. Even if it’s only one or two people, that’s a win. So, like. What’s the goal? Even if people are becoming more interested in distributed systems. Even if they’re taking a deeper look. Even if they’re just starting to get there - you may be well ahead of your time with this stuff in that like, a larger percentage of the population that’s working with Elixir isn’t maybe ready for what you’ve built. And I don’t know. Maybe that’s not the case. But like. What are your goals? Who are you helping? And people who are coming to you - maybe they haven’t read the paper or maybe they will. Maybe they are at least diving in a little deeper and in a couple years from now, they’ll be like ‘oh, yeah, I’m gonna go back to that thing now that I understand it a little better’. So maybe like. Be a little more clear with the goal with the thing that you’re putting out there. CHRIS: Yeah. That motivation is - I think that’s the key thing. But that’s also hard. I think that is potentially why I’m not a very good open source maintainer ‘cause I don’t know that I have good motivation. ‘Cause I see these problems that I have in front of me, an at some point, I’m just sort of like ‘I don’t have these problems anymore, so I don’t know what else to do with these things now.’ And it’s just like - it’s hard to get that feedback. And it’s also hard to feel motivated while working on certain things ‘cause it’s like ‘well, I don’t have the problem that I had then now’ - does that make sense? AMOS: It’s hard to write a tool you don’t need. CHRIS: Yeah, exactly. Or a tool that it feels like no one else wants. That’s the other part of this, and that’s the more sort of demoralizing thing is like - because marketing is such a key part of open source stuff - and it is - if you’re putting stuff out there because you’re like ‘I want people to use this, I think it could be beneficial to people’ and everyone says ‘I don’t want this’ or like. At least like sends you that economic signal that they don’t want it - that’s fine. I think it’s also disheartening. And I think it’s also discouraging. At least for me, in the sense that - it very naturally discourages you from continuing to work on a thing because it feels like nobody wants it. And that’s not bad - you don’t have to make an emotional case about that, but it does sort of rob your motivations for doing it, whereas I think if you can divine a more sort of altruistic - or, just generally higher level motivation that is almost foundational - like, Anna, you’re saying “I want to make everything about this more accessible’ and that’s what drives you. Having those sorts of motivations is so key to continuing the effort - continuing to put one foot in front of the other. But I also think that divining those sorts of motivations - at least for me - is very very challenging. ‘Cause I don’t know that my motivations are pure, and I don’t know that my motivations are… I don’t know what they are for a lot of this stuff, and I think that becomes a huge barrier for wanting to put effort into this… I dunno - sorry, this is like super - again, I’m doing my thing where I’m talking too much… ANNA: No, but I mean I think this is an interesting discussion as far as like - I think open source work is really hard, right? In general, in the sense that it takes a lot of work and it’s often thankless, um… and so again, yeah, have a really clear idea of why you’re doing what you’re doing and if that’s not serving you anymore then that’s the other nice thing about open source is that you can just stop. If it’s not serving you anymore and you’re just like ‘I’ve gotten what I needed to get out of this out of this’, then you can - you can, if you really want to, find another maintainer if someone is super stoked on it or just be like ‘hey, I’m giving this to the community. Does anyone want to take over maintaining it?’ That’s totally okay. Then you can move onto other interesting things that motivate you. ‘Cause everyone’s motivations are different. But especially because you’re giving of your time and this is your personal free time, I wouldn’t feel bad about ‘hey, I don’t feel good about this thing. I don’t want to build it anymore’. AMOS: Build a tool for you. When it’s no longer useful for you, allow people to take it. Or, go look at the number of downloads on Hex. If you’re the only one who’s ever downloaded it, don’t worry about it. Just leave it there. Like Anna said, it’s thankless. You’re not going to see the people who don’t have a problem with it very often, unless you just change their entire life - then you might get a thank you. ‘Cause if I thanked every maintainer of every open source software that I used, I would never actually get to use the software ‘cause I’d still be thanking people right now. ANNA: Open source software is important. It has changed the world - I think it’s amazing. I think it’s incredible. I think the people who do it are incredible. On the other side of that, though, I think if you ask any open source maintainer, no matter who you ask, I think they’ll say it’s hard, for any project, no matter how big - although I think it’s harder when it’s big - or how small. I mean, I think it’s valid. I think - I wonder what we could do as a general community of people who use the software to be more aware of that. I’m sure I have, or everyone has, been like ‘hey maintainer of this project, why aren’t you responding to my PR? I need to update this thing so I can use it for this other thing that I’m doing.’ AMOS: That’s a hard position to be in as a user too. ANNA: Exactly, so that - that thing that we’re like - I think sometimes we all forget - free software that someone built on their own time - wait, respond to me please… And so, navigating that, right. It’s hard as a user, ‘cause you’re like - I want to use this thing, I want to use open source software, blah blah blah, um… And then it’s hard as the maintainer… but I don’t know how to bridge that. Like, it’s hard on both ends. And on the people building the software it’s really hard. AMOS: When I read issues and people are grumpy too, or coming back and saying ‘hey, I put this in yesterday and you haven’t said anything’, I try to take a step back and - you know, the time when you’re at work and you’re four days into a problem and you’re trying to figure it out and you’re mad and angry and frustrated and feel like your boss shouldn’t even pay you because you haven’t done crap for a week and you find out it’s a piece of open source software with a bug and you don’t know how to fix it. And then that’s where they come in. So I try to put myself in and say ‘okay, that’s where they were’ whenever they’re grumpy like that. But then as a person putting in a request, I will often - that’s when I do say thank you. Like ‘hey, thanks for this product that I’m using. It’s pretty fantastic. I have this problem, maybe you can help me out with that’. ANNA: And I think that maybe a little bit of that would go a long way, when you’re a user of open source software, acknowledging the efforts of the maintainer before you say - AMOS: ‘This sucks.’ ANNA: Or, ‘please help me’. I feel like maybe that would go a long way. I dunno. AMOS: And then I also think that on bigger projects, when people put things in there and say ‘nobody responded’, just know that there are a lot of people using it, so they assume that there should be a response quickly. It’s different you’re working with a project that has mainly one developer and a couple PRs coming in. I have one - what I could consider a more altruistic, not-for-me project out there - the Grove Pi project, and I don’t get to put enough time into it. But luckily I don’t get very many pull requests anymore - or not pull requests, but complaints. And I would like to put more time into that, but like - like you're saying about the other stuff - if you’re not using it all the time, it’s easy to say ‘that’s a back-burner problem’. ANNA: And I think that there’s - are there other things that you’re excited about making? Would it be easier to let these other projects go? If you’re like - oh, hey, there’s just other things I want to do and put out there, and… CHRIS: Yeah, that’s probably reasonable - I think at some point you end up with so much to do that it becomes hard to parse anymore - it’s the whole, you’re just staring at the element and you know you need to eat it just one bite at a time, but at the same time, it’s like all of it - it’s hard to even figure out where to start on that. So, I don't know. I think that’s probably the most reasonable thing. And then you have to deal with this sort of like, emotional imposter syndrome crisis where you’re like ‘oh, now I’m about to give up a thing that helped shape this self-identity and help shape - you know, this way that I look at myself. ANNA: Yeah, this imposter syndrome is a whole - we can talk about that. I mean, Chris McCord even said on our last podcast - I think it’s a thing that people feel at - that most people feel. Right, I was going to Stockholm, and I was a little nervous about speaking at Stockholm, ‘cause it’s… I mean, all the conferences are awesome, but it felt like some heavy-duty folks were gonna be there, and I was talking to one of my mentors and she was like ‘true confidence doesn’t really have an end-state’. We’re all going to feel imposter syndrome maybe forever. And I think that’s totally normal. You’re doing the best you can, you’re doing great work. Right, and - I don’t know. I don’t know how to deal with that, because I think everyone deals with it - I think everyone has that on some level or another. CHRIS: I can’t imagine what it would be like to be - you know, Chris or Paul or some of these people who have these huge libraries that everybody is using, and - you know, having ot field all of that and have that be such an overarching consuming part of your life, and I don’t know how they cope with that emotionally. And I barely get anything, relatively speaking, in terms of feedback on my stuff, and that’s enough to sort of push me over the edge, you know. It’s tough. You have to… I think it’s sort of - for better or for worse, you have to have thick skin about this kind of stuff. You either develop it or you just walk away because you don’t have it immediately - but, yeah, I don’t even know what it would be like to be in their shoes. ANNA: Right? I think that that’s even - the bigger the project, the harder it is to walk away from, ‘cause so many people are using it. CHRIS: Yeah, if either of them - if Chris wanted to walk away from Phoenix, right? How? How can he? ANNA: I mean, now there’s a team, so it’s probably a little bit easier, but I imagine it would be… CHRIS: I mean, logistically, he probably could, but I know from - I mean, just from being honest about my own life - it’s hard for me to walk away from the open source projects that I have and the tools that I have or like - just certain things that I’ve done before… Because it does - it becomes part of who you are as a person, it becomes part of how you see yourself… And how you - you feel like other people see you, and walking away from it is giving up a part of your life and a part of your own personal - yeah, self. I can’t imagine being attached to a thing that was so big and - and I’m not saying Chris feels this way, I have no idea - but I mean just like - if he ever did want to walk away from it, how could he? I can’t even imagine that kind of feeling. Or if Paul wanted to be like ‘I’m done with distillery, I don’t want to ever work on this ever again’. But also like how could he, because it’s like this huge thing. It’s interesting to me from a psychological standpoint - and I’m not saying that they feel that way or whatever, I just - I also look at my own life, and I’m sort of like ‘I don’t know…’ It’d just be an interesting thing to cope with. Like, my stuff is not nearly to that scale. ANNA: Yeah, I think it’s interesting. I wonder what thoughts are, especially when you go back to like imposter syndrome, right, or like the value that you - like - I think it’s hard if you put something out there and you get very little feedback or no feedback thinking that it doesn’t have value or you’re not doing a good job or whatever. I mean, again, what Chris was saying - he even felt imposter syndrome a little bit - like, what - i don’t know if you have thoughts. I think about this a lot from a psychological perspective. Why does it exist - why do we all walk around with this feeling of ‘I don’t know….’ even though, Chris, you’ve been working with Elixir for a while and are clearly quite skilled in it. CHRIS: I’m not really… AMOS: I think I saw imposter syndrome on your face right there. CHRIS: Yeah, no one is going to see the video of me making that ‘no way’ face. AMOS: That’s why I had to say it. CHRIS: I’m not actually a Knowledgeable About Elixir. I just play one on TV. ANNA: Oh, there you go. There you go. I don’t know what y’all’s thoughts are or how you deal with it, or if you even feel it or not, but… It seems to be pretty common with almost everyone I talk to at one point or another, and yet, how do we deal with it? AMOS: I talk to people. Like - go to local meetups, talk all the time, not necessarily stand up in front of the room and talk, but sometimes do that - and that helps me overcome it to a point. It also - ya know, I go into it and I’m thinking ‘this is going to be the worst talk ever, and no one is going to get anything out of it, and - but right after I give it, usually people are like, thankful. Or even in a conversation where people say ‘oh, hey, that’s something I’ve never heard before’. Like, those kinds of things make me feel a lot better about my place in it all, adn my skills. Do I feel like an expert? No. Will I ever feel like an expert? Probably not. Do the experts feel like experts? None of them that I feel like are experts think they are, so… ANNA: Yeah, no, that’s hte most interesting thing about it all. AMOS: ‘Cause all the beginner - well, like, Intermediate people that I know think that they’re experts. CHRIS: That’s the thing, though. The deeper you get into it, the more you realise how much you don’t know. ANNA: I mean, that’s in life. The more you know, the more you realise how little you actually know. CHRIS: Yeah. And it’s terrifying. I think there is a level at which you sort of realise ‘wow, I don’t know anything’. And the next level beyond that is ‘wow, I don’t know anything, but that’s okay’. And you get comfortable with it. AMOS: Right. How long have you been smarter than your parents? ANNA: Right? AMOS: I always tell everybody that every year, my parents get smarter. I’m still smarter than them, but they do get smarter. ANNA: No, I mean, my mother has been a software engineer for something like 20 years? Something like that. Anyway. A long time. And I talk to her sometimes, and she’s like ‘the only difference now is that I’m really comfortable with the fact that maybe I don’t know the thing, but I’ll figure it out. I used to be nervous or feel like I should know more… The only difference now is like - it’s fine. I don’t know the thing. But there’s a lot I don’t know and we’ll figure it out.’ CHRIS: I have to fight this so often. Even with this - especially with this new job, and coming in with a specific skill set and specific tools and stuff like that, and feeling deep down that I need to sort of step up, and you know - and again, my imposter syndrome and insecurity and everything else, um… rears up in me like some sort of dark beast, and I feel compelled to step in and be like ‘oh, well, actually it works this way’ and be like that guy, or to always have answers and to not feel things… ANNA: Minus the ‘well, actually’. AMOS: Ha, ha CHRIS: But you know what I mean? You feel compelled to be an expert, even if you aren’t. And like, logically, you could say ‘I don’t actually know this, but I’ll pretend that I do’, and you feel those impulses, and honestly, it takes a lot - at least for me - to fight that and be like ‘actually, I have no idea how that works. I’ll totally find that out though. I bet I can google around and get answers to that’. And that still - I mean, this probably says way too much about me and my deeply fragile ego, but it’s still at thing I have to fight against, ‘cause my natural inclination is to put up that barrier and hide behind it and to be vulnerable and actually say ‘oh, yeah, I have no idea’. AMOS: You need a hobby you know nothing about and a local meetup to go to for it. That’ll put you in that spot of having to be wrong. CHRIS: I think it’s important. I mean, number one, if you want to get good at something, go surround yourself with people who know a lot more about it than you and you’ll sort of naturally pick up a lot of this stuff. The other thing that goes along with that is putting yourself in situations where you are uncomfortable - where you don’t know things, where you’re the novice, where you’re having to pick up those new skills. I feel like that’s totally great advice. ANNA: I feel like as an industry in general, it’s like - it should be more okay to be wrong, especially when you’re learning or when you’re new. I feel like there’s often this - and maybe this is something we all create as thoughts in our head that and isn’t real, but we feel like it’s not okay to voice an idea or an opinion, because maybe you don't have the right answer, so you wait until you only have the right answer. But that doesn’t help with feelings of imposter syndrome, it doesn’t help with like, asking questions, right? If you don’t know, but you’re afraid to be wrong so you don’t ask the question, how do you - a, how do you get the information you actually need but b, maybe you’d be shedding some light on something that would give others something that would give others a different idea of how to think about the problem. CHRIS: Yeah, and the dirty secret is that like, most people don’t know. Most people are still going to go do research and find out, and there aren’t very many black and white answers to these problems. It’s like ‘well, it’s all couched on context’ and our famous answer of ‘it depends’. You have to look at the actual world holistically of the problems you’re trying to solve, and then apply the techniques and tools and experience and research to be able to go try to solve it, and that’s a thing I don’t think we talk about enough. In order to learn, in order to get good at things, you also have to be psychologically safe. You have to be in a place where you feel like you can fail, and that’s not gonna have reprisal. ANNA: I’ve worked at places that were terrible at this. Luckily where I am now, I think folks are generally really good about it, but I think you can’t have the thing where you yourself internalise it if you don’t have the environment that supports it, and the more you see that kind of behavior modeled where people are asking questions and its’ okay, etc., etc., I think it’s almost easier to internalise, otherwise it’s almost impossible. And I think that just goes back to what drives you - like, if you’re driven by… what’s the goal of the project? What drives you to keep moving forward? And I think you’re right - if it’s external feedback, it’s much harder to stay motivated. CHRIS: I would go so far as to say, if you’re motivated by external feedback with this stuff, then walk away from it. AMOS: Don’t do open source to become famous. CHRIS: Right, like if that - your motivations do have to come from somewhere inside of you, otherwise you won’t continue to do this stuff. It’s just not fun enough. Sorry. That’s a bit of a bummer. ANNA: No! It’s not a bummer. I mean, I think it’s a real thing that we talk about, because I think - these feelings are not unusual to you. I think we all have these types of feelings. You know. There are moments where I’m like, ‘oh, I have a workshop this weekend. Super excited about the workshop, but it’d be nice to just have a day to chill’. I think that’s normal. And I think talking about it isn’t a bad thing, and I think we need to talk about it more and kind of normalise the fact that this work is hard. AMOS: It’s okay, Chris. You’re just like everybody else. CHRIS: The take away here is, handle continue in OTP 21 is going to be really nice. ANNA: Yes. That’s the takeaway. CHRIS: Also the complier is going to be better, so. ANNA: Yeah, cool! Any last thoughts before we wrap up? CHRIS: No, I said everything I needed to say. ANNA: Me too. I feel like Amos - do you have any more thoughts? I feel like Chris and I talked a lot this episode. AMOS: Ah, no. I was listening. I feel like I said everything that was needed. ANNA: Well, alright, y’all. Have a good day! AMOS: You too! AMOS and ANNA: Bye!