*intro music* AMOS: Welcome to Elixir Outlaws: The Hallway Track of the Elixir Community, Episode 3: The Elixir Track of the Hallway Community *intro music* CHRIS: Oh, you’re not recording? ANNA: Oh, now I am. AMOS: You asked if we started, but then you’re not recording? ANNA: Now I am. I was confused. AMOS: That’s alright. We’ll just have a couple minutes of Chris and I talking to emptiness. We’ll put it at the beginning. It’ll be great. ANNA: That’s fine. Got it. We’re all here now. CHRIS: I was worried because I had to go downstairs and I had to press my coffee - I was rocking the aeropress today - so I had to run downstairs, and I was looking at the time and I was like ‘I’m gonna be late!’ So I was pressing faster and coffee started spraying everywhere. AMOS: Ah, aeropress is wonderful, though I like that. ANNA: Is it? AMOS: It’s pretty awesome. I also have used it to make a cup of cold brew coffee. ANNA: Interesting. How did that work out? AMOS: It worked really well. So I set it up like you’re gonna press it and took like a liter plastic bottle, cut the lid of it off, and poked a single pin hole in the lid of it, put ice in there, then let it slowly drip through the coffee, as the ice melts, and it turned out fantastic. ANNA: How long did that take? AMOS: A long time! CHRIS: Totally worth it. Toootally worth it. AMOS: It was pretty worth it. CHRIS: That’s some true artisanal shit right there. Like, hand rolled dispoque found things coffee. AMOS: I was hard up. I just needed some iced coffee. CHRIS: I carry an aeropress with me when I travel - I have two, and one of them lives in my suitcase. I take it with me everywhere, and I’ll... I also have a little hand grinder and some fresh beans, and then I grind coffee in my hotel room, and I heat water using the little coffee maker they have in the hotel room, and I’ll make a little aeropress and it’s my bulwark against madness being away from home. That is… its my one creature comfort that I have everywhere. AMOS: They’re fantastic for camping, too. They pack small, it’s easy to go. CHRIS: And you can get metal filters for them. So like, typically they have a paper filter that you press the coffee through, but they make metal filters and that’s what I use. They’re super easy to clean up. AMOS: I like paper filters ‘cause I don’t like the environment. ANNA: As long as you’re clear about that. AMOS: Yeah, just, throw everything away… ANNA: So is there any interesting feedback before we get into this episode about property testing from last time that you all heard? AMOS: I didn’t get any feedback about property testing. I did have… Michał Muskała - terrible with his name. He even sent me and said that Google Translate knows how to say his name - ANNA: That’s awesome. AMOS: - pretty well… Here, let me see if I can play it. You’ll have to tell me if it gets picked up… Oh, no, it played into my headphones! Michał Muskała. I’m probably messing it up. But he sent me some feedback saying the Google Summer of Code picked up five Elixir projects. One of them is around the dialyzer issue that we talked about with it being really hard to read error messages unless you’re comfortable with dialyzer itself, or with Erlang syntax, so that’s pretty cool. We have a link in the show now to the Beam community Google Summer of Code page, so that’ll be out there for everybody. ANNA: So for those of you that aren’t familiar, Google Summer of Code focuses on bringing students into open source software development. That’s how it works. AMOS: I believe… that’s my understanding of it. I think they get a stipend or something, and it acts as a summer internship for them. CHRIS: Yeah, and then they typically, I think, pair them with a mentor as well, from the community or from experts in that field or whatever, so they can kind of get - I guess so they can get production… sort of… real world expertise, like important research projects or experiments. There’s some cool stuff for the entire Beam community, as they call it, coming up. Yeah, the dialyzer thing is cool. It looks like it’s going to be unifying the different projects that are out there to support dialyzer in Elixir, and it’s gonna have better errors and stuff like that. There’s one for tensorflow. Like, adding tensorflow bindings, which could be super cool. That is very relevant to my interests and stuff I’ve got going on. Oh, they’re adding bindings to Elixir for Barrel DB - have either of you looked at Barrel DB? ANNA: No, what’s that? AMOS: I have not. CHRIS: It’s a database - I’m gonna get all this wrong. I think it’s like a document store, and it’s in Erlang… So you can use it directly from Beam stuff. It seems like its a bit of a replacement for Mnesia, if that - if you have that kind of use case and you don’t want to dip out of the beam to store data. So that can be really really cool. I’m using the RocksDB that they have in Raft. Yeah, it looks like they have other interesting projects in here though. So, yeah, that could be some good stuff coming down the line. AMOS: Take a look through those. They’re… there’s a lot to read in there, so I don’t think we can go through all of it, but that’s pretty cool. ANNA: It’s also an awesome way to get more folks exposed to and interested in the Elixir community, so that’s rad. CHRIS: I was also reading over Fred Hebert’s - it’s about the guarantees - blog post earlier. Just ‘cause there was a conversation on Twitter earlier and it came up… just, freaking, everything Fred works on, like, his writing to me - it has this quality about it that it always feels… evergreen. I mean, I’ve probably read this blogpost like twenty times. I always go back to it and I reference this stuff. And it’s not like a super long blog post or anything, but there’s so much in here that is so important. And his way of explaining things is so succinct and clear. I dunno, he just has - his writing style is so good. I just - I love everything he’s worked on. I’m like an unabashed fanboy of all the things that he works on. Yeah. It’s fantastic. His, and Evan Miller’s stuff. Evan Miller’s blog posts. They just have that sort of - I can go back and reread those and they always feel like - like they’re fresh. They’re funny and engaging and really technically interesting. I dunno. They’re great. AMOS: I don’t know Evan’s. If you could put a link to his blog in the show notes, that’d be cool. ANNA: Or to both blogs. AMOS: Oh, yeah, yeah. We definitely should link to Fred’s. We’ve talked about him on what - every show so far? Maybe we should change our tag line from ‘The Elixir track of the hallway community’ to ‘Fred fanboys’. CHRIS: I’d sign up for that - for that title for sure. I put some choice Evan Miller blog posts in here that are both super funny and really really interesting, and, you know, really insightful. AMOS: Nice. You’ve pretty much filled in the rest of my day. So, on Thursdays, I do no client work. I use that time to read stuff and catch up - well, that’s the intention. Half the time I end up doing accounting instead, so I will spend the rest of my day looking at that. Hey, one of the interesting things that I saw that might be fitting for us to talk about - I don’t know if you have anything else to say. We don’t have to go straight to this, but in the Elixir forum, Platformatec, Plataformatec… plat-a-form-a-tech… ANNA: You got it. AMOS: I always want to remove the a after the t, so it’s like ‘platform attack’. Anyway, they have a contest for people to put in 280 characters on ‘what was the biggest challenge you had when adopting Elixir’. And I know we’re talking, so, I would like just to hear what you guys have gone through, but, 280 character in speaking, so, should we put a constraint on this? ANNA: And what do you think the context - like, the biggest challenge in what - there’s so many different contexts that that statement could be taken in. CHRIS: Right, like, is the biggest challenge getting your employer to let you use it, because that’s easily been the biggest challenge I’ve had with Elixir, is getting people to actually let me use it. ANNA: And the question behind that being why, right. Like, is it language specific? Is it because they think it’s hard to hire? Is it because, what other risks associated with that? I’d be curious to know why. CHRIS: Anna and I worked together at Carbon 5 a while ago before I left to go do other things, and at Carbon 5, it’s tricky to - Carbon 5 is a consultancy, and they work with clients in the Bay Area, and in LA, and other cities, and one of the things that I think makes them a good consultancy, and one of the ways that they provide value to their clients is that they don’t force technology on their clients. So a lot of times the client can dictate what kind of technology we’re going to use. And if you’re a new startup, or you have limited funds, or you’re an established company that already has a large application in Java or something else... You’re not looking to move to something else. You’re looking for people to come in and help you. And there’s very few companies that are just getting started - there are very few startups that are looking for help and don’t want to do something well established, just because - ANNA: Hiring, etcetera, right, like… CHRIS: Well, I mean, I think it can even affect your… For a lot of companies, I think they look at it, and, in their minds, it can affect their ability to get acquired. If we’ve got some fringe thing, we’re much less likely to be able to flip this company if we need to, etcetera, etcetera. Like, there’s a billion Rails people out there in the world ready to work on your Rails app, to some degree. AMOS: That can be hard to find, too. I know, I did Ruby and Rails for a long time - still do a little bit - and there are companies around here - I worked for a large hospital conglomerate - I don’t want to say their name - but they only wanted to do Java projects because Java developers in the area are kind of everywhere. They’re a dime a dozen - and they’re cheap. You can get a senior Java for half the piece of a senior Ruby developer pretty easily. CHRIS: Do you think that’s like, a fair… am I being unfair in that assessment, Anna? ANNA: Which assessment? CHRIS: Just, in the nature of early stage companies, and, like, not necessarily wanting to try out something fringe or something they’ve never heard of. Like, it has to be proven, sort of. ANNA: I think it depends on the company, right. Like, we’ve had a couple projects that have been pretty gung ho about - no we actually come and in and be like ‘we wanna use Elixir’ or once we are like ‘hey, we could do this in Elixir’ they’re pretty excited about it. I mean, a lot of companies are trying to mitigate risk, so either its a cost thing or a recruiting thing, or there’s less kind of a staff, even though Erlang is much older. So my question is, so how do we, as participants in the community, how do we help shift that? Like, Ben Marx did a really good talk. He actually came and gave it a while ago, about how they did a bleacher report, where they just took a tiny piece of their codebase and started with a small sliver in Elixir, and built bigger and bigger to really mitigate risk until they’d rewritten a large portion of their application into Elixir. Like, where do you start? How do you start if - whether it’s engaging people, getting buy in… there’s just so many different aspects that make it challenging. CHRIS: So I want to - I have so many questions about that, and they tie into so many other things I’ve been wanting to ask about your work with Elixir Bridge, but I want to ask a question real quick before we go into that, which is…. do you - has the - has… we can cut that out. Start over. AMOS: Oh, no. Oh, no, that’s going in. CHRIS: Wait, is this the show, hang out. AMOS: Yeah, since you said last time - since you said in the Elixir forums that I did light editing, I’m gonna do light editing for you. CHRIS: I mean - you do… ANNA: Well, what was your question, Chris? What were you trying to say? CHRIS: Have people become more interested in Elixir recently? Like, have you seen like an uptake in clients that are more more willing, more excited about doing Elixir work than before? ANNA: I think there’s an uptake. I think it’s slower, right, like, I think there are more people that are interested, and I think it’s continued to grow. But like any community, I think it takes time. But I definitely think it’s growing. AMOS: I probably get an email every week or two about somebody asking me if I have time to do work on their Elixir project. Or to start one. I find that a lot of them are Phoenix-based, or Nerves based. Like, I’m either doing hardware or I’m doing a website. And not much in between. That’s been pretty interesting to watch that grow in the last year. And I wasn’t sure - at first - if it was just me getting out there more, and people seeing what I do, so they’re reaching out and saying ‘oh, you’re doing Elixir now. Let’s do some Elixir’. But it seems to be growing faster. ANNA: Well, and I think people are also seeing success stories, right, like, Pinterest had some success. Bleacher report had a lot success. And missing out and blanking out on other companies that have had a lot of success… CHRIS: Discord is the - I think Discord is the other really big one. ANNA: Discord, right. And so, in the San Francisco community, I hear more and more about people. You know, Admiral, who has done a lot of stuff in Erlang has started to adopt Elixir now. And I hear a lot about people starting to engage more. AMOS: I think you can watch the conference circuit now and get a feeling for that. There’s more and more conferences now that I’m seeing - regional conferences and meetups. ANNA: Yeah. And even with Elixir Bridge, it’s still small. It’s still growing. But people are really excited - the people that come are really excited to learn, really engaged, and some of them have done some Elixir, and some of them have done some Elixir, some of them are just curious to learn about it. But at the end of every workshop, everyone seems really psyched to work on it and learn about it. So there’s definitely interest, not just from inside the community but from people outside the community want to learn more. CHRIS: This definitely segways nicely into the stuff that I was interested about with Elixir Bridge… Actually, just in case anyone isn’t familiar with what Elixir Bridge is, can you explain it? ANNA: So Elixir Bridge kinda grew out - I had done a lot of work with an organisation called Rails Bridge, which started out in 2009 - two women, Sarah Allen and Sarah Mei - they were tired of being the only women in their tech meetups and their tech conferences, etcetera, so they started Rails Bridge, because Rails was - and still is - really popular at the time. They were like ‘let's get 20 women on Rails and teach them Ruby and Rails’ and they got 60 women and ended up doing it over and over again. And that started in 2009 and its still going. So the inspiration for Elixir Bridge kind of came out of that, where we put on workshops on the weekends for unrepresented folks in tech to help them learn Elixir and Phoenix. We try to make it as accessible as possible, so we provide childcare, food, etcetera. CHRIS: Awesome. So, are the majority of people who come to Elixir Bridge - I dealt, like with one or two Rails Bridges before, because of Carbon 5, and I know a lot of people who were coming to Rails Bridge were between ‘I’ve never programed, ever. I don’t know what a shell is, I don’t know what an editor looks like’. You know, all these things that - so, totally fresh. Totally new. To ‘I’ve done a little bit of programing. Maybe I’ve been to Rails Bridge before or…’ So, it was somewhere in that range. Is Elixir Bridge in the same demographic, or do you find more people already have more experience, or… what is the difference there? ANNA: Yeah, so, actually, we have - we specifically - for our current set of workshops, and we’ve been doing this for a year and a half to two years, we actually ask that people have a little bit of programing experience. We’ve seen people who have a little bit. We’ve seen people who are developers in other languages. So, it kind of runs from people who have a little bit of programming experience already, are familiar with data types and such… people who are developers. Just maybe, don’t know Elixir. We haven’t actually gone back yet - and this is something I want to do in this coming year - is fill that curriculum to a place where it would be friendly to people who are like ‘this is my first programing language. That would just take more writing of curriculum that we haven't done yet. CHRIS: I mean, it’s not like writing of curriculum is like, super hard. You should be able to write that out super fast. AMOS: This is why I don’t teach as a consultancy. ANNA: And it’s something I want to do - it is just - it takes time - as you just indicated - to write that. Rails Bridge just has an amazing intro. And the question also becomes, from a reality standpoint, I totally want to do that, because I think it can be somebody’s first language and curriculum… it just depends on the goal of the individual. Like, if somebody is like ‘I want to be a developer. I’m trying to make that transition, I’m trying to get a job, what language should I learn?’ Like, from a realistic perspective, Elixir Bridge might be the best place for that, right? I mean, we’ve talked about, currently the community is somewhat limited, but I still want that available for people who, it could be there first language. CHRIS: That makes total sense. That’s something I was wondering about. What are the ramifications of someone who wants to take a job programing, and saying, ‘oh, let’s teach you Elixir’. It almost feels like you could potentially… I dunno. It’s hard to say. ‘Cause, like, the skills that you would learn could really translate really well. And, like, I think that learning to program in any language, those skills translate to other languages and a host of other things, but I dunno, like, if your goal is to get a job, like… there’s not a ton out there right now… ANNA: Yeah, not yet. CHRIS: Whereas, like, if you teach them JavaScript, or you teach them Ruby, or Java, and your goal is to get a job, well, as long as that person is going to interview for those languages, they’ll have no shortage of companies that they can go interview at. AMOS: I think a lot of it is, that, not just Elixir, but the number of jobs that are object-oriented versus functional… so, if you have one object-oriented language, there’s more jobs available if you’re hopping. Like, let’s say that you started Ruby, and there’s a Java job. You can probably get that job, and a lot of the ideas that you have when you’re new to programming transfer well, but maybe not so much if you learn functional, and then you’re trying to go for an OO job, and you’ve never done any of that. Not that you can’t write functional code in those languages, but interviewers might not view you the same way. ANNA: Yeah, it’s always interesting. And, you know, with Elixir Bridge, the goal is to always kinda create, like the Elixir community I think is really trying and everyone’s hearts and heads are in the right place. Like, they want to be a very welcoming, a very diverse community. They want to make sure that people do have access to learning this thing if they want to, but you’re making sure that you’re not setting them up for something that wouldn't be beneficial to them, right? CHRIS: Totally. I think it - I think that’s incredibly admirable, like, to have those resources available if people want to take those opportunities. And I do have friends that are like, this is one of their first languages. Maybe not like their first-first, but it is like - this is the thing that they really got into immediately after learning some JavaScript. And they’re loving it. And they managed to get a job doing it, so, there is… there’s an anecdotal point of data for you. But, yeah, it’s an interesting time. One of the challenges I’ve always battled with in my head is, one of the reasons I was attracted to Elixir is that it helped me solve so many problems I had coming from other languages, in terms of fault tolerance and supervision and concurrency and these types of things. And I don’t… You only know what you know, and you can’t live someone else’s life. You can just have empathy. You know, I don’t know if I would had been as attracted to Elixir if I hadn’t come in with the experiences of fighting with these things and knowing the benefits of it. So I’ve always wondered about that, too. Is it as readily apparent to people who don’t have experience to these things? ANNA: I don’t know, I mean, I also have friends who have learned it pretty early on. I think, also, just the more that you dive into it and see what’s possible, even if it’s not apparent initially, becomes apparent pretty quickly, even if you haven’t had previous experiences, just because it’s so powerful. But, I think, that being said, coming from other places and having previous experiences also lends itself really well to understanding what’s possible. AMOS: Do you really need to appreciate the ‘let it fail’ attitude and know why, in order to succeed, or any of the other Elixir paradigms that we as programmers that have been around a while, really appreciate having, that solve some of the problems we’ve been to… I don’t think that’s a big deal for someone coming in new. ANNA: No, exactly. AMOS: ‘Can I make something?’ Like, that’s the biggest… ANNA: Yeah, and ‘does it do what I want, and how do I do it’ and Elixir happens to make those things really easy. CHRIS: Yeah, I totally get that, um, yeah… I think… I don’t mean to say that people couldn’t experience those things or couldn’t get it. I always worry about the immediacy of teaching someone new programming. I always want there to be that immediate feedback you can get… You know, for better or for worse, however you feel about Rails, Rails is like giving tons of people jobs, and like, people who never would have had jobs or never would have been interested in programming before, simply because it gave them that sense of immediacy. Like it did for me. Like, I learned Rails when I was doing a bunch of Java stuff, and Rails was one of the things that made me love programing, because I could build things. I didn’t need to take a month in this data model in this Java thing. I can just start building thing, as a goal of teaching. Maybe not as a language goal or as a framework goal, but as a teaching goal, I’ve always thought that you - like, wanting that immediacy. And I’ve always thought - you have to go through steps to build things in Elixir that you don’t understand why you need immediately. Are you just delaying the gratification somebody gets, or no? And this is me being totally nieve. Like, this is an honest question, I don’t know. ANNA: I think I totally agree with you. Like, part of what made Rails Bridge really successful, you know, part of it is teaching, and part of it is allowing people to see that it’s something they can do, and that they’re capable is doing it. And the ability to build something quickly and see that you have done that and get that gratification is really important. But I don’t think it can’t be done with Elixir. It does take a little bit more time, but like, for example, it’s not like Rails, new, here’s your app. But in the course of the day, we build something. Like, we built a mix app that does something, right. And they can see it. I think it’s still there. It’s a little bit different. AMOS: When you start teaching, do you have a standard project or app that you start on? ANNA: For Elixir Bridge? AMOS: Yes. ANNA: Yeah, so we have two curriculum. One for Phoenix, and one for just building a mix app. Which is pretty simple, right? You know, it uses a gen server, makes a call to an API, retrieves some data. But we have - we use the curriculum that we’ve written for every workshop. We’re trying to write some advanced curriculum, but, yeah, we already have what we’re building in mind, and how we’re doing it, and how we’re going about explaining it. AMOS: So, whenever you start on that project or start teaching, what is the main difference you see between someone who has a little programming experience to someone who has none? ANNA: So we actually haven’t taught it yet, to somebody who has none. We need to backfill that curriculum, because we start with some assumptions, right, like, assumptions that people know, like, data types, right, and have played around with the terminal, and I think to actually teach it to somebody who has never programmed before, we need to go back and backfill that portion of general programming concepts in order to proceed and build the application. CHRIS: Along with that, what do you see, and everyone can answer this, either for themselves or other people, honestly this sounds like a humble brag - it’s not meant to be - it’s been a long time since I learned Elixir. And there’s still stuff I have to look up, but it’s been a long time, and I don’t remember what my biggest hurdles were, so I’m curious to see what y’all’s answers to that would be, from a technical standpoint, you know, less than a ‘I can’t get my company to do this’ or ‘I can’t get people on board’ or ‘how do I market this’. And it could be you or it could be the people that you’re working with. ANNA: I mean, I think the initial things that I see - at least, I see it when I’m teaching, and I probably felt these thing myself, starting, a lot of the things that are really powerful in Elixir but are unfamiliar in the other paradigms, like assignment isn’t really a thing, and how does that actually work? It seems really simple, but what’s actually happening? Or, like pattern matching when you’re first explaining it, right. It takes a little bit, and then people catch on. Some of the OTP behaviors, and we’re talking about GenServer and explain how that actually works. I think once people get those initial foundations - some of the really powerful foundational concepts in Elixir, they can more forward pretty quickly, but some of those things take a little bit of time, is what I see generally. AMOS: What is the concept that seems to be the hardest? ANNA: Um… When we’re teaching, that’s a good question. Pattern matching always takes a little bit of explanation, and I think people initially see it, and they’re like ‘okay, I get it, but I don’t see why it’s powerful’ until we go into more in-depth examples and start explaining multiclass functions, and start using that inside of an application and then they’re like ‘oh, I see! That makes a lot of sense.’ I think a lot of it is understanding the concepts, but then not seeing why and how you would actually use them. And then some of the OTP behavior and just explaining some of that call/call back process and how that actually works. CHRIS: I mean, to be fair, the OTP stuff is complicated. I still have to look up - Why did you just message me? AMOS: Because it says less than a minute at the top of Zoom. CHRIS: Ah, okay, this I am 100% cutting out. But I just upgraded the - I upgraded the Zoom call, so it shouldn’t end. AMOS: Ah, see, it’s gone, Keethley. CHRIS: We’re back. AMOS: Yeah, huh. Uh-huh. CHRIS: Apparently I’m not actually logged into Zoom over here…. I don’t know. I don’t actually understand what’s going on right now… Anyway… AMOS: Good thing I messaged you. CHRIS: Yeah, I know. That was nice. I’m glad you did that. So the thing I was thinking about, I have to go look up the documentation for supervisors every single time I use them. I have to re-look it up and remember ‘what are these exact functions that I need to call’. ‘Cause you do it - I do it so infrequently, where I already have that stuff built, where I don’t really have to think about it that often until I have to go back and do it again. Especially if you’re trying to do something that’s non-standard. So I think it’s fair for it to take a while to understand what exactly is going on with that stuff. ANNA: Oh, totally. I mean, with any of it. I mean, I think in general when you’re learning something new, I think it’s fair that it takes time to wrap your mind around theses new paradigms. And some of them are very complex. I’m curious for y’all, now that you’ve been doing Elixir for a while, are there things that remain very challenging? AMOS: I have a lot of OO left in me, and sometimes I notice that a lot of times coming out. But what stops that is testing, ‘cause testing is the - actually, the hardest thing coming from OO languages, like Java I had injection frameworks, so everything had a constructor where I injected collaborators, and stuff to make it really easy to test without a whole lot of work. Or in Ruby where you can just overwrite some function or mock it pretty easily, due to the way the object model works. I had a much harder time figuring out exactly how to test things in servers and name servers, and I have this obsession with - I always want to put asynch: true in my tests, which, leads to a lot of headache because, it may always be possible, but it’s not always simple, or should even happen, but I’m like ‘oh, it’ll be faster and my tests will run faster and I won’t have to wait for it’. So, I attempt that. Still, even after a few years of doing it, that still hits me. ANNA: Mm-hm CHRIS: For me, its typically framework-specific things that I just don’t know. I make kind of a habit of not committing framework-specific things to memory, just because I don’t think it’s… I can always just go look at documentation, and I don’t think it’s very relevant for my overall career, so I just don’t try to hold that stuff in my head. So there’s like framework-specific things that I keep - that I always get caught up on now that are challenging. But just generally to Elixir, I think the big thing that I struggle with still is what to do with error handling. It’s the thing that I’m just not very good at because I think it’s still counter-intuitive to me, just like, letting things crash all the time. That’s still a thing that I’m not the best at, and I get it wrong a lot. I’m still struggling with how to do that more - learning how to think more about my supervision, and learning how to allow myself to be comfortable with things crashing and learning not how to let errors propagate my system. Instead, you know, just killing the process where it is, and letting it restart. I’m trying to be better about sort of fail first mentality, I guess. AMOS: I see that a lot with people I work with, too. Since I’m doing embedded, a lot of the people I work with have been C developers forever, and they are very defensive developers. So there’ll be a lot of code, just to make sure the system doesn’t crash, even though it might not be the best solution to it. And I’m not saying that they should just let it crash, but they spend a whoooole lot of time on each function, being very defensive with everything coming in, going out, like what’s going on, and it doesn’t always… turn out well. CHRIS: One of the things I’ve been doing as a… I don’t know that I would advise that anyone else does this, but it’s been a useful experience for me to go through it, which is to stop using ‘with’ basically everywhere. And, I was a big - I really really like ‘with’, a I think I’ve overused it a lot in my day-to-day programming, but I dunno, I think something that I’ve been coming to grips with is that ‘with’ allows you, or, rather, ‘with’ tricks you into allowing your exceptions and your errors to propagate outside of your function, and they end up downstream, and something else blows up because of that, and I’ve actually been - every time I’ve been thinking about writing a ‘with’ I just don’t do that, and do explicit pattern matches on the good case, you know, so you just match on ‘okay, whatever’, and then you just crash otherwise. You get a bad pattern match error if something fails. And doing that has forced me to think differently about how I handle errors and handle crashes, and I think over all, that’s been a really good learning device. Like, again, I don’t - I would not recommend that anybody does this or goes and puts it into production that way, but that’s a thing that’s really helped me think differently about supervision and really push that stuff to the forefront. AMOS: And this is just comment on the ‘with’, but it sounds like you and I use ‘with’ in very different ways. I use ‘with’ for recovery only. So… the ‘with’ I see people matching it on the good case. I actually match it on the bad case, then have the ‘do’ of the ‘with’ do the whatever default should be if I end up in a bad case, then I let it return the good case is ‘cause it doesn’t match, and then it returns whatever it doesn’t match, right? So, like, if I go to pull something out of the database, I’ll match against error, and then if it’s not there, I might create some default data to return inside the ‘do’. And so my ‘with’ statements are 3 lines long, max, and I don’t have multiple clauses in the ‘with’ very often. CHRIS: That’s… that’s interesting. I… I need to go play with that idea. I haven’t thought of that. AMOS: I learned it from Sasha, reading his code. Code reading is another wonderful way to learn. It’s also stressful. So that’s one of the things that I struggle with - you were talking about libraries - is libraries that have callbacks. So, I’m working with propcheck right now, when I first started looking at a lot of the propcheck stuff, it has all these postconditions and preconditions that don’t seem to be called anywhere in the file, and so, as I’m reading through it, I’m like, ‘I can’t follow this code, what’s going on?’ And that’s because most of it is implemented in callbacks, and there’s a lot of that in Elixir. And I think that that can be a big struggle for somebody starting out new. Like, code reading ends up with me looking up all these libraries and finding out what these callbacks are almost every time. ANNA: I’m curious - stepping back, overall, what your - since we’re talking about challenges with the language itself and jobs and hiring, from both of your all’s perspective to the community as a whole, like, what are some interesting challenges that the community is currently facing? CHRIS: I’ve been thinking a lot about how the community adapts and grows and brings in new people. It seems like we’re pretty well into the early-adopter stage, to the point where early-adopters are already leaving. And that’s okay, that's actually a good thing in some ways, because it indicates some amount of growth. And early adopters leave, sort of, like, as definition of being early adopters. Like, they adopt things and then they move on. And it seems sort of like we’re starting to attract more pragmatists, which seems like a healthy thing because pragmatists make up a much larger segment of the population, and they're also who will end up driving other pragmatists to adopt the language. You know, like, that's a marketing thing. People like to do comparisons between two products, and that’s how they make their decisions, by and large, from a marketing perspective. And pragmatists are coming to the language which means they’re able to do that comparison now. I’m still interested in what that means going forward - what sort of things are we as a community going to lean into and how are we going to attract more people in order to continue that growth. And part of it is, I don’t know what that market wants because I am, by definition, an early adopter as well. Like, I don’t know, I came to the language early and I managed to stick around, so maybe I’m not exactly an early adopter, but my personality is such that I am willing to take a few more risks than other people, which is fine. So I’m interested to know, as a community grows, what it is that pragmatists are looking for, and I don’t know what that is, which is why I’m glad that I’m not part of the team that has to make those decisions. Like, I don’t want to conference. I don’t want to do all these big things and I don’t have to be involved in figuring out how to make all of that stuff work - and thank goodness, because I would probably be terrible at it. And I’m also super interested in - how do we bring a different set of people to the table who we don’t have right now, and what can we be doing better to cater to a different demographic of people. And that harkens back to my question earlier, and I’m actually really - I’m encouraged by the fact that like, my fear of ‘oh, if somebody new comes to Elixir they’re gonna be turned off by how much extra stuff they have to go through to get from a to b. I’m encouraged by how your experience has been really positive with that, because that’s a way to attract a brand new demographic of people to Elixir and to programming, which is really good. ANNA: Yeah, I agree, you know, a lot of - everything that you just said is really valid and I have a lot of thoughts - but one of the things that I’ve seen, especially with attracting new people - and I think this is one of the things with the Rails community that made it really successful - is accessibility. That’s one of the reasons I want to do Elixir Bridge is ‘how do you take this language that is really powerful and can do a lot of things and make that accessible and make people see if they can really understand it and can wrap their heads around it enough that they can go home or go on and keep working with it?’. I think accessibility is really huge, and thinking about well, what does that mean, and what the Elixir community has done and what more we can do. And I think a really good place to start is like documentation and the Slack seems to be pretty active and people seem to be pretty responsive, and like, how do I be more welcoming, so when people are new and are coming in, because it’s not just - well, I mean, for the pragmatists, it’s not just understanding why it’s new and how this language can be useful for what they’re doing technically, but also, being part of the community, and what does that feel like? Do people actually want to stay? And what makes a community, like, again, referencing back to the Rails community, where I think people do this really well - what makes people want to stay and participate and continue developing the language? And it’s not just individuals right, like, I - like, having companies that are supportive. I wouldn’t be able to do Elixir Bridge if we didn't have Carbon 5 supporting us. That would be just too much of an overhead. So how do we as a community, including the companies that are using the language and are excited about it, make it more accessible, so that the community does grow - is my biggest thought. CHRIS: What are - what - we can cut this part out if you want to be honest, if you wanna be too real - what are some - AMOS: I will do that for Anna, but not for you, Chris. CHRIS: Okay, that’s fair. That’s fair. What are things that we, as a community, can be better about accessibility? Whether it’s better documentation, better learning materials, or, frankly, you know, funding or those sorts of things. What are the things we can be doing as a community better? ANNA: Yeah, that’s a really good question. I wonder, right, I am only one person trying to do this thing in one particular way with Elixir Bridge. But I’m curious how… to answer that question, I would have to have a better idea of the other ventures that are happening. Like, I saw a need and I was like ‘I’m gonna do this thing, I think this would work’. But, I dunno, as far as like conferences, my knowledge is currently limited on how much outreach goes out at some of the conferences as far as trying to bring on new folks or folks that are unrepresented, like - thinking about - I mean, I hate to continue to do this like, paradigm, but like, coming back to the Rails and Ruby community, but then like, it’s so successful. What have they done? Why do people want to stay? What has made that so accessible? And I think part of it is time. Part of it is making that extra effort. And it sounds like small things that aren’t really small. You know, it’s like making sure people feel welcome in a space, and things that I take really seriously, like actually having a code of conduct, or actually having childcare available, so that people who have kids can attend your thing. And there’s so many things that I think appear small but aren’t, that people overlook. Two of those things being we offer childcare at Elixir Bridge. Code of conduct we take very seriously, because that’s important. And not just having one, but really giving people agency to do something about it if something really does happen, and making sure that the people who participate know who to talk to and what they can do if they feel uncomfortable in any way. I think those two things are really important. I don’t always see those things happen. And, and, like, it’s a process. We’re all growing, we’re all learning, so how can we do better to make sure that everybody that goes to an event feels welcome and safe. I think that that in and of itself makes a difference - like, if people can go to something and feel like they’re welcome and comfortable and safe, etcetera. CHRIS: I think that’s totally - that’s totally fair. And it seems like there’s something - it seems like there are specific instances in the community where I really feel close to a lot of people. And there’s places in the community where I just don’t. And some of it is I’m at these different conferences or whatever, or I know more people when I’m at these types of events, but I do think that - I’m dodging around trying not to say anything, like… ANNA: Well, because it’s a complicated topic. How do you ensure that we continue to make things accessible. And part of that is having conversations about what’s not working, and how do we make it better. And sometimes those conversations are not easy to have, depending on who you’re talking to. AMOS: I think that you’re also gonna have some splits in the community are fairly natural and that’s okay. If you’re have someone who does a bunch of Nerves development and never really touches Phoenix, then they’re probably not going to be into that community, whereas if you have a Phoenix-only conference, they’re probably not gonna go to it. Like, ah, the Ruby community. You have Ruby conference and Rails conference, and a lot of times, they’re very different crowds. And I think that’s okay, but you should never feel shut out. ANNA: Yeah, that’s my thing. Like, they’re definitely going to be splits, and people have different interests and that’s totally fine, but I think if someone wants to participate in a particular community, we have to ensure that they feel welcome, assuming that they’re not doing anything to make other parts of the community feel unwelcome, or that they themselves are not being a good citizen in that community so to speak. CHRIS: So one thing that I always think back to is that it really affected me when I first joined the Ruby community is that I went to a Ruby conference sort of towards the end of my time doing a lot of Rails and a lot of Ruby. And it was long past the heyday of the Ruby community. And it was a smaller venue, and while I was there, it depend on me that everybody in there knew each other, was already friends, was already well established, they’d been hanging out, that was their community for years. Clearly, years. And they all hung out in RIC together in like, private channels and those sorts of things, and that experience made me feel super left out of the overall community, and it really made that entire conference miserable to be at. And I’m not - I don’t want to… I am fully aware of my privilege when I walk in the door anywhere. I look like every other person there, I feel, like, comfortable being around human beings and having conversations, more or less. So like, if that was already the case and someone didn’t feel… Didn’t have… those privileges or those extra bits of agency walking into a situation like that, like, I couldn’t imagine that. It was miserable for me, and I have always really worried about that happening to the Elixir community, and I really hope that doesn’t happen. And I mean, here’s the thing, I know I’ve been part of that problem if there is one, ‘cause I do have friends, and we were all at Elixir Days, and we were all hanging out together, and I spent my time talking with people I consider to be friends and that I talk to online on a regular basis. I don’t want to diminish that. I think it’s important for people, but I also don’t want to encourage people to realise that there’s always gonna be someone new, and someone who wants to break it or join that community. And I hope that, no matter who that person is or what that person looks like, or whatever, that we can remember what it was like when we all joined and help to bring those people into the fold and engage them and talk to them about that kind of stuff. And that’s a super important part of the process. ANNA: Yeah, I totally agree. I would also argue - it’s just keeping it in mind, right? Just thinking about it and making that effort. And I think when you do have comfort in the community and when you do have acceptance, and when you are someone who is visible and knows a lot of people, it’s just that much more important, if you’re serious about making the community accessible to new people, it’s that much more important to keep that in mind. And not all the time - everybody has limited bandwidth, but it’s important to keep that in mind if you’re serious about making the extra effort to reaching out, right? At the end of my talk that I gave at ElixirConf last year - it was about community building - and at the end of my talk, I was kind of like, a call to action, saying like, ‘who are the next ten people that you want to share that you’re excited about Elixir Bridge? What does that community look like? Does it look like what you want the Elixir community to look like? And if not, who are the ten people you should be reaching out to, and also actively reach out to those people. Not always just waiting for them to come in, but who are those that we want to welcome?’ and also making that effort. So I think that’s important as well. AMOS: The hardest thing that I’ve run into to make this effort, and I actually ran into - and I actually ran into this at Elixir Days with Anna, is I - I didn’t know Anna. I know she’s been around the community, but, I found Anna at one of the afterevents, and I bought her a drink, and I just wanted to sit down and talk to her about her talk and what was going on, but then, the people that I already knew, came up and started to talk to me, and I turned around to talk to them and didn’t talk to Anna at all, so, I think, in making that effort, if the people you do know come up, include them in with the person you just met. Even if that new person you just met is well known in the community. Include the people that you know in with the new people you’re meeting. Because it’s really easy to get sucked into a conversation with the people that you know, that’s not inclusive. CHRIS: And I wanted to say too, I appreciate what you just said, Anna. Is that, it’s actually not hard. You just have to remember to do it. Just ‘cause it’s something that I don’t always remember to do. That’s an important, important thing to remember. So, I’ll take that as an action item to be better about. I think you’re spot on. We’re starting to run pretty long here. ANNA: Yep! I think we should wrap up. CHRIS: Any last thoughts before we sign off? ANNA: I think I just, really appreciated this conversation. I think it’s an important conversation to be having - not just talking about the challenges from a technical standpoint, but what are the challenges as we grow the community, ‘cause that’s a really big piece. So, I hope that people found it interesting, and can have some takeaways at least, and can have some take away about what they should do. Do you all have any thoughts? AMOS: I just want to figure out how to get my local Elixir community to reach out to people outside of it and draw more people into it. I’m actually glad you guys made me think about my interaction with Anna at Elixir Days, because I think that that happens to me more often than not, ‘cause I do know a lot of the people, so when the new people come in and I attempt to start a conversation, sometimes I get drawn away pretty quickly, and I think that probably makes them feel more left out than if I hadn’t said much of anything, so I’m gonna make a concentrated effort to get more people there and talk to them more. CHRIS: The only other thing I would add is this is still - Elixir is still really young and the community is still really young - it’s still forming. What I would encourage everybody to do is just, one, realise that you have an impact on this community now. You just have to get involved and help shape it to what you want it to be, whether that’s from a technical perspective or a community perspective. And, I think if we have that extra empathy for other people, and we strive to build the community that we want to build, that that can happen. You can have an impact on this still. It’s not so big and concrete. Things are really plastic still. I would just encourage everybody to get involved somehow. It probably has a big impact on someone’s life. ANNA: Totally. Cool. A’ight. Thanks, y’all. AMOS: Have a good day! CHRIS: Later!