Sundi Myint: Welcome to Elixir Wizards, a podcast brought to you by SmartLogic, a custom web and mobile development shop based in Baltimore. My name is Sundi Myint, and I'll be your host. I'm joined by my co-host, Owen Bickford. Hey, Owen. Owen Bickford: Hey, Sundi. Sundi Myint: And this season's theme is Elixir in a Polyglot Environment, where we talk about how Elixir works with other languages. Today, we are joined by special guest, Cara Mitchell, from PepsiCo. Hey, Cara. How are you doing? Cara Mitchell: Hi, everyone. Doing good. Sundi Myint: Did I hear you say, at the top of the show, that you are calling in from New York, or did I just [00:00:30] totally make that up? Cara Mitchell: Yeah, no, I'm in New York today, the Lower East Side, is where I'm recording this from. But I'm around different boroughs, depending on the day. It's been really nice here lately. Sundi Myint: Awesome. I love New York. I love visiting New York. I used to go once a month. Now, it's amazing if I can go once a year. Owen, have you been? Owen Bickford: I've been a couple times, very different scenarios, but I don't think I can say I've [00:01:00] fully enjoyed or had the New York experience. Sundi Myint: What is the New York experience? Owen Bickford: I've done the tourist experience a couple times, once with a big group, and then once with friends and family. Sundi Myint: Cara, how would you describe the New York experience as a New Yorker? Cara Mitchell: I have no idea. I've lived here for quite a while, about 17, almost 18 years now. It's just home. [00:01:30] What people come here for can sometimes baffle me. Times Square is not one of those things that I think of. I've never thought that, but some people really like seeing some of those unique landmarks. Part of why I live here, I don't need to drive. I can take mass transit or ride my bike everywhere. And there's a lot of variety. You have all sorts of neighborhoods. You don't need to travel outside of the country [00:02:00] to get cuisines from all over the world, or people speaking different languages. It's just everywhere. It's part of everyday life, which is really cool. Sundi Myint: Yeah, absolutely. And my reason for going is more or less a sandwich, which sounds a little obsessive, but it is life changing and it saved my life one time and it's an amazing sandwich. I mean, no, I'm really going for my friends, but I will not leave the city without that sandwich. They know me as that girl who gets a sandwich before she gets on the train. Owen Bickford: [00:02:30] Yeah. I think my mistake was thinking of it as an experience. I think next time I go to New York, I need to go and meet someone I know, so that I can get more like a local... Venture out a little bit more and not just do the touristy stuff. Sundi Myint: Yeah. Or maybe meet up with Cara or all the other friends you know in Brooklyn. Owen Bickford: Right, yeah. I know one person in New York, at least, now. Sundi Myint: Yeah. Cara Mitchell: Yeah. We've got little pockets of tech here, and that's [00:03:00] a lot of fun, but we have a lot of other communities. If you're into certain kinds of music, it really depends. There's a little bit of everything, whether you're into art, music, riding your bike, even sightseeing, birdwatching, everything. You can find groups that do just about everything. It's one thing I like about living in New York City is you do feel connected to a lot more [00:03:30] than just tech. I don't want to bash the Bay Area too much, but one reason why I don't like visiting the Bay Area is because when you're there, you feel like everything around you is tech. You go to the cafe and everyone's talking shop. Here it's very different. You can go somewhere and not hear anyone mention anything about programming, or anything about technology, or startups, or whatever. And it's really refreshing to be able to access that side of the city. Sundi Myint: [00:04:00] That is the best thing. I think one thing people asked me about, when I lived in DC, was people must be talking about the Hill all the time, and the senators and stuff. And I was like, "I literally never run into that." No one is talking about it or, at least, maybe my community is tech, at least, in the DC area, but it just never came up. I went to karaoke performances by our coworker and co-host, Alex. And I went to tech meetups and brunch. Everyone was at brunch, but nobody's [00:04:30] really talking shop and politics, and I I loved that. It was just all the sorts of other stuff. I don't know if there's a particular thing people talk about in Michigan, Owen, but is it hockey? Tell me it's hockey. Owen Bickford: I mean, I'm not in those conversations, but you're probably right. When I was in Texas, it was football and baseball, mostly football. Yeah, I'm sure if I was in those circles, I would hear a lot more about hockey. But Cara, you mentioned music, and that gave me a flashback. I've been to New York three times, one [00:05:00] time I always forget about. I was in a band and we did a tour and we went up to New York, and stayed at a makeshift loft, which has probably been renovated into a multimillion dollar apartment complex now. Cara Mitchell: It's definitely a good bet. It's unfortunate, but true. Owen Bickford: Yeah, that was 20 years ago. Cara Mitchell: Wow. Sundi Myint: We're talking about these decades of time. Cara Mitchell: No, it does make me feel a little old, but at the same time, the city has changed [00:05:30] a lot. And so, things are constantly evolving, some for the better, some not so much. But you still have this vibe of people who are trying to make New York City into their space, and these communities who really want to live in it, not just circumstantially be there. And so that's definitely something that's still a vibe. You just sometimes have to go to different neighborhoods than you did in the past. Whether it's [00:06:00] cost pushing people out, or just communities shifting to new spaces and stuff like that. Sundi Myint: Yeah. And I miss New York a lot. I really want to visit. I always think about how much I want to visit around now. And that means that I end up going in August, which is the worst time to go. I mean, talk about sweaty, trash, humidity, grossness, but I really want to go. Cara Mitchell: Yeah. There's a joke I tell people about New York City. After a rain in the Pacific Northwest, you smell evergreen, [00:06:30] you smell just that rain smell. I don't know. Rain smell in New York City is different. It brings out the sewer. It brings out the trash. It brings out everything you don't want to smell. And it is definitely one of the worst parts of summertime in New York City. It does not smell good. It's never, never something you want to share with anyone. You just avoid it. You leave those areas when you can. But [00:07:00] you also get used to it, and you just stop thinking about it. But it's a distinctive experience. If you want one of those New York experiences, it might be the after rain smell. Sundi Myint: I think Elixir meetup September, October. Let's go. A lot of people I want to see, and I think that would be a good time. I think, actually, Pepsi hosted a few meetups back in the day in the New York office. Is that still there? Cara Mitchell: Yeah. We still have an office. The funny thing [00:07:30] is, I got this job at PepsiCo while the pandemic was in full swing. I've actually never been in the office. I work from home and, eventually, maybe I'll go into the office, but at the moment my team is spread out all over the world. And so, we don't really have so many people in one city or another, so there's less value in going into a specific office. [00:08:00] But we definitely have a nice office and hopefully we'll start hosting more events and the local Elixir group certainly is something that we can, as opportunity arises, start doing more in-person stuff too. Sundi Myint: All right, I'll be there. Owen, you going to be there? Owen Bickford: I'll be there. Sundi Myint: Okay. That is the one meetup where the pizza will be welcome. New York pizza, at a meetup, yes, absolutely. Sorry, go ahead [00:08:30] Owen. Owen Bickford: I would say, you mentioned, of course, we've heard about the sewer, but we've heard about the culture, the different areas within New York. I'm curious, what was it about New York that drew you to it? Was it just the walk ability? Was there something in particular? Cara Mitchell: Yeah, I guess this is a little bit of personal history. But I grew up as an "Air Force brat", which is just keyword of saying my dad was in the Air Force and we moved around. And so, as a military [00:09:00] kid, we lived all over, including outside of the US. And so, as we settled down in the US, and I graduated from school, I felt like I needed to go somewhere and travel. I had this itch constantly, why am I still in the same place? And so, I chose New York City partly because it was interesting. It reminded me a lot of places I had been, but also because it gave me stuff [00:09:30] that I could access without having to constantly travel. And so, that was really appealing to me. I moved to New York City with no job, and just, I think, a little over $700 in my account and made it work. It was a little bit of a snap, let's just try and do this, and made it work out. Sundi Myint: You always hear these stories, but we very rarely talk to people with these stories. That is wild. Cara Mitchell: [00:10:00] Yeah, it was really a big risk, but it was possible because I'd pretty well connected with various communities. And one of the technologies I had a lot of experience in, at that point in time, was Ruby. I had picked up Ruby doing some of my own projects, before Rails was a thing really. I had a very, very deep knowledge of that language and ecosystem. And so, it gave [00:10:30] me an easy entry to a lot of businesses. And so, it made it pretty easy to move around and just find work. And so, I kicked something off pretty quick with that and sustained a new career on the east coast. Sundi Myint: Did you study computer science and programming or were you a different field? Cara Mitchell: I have studied, but I'm actually a college dropout, so that's, maybe, something people [00:11:00] don't expect. But I do a lot of self-study, so I feel very, very well versed in theoretical computer science. But I taught myself most of that, so did not go to college for programming. Owen Bickford: Never would've guessed. Sundi Myint: Yeah. I mean, I always say that our field is more tolerant to people from all different backgrounds and I've always appreciated that. I [00:11:30] really... Sorry, the cat has just started doing some things here. Owen Bickford: Marble has made an appearance. Sundi Myint: She has indeed made an appearance. She's going to exit very quickly. There she goes, all right. Owen Bickford: Catastrophically. Sundi Myint: Catastrophically? All right. We're how many minutes in and he got his dad joking in. There we go. Owen Bickford: It's a pun. I don't accept that puns are all dad jokes. Sundi Myint: Okay, fine. Owen Bickford: I reject that, Sundi. Sundi Myint: Fine, all right. With that interlude, I [00:12:00] feel like we're very tolerant of people from different backgrounds and whatnot. I was an art major and I worried about it a little bit, but I was doing computer science internships and whatnot during college. I always thought like, "After you've gotten your foot in the door, it's okay." In fact, I remember my first manager was like, "Do you need to finish school? You could come work full time, right? And I was like, "Ha ha, very funny. You're not going to convince me to do that." [00:12:30] But he really wanted me to come work full time, so I thought that was cute. I was like, "You got to wait till May, sorry dude." Cool. Anything interesting or fun going on at PepsiCo right now? I know it's one of the bigger names in the Elixir space. Cara Mitchell: Yeah, we have a lot of teams. And honestly, I can't give everyone a fair representation of what they're doing, especially with Elixir. It's a [00:13:00] Cara Mitchell: It's a pretty large organization now. Specific part of PepsiCo is the eCommerce unit. And so, this part of the corporate PepsiCo entity manages everything from advertising, different kinds of data science, all sorts of supply chain work. And my specific team is an internal in-house eCommerce system. And so, this is our way of hosting [00:13:30] our own shopping experiences and stuff like that, rather than going outside to Shopify or whatever. And this allows us to tailor the experience a little more towards what some of our customers need. And yeah, some of these customers are really interesting. They're not just regular consumers online, but they can be businesses and buy businesses. I mean, everything from professional sports teams, universities, mom-and-pop shops, every [00:14:00] kind of business. And so, it's been really fun seeing that side of the company and learning about it. And so, I've been really lucky to be on this specific team because we can build our own thing. And then, our touchpoints are really just about integrating with the supply chain and a few other little bits here and there, but we otherwise have full control of our little eCommerce platform. And it's been a lot of fun to be able [00:14:30] to evolve that and grow it. And just really investing in what we can build. And- Owen Bickford: It's cool. Cara Mitchell: ... right now we're really trying to grow the team because we have a lot of things, we're very excited to build. And it's really just a matter of getting enough people to help us get there. Owen Bickford: Curious before Elixir was it all spreadsheets or was it a different applications? Cara Mitchell: Well, my team and our internal eCommerce [00:15:00] capabilities didn't really exist before this. We did have an arm of the IT organization that just does general information technology stuff that did some eCommerce stuff, but it was much more limited. And they had a much harder time evolving and moving their capabilities for it. So, the things we've been able to deliver within fractions [00:15:30] of the year has really astounded some of our internal brands. We'll have different subsidiaries, whether it's SodaStream, Gatorade or whatever. There's so many brands, I can't even start to enumerate them, but they'll come to us and say, "We want to do something like this." And the fact that we can turn around an actual usable site that works and meets [00:16:00] all wishlist items is really rewarding. We can actually empower these businesses in ways that... Honestly, I don't think they thought they could get done, or at least with the budget that were able to execute on, so- Owen Bickford: It's really cool. Cara Mitchell: Yeah. Okay. [00:16:30] This is going to be a little harder. Are you recording the channels separately? Okay. Okay. Yeah, I will try and just speak up very clearly and that way, hopefully you can try. And when the worst of the sound is there, you can try and just clip it and I'll do my best. Okay, cool. Sundi Myint: [00:17:00] You know, Cara, I just did a quick search on our podcast page just to see if we've talked to anyone from PepsiCo before. Owen, do you know if you've listened to any episodes? Because I know I started hosting halfway through our history. Owen Bickford: Haven't listened to it. I thought I've listened to- Sundi Myint: We are on season eight. Owen Bickford: Episode, but yeah, it's been while. Sundi Myint: Okay. I'm really excited. We're getting a chance to talk to you far. I mean, you're talking about all these brands and I knew that because I've seen that flower image where it's the PepsiCo symbols in the middle [00:17:30] and all the brands spread out from the middle. It's like Dasani and then the Fanta. And then, everything's coming out and then it's not just obviously the drinks. It's all the other stuff too. And it's like, "Oh that's under Pepsi". Like, "Oh, interesting." And I've always wanted to talk to somebody just to figure out how you handle working in Elixir on a global scale. Is your team working on something very specific or is there a really cool [00:18:00] Elixir problem that you've solved recently? We always love hearing those. Cara Mitchell: Oh, yeah. I think there are a bunch of interesting things we're doing with Elixir and as far as scale goes, it's really hard to put... Yeah, come on in. We just need be quiet outside the [inaudible 00:18:24]. Sundi Myint: Okay. Cool. Cara Mitchell: Sorry about that. Yeah, we're going to edit and cut out things, but it's more that just ambient noise. [00:18:30] Okay, cool. You're good. Sorry. Someone just needs something out of the room. So, let me just start back to answering that question. So, we have a clear place to cut. So, yeah, at PepsiCo we're doing a lot of interesting things and some of it is hard to pin down as far as putting numbers on scale. What is... and isn't large for some people can be [00:19:00] surprising, right? How many dollars are being spent versus how many you request per second you're surveying or how many millions or billions of data points you're storing and some database? So, what scale means can vary. And this is not the first time I've worked on an eCommerce system. I was the first member of the platform team@jet.com. And we built eCommerce system from scratch in F# which [00:19:30] is not exactly the same language as Elixir, but somewhat related in the sense that the functional programming approach to thinking about software and systems, and all of that gives you different tools. And so, really what's interesting is much less about the absolute scale and more about how we describe our systems and think about what's going on and really use [00:20:00] the language. It's much less about, "Oh, we've hooked up absent for GraphQL and much more, okay, we've got this flow for checkout." How do we really work with all of these different stages of getting someone's shopping cart, payment information, and shipping information. And turned that into a whole like, "Okay, we need to manage inventory. We need to make sure that we get communication out to confirm orders. We need to make sure we process [00:20:30] that. We've got tax calculation. Then we've got actual fulfillment processes, whether or not orders need to be split into multiple boxes and so on." And so, there's just so many little steps here. And the ability to think about this in a more functional approach is really refreshing. And there are certainly things we can still do better, but I think this is where a lot of really cool stuff happens. And this is where Elixir becomes a really [00:21:00] interesting tool, not just some language that works well. And so, yeah, I think there's definitely something special there that we wouldn't have if we were writing in some other language. Owen Bickford: So, is Elixir reaching out to other services or microservices, like a consumer application? Cara Mitchell: Yeah. We use multiple releases to slice up some of our systems and those currently run [00:21:30] in pods on Kubernetes. And so that helps us not think about that. It's not that Kubernetes is really allowing us to do something that we couldn't do without it. It's more that it allows us to separate the job of the infrastructure management and the job of really making sure that all of that is available and working from the job of figuring out what is going to go into an artifact? [00:22:00] How it connects to the rest of the system and all of the protocols in between? And so, it gives easier boundaries for a lot of our teams. So, we have various ways. We slice up an umbrella project, which has a lot of apps in it. And then, some of those apps will be running and some releases and some won't, depending on what that thing is actually doing. So, some things might be like a [00:22:30] GraphQL, API endpoints, and that will have some slice of code that might include various ways that we access data, certain kinds of business logic to support mutations. And then, on the other side, we may have things that have no interactive component where there's no actual human interacting with that system. And those things may literally be reading off message cues and not doing any other processing, [00:23:00] other than messaging, some messages out and rinse and repeat. And so, those releases might need a very different slice of all of that code. Sorry, some background noise. I'll pause for a second. Okay. So, yeah, we definitely using that OTP approach to organizing our system. And it certainly helps us keep, a coherent code base where [00:23:30] we have a repository that we can slice and dice many different ways, without having to worry about which version of which thing needs to run and call some other thing in order to be operational. And so, the umbrella approach has really given us a good amount of mileage for that reason. Owen Bickford: So, I think over the years on the podcast. I've heard mixed feedback or impressions about umbrella projects. Is that your [00:24:00] impression as well? Sometimes it works really well and sometimes people struggle to grow with an umbrella project. Sundi Myint: Yeah. Cara Mitchell: I think. Sundi Myint: How you feeling about it? Cara Mitchell: I think it's definitely something that isn't well expressed or taught? What an application is inside of an umbrella can be very confusing for people technically in OTP terminology, an application includes every single library is an application. right? [00:24:30] Now, the terminology and the documentation, we'll call it an application library, which feels redundant and confusing. But the idea is, it has a lot to do with the life cycle of a running airline or Elixir system. And understanding all of that interplay becomes a really useful thing. If you're looking at reliability or really consistent [00:25:00] startup and avoiding race conditions. We talk about concurrency in the language and in the VM. And we think of it mostly after things are up and running, we have processes, we can start to handle new connections to an API endpoint. Or we have things that can just run in the background asynchronously with message boxes as buffers or things that scan and process ETS tables. All of these different forms of concurrency [00:25:30] are interesting. But another way OTP helps out with concurrency is really getting to a stable, a known state. That's good. So, when your application starts the goal isn't to just race, to have everything up and running, it's actually racing to make sure that you guarantee everything you expect is good. And that way, as soon as one of those things fail, you know how to recover. We [00:26:00] Cara Mitchell: ... talk about supervision hierarchies as something that's interesting, but very few people really make use of it in a proper way, because they're not thinking in terms of what that steady state is, and what good is, versus what a broken system is and what might be malfunctioning. And so if you have one component that depends on a database connection, and then that connection pool crashes, that part of the system [00:26:30] can no longer run properly. The expectations that it has that you can get a connection out of that pool, fail. And so the right way to think about this is to back up a bit and say, "Oh, we need that available, and until we have that, we can't run. So shut us down, go try and reboot the connection pool, then start the application up again." And, of course, that will [00:27:00] roll over to deeper and deeper dependencies, and that's on purpose. That way you're not in a halfway working mode. It's like, "Okay, the system's either working or not," and then it's very, very consistent with how it tries to get to that working state again. Whether it's right at boot or after a failure. And the way it does it is super, super consistent. And so I find releases really help you think about that, and it's one of those things [00:27:30] that I think people probably ought to spend a lot more time evaluating if they do care about that kind of resiliency. Owen Bickford: Sundi, I was interested, as you're describing that restart process and machines talking to each other trying to restart, who's in control there? Is that Kubernetes, or is that OTP nodes talking to each other, or a little bit of both? Cara Mitchell: Well, Kubernetes is a very course-grained restart. The pod is either running or not. And [00:28:00] for better or worse, it's just what Kubernetes makes easy or hard. Kubernetes very much prefers stateless pods where you can just replace one pod with another, they're effectively equal once they're up and running. And sure, you can attach volumes, and you can do a bunch of other stuff to move away from state fullness, but the idea that there's interchangeable parts gives clusters [00:28:30] flexibility. You can expand and grow things, you have scaling, you can handle errors at a hardware level. But outside of that, it doesn't really think about anything in terms of your business domain, and what a halfway broken system looks like. If your connection pools are failing, it's not that the pods need to restart, it's that you shouldn't be initiating things that are going to get halfway through and [00:29:00] then fall over, and then need to restart, which is even more expensive in these cases that are commonly caused by things like overload. When you look at that, you have to ask yourself, is it better to actually be down, or actually just refuse doing work that you know you can't complete, then just continually trying half of it and failing. And there are a lot of cases where this also rolls [00:29:30] into things that are side-effectful. If you're sending emails, for example, you don't want to get halfway through and then have something fail after you've sent the email and then retry. You don't want to end up sending 10 copies or more of some communication. So in these cases, it's really important to think about how you want to do those things. And I find releases, supervision hierarchies, all of that, [00:30:00] it's almost just structure for the mind to think about those things. It's not something that needs to be a rigid rule, but if you start thinking about your application in terms of those things, you start really getting answers that help you get somewhere, and get you beyond just roll the pod over as your answer to resiliency. Now, of course you could also do in place upgrades, release upgrades. I've done those in [00:30:30] very, very large clusters over thousands of machines, very, very well. They're definitely doable, but I don't think most people are ready to think in terms of that. And if you're already using something like Kubernetes, it may not even help because you're already dealing with something that already thinks it owns the life cycle of a pod, and trying to do that internal to the pod on top of that is a little bit of friction. [00:31:00] So I may not recommend that everyone look into that side of releases, but there's a really deep rabbit hole there that we could get into of different ways you could run and deploy Erlang or Elixir applications. And it's really interesting to see how it varies to from things that run in big clusters to things that are effectively firmware on little robots, or embedded appliances, and stuff [00:31:30] like that. Sundi Myint: So we've very much talked a lot about Elixir just now, and I'm very curious, you mentioned really liking F Sharp, and I think you mentioned it just a little while ago. Is there any dream team combination of something that you like working with Elixir, like F sharp, or are you an Elixir Phoenix fan? Cara Mitchell: You know, I do not play favorites at all. You asked me [00:32:00] earlier if I had any interesting hot takes about Elixir. I guess the one funny one is that I'm one of those people who actually do enjoy and prefer, at some level, working with Erlang over Elixir. Which is a shock to some people, it's like how can you deal with the syntax? Or how can you deal with... There are constraints, and I like the smallness of Erlang, as well as [00:32:30] the way it forces you to focus on certain things, ways of doing things, what it makes easy versus hard. It's not for everyone, but it certainly is one of those things, if we're going to talk about being in a polyglot environment, one of the easy, low hanging pieces of fruit in the Elixir community is to step outside of Elixir, but still be on the beam. You don't necessarily need to bring in something like F sharp, [00:33:00] or Rust, or C, or Python, or whatever. I've written in lots of languages, but the idea here is there's a whole lot you can think about just by shifting what's easy and what's hard, and what comes as idiomatic in one language versus another. And learning Erlang, really learning it, not just understanding that the syntax is different, can bring [00:33:30] different idioms to the table. And I think ideas flow both ways. And if you learn one of these languages, you're going to use the other better. Like you'll see the latest release of Erlang Version 25 now has this new maybe syntax, which is effectively importing width as a feature of Elixir into Erlang as a built in. So [00:34:00] this new feature comes after many, many years of Erlang programmers doing nested case expressions over and over again and going like, "Oh, this is a drag." Sundi Myint: Sorry. Have you seen a nested case? Cara Mitchell: Yeah. Sundi Myint: Oh no. Owen Bickford: Fun times. Cara Mitchell: There were a lot of proposals that came around to fix this. This was far from the first attempt, and there are a lot of interesting ways to still solve some of those [00:34:30] issues in different ways. I'll even mention F sharp in this case, has a very different approach to solving this with something called active patterns. And so what we end up deciding to add to a language can be a really hard, long choice, but I think it's not a mistake that we ended up somewhere that's very closely aligned with [00:35:00] what Elixir has. And there's a lot to learn from that experience of like, "Okay, what else can we think about what? What else is missing?" So yeah, I think Erlang needs to evolve as a language just as much as any other. It doesn't need to go fast. It doesn't need to rush to add features. It's perfectly usable as it is, but there are quality of life improvements that will certainly make code bases easier [00:35:30] to write, easier to maintain, easier to get right the first time. And I think we're in this boat together. And so the more we think about it that way, and are less one-sided, I think that's one of the best ways we can think as polyglots on the beam, rather than polyglots in the large. Owen Bickford: Right on. Sundi Myint: I really have to ask this too, just because we were talking about hot takes, and something that I feel like you said was a hot take on [00:36:00] Twitter, like a tweet from a while ago, is that you thought that some of the topics that you found really interesting that you wanted to pitch as conference ideas were maybe ideas that other people wouldn't find interesting. And I'm so curious about digging into that, if you're cool with that. Cara Mitchell: Yeah. I was thinking about it. I've had some people nudging me to start submitting to conferences again, and things that I find interesting can be kind of esoteric. I've given talks in the past [00:36:30] about... I have this talk that takes Elixir code or Erlang code and takes the journey from that source code to parsing, to all of the different steps of transformation and compilation, all the way down to the beam files, and then from the beam files, the code loader and what it does to fuse and translate those beam instructions into actual VM instructions, and how [00:37:00] runtime worked. Now the issue with that talk is a lot has changed. The compiler is very different. Beam files have a lot more info now, and we have a Git. So I've thought of redoing that, but at the same time, I don't know if everyone's actually as interested as I am on actually seeing going from one line of code into what assembly instructions are running and how that works. Sundi Myint: It's interesting. Owen Bickford: I'm interested. I have not gotten [00:37:30] into the weeds with compilers yet, but over the weekend I was doing some side project work and got some help in Elixir Slack trying to get information out of live view modules at compile time. And once I got a little bit of help with that, it unlocked a lot of things for being able to like detect which events have been defined, and that kind of thing. Cara Mitchell: Yeah. Even to the earlier level before you get [00:38:00] to deeper representations in the compiler, learning how macros get executed, and what the output actually looks like, and finding ways to explore that is one of those areas where I think Elixir could actually use some improvement and some tooling to help exploratory interaction with macros. And really see, "Okay, I wrote this code, what is it really turning into? What does [00:38:30] this module look like after it's gone through all of this compilation?" And that I think you can do if you know the right things to call by hand, but it's something that I think ought to be almost automatic, where you could just go in your editor and say, "Okay, expand this. Show me what the Elixir code would look like expanded." And how many end times all the way, whatever it is. Sundi Myint: [00:39:00] Sundi Myint: See, just that is so interesting, just to hear you kind of talk about it, because you're already interested in it. I think my favorite kind of talks that I've listened to are people who really were engaged in like a subject or a topic. And you could feel that and you can see it. And that excitement that somebody has for a thing is the best fodder for conference talk topics. And so I'm really glad we're getting a chance to talk about it, because I want to just say go for it. Cara Mitchell: [00:39:30] Yeah. Yeah. My concern right now is that it's a talk that's probably too many talks in one. I need to cut it down. Last time I tried to give it- Sundi Myint: A series. Cara Mitchell: I felt rushed through. And it's just very, very difficult to fit in under an hour. And most conferences don't even take hour long slots anymore anyway. So figuring out how to reformulate that is [00:40:00] something on my mind. And I need to do it in a way that feels accessible, because what I often get is a few people get really interested in it. But then when you go into talking about static single assignment and how compilers work with static single assignment and optimization, and type directed optimizations and stuff like that, they'll kind of get lost in some of the detail. And I don't [00:40:30] want to spend so much time getting into compiler theory when the day to day like, "Look, you can actually take your code with you and see what it looks like at this step. And here's how you could do that. And you don't need to understand how the compiler works." And that's kind of what I meant by that tweet. The actual theoretical way that all of this works and connects together is really interesting to me. But I think the practical thing that most people would want to take away is actually being [00:41:00] able to say, "Oh yeah, I know that there's this midpoint representation that has all of these things done to the code. I want to see what that looks like for this file, and know how to get that output, know how to like thread things through to the right point and grab that. And say, 'Yes. Okay, this is what the code looks like at this point.'" And I think that might be more of what would be a successful conference talk rather than the other. The other [00:41:30] might be more of a book than a conference talk. And yeah, I have no aspiration to do a talk that needs to be a book or write a book. So don't ask. Sundi Myint: I think we just heard it here first, that Cara is going to write a book. Maybe. Maybe? Cara Mitchell: I've had friends write books. I know how difficult it is. Sundi Myint: Yes. Cara Mitchell: A lot of respect- Sundi Myint: Absolutely. Cara Mitchell: ... for those that [00:42:00] have that undertaking. I don't know. I have a lot of things I might write on before it would be technology. So I don't know. If I'm going to write a book, it probably won't involve computers. I don't know. Let's see. Owen Bickford: Speaking of not involving computers, what's the difference between Kirby and Jigglypuff? I was just curious. Cara Mitchell: Oh, boy. Kirby. [00:42:30] Okay. Kirby. I mean, for those who don't know what we're talking about, this is in video game territory, I believe. And so Kirby is not only a brand of vacuum, but it is a mascot for an Nintendo game of a character that effectively acts like a vacuum. It sucks everything in. It gets powers by sucking in items or enemies or whatever. And super likable, very cute character. [00:43:00] Honestly, just adorable. Owen Bickford: The reason I ask is I think I saw a tweet or something about Kirby. And I was like, "Wait a minute. That's Jigglypuff," because I've only played Smash Brothers. I'm not- Cara Mitchell: Yeah, I have two Twitter accounts. Sundi Myint: Did you just- Cara Mitchell: One that is tech focused, and then the other that's everything else. Owen Bickford: Sundi's so confused. Sundi Myint: Jigglypuff is a Pokemon. What? Cara Mitchell: Exactly. And the other one's a Pokemon. And I don't think, I don't think it hoovers up whatever's around you. It's not going to suck up anything. Sundi Myint: No. It sings people [00:43:30] to sleep and then gets mad because everyone fell asleep when it was performing. Owen Bickford: Okay. So this is what I get for not playing Smash Brothers, and [inaudible 00:43:41] probably, or knowing anything about Pokemon. Cara Mitchell: I mean, I'm surprised I know the answer to these. Sundi Myint: Pokemon comes up a lot on this podcast, Owen. You need to brush up. Cara Mitchell: Yeah. Owen Bickford: PD time, right? Cara Mitchell: That's our bit for pop culture. Sundi Myint: Oh my goodness gracious. I saw this on the [00:44:00] script. And I was like, "Oh, Cara must feel very strongly about Jigglypuff versus Kirby. This must be a thing." Cara Mitchell: I don't. I just think Kirby is a very adorable mascot. And as far as Nintendo characters go, Kirby is underrated. I would love a Kirby game well before a Mario game. Plumbers are great, I guess. But it's kind of tired. And Kirby's where it's at. Sundi Myint: Okay. So Kirby's where it's at. Owen Bickford: You heard it here. Sundi Myint: And [00:44:30] Owen thinks that Kirby and Jigglypuff are the same thing. Got it. Owen Bickford: Hey, no. Now I know. They're completely different similar looking characters. They're both pink, right? Sundi Myint: Oh my God. Cara Mitchell: Yeah of course. Sundi Myint: They're both pink and round and adorable. Owen Bickford: Mm-hmm (affirmative). Sundi Myint: Oh my gosh. I don't even know how to recover from this one. I think the only thing I can really do at this point with my life with my day is ask Cara, do you have any final plugs or pitches for the audience? Anywhere that they can find you or anything you can [00:45:00] check out? Cara Mitchell: Oh boy. Yeah. I think what we're doing in the Elixir community is really interesting. And a lot of that is represented at PepsiCo. So come talk to us. We'd love to have conversations with people who are just curious, if you're looking for work or you just want to figure out what's going on, just connecting with more people. And I think [00:45:30] it's really, really important the community as a whole really becomes more self aware of everything going on. So regardless, I think it's a good thing to make sure that people know that, if you're curious, just reach out. There are a lot of people at PepsiCo writing Elixirs, so they probably won't be hard to find. But you could contact me if you want. I've got a technical Twitter account [00:46:00] that does not talk about Kirby, @Caracodes. So you can go to that one and reach out to me. And I can definitely talk a little more about what we're doing, and maybe give more of my interesting hot takes. But outside of that, I think what I really enjoy is sharing a little more beyond just one language. And really thinking, [00:46:30] in the wider landscape of programming and engineering, what are we trying to get to as far as the next step in Elixir's evolution is an ecosystem? What do we need to build? What's missing? But also, really figuring out how we can tell people what's interesting about Elixir, [00:47:00] and what people can take from Elixir and be inspired by. It's not that everything needs to be written in Elixir, it's that people can learn a lot from whatever language they're using. And once you learn a language like Elixir or whatever, you're going to take ideas away from that. You're not going to be able to re-implement supervision hierarchies the same way they work in the [inaudible 00:47:25]. I've seen people try it time and time again. It doesn't quite work the same. [00:47:30] But the way it makes you think about things and approach problems and systems engineering and observability and deployment, compilation, all sorts of things. All of these things are takeaways. And if we represent ourselves as a community that's less about, "Oh, you have to use Elixir," and more about, "What can people learn from Elixir even if they don't use it?" I think we're going to have a lot more interesting connections. And [00:48:00] we're going to have a lot more vibrant contribution too, because people might actually say, "Oh, I thought it was just this esoteric domain-specific language that only worked with telecom applications." And they couldn't be more wrong, but at the same time we can't get there if we keep telling them, "You just have to use it." Conversation needs to be a little more open. Owen Bickford: Yeah. I know after each of the conferences in Happy Hours [00:48:30] and Hallway Tracks, I definitely hear a lot about Elixir, but a lot about other languages, because we're all living in a very diverse world, technically speaking. But also, as we're wrapping up here, release date for this episode is squarely in the middle of pride month. So I just wanted to say happy pride. I love seeing representation from everyone, everyone up and down the spectrum. And so I just wanted to shout out. Cara Mitchell: Exactly. Hello to my queer fan out there. Owen Bickford: Yes. Your one fan. Cara Mitchell: [00:49:00] Yeah. No, it's great having a community that has been very accepting. And I've not really had to think twice about Elixir events and worry about whether or not someone's going to have a problem with who I am. And it's something I hope continues, and that people put effort into perpetuating, really, really thinking about accepting people, [00:49:30] and really opening our doors rather than closing them. And so I really appreciate everyone in the community being so friendly and open. Yeah. Thanks Owen. Owen Bickford: 100%. Sundi Myint: Yeah. I hope we all get a chance someday soon in the future to get together and just be. Because this is my favorite community to be a part of, and I'm so proud to be a part of it. So thanks everyone for making it great. [00:50:00] Well, Cara, it's been so wonderful to chat with you today. Thank you so much again for being here. So that's it for today's episode of Elixir Wizards. Thank you again to our guest Cara Mitchell for joining us. I'm Sundi Myint, and my co-host is Owen Bickford. Elixir Wizards is produced by Hangar Studios, and is brought to you by SmartLogic. Here at SmartLogic we build custom web and mobile software. We work in Elixir, Rails, React, Flutter, and more. Need a piece of custom software built? Hit us up. Don't forget to like, subscribe and leave a review. [00:50:30] Your reviews help us reach new listeners. And you can find us on Twitter @smartlogic, or join the Elixir Wizards Discord. The link is on the podcast page. And see you next week for more on Elixir in a polyglot environment.