Twitter Logo

Amos King

Twitter Logo

 Chris Keathley

Twitter Logo

 Anna Neyzberg

The Elixir Outlaws now have a Patreon. If you’re enjoying the show then please consider throwing a few bucks our way to help us pay for the costs for the show.

Episode Transcript


Amos: Welcome to Elixir Outlaws, the hallway track of the Elixir community.

Anna: You recovered from all the Gig City crazy?

Chris: I have mostly recovered. I've mostly recovered. I would say I had to wake up at four in the morning, the day after the cough, the last day of the conference to take Amos to the airport. And I was really wrecked the rest of the day.

Anna: You didn't go back to sleep?

Chris: I tried to go back to sleep, but it's like, but then I have kids that are going to wake up at six or six 30. It was just madness. And then I don't know about you, but I got some sort of like low grade head cold throughout the whole conference. I felt like everyone I talked to was a little bit sick. I feel like some sort of allergy hit Chattanooga in a big way. Cause everybody was sort of feeling pressure and just not feeling great. And I definitely had that. And then that became like a full on cold, like the next day or a Monday or something like that. I don't know. Yeah, it was bad for a few days, but I'm mostly over it now just in time to have a child, hopefully. How was your trip home?

Anna: That's good. Ben and I almost got stuck. Our plane was delayed.

Chris: Oh, I heard about this.

Anna: Ben barely made it.

Chris: Oh no, that's miserable.

Anna: But we made it. I was like dreading my three-hour layover in Atlanta, but I'm glad I had it.

Chris: Right. Yeah. It's always a gamble leaving Chattanooga. If you're going to make it home that same day going West, isn't that bad because you know, there's more opportunity to hit flights. There's basically like, I think there's a grand total of three flights. If you're leaving San Francisco and trying to get back to Chattanooga, there's, it's a small set of flights that you can hit to get back to Chattanooga just because of time zone changes.

Anna: So you end up being stuck in like Atlanta or Charlotte or...?

Chris: Yeah. Well, and it feels like there's only about three flights that leave San Francisco to Atlanta a day. That's probably not accurate, but that's what it feels like. Your options are super limited.

Anna: That I remember that booking flights, but we made it so it's good. Yeah. What do you wanna talk about?

Chris: Um, I don't know.

Anna: Is this the show?

Chris: Yeah. I've been recording. I feel like we've, we've really settled into a rhythm where we just all show up and we're recording and that's a pretty good rhythm.

Anna: Yeah. Well, what were the highlights for you of the conference?

Chris: The real highlight was the journey was the friends we made along the way.

Anna: That's all about the journey.

Chris: Well, for me, I mean really like the, the highlight was just having everybody in town. Like that was really fun for me and not having to travel and getting to have all my friends just here where we can all hang out was really fun. So that was a, that was a pretty big highlight for me. Just generally. You know, other than that, like I'm going down the list of things that aren't talks, you know, but they've been more or less all revolve around, like just getting to see people, getting to hang out with people, getting to argue with people. Like, I dunno, all that stuff was really fun.

Anna: Arguing on stage with Dave Thomas.

Chris: Yeah. And, and arguing with Dave. So that was, that was pretty fun. So that kind of stuff was great. And then there was a bunch of really, really cool talks, which I'm sure we can discuss, but what stuck out to you?

Anna: I mean, I love coming to Chattanooga, so getting to see everybody and chatting and go super fun and getting to hang out and Chattanooga really fun, but I really appreciate it. A lot of the discussions that were happening throughout the comps, I felt like there were a couple of themes around thinking about how we do write code and build software better. I like how Diddle's talks touched on that. I thought the quality of the talks were really good. And so there's a lot of talks, which I talk about that I really enjoyed. The conference itself kind of had a very welcoming, I thought, community, everyone I talked to was like they were having. And so that was nice to see. I think they did a really good job that it's happening. Yeah. As far as like specific highlights, I think getting to see all the people that don't get to see very often. And then the talks were high quality.

Chris: It being a really open and inviting atmosphere was definitely a real thing. That's what I love about conferences that are a little bit smaller. Like this is you don't really ever get a sense that there's the speakers or, you know, some other select group of people who are in the know and they go off in their corner and then everybody else is over here. Like all the noobs or all the, you know, whoever the randos are like over here. And then there's this like Illuminati group over here that's talking and just like hanging out themselves. That's definitely a thing at larger conferences. I think. And I don't think that's, I don't think it's malicious, but I just think it's like a survival instinct. Like if you're at a larger conference where there's like naturally a whole bunch more people, I know I've been really guilty of this. I just go hang out with the five people that I know because I know them. And I'm nervous about just being around a whole, you know, massive group of human beings. So I don't know. And so you naturally gravitate to your people and conferences that are smaller like this. Like all those barriers are, are really torn down. So you can just go up and talk to whoever.

Amos: I think it's maybe a little bit easier to do that. I was talking to Greg. Hi, Greg. Friend of the show. And he was saying he actually made an exert effort throughout the country. That was, what about talks?

Chris: It's hard not to put Stu's talk pretty high up on the list. That was the one that really challenged me the most. And also, I mean, just generally, like Stu's a great presenter, like all his talks. I mean, he's a very practiced presenter. Like he's a very eloquent presenter. He doesn't mince words. Like he's just a good speaker and the subject matter, which I guess we should explain because unfortunately I don't think that's taught these talks were recorded this year, just out of, kind of for cost reasons. You know, his subject matter was dealing with, what is it like to maintain and run an open source project? How do you build communities that are conducive to good conversations and constructive conversations? And so he's touching on a lot of really interesting, important points in that talk. And it was very challenging as someone who is, who's often on the other end of the equation of, you know, why don't you just do this thing? Or why did you make these decisions or whatever. And, um, who's inciting those sorts of conversations. And so, yeah, I found that very important.

Anna: What was challenging?

Chris: I think the thing that was most challenging was really back and thinking about the ways in which I have done this really poorly, but he went through a whole discussion on the ways in which we sort of prop up these arguments. And one of the things that he talks about, you know, let's say, okay, so let's make this more concrete. Let's say like there's library X and I don't like a thing about library X and I want to have that change. One of the ways that I might support my argument is by either, you know, doing some sort of appeal to authority and saying, well, X other library doesn't do this. Or some other language, does it differently or better? Um, where the, where it's implied that it's better or such and such person said that this is the right thing to do. Often those appeals to authority happen. They happen subtly the, the appeals to authority happen where you're just like, well, what's, you know, this person says that, so why, you know, why don't you guys do or do this thing the way that everybody else does it or something like that. The other thing that he mentioned is the sort of appeal to the crowd, or I'm not, I don't remember the exact way he phrased it, but it's effectively pretending that you have a group of people who all agree with you. Like the community has all decided that this is the right way to do it. And you present your arguments as though they're fact based on the community, all agreeing to do it. When in all reality, that's a little bit bogus. The community probably didn't all agree to do it, but you used pronouns in such a way that influenced, you know, if you start saying things like, we all agreed that this is the right way to do it, then that's in a lot of ways that an appeal to a larger crowd where you're sort of saying I have all this backing behind me in my opinion. So my opinion must be right, because lots of people agree with me where in all reality, like maybe no one's agreeing with you. Those people aren't necessarily all in the argument and just realizing how I've probably use terminology like that to support my arguments before and you know, wanting to be better about having that sort of discourse and really thinking a lot about what is it you're asking of people when you, when you either request something of a library or ask them to fix something or, you know, sort of demand that these fixes get implemented. You know, when you start demanding things of open source creators, you're really impugning on their time and their life and you know, their wellbeing in a lot of ways. And it's not really that cool to do. And he, he, he laid it out there and much more succinct terms that I'm doing now.

Anna: I mean, that totally makes sense. I think, again, it comes back to like, how do we have a effective dialogue, right? Or instructive in about that. It doesn't feel on either side let's oftentimes rights will have opinions as an open source, as you have open source projects, right? We have something happen. It takes a lot of effort and a lot of worry time and say, wait, this is terrible. Why are you doing? And it doesn't really take that much of a shift construct. The question might have, and it is instructive if you're actually like, what's the goal, right. Are you actually asking him, do you have a different point of view and what the right tool, what is the goal? How do you do that in a way that's actually rather than sometimes overly detrimental, really what you're trying to get at. Right. Right. And as you know, as the community grows, right, as more people come in with different opinions, I think being able to have constructive, constructive conversations.

Chris: The constructive conversations thing - I've been really, uh, thinking about that a lot, Evan, uh, like the creator of Elm. He gave a talk at strange loop, which is recorded, which I'll put in the show notes. And it's a really, really good talk for getting the exact title, but it's something along the lines of doing open source. Like what is it like to be an open center? And he talks a lot about when you have differing opinions by people, he shows this sort of plot. And so he uses Elm as an example. And that, you know, I think he used infects operators basically and fix operators or a hotly debated topic and Elm, whether you should have them, right. That kind of stuff. And so someone might be saying, I want in fix operators because they let me, they, they let, they, they give me power to create things. They give me like expressiveness or something like that or flexibility. And so they're arguing for flexibility and someone else says, I don't want those at all because they're too hard for new people to understand or there'll be confusing. And so they're not that they're not making a flexibility argument. They're making a correctness argument effectively. And those two things are like an X, Y pattern. And they don't actually form. So, so trying to reach consensus is not really a goal. That's sort of, that's like a non-goal. In fact, because by trying to reach consensus, you actually come out with sort of the worst design and you haven't pleased anybody. And so everybody's just mad or anything designed by committee, uh, which is necessarily everybody's compromises. It's probably not going to be very appealing to a lot of people. This is how you end up with really clunky interfaces for things. Or you end up with these weird access patterns that don't make sense or aren't useful because it was basically designed by committee and it just got boiled down and became everybody's compromise. And so in a lot of ways, you're not really seeking to have a constructive conversation in the sense that you want to arrive at some middle ground where you have some design that appeases both these people. What you're actually seeking to do is have a constructive conversation that leads to understanding - understanding of, of both of their viewpoints. Because if you can understand both their viewpoints, then at least you can make a decision and you could probably make a decision in one camp or the other. And maybe like one group is not going to be happy. And the other group is, but at least the other group understands why you're making decisions the way you're making. Because just trying to argue about whether or not flexibility is more important than correctness is actually like a much more complicated argument. And the people who are in those camps probably don't have a middle ground to find on there in terms of like their beliefs about those things.

Anna: How do you come to understanding, right? How do you have, how do you facilitate an effective conversation that allows you to come to an understanding.

Chris: That I don't actually know how you do. And I don't know that anybody knows how you do that.

Anna: It's a good goal, right? When facilitating hard conversations. Yeah.

Chris: Exactly. And I think knowing it, knowing that that's, what you're attempting to do is really, really important because it helps to start to frame the way in which you have that dialogue.

Anna: I agree. I agree. If you can shift your mindset to understanding.

Chris: One would hope. I think there's, I think there's, I think there's, but I think there's merit to that.

Anna: I mean, I think, but I think that's in general, right? Not just open source, like I've been thinking a lot about part of the competition at this conference and, you know, Elixir Bridge stuff and whatever, and it can be challenging, right. Having that goal of understanding, I think. And I think that if everybody has a common understanding of what's happening, then if you go back to the stuff we were talking about with, plus you have software design, like a cognitive load, et cetera goes down. I've been thinking about that a lot.

Chris: I've thought about it a lot, especially in the, from the viewpoint of the conversations we had about Ecto a few weeks ago. I don't know that like anybody else's clued into this, but, you know, afterwards, like I had a really long conversation with Jose about all this stuff that we had talked about with Ecto. I had said about, uh, not to put that on anybody else. And we talked a lot about it. Cause I think a lot of the things that I said were unfair and a lot of, and they were overly critical if I had to sort of go back and, um, armchair psychology myself, I'd say that I attempted to start from, to try to like find understanding and then like quickly fell off of that. And then it just descended into madness. But it's funny because I actually still, I have not changed my mind about how I feel about Ecto. I still really like Ecto. I need to be really clear about this. I actually really like Ecto. I haven't necessarily changed my opinion on, I don't know the right way to say this. Like without just like reigniting a fight or something like that. Um, cause that's not my intention. I set a lot of things that I actually kind of do believe in, but I said them in a way that is not useful and not seeking to like understand where everybody else is coming from and also not seeking to have a constructive and used all those rhetorical arguments of, you know, appeals to authority and appeals to like a crowd and all this kind of stuff that isn't healthy and isn't a good way to have a dialogue. And isn't a good way to, to like actually seek to understand. And I actually think that there's important points in there that we could discuss about, you know, the future design of actor or whatever, but that would be like a really interesting discussion to have, but you can't have a discussion like that if you're positioning everyone as, as against or as other or whatever. And so that's the, you know, that was also like further challenging to like hear students talk and be like, Oh yeah, I'm a jerk. And then I already knew I was a jerk, but now it was just like reaffirmed.

Anna: That's the thing is like having strong opinions isn't bad. Right. You know, you know what you're talking about and you just having strong opinions, isn't a bad thing. But having a conversation usually involves, I mean, we, as humans, we tend to do this right where we do have strong opinions that we share in that way without really thinking about the goal of why. Right. Am I trying to come to an understanding and how is this going to affect the person on the other end, who is spending a lot of time developing this project.

Chris: Right. Right. It's spending a lot of, a lot of time and a lot of energy and a lot of effort - just all the things. And also, and this is something Steve alluded to, you know, who are you to tell anybody how they spend their time and to make those sorts of demands or something like that. And if I remember correctly, I think a long time ago, rich Hickey said something like, Hey, why don't you come over here and mow my lawn? And then you can tell me how to spend my weekend.

Anna: Right? Yeah, exactly. No, it's so true. Right. And in open source, it's interesting because the bigger the project, or maybe people depend on it, the more people start to have opinion and demands of somebody who's essentially giving their free time to do a thing to benefit the community. Right. So it's an interesting, it's interesting how that sort of develops and I wonder how we can do it better.

Chris: Yeah. I don't know if there's ways to facilitate that. I think Evan had some interesting ideas in his talk where he had kind of technological ways to facilitate those kinds of conversations. I am less sold on that as a sort of long-term solution, but I think it's interesting for sure.

Anna: No, it is interesting. And as, I mean, as a young community and as a community that's growing, I think if we can figure out how to do it better now that'll only benefit.

Chris: Well, I mean, I think only good can come from having people be more empathetic and try to try to have more constructive conversations with each other. I don't see a lot of bad things happening from that.

Anna: Well, you and Dave on stage, right? You didn't necessarily agree on everything, but you were having a constructive and interesting conversation without anybody feeling like they were being on the defensive not being heard.

Chris: Yeah. I think that, I think that's totally possible to do the ones that I, you know, I felt like went a lot better. It was, um, I had, uh, I had a couple of conversations with Chris McCord at the conference and we talked about the Ecto stuff. And in that conversation, there was much more a desire to sort of meet each other and try to get each other's viewpoints. And, um, I think at that point, I, you know, I was content because I wasn't sort of seeking to like influence anybody I just legitimately tried to, was trying to understand. And those conversations went really well because I explained to me a whole bunch of use cases that he's had customers want and all this kind of stuff. And it's like, okay, that's like, that's cool. That's good to understand that other side of it. And we had similar conversations with like live view where I had questions about live view and he had answers to them and we just, we were able to gain deeper understanding of those things and that worked out. That was all good. So I think it's totally possible to do that, but there definitely it's like way harder to have that kind of conversation than it is to get on some sort of platform and sort of rail against people.

Anna: Yeah. But railing against people is not really effective. Right.

Chris: I think it's, it's tempting to think that it is, it's tempting to think that sort of being inflammatory will help. Like it's like if you're extreme on the edge and it'll help to move the middle. And I actually just don't think that that's a real thing. I sort of fundamentally don't think that that's a real thing that happens. The edge being more extreme, just moves the edge farther out, away from the middle. Like you just become more fringe.

Anna: I agree. And I think sometimes like the louder and more the voices, like you said, it doesn't necessarily change anything. And I think the middle or folks that are folks that have less maybe strong opinions and are trying to maybe follow best practices or figure out what they actually need for use cases. Right. It's rare that somebody who's like against something is going to be the person that they're, I don't know, the loudest voice doesn't necessarily win in those scenarios.

Chris: I guess one way to put it might be the loudest negative voice.

Anna: Exactly. The loudest negative voice doesn't necessarily want in those scenarios. And that's kind of what another thing I'm thinking about is like, when things are negative, when things are hard, when you're frustrated, how do you figure out a way to again, look going back or away in circles a little bit, but facilitate that conversation. That's hard. Right? Cause it's easy to be negative and it's easy to get angry and it's easy to be like, this is terrible as opposed to being like, okay, well, how do I make this work?

Chris: I a hundred percent don't know how you facilitate it other than to model it and sort of internalize it that it's not helpful. I don't know. Somebody gave me a really good, I don't remember who told me that somebody gave me an amazing piece of advice back in high school. It's really stuck to me for a long time now. I mean, that was a, that was a long, that was a hot minute ago. And it's that you don't move the circle of influence by getting in the center of the circle and shoving it. You move the circle of influence by being awesome. And you go and form your own circle. And if your circle is awesome, other people will want to come be in your circle too. And that's like really stuck with me. I understand how you would model that, but I definitely don't know how you facilitate it in others, I don't really know that you can on a, on a macro level. I think you can in micro.

Anna: Yeah, I agree. But I think that's how macro changes eventually happened. Right? It's like lots of micro changes. And that's the kind of the thing that I was, you know, I've talked a little bit about building community and you'd try like in a smaller scale building Elixir Bridge. And a lot of that is a micro-interactions, right? People feeling welcome people coming in, having a positive experience that then maybe they bring somebody else and it happens slowly, but those changes tend to be more long lasting.

Chris: Well, and to some degree it's like modeling it and also being ready to take a more active role in calling people out and saying, this isn't a useful way to have a conversation. And you can, that's like really difficult to do. I think it is personally, I have a really hard time with it.

Anna: Like calling people out and being like, this is not a useful way to have a conversation.

Chris: Yeah. Well, it depends on who they are. I mean, if they're friends, it's one thing, but when I've tried to have those conversations with, I don't know, like I don't like confrontation anyway. No, really like really I really, really don't like confrontation confrontation. I know it's shocking to everyone I say this, but I actually don't really like confrontation that much. It makes me really uneasy. And so yeah. I find that to be very challenging, especially if it's not in person, like if it's in person, I don't mind, it's a lot easier to sort of say, that's not cool. Like we're not gonna - this isn't useful. And that's not a thing that we're going to say or whatever, you know, if it's on the internet, it's a little too easy to ignore or to just walk away. And my default, unfortunately, I mean just but, but just being honest is to walk away. Cause I'm sort of, I don't know. I just find it harder to do. Yeah.

Anna: Fair. I can see it now. I mean, it is not easy, but it's important. And sometimes being uncomfortable - we know the end result is better. So I don't know. Yeah. I thought Stu's talk was great. And I think that that was an interesting thread throughout the conference and that was awesome.

Chris: And he's going to give it again somewhere, so it will be recorded.

Anna: Good stuff. Yeah. What other talks stood out to you?

Chris: Go first. What was your highlight after Stu's talk?

Anna: There's so many, but your talk was really good. John Hughes was really good. I was great. And that was a really interesting talk. Ben's talk was really good. I mean, everyone, I think Dave's talk at the end. I mean, I think I thought - I thought it was interesting. I had one thing that stood out to me. It was an interesting conversation that I had with Dave. I mean, all that, there's just so many talks that I would like to talk about. Um, but per our conversation on the podcast, because a lot of my work focuses on how things come into the community, et cetera. Like as we talk about how we are building software and, you know, deep modules versus shallow modules and building more specific pieces of software that have a deep interface that have, that are more powerful and that are not dependent on other pieces of software, if you're new, how do you know what to use? Like how do you know which pieces to put together? And that's something I've been thinking about.

Chris: More on what you mean by how do you know what pieces to put together?

Anna: Well, like think about it. Like, I think this is in the context of like, you know, we talk about, uh, Dave was talking about any kind of framework, right. And you have so many that you wanted to separate them out. You can't really, and only take the pieces that you need.

Chris: Yeah. You just you're, you're ignoring most of it. It's not like it's not there.

Anna: Right. Like say you don't need a database for the thing that you're doing. Right. But when you're setting up this framework, you basically get the adapters for it, et cetera and so you can build really specific pieces, but when you're new, if you didn't have right. How do you know which of these specific, like, if we're talking about building more specific, like deeper modules, right? Deeper pieces of software, this is something we talked about a little bit with James on the show a few weeks ago. Right? How do you know which PPA, if you and Dave said something along the lines of like, well, if you can say what you're building in a sentence and then everywhere you have and add either a period or a question mark and see what - those are the pieces that I need and you can figure out which pieces of software, right? You actually need to build. But I think as a newcomer, it's still interesting because you don't, you don't necessarily know what tools are available. Right. And what tools to pull from. And how do you find those? I don't know. It's a question.

Chris: I do agree somewhat that if you've got a framework of things, you're opting to ignore a bunch of the things instead of include them, instead of include things like your default is ignoring. I think that's not incorrect. I mean, we definitely do this with, with Phoenix. Like we use Phoenix for all of our APIs, even when those APIs could probably arguably be plug APIs, but we do it for a whole host of reasons. Not, not the least of which is just consistency. So when you go into an app, you just know where to go look for all those things. So we just find that bowl and that's, that's definitely, I think that's - you know, that's going to be a taste thing. Not everybody's going to care as much about that, but we care about that. And, you know, Phoenix gives us a lot of other stuff. There's a lot of other things in Phoenix, like out of the box that you're just kind of getting, which is obviously contentious amongst people. But again, we find that title. So, but at the same time, you know, I could probably count on one hand the number of things where Phoenix is rendering HTML. So that's like a whole subset of things that we just don't ever use. And it's like in Phoenix, we're just ignoring it. So I do, I do think that's a real, that's a real thing. The weight of severity of that I'm undetermined on. I don't know how much that bothers me personally, but I don't think it, I don't think it's incorrect to state it that way.

Anna: And I agree, like I'm not, I'm not necessarily saying like that any of that's bad. My question is like, as I was just thinking about the competition that we were having around more specific pieces of software and I'm like, well, if you didn't have a piece of software that titled together and you were new, right. How would you know what pieces to pull together?

Chris: I think, um, it's interesting. Cause I think Dave and I want to achieve the same things, but our methodologies and the ways in which we're going to that place are very different. I think the, the backstory to, to him coming on the show at Gig City, was Dave and I were sitting in the back room and I was asking him about this. Like I was kind of pushing him on his sort of component design ideas through again, through the lens of deep and shallow modules, you know, to that end. I think one of the ways that we help beginners out is I think I, let me start over and say, I think the deep modules, I think that I think having libraries that are powerful, that necessarily do very powerful things with a simple interface that my intuition, I have nothing to back this up other than my intuition. But my intuition is that that is a really good way to teach beginner because you're just, you know, you just say, here's the thing. Like it does one thing, it does one thing really well.

Anna: But knowing what those things are, right? Like if somebody is teaching you and you have mentorship or you have projects to look at, or you have code, right. Like, cool. That's awesome. Right. But that's my question. And I don't know if there's a good answer for that. Or maybe there is a really obvious answer.

Chris: Discoverability of like what APIs are, the APIs that you should be using? What does that mean? I think for that kind of stuff, it's going to end up being my, uh, anec-data for that. My experiences have been that beginners do two things. They either search around in the forest until they find a library that they like, where like, is it appeals to me, API makes sense. It was easy to use whatever it is. And a lot of times it's based on ease on how easy was it to get started. A lot of times it's like it had this one feature or I really liked this thing about it. Like, it's just, but it's, it's always funny when you meet someone who's very, very new who necessarily hasn't been plugged into the community yet, whatever the community is, or hasn't like tapped into the cultural zeitgeist of whatever programming language that they're in their decision-making is really interesting because they, they make decisions based on merit where the merit is some calculus that they've invented and it's, it's all, it's like very raw and emotional. And like it had - it's some combination of features and just like how it felt. So that's that's number one. And then number two is like, if you have somebody who has been plugged into the community, they're just going to pick whatever the community, you know, and if you're in a community that tends to like cargo cult thing, uh, or maybe that's, I mean, that's the wrong way term terminology is if you're in a, if you're in a community that by large always agrees or at least sort of in waves agrees with different best practices, then you're going to naturally fall into those things. And actually I'm not even thinking about it, Elixir in this. What I was thinking of in my head is just, so if you're doing client side, front end stuff, you know, you're probably getting swept up in whatever the wave of the next thing is. Cause that world is moving so fast and you can have some opinion about what that means, but you know, if you're, if you're coming into JavaScript and you start off with whatever thing, and then all of a sudden you get attached to the zeitgeists now you're doing react and you're doing whatever the new react stuff is, or you're doing asynchronous rendering, or you're doing whatever, you know, you're riding whatever wave a bunch of years ago, it was like immutable JS. And now I don't see many people talk about all that stuff anymore, but now they're, they're pushing harder and to, you know, whatever, whatever other new thing is coming up. And that's how you're going to make decisions until you, until, you know, you learn how to, how to ride the bike until you learn.

Anna: Yeah. I mean, once you know how to ride the bike, I think that comes much easier to navigate. Right. It's just the learning part.

Chris: I don't know that either of those are necessarily wrong.

Anna: That's true. Yeah. I just think it's interesting. Cause when we were talking with James, he was like, you know, looking at certain libraries. It was like harder to find. Right. Cause you're looking for very specific things. And so if you don't know what you're looking for, how do you find it? But I think you're right around, well, search until you find something that feels it's right, right. By whatever your definition of feeling is.

Chris: Yeah. For some definition of right. Or, you know, hopefully like you'll have somebody who's really enterprising and they'll build it themselves. That's like the optimal solution. It is really interesting though, because I think along those same lines, if what you have to do to get something up and running is compile, uh, a kit of parts yourself from 20 libraries to do the one thing that this other library does by just adding the one thing you're necessarily going to probably have a better time just using the one thing. Right?

Anna: Yeah. I mean, there's a place, I mean again, the right tool, right. There's not necessarily a place there's different approaches. Right. And we're talking about how you might do it better if it doesn't mean that there's not a place for the other, like if you're trying to rapidly prototype it out, you know, cause other things come into play with time, costs. Right, right. Like you might not have time. You might have to like try and get to validate what's the thing.

Chris: Right. Or to learn, you know, how do I attach all these pieces that ostensibly should already be attached, but now I have to do that. And now it's a burden on me to have to learn how to attach all these disparate pieces. It's like the Java file reading. If I want to do buffered reading of a file, I need to know about, you know, three or four different objects to do that. That is bad. I don't want to have to compile three or four different libraries altogether to do the one thing that I want to do. Uh, in the sense that the example that's like redounding in my head is if let's say in order to use Ecto, you actually had to mix install, uh, DB connection and all the other bits underneath it that also needed Ecto and then attach them all together, bespoke yourself. That would be nominally worse than Ecto doing all that for you. Right.

Anna: Um, so anyway, thanks to think about what about, what else stood out to you? I have to also, I have to head out in about five minutes.

Chris: Yeah, we can wrap up. No, I, um, I really like James’ talk.

Anna: James' talk was great.

Chris: I really, really loved James' talk. And that story was excellent. I thought he did such a great job of conveying some really important concepts by also telling a really fun story.

Anna: Do you wanna give people a little bit about James' talk since it's not recorded?

Chris: The whole story was about, um, how he does ICFP every year, which I believe stands for Insane Clown Functional Posse. He does that competition every year and it was a story about the most recent competition that they did. And I think they did relatively pretty well and out of all the different teams, um, but he basically went through and compared their solution, his team's solution to the winning solution to kind of work backwards and figure out what did they do that was so much better. How did they achieve their aims? And it was a really interesting like story about the ways in which you can view design and how that viewpoint necessarily affects the end result. It's like if you just started out from sort of, if you made the wrong assumptions upfront, you ended up writing way more code and doing way more work and just being way too involved. Whereas if you had the idea in the beginning to frame the problem in a specific way.

Anna: Well, and where to introduce or remove complexity, right?

Chris: Like a bunch of the problems sorts itself out, it turns out just by changing the viewpoint, um, that you, that you look at the problem through, which was really interesting. And I found myself just wanting to know more about the different technical differences. And I just wanted to like dive so deep into that because I think there's so much interesting discussion to be had in stories like that. And I was, I don't know. I mean, I'm a huge nerd, so I just enjoy stories like that.

Anna: I thought it was a really good talk and I think it's an interesting discussion to be had right. As we design systems, right? Like sometimes you get overly like, as you're designing, even like, oftentimes we're like, okay, well, as you're stepping through, you come up with an initial thought right. Design. Um, and sometimes it's hard to step away and then review it again and be like, wait, is there a better way to do this? Which is kind of what James found, right. How do we step back a little bit - and looked at where the complexity was and been able to abstract that different, then we would have had more time to actually implement, which is what his point was. Right. The other team's design was much simpler. And so they had more time to actually implement, whereas we had read a lot more code just to get the thing working.

Chris: But overall Gig City was great. And yeah, I'm sure we're forgetting a bunch of really great talks.

Anna: I mean, I think every talk was I honestly, yeah. Every talk was great.

Chris: I feel bad. I feel bad that we're not basically naming everybody. The quality of talks was, uh, this is sort of damning with praise, but it was like, it was really surprising. The really high-quality talks for a first year.

Anna: Yep. It was excellent.

Chris: Really on point there was everybody in there was really knowledgeable. Good speaking.

Anna: The panels were interesting.

Chris: The staff was amazing. Bruce and his whole staff and Brett friends of the show did an amazing job. Yeah. I mean, they took really good care of everybody. They went way out of their way.

Anna: Like there's a lot of attention to detail. That was excellent. Venue was great. The venue was great. The speakers related stuff was awesome. Yeah.

Chris: They did. They took really good care of the speakers. I mean, I, I wasn't, I didn't require much cause I was in town already, but I mean, they, they took care of everybody's travel and like.

Anna: Picking people up from the airport. Above and beyond. So, so thanks to the entire Gig City crew again. That was a really rad conference. Yeah, definitely be there next year. It was awesome. Fantastic. Cool. Well thanks Chris. Yeah. This was fun. Talk to you soon.

Chris: Yeah. I don't know if I'll be here next week.

Anna: That's right, because babies.

Chris: Yeah. If I am here, there'll be a lot of screaming in the background, probably.

Anna: Okay. That's fair sounds good. Alright. Bye.