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, Bilal Hankins. Hey, Bilal. Bilal Hankins: Hey, hey. Sundi Myint: This season's theme is parsing the particulars. Today we are joined by a very special guest, Theo Harris from Alembic, and we'll be diving to the particulars of onboarding into Elixir. Hey, Theo, how are you? Theo Harris: I'm great. How are you two? Sundi Myint: Very good. We're having a very nice Thursday afternoon here, but you're having a very early Friday morning, yeah? Theo Harris: I sure am. It's 7:00 AM, I've got my coffee with me. Bright and early for me, so yeah. Sundi Myint: Do you have a beautiful flat white, I hope? Theo Harris: Yes, I do actually in my CSS Sucks mug. It's fantastic. Bilal Hankins: Oh my gosh. Sundi Myint: I've never tasted coffee like the coffee I had when I went to Australia and I didn't have taste buds because I was sick the whole time, but oh- Theo Harris: Oh, I'm so sorry. Sundi Myint: I'm dreaming about it. Theo Harris: Our coffee is much better. Sundi Myint: There's really nothing like it. I think the only experience I've had like that in my life was when I went to France and I was like, I've never had butter before. Bilal Hankins: Oh, yeah. Theo Harris: Oh wow. Bilal Hankins: Are you a light roast or dark roast kind of person? Theo Harris: I like a light roast. I'm a bit of a coffee snob to be honest, but I think a lot of Australians are because they come to America and they try the coffee and they're like, "This isn't coffee. What is creamer?" Bilal Hankins: Cream. Sundi Myint: My first coffee experiences were also similarly in France, and so I actually was able to drink all the coffee with just one sugar cube and that was just the perfect kind of hint of sweetness. And I didn't do any cream, any creamer, but here, yeah, creamer all the way. Right now I'm in the Cinnamon Dolce Latte one. Theo Harris: Oh, wow. Sundi Myint: Our coffee is just not there for me. We've definitely got some coffee connoisseurs at SmartLogic and if they listen to this episode, I'm sorry for telling you my creamer in this manner. I should have owned it up to you in person. Bilal Hankins: That's funny. Sundi Myint: Theo, thank you so much for being with us and for having such an early morning. I know we're going to get into onboarding into Elixir. We had just talked about a hot take you had. Please, the floor is yours. Theo Harris: Okay. Yeah. So my hot tech take at the moment is that developers need to care more about accessibility regardless of where in the tech stack you're working. I think it sort of trickles down to the user regardless. But in particular things like color blindness because we were discussing something like 8% of the male population has color blindness, which is a pretty significant amount. And when you're developing, especially on the front end like I do, you need to take these things into consideration so that your UIs are actually practical to use for your end users. Sundi Myint: Yeah. And I was saying that that stack kind of seems ridiculous to me because that's so many more people than you think about. But I will say that a lot of my guy friends are probably somewhat colorblind. Although this is a debate, I see color very differently too. I was an art major and I took all the color tests, literally all of them. Passed all of them with flying colors, but the average tattoo on a person of lighter skin when the tattoo ink is black looks like forest green to me. Like a dark green. Theo Harris: Oh, that's interesting. Sundi Myint: Or a seaweed green. Theo Harris: Wow. Sundi Myint: Seaweed green is what that looks like. Yeah. Theo Harris: That kind of sounds really nice though. If you've got a black and white tattoo, it's kind of like tealy green. I can vibe with that. Sundi Myint: Actually for a majority of my life I thought that tattoo ink just had to be that color or that it looked like that once it was under your skin. And then later on in my life when colored and coy fish tattoos and people were doing really cool things with shading and stuff, I was like, "Wait, if you have all of this color, why aren't you using black?" And then yeah, my boyfriend was like, "Sundi, what color do you think my tattoo is?" And I was like, "Green." He was like, "It's not." Theo Harris: Oh, dear. Sundi Myint: So maybe what I see is questionable and maybe I could also benefit from the accessibility of the color stuff. I guess, do you have some favorite accessibility tips or tricks or tools that you use to help that go along better? Theo Harris: Yeah. So I think something that really, really helps is just keeping your contrast as high as possible regardless of the colors that you're using because then even if people are not seeing the colors as true to how they really are, they can still read the key information in your UI. And the other thing as well is there's a rule sort of in UI design, you don't use color as the only key indicator of something or some important information, because that's bound to get misinterpreted by people all across the spectrum of color blindness and color visibility. So yeah, you always need some kind of other indicator for important information. Bilal Hankins: I also thought it was interesting when you said everywhere in the stack you should be focusing on accessibility, because accessibility I feel like is something that often gets slumped into the front end developer things and I can see how on the back end it's easy to just forget about that. Theo Harris: Oh yeah, for sure. And I think Phoenix Live here recently got some accessibility improvements with its built-in modal wrap and everything like that. But when you're working on the backend, even just the structure, how things are structured can really inform how the front end ends up looking, because your front end engineers are relying on your back end code to make something usable from the user. So yeah, I think accessibility is a design concern that should be talked about as early as possible in the process. Sundi Myint: Cool. Yeah, it's always good to keep that in mind. So you're calling in here from Australia and you're currently at Alembic. Do you want to give your company a shout out, kind of say what you do, what you do there? Theo Harris: Yeah, for sure. So I am currently a technical consultant with Alembic. We're a consultancy in Australia. We do client work all around the world. We've had clients in America, for example, recently. But we specialize in building applications with Elixir, Phoenix and LiveView and the Ash framework as well. We've got Zach, who is the maintainer of Ash working with us, which we're very fortunate to have. And we also do some stuff with TypeScript as well. So yeah, kind of a variety of different projects in those tech stacks. Bilal Hankins: Have you been working with Elixir before you worked at Alembic? Theo Harris: No, actually. So I was previously a Microsoft 365 consultant, so working with their kind of special brand of React, which is SPFx. And I picked up Elixir because I had some friends that graduated from bootcamp with me that ended up at Alembic and they were working with Elixir. I'm like, "Wow, this looks really cool." I kind of started doing some exorcisms and teaching myself Elixir and then I basically asked Alembic if they were looking for engineers. I'm like, "I really love Elixir, I would love to do this full time." And luckily they hired me on to do it full time. So that's currently what I do 40 hours a week, which is fantastic. Sundi Myint: I love those stories. They just make my heart full. So where were you when you first heard what Elixir was, and then I guess what was the draw? What was the moment that clicked for you? Theo Harris: So I was working at a Microsoft 365 consultancy. I was about six months into being a professional developer. So I was fresh and green out of bootcamp. Bootcamp was fully object-oriented programming. So we had done Ruby as our first language and then some JavaScript in React. So I sort of had that very object-oriented mindset. And then I saw two of my friends who had graduated from bootcamp with me speak at our local Elixir meetup. And I don't know, the syntax just fascinated me. It was nothing like I'd ever seen before. I was like, "Wow, this code is really clean and readable and the syntax is friendly like Ruby, but it looks so powerful." And I just had to jump in and try it for myself, because it looked really fun and I fell in love with it, I guess. Yeah. Sundi Myint: Cool. So we've got two bootcamp grads in the house. Bilal, yeah? Bilal Hankins: Bootcamp. Theo Harris: Nice. Bilal Hankins: Represent. Sundi Myint: Yeah, I also went to a part-time bootcamp. It's interesting what they teach you at a bootcamp. I know you have to do things pretty quickly and you have to go through a lot at once to onboard into development in general. And then on top of that, you go out in the world and you learn Elixir. And so this is an interesting question I've had sort of at the forefront of my mind for a little bit now, maybe a little bit over a month. How do you think someone who is learning Elixir or learning a program for the first time can really have a robust understanding of what they're doing, where it's a deeper knowledge instead of just a referential knowledge? Theo Harris: Yeah. It's a hard question to answer because I think in my experience going through a bootcamp and even sort of mentoring, I have a mentee now who has just graduated from a bootcamp, everyone learns best in very, very different ways. And I think you need to work out what works best for you. But then I would recommend not just learning to write Elixir, but looking at other people's Elixir code. Because the most benefit I've found in terms of having a deeper understanding is looking at the senior engineer's Theo Harris: Code at work and seeing how they maybe solve a problem in a different way to how I would first approach it. And their solutions tend to be more clean and robust and less prone to errors because they've just thought the problem through very logically, and solved it with the tools that they have in the best way possible. Sundi Myint: Paul, have you been tackling things similarly as a new to Elixir engineer? Bilal Hankins: I feel like I'm getting out of that referential knowledge. But yeah, just especially on this last project, it was my first project working on Elixir. I feel like in the beginning I was hesitant to reach out, but just reaching out more to our staff engineer, Lawrence, and I remember we probably had a 30-minute pairing session and he just showed me all of the cool shortcuts and stuff you can do in Elixir. That was good for having context at that time. Sundi Myint: Yeah, it's definitely helpful at different stages of your learning to incorporate different methods of learning because I did very similar things. I had a lot of pairing when I was first learning Elixir. I very heavily relied on looking at senior engineers' code. And I think that worked for me very well for the first two, maybe three years of my learning Elixir. I think where I'm at now is I am actually craving a deeper knowledge of maybe not just how, but also why, because what I want to know now is, how do I come up with these solutions myself? How do I burn in these patterns that I'm seeing these senior engineers do to get there? And I'm now learning that. I've even on this podcast said multiple times that I'm not a person that learns well from books, but I am now second guessing that, and I actually have three books open on my desk right now, Elixir books, trying to get a better understanding of the how and the why. I don't know, that feels great to have bridged that particular gap, and it's all at your own pace too. It took me probably longer than most people would to get there, but I'm glad I have. And so the onboarding Elixir journey is different, I think, for everyone. Theo Harris: Yeah, definitely. And I think it's really great that you've mentioned that that approach worked for you for X amount of time, the first couple of years of your career, but now you're switching tracks. Because I'm still in that first phase of my career, I guess. I've only been developing for just over a year professionally, so it's good to know as a more junior engineer, these methods might need to change over time for me to get the most out of them. Sundi Myint: So Theo, can you tell us a little bit of the process that you went through onboarding when you went through Alembics. You were already familiar with Elixir, what did that onboarding process look like? Theo Harris: Yeah, so my onboarding process with Alembic was really, really interesting because I knew some very basic Elixir that I had taught myself, just through using Exercisms and talking to my peers that were using the language. But onboarding itself was a full straight month of pairing one on one with our intern at the time, who had no experience of Elixir, had just graduated from the same boot camp, so had an object-oriented background as well, no learning functional programming in her own time. She was completely fresh to this. And we actually built a project completely from scratch, which was the Wordle game that I demoed at ElixirConf this year. So it was just a month straight of pairing one on one and building something from scratch with the tech stack that we use for consulting, which was very, very intense. Sundi Myint: So this is interesting. You're saying that you got paired with an intern, but you were the one... So you were learning by teaching immediately. You didn't do that traditional pair with a senior, do that kind of onboarding situation for a few months or anything like that? You went into teaching? Theo Harris: No. Yeah, it was kind of learning by doing and then teaching straight away. One of my seniors at work the other day used a great analogy. He was like, "I feel like we're in that episode of The Simpsons where Marge is teaching piano by learning one lesson ahead of her student." So yeah, you're kind of learning something and immediately imparting that knowledge onto someone else. And occasionally we'd have some of the senior engineers step in and be like, hey, how are you going? And they would kind of help unstick us from some more sticky bugs I guess. But for the most part it was eight hours a day of pair programming with someone completely fresh to Elixir, which is a whole different experience, very intense. Bilal Hankins: What were some recent challenges that you can speak to as the Elixir engineer? Theo Harris: I guess recently, once I sort of got the fundamentals down and I was put onto a real client project, as I mentioned, we're using the Ash framework at the moment in a lot of our client work, and that's a relatively young framework. So I think Zach, the maintainer has been doing it for about two years or so now. 2.0 just launched, so it's now stable. And I have no knowledge of Ecto, which is what it's built on top of, and kind of got thrown in the deep end learning this framework and all of its ins and outs without knowing a lot about what was going on underneath or maybe why it was designed in a certain way. So I think the real challenge there was picking up this knowledge super, super rapidly and applying it straight onto a client project. You've probably heard the phrase, move fast and break things. It was very much move fast and break things. It was very hectic, but I learned a lot rapidly in a very short amount of time. Sundi Myint: Awesome. I think we're both about to ask you if you could talk more to the Ash framework and what it is. Bilal Hankins: Yeah. Theo Harris: Yeah, absolutely. For those not familiar with it, it's a framework that provides a set of tools for modeling and interacting with your resources. So resources can kind of be anything in Ash. It could be an API or your entity model for an account, but it kind of provides a lot of niceties around building those, declaring those models and working with them. It's got a ton of different sort of tooling and interactivity in different packages as well. So there's Phoenix specific stuff and GraphQL specific stuff. It's really nice. Sundi Myint: Just to illustrate this a little further, what does the end product look like with Ash? Theo Harris: So the end product, you end up with this very clean declaration of a model and you write actions for it. Everything is driven by actions in Ash. So you've got an action to maybe create a new instance of a resource or get a resource by its ID, and those are all very clearly laid out in the resource itself. But then you've got things like Phoenix form helpers for example. So when you're doing writing back to the database, it links in directly to that resource in a very semantic and friendly way to make it as easy as possible for the developer to look at what's happening and know instantly what's going on. Sundi Myint: And also, very importantly, when 2.0 was released, Zach's wife gave him a cake that said, Happy Ash 2.0 release? Theo Harris: Yes, it was very sweet. He posted it on our work discord. I thought that was super, super wholesome. Meredith is lovely as well. And I got to hang out with her for a bit. Sundi Myint: It was, and it made me so hungry. Theo Harris: Oh my god, I know. Sundi Myint: What a beautiful cake. Theo Harris: It was gorgeous. Sundi Myint: I'm just saying. Theo Harris: Yeah, very exciting time. Sundi Myint: It was posted a week before my birthday and dictated the flavor of my birthday cake. Theo Harris: Oh wow. Zach's basically an influencer now. Sundi Myint: I am very susceptible to advertising and they know it. The people know it. Well, happy Ash 2.0 release in the year 2022 in which we're recording currently for anyone who's listening in the future. That's really cool. And then so your team, or is just Zach or is your whole team going to Code BEAM to kind of talk about their framework a little more? Theo Harris: So I think it's actually just our technical director, Josh, who you probably met at ElixirConf. And I think Zach is going as well. So it's just those two. They are both on their way to Code BEAM at the moment, which is exciting. I know tons and tons of really great people are going to be there, so very excited for them. Sundi Myint: But you're not going, Theo? Theo Harris: I'm not, unfortunately. I am here working on client projects. I think I got my fill with ElixirConf earlier this year. Sundi Myint: You and I can start a club of FOMO because I'm very sad. I'm seeing tweets about Code BEAM left, right, and center right now. And so I think this episode will actually go up after Code BEAM, but it's brutal out here. Theo Harris: I know and Amos is going to be there. I'm so sad I don't get to hang out with him again. Sundi Myint: Yes. Always, always, always. Well, I'm happy to rest though, and it's just nicer when you're able to concentrate on a few things at a time. And so conference travel was a thing for me for a little bit. And now we're currently at [inaudible 00:19:21] having a professional development day, and Will and I have been learning a little bit more about Ecto today. It was just funny when you were like, oh, I didn't know too much about Ecto before. And reading the books today, I didn't really feel like I knew too much of it before this year either, which it's funny, you can just use a thing and not really fully understand it. So it's been interesting, an interesting time. Theo Harris: Wow. Yeah. Sundi Myint: Speaking of those kinds of earlier concepts, were there any particular concepts that were easy for you to grasp when you were first onboarding to Elixir versus something that took you a little bit longer like Ecto did for me? Theo Harris: Yeah, for sure. So I think I picked up pattern matching straight away. Theo Harris: My interview with [inaudible 00:20:02] was actually an exorcism around pattern matching. So I grabbed that straight away. And I think being able to relate it back to something like destructuring in JavaScript is really helpful. Whereas something like maybe immutability I think was something that took me longer to understand. And I still struggle to explain immutability to new developers coming into Alexa who haven't had that experience with immutability before. I find the best way to of explain that is through practical examples, but it definitely took me longer to grasp something like that than maybe other developers who have a bit of a functional background and maybe have experienced immutability before. And it's interesting because the intern I was working with really struggled to grasp pattern matching. So I think it's very different for different people. Sundi Myint: Did your intern start in the JavaScript React component kind of world? Theo Harris: So she did the same boot camp as I did. So she started with Ruby and then moved on to JavaScript and React through that bootcamp program. Sundi Myint: And Buller you did some React too, right? Bilal Hankins: Yeah. I feel like pattern matching was kind of something that I want to say clicked, but when you buckle the seatbelt and then it kind of goes in and then it clicks there, there's the analogy. Sundi Myint: And everyone knows what that is like. Bilal Hankins: And so I really appreciated that part coming from a JavaScript background. And like you said, not having that functional background like a lot of other people do because my bootcamp was fully JavaScript. Sundi Myint: Only JavaScript? Theo Harris: Yeah. Bilal Hankins: Yeah, JavaScript. And then essentially they let us wild the last four weeks to choose whatever frameworks and whatnot. And that's where I chose GraphQL. But other than that, it was all JavaScript or TypeScript too, but JavaScript Sundi Myint: TypeScript is just a flavor of JavaScript at the end of the day. And now I want ice cream. We really shouldn't record at the end of the day. I feel like that's where all the food content comes from. Theo Harris: I mean, I haven't had breakfast yet, so I'm also hungry. I relate. Sundi Myint: I feel like I have to revisit the... I'm not just psychic and pointed out that you've got a flat white. When I was in Sydney, I visited for about a week, maybe seven, eight days, I had a flat white every day. I had heard they were good. And I was like, "Well, how good could it be?" And really, I did truly just fall in. Theo Harris: Oh yeah, coffee is a whole other dimension here, it's a rabbit hole, and you just keep going down it. Sundi Myint: And I actually had never had so many options for different kinds of Asian food in Sydney as I'd seen. Even in New York, it rivals even New York. I mean, actually, like I said, I got sick while I was there and I found my... I don't eat chicken noodle soup when I get sick. That's very plainly American. I am American, but I'm also Burmese. And so what I eat is a rice porridge, which is a chicken bone broth, boiled down with rice and it's really just that, but ginger for the anti-inflammatory and just pepper if you're feeling up to it. But I would not find that here where I am in Baltimore, I mean maybe, but I wouldn't really find that and I have to make it myself. But I was in a hotel, but seven restaurants around the corner from my hotel would sell it. And I was fine. It was like the best. I don't remember the food very well for being sick the entire time. Theo Harris: Wow. That's quite the memory to have for an overseas trip. I mean, I get it. I was a bit crook when I was at Elexicon and I'm like, my memories are coffee with a lot of creamer and anti-inflammatory drinks. Sundi Myint: At Elix we were in the middle of nowhere too, or in the middle of a resort that was on a plot of land that was not surrounded by much. So it's an interesting, different experience but kind of all around. That's a good time when you're with Elix, at least. Bilal Hankins: I enjoyed myself a lot. Sundi Myint: Yes, it was a fun time. Excited for next year. So thinking back a little bit what resources are available now to an Elixir engineer versus where you were even a year ago or two years ago? Is there anything you would recommend similarly or differently to somebody who was learning Elixir in Phoenix for the first time today? Theo Harris: Yeah, so I have to give a huge shout out to Brooklyn Myers here who you had on the show I think a couple of months ago. Dockyard Academy is looking absolutely fantastic. I've been keeping up with the beta curriculum and I think that's going to be the way to learn Alexa. They're taking their first cohort at the moment. I got the email notification the other day. That's going to be the way to learn Alexa I honestly think. And what they've done there with Livebook is so incredibly impressive. Building an entire curriculum with Livebook is just a fantastic use of the tooling. So if I could go back and learn Alexa that way, I would totally do it that way. They've got everything you could ever want. Sundi Myint: Is it weird that I want to do that, even though I know it. I have FOMO or something, I don't know. Theo Harris: I do too. No, totally. And it's, it covers things like Git and the command line and stuff and I'm like, I know all this. I use this every day. I still want to do it because it's just so appealing the way that they've put it out nice and easy to read with exercises. I'm like, amah, chef's kiss. Sundi Myint: Shout out Brooklyn, you've done a great job. Or we haven't even seen it and we know you've done a great job. Theo Harris: So that would be my go to. But the other thing that everyone at work has kind of used as a sort of onboarding tool I guess is the Pragmatic Studios Phoenix LiveView course. It's not quite up to date with the latest. Obviously the ecosystem is moving super, super rapidly, but they cover a lot of the concepts, like how plugs work, in great detail which I found really good for a fundamental understanding. Sundi Myint: That is something I feel like we generally don't cover. I don't think I could give you a definition right off the top of my head right now. I've been able to use it. This is what I was saying about this referential knowledge versus a deeper knowledge, which always makes me wonder how do we get there? We want to give people we're passing the torch to, we want you to learn Elixir or we want you to come into Elixir. And then we're just like, okay, here's some reference tools to get it a little bit and function with it, but maybe not understand it. So it's interesting. Yeah, LiveView makes sense kind of talking about plugs. I think the equivalent a few years ago might have been talking about channels. Yeah, maybe? Theo Harris: Oh yeah. Sundi Myint: Paul, have we ever said the word channels in front of you? Bilal Hankins: Yeah. Sundi Myint: Okay. Thank you for giving us that credit. It was very believable. I did really... Not quite on subject, but I had to notice that your Twitter handle is Dinocoder or Dinocoder I guess however you want to pronounce that. But I also wanted to know if you have a pet dinosaur because it kind of looked like you did. Are they related? Theo Harris: So yeah, well sort of. So Dinocoder, I had that handle before I ever had a pet dinosaur. We had an intro talk when we started bootcamp about personal branding and I'm like, I really like dinosaurs. There was a pun with my name at the time. So Theosaurus is what I go by on a lot of platforms and I'm like, okay, let's lean into the dinosaur theme. So yeah, Dinocoder became my handle, but I do now have a pet lizard. His name is Diego. He's very grumpy. There are lots of pics on Twitter if people want to see him. He's very grumpy. I think I was talking to someone at Elexicon, I can't remember who, Jenny Bramble I was talking to at Elexicon and I showed her a photo and she said, "Oh he has resting lizard face." Bilal Hankins: Resting lizard face. Theo Harris: Yes, very grouchy. Bilal Hankins: I remember there was in elementary school, we had some kids who had a pet imaginary dinosaur and made, I forgot what this is Google Plus, made a Google Plus account for it. And it would just be like, "Hey, it's me and my dinosaur, walking my dinosaur." So I thought you were going to say it was an invisible dinosaur, but I'm glad you have a real dinosaur. Theo Harris: Oh no, he's real. He's real. He does cost a lot to feed and look after. So he's definitely real. The bills are very real. Sundi Myint: Oh yeah, that specialty pet fee. I don't know if you have pet insurance in Australia, but my cat insurance goes up every year. Every year with her age. It's wild. Theo Harris: Yeah, we're very lucky to have a specialty vet right near us that deals with reptiles, but they are so expensive. Diego had to have some blood work done recently and the bill was through the roof. Sundi Myint: Cool. And was there anything in particular, because your whole team kind of came out to Elexicom and there were a few talks from folks from Olympic. Do we completely just pass over the pitch on what Olympic is, or you said consultancy but, and ASH framework. But is there anything else you wanted to add to that? I want to make sure we give you a good spot to kind of talk about that. Theo Harris: No, totally. So I think where Olympic is really shining right now is using the Elixir Phoenix LiveView stack alongside Theo Harris: Alongside Ash to develop working prototypes really, really rapidly with less developers is what we've noticed. So, both of the projects I've been on, it's been me... So, I was a junior on the last project. I got bumped up to not junior for this project, me and one other senior working together on two greenfield projects. And we've been able to scale really, really rapidly using Alexa and Phoenix and Ash in particular has allowed us to scaffold our resources in such a way that we can build rapidly. And I sort of haven't seen such small teams in any other tech stack before, so I think that's what's really setting us apart is the ability to move rapidly with smaller teams. Sundi Myint: Yeah, I think that kind of comes up here too, because we are a fairly small team here at SmartLogic as well and we really relish the ability to be able to make decisions and move quickly when we need to and slow down when we need to as well. And yeah, that does seem to be a little bit of an Elixir superpower, huh? Theo Harris: That's definitely what I've noticed at the very least. Sundi Myint: Yeah. I don't remember what particular guest we had talked to. It might have been our guest from Duffel a few years ago talking about integrating with travel data, airline flights and maybe hotels, but I think it was just flights. And I had previously worked at a company that did that and we had teams of five or six, we had maybe 30 engineers, 40 engineers working on that kind of integration data. And it was just a really big thing. And when we talked to the Duffel team, I don't remember a number, so I don't want to give you misinformation here, but I think it just gave me the vibe that it was a smaller team. Definitely not 30, 40 engineers. And I was just thinking, "Wow, Alexa really made it so that they could do it smaller, huh?" Theo Harris: Yeah. And that's crazy. Our entire company is 30 people, so having a team that big, it doesn't even occur to me. And I think having those smaller teams, it gives you so much freedom, like you're saying, to make decisions or do things on the fly that maybe you couldn't do with 30, 40 people. Bilal Hankins: I also appreciate the opportunities and whatnot present itself because I feel like we are a small team of engineers, but similar to what you said, a team of 30 or 40, I couldn't imagine doing the same thing as efficiently. And for me as a junior, I feel like it's easier for me to pick up little tidbits and knowledge than if I was in a room with 40 other people at cubicles all working on one project. Sundi Myint: It also makes it easier to kind of see the whole picture. At least I'm speaking to my job as a manager as well, an engineering manager, to help people who aren't understanding some concepts or I can recognize, "Hey, you said you were interested in this two months ago and we have an opportunity for you to work on that now. Would you like to give that a shot?" And maybe that is just a nature of being observant or a nature of me having written it down. But also I feel like a smaller company, you can make those connections better and really help raise up your juniors. Not to say that a junior engineer doesn't thrive or survive at a big company. I know it definitely comes down to preference, but Elixir is kind of niche and so I don't know, when you're in a niche environment, sometimes I think a smaller company kind of makes it a little easier. But we've got some mammoths on the horizon too. Maybe we should do a small company versus big company off. I don't know, bring on some other folks from some of the big ones we know about. Theo Harris: That'd be pretty cool. I'd love to see a hackathon between a small Elixir team and maybe a larger JavaScript team or something like that and see what they produce in X amount of days. Could be interesting. Bilal Hankins: Sounds like a very heated... Sundi Myint: Yeah, I was going to say them's fighting words. Theo Harris: Oh yeah. I mean, hey, I'll put my hand up for anything. Sundi Myint: I feel like the JavaScript people will just be like, "Why would we even walk into this? We're more popular than you. We don't have to do this." For some reason it makes me think of Pitch Perfect. I don't know if either of you watched the movie. Theo Harris: Yeah. Sundi Myint: The main character always refers to her herself as, "I'm a very small human. I'm a little fairy," or something. You know that she's the best, you know it, but everyone always kind of treats her and her team like she's not going to do well. I'm not saying that people treat Elixirists like that, but it's interesting because every once in a while you kind of hear in the industry like, "Oh right, those niche coders over there." And they just sort of say that and kind of move on. That's interesting. Theo Harris: Yeah. I'm in the Gleam Discord and someone shared a tweet the other day that said, "Alexa programmers are the vegans of programming." And everyone was simultaneously tickled, but slightly offended. Sundi Myint: Yeah. Yeah. It's an interesting time. Do you have a favorite thing about Elixir in terms of when you were onboarding and you were just like, "Oh my God, I love pattern matching," or, "Oh my God, I love pipes." Was there anything like that? Theo Harris: Yeah, I was very much like that with pattern matching. It was just such a nice way to keep your functions clean. I really like beautiful code in the sense that I like clean code that is simple to read and communicates clearly. And that's something that I've kind of brought with me as I've gotten more and more experienced because I find working on bigger and bigger code bases, it's such a valuable skill to have. And also the pipe operator because again, it's keeping those functions so much cleaner and tighter. I was demonstrating to a mentee that I have how the pipe operator can help you get rid of some of these really obtuse function calls and she was like, "Oh my God, my mind is blown." So yeah, anything that keeps your functions clean and readable and friendly for the other developers on your team, I'm a huge fan of. Sundi Myint: Cool. Speaking of being a huge fan, we said we were going to open with this, we didn't. I know I'm really painting myself on this podcast as being a humongous Pokemon fan, but I just have to let all of our listeners and our cohost who's not with us right now, Owen, know that Theo is wearing a Pikachu shirt right now. Theo Harris: It's fantastic. It was a Christmas gift. I'm a big fan of Pokemon as well. It's probably my all time favorite franchise I would say. Sundi Myint: So, you are a true fan and I am like a referential fan. I think I did actually grow up having a Pikachu plushy toy most of my life. That is fair. I think that was real. But yeah, it comes up on this podcast a lot and Owen, for you who's listening right now, I'm just going to rehash this. Kirby is not the same thing as Jigglypuff. It's not. Theo Harris: I'm shook. I'm shook that anyone could confuse the two. No, they're both good boys, but they're not the same. Sundi Myint: There was a photo that Owen posted that just killed me. It was the one where the Kirby is jumping up in the air and then the Jigglypuff is jumping up in the air, but the Jigglypuff has a swirl. And the tweet was like, "Okay, so the difference is one has a swirl." And I just absolutely lost my mind. All right. I'm so glad we got that out of the way. Had to mention it while we're talking about our favorite things, the things that we're in tune with and obsessed with maybe. Theo, is there anything else that you just want to shout out or plug? Any tips or tricks you want to throw out there or anything? Or anyone you want to shout out? Theo Harris: Yeah. I mean, I guess shout out to Alembic for putting up with me and helping me grow into the not junior I am today. I really appreciate it. As intense as the onboarding experience was that I've spoken about, it was invaluable in kind of teaching me something really, really rapidly, so huge shout out to them. And also to Zach for maintaining the Ash Framework and working with us developers at Alembic to address our pain points as quickly as possible. We adore him for that. Sundi Myint: Awesome. We've already talked about your Twitter handle, so we're kind of good to go on where people can find you. Are there any projects that you would like to shout out that need some support? Theo Harris: Oh. At the moment people should definitely go check out Ash if they are familiar with it. I think a lot of people can get a lot out of Ash. And the Discord community, go join there. Everyone in that server is super helpful and ready to jump in and give you a hand getting started. So yeah, that would probably be my recommendation for anyone interested in kind of architecting their applications in a slightly different way. Sundi Myint: Cool, cool, cool. All right. So, that is it for today's episode of Elixir Wizards. Thank you again to our guest, Theo Harris, for joining us. I'm Sundi Myint and my co-host is Bilal Hankins. Elixir Wizards is brought to you by SmartLogic with production support from Hangar Studios. 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. Your reviews help us reach new listeners. You can find us on Twitter at SmartLogic or join the Elixer Wizards Discord. The link is on the podcast page. And see you next week for more on parsing the particulars.