EW S8E8 Transcript EPISODE 8 [EPISODE] [00:00:07] SM: 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. [00:00:17] OB: Hey, Sundi. [00:00:17] SM: And my executive producer, Rose Burt. 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, Meks McClure from NewAperio. Hey. [00:00:29] MM: Hi. Thanks for having me today. [00:00:31] SM: Yeah, thank you for being here. Now, did I say that right? I didn't read that all the way through. NewAperio. [00:00:37] MM: Yes, that is correct. [00:00:38] SM: Okay. I saw pear, my brain went to Pear Tree. I saw one yesterday for the first time in real life. This is where we're at. [00:00:47] OB: Yes. Sundi is on a fruit tree saga, right? [00:00:49] SM: I am. I am. I've got fruit on the brain. [00:00:53] MM: Oh, my goodness. [00:00:54] SM: What is NewAperio? Can you tell us about it and about yourself? [00:00:58] MM: Yeah. NewAperio is a custom web and mobile development shop. We do everything from greenfield projects to helping clients get new ideas off the ground. We will also do maintenance for old projects, or if somebody has an already established Ruby on Rails, or Elixir project that they need help with, or maintenance or fix up, we do that as well. We primarily work with Elixir is one of our main tech stacks that we really like. In addition, we do Ruby on Rails and React Native for mobile apps. [00:01:34] OB: Cool. You've been at NewAperio for how long? [00:01:37] MM: I just celebrated my one-year anniversary about two weeks ago. [00:01:40] SM: Congratulations. [00:01:41] OB: Nice. Congratulations. [00:01:42] MM: Thank you. [00:01:43] SM: Nice. Do anything fun? [00:01:44] MM: We actually have a really fun tradition at NewAperio that I like. Every year when someone is celebrating their anniversary on that day during our daily check-in, we all say one of our favorite things about working with a person. I was looking forward to that for a few weeks. I was like, “Yes. My turn is coming up.” [00:02:05] SM: I thought you were going to say, everyone was going to sing you Happy Birthday and I remember it wasn’t a birthday thing, We once impromptu did that to somebody. I can't remember who, but at SmartLogic someone had a birthday, and we just were like, “Okay, we're going to sing the Happy Birthday. One, three, three.” Then two people started singing and the rest of us just slid off the screen. [00:02:25] MM: It's such a sad-sounding song, the United States version of it. It just sounds like a drudgery. [00:02:30] SM: The United States version of it. What other versions are there? Because I've heard it sung in different languages, but it's the same tune. [00:02:37] MM: Actually, in Mexico, they sing Las Mañanitas. That is a completely different tune, much more appeal. [00:02:44] SM: Okay. We won't put you on the spot. [00:02:45] MM: Please, don't make me sing it. [00:02:46] SM: We’ll look it up. We’ll look it up. [00:02:49] OB: All right, on three. One, two – No. [00:02:53] SM: Maybe you can dove into your background. Maybe something a little more comfortable. Tell us who you are. What's the elevator pitch for you? [00:02:59] MM: My elevator pitch is I am Meks. I use they-them pronouns and I identify as non-binary. Sort of a big part of my life. I am a junior web developer at NewAperio. I've been there for a year. It was my first web development job after graduating Flatiron’s bootcamp. I went to a fairly non-traditional way getting into this field. If travel is a hobby, I am well on my way to making it one. Always looking to improve a travel work setup and be a productive remote worker. I really try to find balance in my life between work and physical activities, yoga, walking, running, yoga, different foods and just socializing and everything. That's a little bit about me. [00:03:49] SM: Awesome. You found programing after Flatiron, you – I think we saw that your background was in philosophy and biology. Is that correct? [00:03:58] MM: That is correct. I did my undergrad in Iowa as a biology and philosophy double major. That was my Bachelor of Arts. I worked a few years as a laboratory technician and never really thought about computer science, or never really heard about web development, until I was doing a volunteer year in Mexico, which is how I know about Las Mañanitas. During that year, I was working for a film archive that specialized in Mexican-made films. They didn't have a website and they really wanted one. I was volunteering for them like, I have no idea. I could maybe try to figure something out. I actually used wix.com to help build that. That was my first exposure. It was very rewarding to build something and then actually see people use it. It actually helped to get more people involved from the community, once they were able to see that and access it. After that volunteer year, I was like, “I wonder if I could do a little bit more besides using wix.com.” My cousin has been a Ruby on Rails developer for many years and had been talking to me about it every family get together. “Have you tried it yet? Have you thought more about getting into web development?” He also did a bootcamp. After all that pushing and prodding from different sources, I decided to give it a shot. I did Flatiron for about nine months and then ended my job search and landed at NewAperio. [00:05:32] SM: Wow. This is really early in your career, by traditional standards. You found Elixir pretty quickly for that, yeah? [00:05:40] MM: I like to say Elixir found me. [00:05:42] SM: Okay, so great. [00:05:43] MM: NewAperio was traditionally a Ruby on Rails shop, but has more recently adopted Elixir as one of our main tech stacks. As such, I have Ruby and I have React, which is another framework that they like to use. Because I have some of the stack that they use, they’re like, “We can teach you Elixir. It's fine. You'll learn it.” Day one, I was learning Elixir and I have been doing it ever since I started. [00:06:12] OB: It’s awesome. You left Flatiron, basically, fully trained for Ruby. Do you feel like, you're – even though you're not primarily working in Ruby, you're still using all the lessons you learned from Flatiron and your Elixir development, right? [00:06:26] MM: Yes. It was interesting since Elixir, from what I've been told, it's written with Ruby on Rails in mind. There are a lot of similarities and crossovers. Parts of it were intuitive, like how the file tree is organized and such. Other parts learning, going from an Object-Orientated Programing Language to a Functional Programing Language was definitely a struggle. That was one of the harder pieces about that transition. [00:06:53] SM: I just love talking to people who are early in their career, or at least early to programing specifically, but with who find Elixir really quickly, because we are also a consultancy. We're also training people to learn Elixir. I'm an engineering manager, so just all of the time, I’m thinking about ways to make it easier for people to adopt it better, but also so you can have productivity while you're working on projects. How did you handle that balance of learning a new language, having some experience with Ruby, but also feel like you were productive on your first project that you were introduced to? [00:07:31] MM: It was really hard for the first few months, honestly. I can't claim to say that I did a good job of balancing it. I had a really strong support team, which I think was really important. We have a lead developer that was in charge of my onboarding. We had a very mini three-day Elixir bootcamp, where I learned some basics of Elixir and started doing some Phoenix. Very little bit of Live View, because that was a project that I was going to be working on was relied heavily on it. Having small features to work on within – it was a project that they did already working on for about nine months for a client. Having a small features to work on, I built a drop-down filter component was one of the very first things I did. At the time, felt very complex, and took me a few weeks. Having small things to gradually build up to was really helpful and getting lots of comments and feedback. [00:08:33] OB: You've been learning all this in the past year, it sounds like. This must be fresh in your memory. Is there something that you feel clicked, something like a hurdle that you crossed, that sticks out in your memory? [00:08:44] MM: I think one of the points felt really good was I built a progress step wizard. It's a menu for a form to fill out. It has different pages. I had to build a mobile responsive step, or so you could click on the different steps and get to the different pages of it. That was both very technical front-end challenge for me, because that was my first time really doing mobile responsive in addition to just general production level programing work. It felt really good when one of the senior developers was able to use that component to actually build this massive forum they're working on. They're like, “This is really easy to implement. Thank you. You did a good job.” That was like, yes, I'm getting. I'm doing the right thing. [00:09:33] OB: Yeah, yeah. Validation is crucial, especially early on, just to hear from people above you that they appreciate the work you're doing and yeah, that's great to hear. By the way, yeah, layout, people don't – back-end engineers especially don't always recognize how complex the front-end is. Layout, especially when you're working across multiple screen sizes and form factors, it's not a walk in the park. [00:09:59] MM: Yeah. All of our developers are full-stack. We are all expected to be able to do all the things. That's also been a huge learning curve, too, is not just focusing on one particular area, but I do focus on one thing for a couple of months and then I'm switching gears into doing something. Still in the same project, but very different in the tech stack. [00:10:24] SM: If you could give one major piece of advice to somebody learning Elixir right now, what would that be? [00:10:32] MM: Reading the documentation for – I suppose this isn't Elixir specific, but Phoenix is really helpful. Their HexDocs, I found some of the best documentation that I have ever read. Not that I have a lot of experience with it, but really reading it and getting into it. Then at that point, going to seniors, or mids, or someone else that you know who has a bit more experience with questions and always asking lots of questions, even if you feel silly about it. Because sometimes, your brain just gets all twisted and you need someone to help you untwist it. [00:11:06] SM: Yeah, for sure. At Aperio, you said you mentioned Phoenix just now, we've talked about Elixir. Is the stack you're working in daily pretty much the Elixir-Phoenix standard, or are you working in some other things at other places? [00:11:19] MM: I'm still working on the project when I was first onboarded on. It's been a very long ongoing one. It is the Elixir, Phoenix, Live View. We have a PostgreSQL backend. We also do a lot of Tailwind and custom CSS and TypeScript and Alpine.js for when Live View doesn't quite give us the reactive – responsivity that we need, or interactivity. [00:11:41] SM: You're full PETAL. [00:11:42] MM: Yes, we are a PETAL stack. [00:11:44] SM: Okay. All right. [00:11:46] OB: Where is the R in there? Is it a petarl? Pertl? If you’re using React. Or maybe it's just Alpine. I forget. [00:11:54] MM: Processing Alpine. React is what we use for our mobile apps. [00:11:57] OB: Got you. Okay. [00:11:57] SM: React Native. [00:11:58] MM: React Native. Excuse me. [00:11:59] SM: Yeah. Got you. Got you. You just started naming everything out, and I was like, “Ah, that’s PETAL.” Cool. How are you liking it? How do you think that stacks up to, no pun intended, how do you think that stacks up to some of the other things you experienced in boot camp or otherwise? [00:12:18] MM: I really like having Elixir across the board as your back-end and your front-end, just because I think it's easier than when I was building my final project for school, I had a Ruby on Rails back end and a React Native, or excuse me, a React front end. Sometimes you're in the context switching between writing in Ruby and then writing in JavaScript can be challenging. There's some of that to a degree in Elixir, Phoenix Live View, but it's all still the basic language. I really enjoy that, having a little bit less context switching. Then also, the other parts of the PETAL stack with using TypeScript and Alpine.js, and the PostgreSQL. It might not feel like a polyglot system. But in my mind, especially since I still feel very fresh and new to programing, it's all feels new. It feels like multiple different languages are going on, even if it's not many different grand-scale programing languages. [00:13:22] SM: Now that sounds like a lot of languages to me. There's a lot going on there. There are five things going on in that stack. No one can see me counting my fingers, Owen. No one can. [00:13:33] OB: Hey, we could fit PETAL and wartl if we have the app. [00:13:38] SM: All right, so this is no longer a greenfield podcast. People in 2027 will be like, “A what? A wordy what?” [00:13:45] OB: There’s a fad game that I play every day called Wordle. It's amazing. [00:13:50] SM: Future proofing our self here. Awesome. While we are getting on to our hobbies and our tangents, please tell us all about Star Wars. Whatever you want to say about Star Wars, that you've got the floor. [00:14:03] MM: Oh, my goodness. Well – [00:14:05] OB: The floor you have. [00:14:06] SM: Oh, my gosh. [00:14:09] MM: Mine is the floor. I grew up watching Star Wars with my parents, and I even remember going to see episode one in theaters with one of them. I don't remember anything about the actual movie from seeing it in the theater. I have since seen it again. But just going to that experience of all these adults just going gaga over Star Wars. Now it is back and Disney Plus has been coming out with all these brand new series. Currently on a bit of a Boba Fett and the Mandalorian obsession. They are great and I love all the little nuggets that they drop back to the Clone Wars animated series. [00:14:53] SM: That’s how I know you’re a fan. Yes, I will say. I can't believe I'm admitting this, basically, on the Internet. I didn't watch any of the Star Wars until after the Mandalorian was out. Yeah, I see some surprised faces here. I walk by, the Mandalorian was playing in my living room and my partner was watching it and I was like, “Huh. That little guy is cute. What’s the little baby noises happening over there?” Baby Yoda got me in. Baby Yoda got me in. They knew what they were doing. [00:15:19] MM: Baby Yoda for the win. [00:15:21] OB: The Mandalorian has what? Two seasons so far? [00:15:23] MM: Yes, it’s two seasons. Boba Fett has one. I do really get excited when people are new to Star Wars and they get to experience it for the first time, because I haven't had a first time with Star Wars in a long time. [00:15:38] SM: I watched one movie a night, I think after. That was my thing that week was I watched – Did I go one through – I don't remember what – there's a way to watch it. I think I watched it in one through – how many is it again? I went, one, two, three, four, five, and kept going. That's how I went. I didn't go three, four or five or whatever it was. [00:15:59] MM: You went the chronological order as opposed to the release order. [00:16:02] SM: I think so. Yeah, that sounds right. There's a really interesting intersection of people in the programing community, where just some of us are just straight up nerds, and then some of us are just straight up athletes. Not to put people in categories. It's always fun when we see who comes to podcasting and thinks D&D is a game and that do not disturb, like we were chatting about earlier today. It's fun to geek out about something you're passionate about, even if it's not coding related, because that's honestly the more fun thing sometimes. [00:16:33] MM: I think it's really important that we all have that balance. We have our work that really gets excited, but then we have other things, too. That's one thing I really enjoy about working at NewAperio. We are also a whole bunch of nerds in different ways and connecting with each other on that level, in addition to the work that we're doing. It just brings a little bit more joy to the job. [00:16:56] OB: Speaking of other things that are not programing, I would be remiss to not mention, we’re releasing this episode the second day of Pride Month. Happy Pride, everybody. I myself, I’m on the – I'm a gay man, so just to be proud of myself there. Yeah. I think it would be great to have a short conversation here about we're living in different times. I feel like, we are able to express ourselves a little bit more freely than we used to be able to. That's when you get your thoughts and the journey you've been through to discover yourself. [00:17:26] MM: Part of my journey came almost after college. I grew up in a very small town with very limited access to TV, or Internet. I think, all the access that we have now has really changed how we are able to see ourselves and how we interact with the rest of the world. I think, that's why it's so important to really dig in and see how other people relate to the world and express themselves. And for me, that is outside the gender binary. Not assuming what other people – how other people identify, or how they view the world. Instead, if you have questions, ask, and be open to conversations, I think, are really key to really maneuvering in this world where we are so much more exposed and have so much more access to different viewpoints. [00:18:30] SM: this message can definitely be applied to a lot of things. What you just said reminds me of SmartLogic, we've got a book club and we've been reading, was it Difficult Conversations? Yeah, Difficult Conversations. There was a section just about how two people can be watching the same thing, a parade, and they can be seeing different things. I think, the example was a uncle and their nephew and the nephew was super into the trucks, but the uncle saw the people, or the actual floats, that's what they're called in a parade. It's just interesting. You could be having the same conversation with somebody and you walk away and it's totally different viewpoints on what happened. It's really helpful just in a lot of aspects, but in programing as well to just be open to different interpretations of a conversation to help you get to the end goal of whatever it is. Not that you always have a goal, but especially in our work life, we usually have a goal of a meeting or whatever we're doing. It definitely helps to have a more open-mind about all of that. [00:19:31] MM: That's very interesting that you bring up work as related to that, because in our own workplace, with being fully remote and distributed, it's so easy to have miscommunications. Just by someone who is in Slack and someone interprets it differently, or they read feelings into it that are very hard to see on words on the screen. Being open to feedback and open to the fact that, “Oh, I might have misunderstood what they were trying to say.” That applying and both in work and as a queer individual, or as a white person talking to someone of color, there are so many different places where this intersects and being really open to feedback and to being corrected, and not thinking that you're a bad person, or that they're trying to hurt you by saying you did something wrong, but being open to the fact that what you said might not have been said in the best way, and we can always be learning from these different communications that we have with each other. [00:20:31] OB: Right. I think, we as professionals, we understand, we're going to get feedback about our work and the things we're producing. I think just to applying that openness to feedback about our personal communications and relationships is a great place to be at mentally. [00:20:49] MM: I recognize that that's harder in a certain way, because when I write code, if I get feedback on it, it's like, I was maybe in a bad headspace, or maybe I just didn't know something and I learned something new. If someone says something about how I said something and it hurt their feelings, it's like, “Oh, that's more an attack on me as a person.” Trying to separate that is important, because if someone's giving you feedback, it's not necessarily – it's an opportunity for you to learn. They tell you that because they want you to be better. Do better. [00:21:24] SM: Yeah. I think it's such an interesting – Well, sorry. I appreciate, especially the Elixir community because they're so open and welcoming. But just the programming community in general, just when you get a chance to interface with a community, you get to talk to so many different people. You hear about people from different walks of life. One of my favorite things about Elixir specifically, is getting to hear from a lot of the folks who are at consultancies in Brazil and Uruguay. That's just really fun, because they have – we write the same language, but we have very different day-to-day lives. I remember one time just discovering that someone calling in to meet up from Brazil was on the same time zone as me, just blew my mind a little bit. I learned a little bit more about the world, and it's fun finding those commonalities. Also, just we get a chance to be exposed to so many different kinds of people, which leads into the polyglotsness of the whole thing, is that you're writing different languages maybe, but you're speaking different spoken languages. It's a lot of brain input there. [00:22:22] OB: I'll second what you're saying, especially even going to a handful of Elixir conferences, just walking in, seeing rainbow pens. Just people being perfectly comfortable, either identifying, or expressing, or just supporting other people. I know, we're not the only inclusive community, but I love seeing that, whenever I'm at an in-person event or online. [00:22:45] MM: I think that is a great way that people can show up for each other, especially when we're talking about the queer community, is even if you're not part of it, if you're showing a flag either in your yard, or a sticker on your laptop, just seeing that if you've been having a bad day, or someone misgendered you and you're just not feeling great. Seeing that can be just like, “Oh, great. Yes. Someone else gets it. They would understand, or they're a safe person to be with.” We're always listening, even if you can't see or you don't always know that you have non-binary, or people outside the gender binary spectrum, or who identify differently. Even though you might not see them, or you might not see us, we're here and we're listening. That's another great way you can just show up is even if you're not in a room where you know someone uses they-them pronouns, you automatically introduce yourself using them, just as a way to, if you have a listener, to feel recognized even, and to feel they belong in that space. [00:23:48] OB: Just to put it out there like, “Hey, look. I'm an ally.” I'm here for the day. Yeah. [00:23:53] SM: We're talking a little bit also about just getting together in the community. It's on my mind a little bit, because I saw Jim Fries was talking about the ElixirConf in one of the Slack channels. I was wondering, Owen, you and Max met at Big Elixir, yeah? [00:24:07] OB: That’s right. [00:24:08] SM: You have other conferences on the brain, maybe ElixirConf? [00:24:10] MM: I was not able to go to ElixirConf last year, because of the pandemic. I, fingers crossed, really hoping that I get to go this year. For sure, going to Big Elixir in future years. That was my first tech conference. I wrote a blog post about it and got some Twitter likes and feedback on it by Owen. That was a really great shout out. Thank you. It was a really great experience, and having that polyglot experience of talking with other people and meeting other people from other countries who use other languages, both in their communication with people and in the communications with computers. It's a really unique experience and I highly recommend these conferences if you are able to go. [00:24:56] SM: Yeah, I'm so excited. I was just reflecting on – Owen and I just came back from EMPEX. I was also in Colorado Springs earlier this year. I was just thinking, all my travel this year is very mountain-based. I'm from a very not mountain town. It's a very nice different, I don't know. There's something about mountains that humbles you. You're just like, that's so large. I’m so small. Yeah, ElixirConf would be great. Would your whole team be going, or do you think it's just some people go? What does NewAperio tend to do when it comes to Elixir get togethers? [00:25:30] MM: It's hard to see what we usually do. It has been a very influx situation, since I arrived between the pandemic, and we also doubled in size the year that I was hired. We went from a team of three to a team of six. We're very small. When we went to Big Elixir, we actually turned it into a team retreat, because four of our team members are in Louisiana. I'm in Minnesota and our other dev is in California. We turned it into a team retreat, since we are all going to – all the devs are going to the conference. I believe and hope in the future that the devs will continue to going into these different Elixir conferences. [00:26:06] SM: Cool. [00:26:07] OB: Plus one for ElixirConf. Big Elixir was great. EMPEX was great. I have not been to a bad Elixir conference yet. Well, it probably won’t never happen, but yeah. [00:26:21] MM: We're not biased over here. [00:26:24] OB: Yeah. I hope, with all the adjustment. [00:26:25] SM: Not on Elixir Wizards. [00:26:28] OB: Jim, it's got to be good. No. [00:26:30] SM: No pressure, Jim. No pressure. [00:26:33] OB: Hey, as long as the weather is perfect as it has been for all three conferences I’ve been through. [00:26:37] SM: You just jinxed it, Owen. [00:26:41] OB: It was 70 degrees, and – [00:26:41] SM: That’s okay. [00:26:43] OB: - sunny. Yeah. [00:26:44] SM: I've only ever heard good things about Aurora, so that'll be great. Meks, I have been very curious, though, ever since I saw this while we were preparing for this. You said you were very into desk setup and specialization. The most of the time people say that, it's usually just keyboards, but I feel like, you also talked about desks, so please elaborate. We must know. [00:27:06] MM: All right, so I really got into ergonomics, because when I was in my boot camp, I was just working on a donated laptop. As a result, working on the Macbook keyboard and the mouse jacked up both my wrists pretty badly. Once I got a job, I decided, I'm really going to invest in some equipment, so that I can make sure I don't physically burn myself out of this career. As a result, I have a sit/stand desk. It is pneumatic, so there's no electricity involved. I can easily raise it and lower it. I also found that mousing was one of the triggers for causing my wrist pain. I did a lot of investigating into different keyboards setups. I ultimately landed on what was called the Moon Lander, and it is a split keyboard and the keys are all in alignment. If you spread your fingers forward and back, they are parallel to each other. Most keyboard setups, the traditional ones, the keys are diagonal to each other, which forces you to go this way, your fingers are spread out and that is not natural. That causes more effort, versus going back and forth. The Moon Lander has columnar keys, so they're all directly stacked up and on top of each other. It is split, so I can separate it as much as I want. I have gone to the ultimate extreme. My two keyboards are on tripods that are on the floor and my keyboard is right around my waist level. I stand in my hands are down by my hips. My fingers, wrists, elbow are all in alignment and I type with my hands at my side. [00:28:56] OB: I wish we could show Sundi’s face right now. [00:28:59] SM: I'm trying to do gymnastics in my head, but my body is half doing it. All right. I like that. [00:29:04] OB: That is amazing. [00:29:06] SM: I'm so confused. [00:29:07] OB: I think, I've seen that in sci-fi before. Keyboard strapped to your sides. [00:29:11] MM: My co-workers were really confused. They’re like, “Why is it called a Moon Lander? That seems silly.” I show them pictures of my setup and they're like, “Oh, that's why it's a moon lander. It looks like something out of sci-fi that landed on the floor of your office.” [00:29:26] SM: I've been familiar with Moon Lander. We have someone on the team who's really into it, but I never thought oh, cool and sci-fi looking. It's white, like the Moon. Okay, cool. I never really thought too much about it. I'm sorry, Dan. I'm sorry. He's listening right now. Okay, we'll have to get a picture or something of your setup and quote tweet it or something when this episode releases, because I don't think anyone else is going to understand it either. [00:29:54] MM: It's hard to put it into words. This is true. [00:29:56] SM: Yeah. As you saw my body contorting, while I try to figure out where – I thought you were going to say for a second that you were like, hand-standing and typing from the floor. [00:30:09] MM: Not quite, but it is some mental gymnastics to go from being able to see your keys. If you ever misplace your hands, you just look quick, versus if your hands are down by your side, you can't see your keys. You have to really learn your keys. With the Moon Lander, since I don't use a mouse, there's different layers to the keys. Depending on which layer on the keyboard I am, I can control my mouse. I can type the alphabet, type numbers, type symbols. [00:30:38] SM: I don't think I understood that you didn't have a mouse. That part is new to me. [00:30:42] MM: I do not have a mouse. My keyboard has a setting on it where I'm on a certain layer and I can press four different keys to move the mouse in the different directions. North, south, east, west. If I press two of them, it'll actually go diagonal in between those directions. [00:30:58] SM: Okay. I have decided that those gallop string finder test where you take personality tests or whatever, we have to put our keyboard preferences as part of that to really understand what kind of programmer you are. BuzzFeed, if you're listening, I got you. I mean. [00:31:13] OB: That's like Etch-A-Sketch mode for the mouse. It's like, you sketch in that direction. [00:31:17] SM: We're not even talking about what my keyboard setup is. It works for me. I have no pain. [00:31:20] OB: You were bragging about your cable management earlier. [00:31:23] SM: Cable management that I didn't put together. I said I had lovely cable management. I said nothing about me doing it. No, I mean, that's really awesome. I know a lot of programmers in general are real big keyboard nerds, so I'm really glad we got to talk about it. My goodness, my brain is a little flipped upside down. Owen, I'm going to have to hand the mic to you right now. [00:31:45] OB: All right. Last question on the keyboards, because this is a real thing. I mean, I think Jose was dealing with injuries and had to – was doing research, at least. I saw it on Twitter. I haven't spoken to him directly about his keyboard choices yet. I think, he was doing some research about this and saw people recommending the Moon Lander. My wrist pain has gone away lately, since I got this little pad for my desk. It's like a little cushion for the touchpad. I'm curious, what's your keycap preferences, or key switch? Is it clicky, silent? Which direction do you go there? [00:32:17] MM: Mine are pretty silent. I also go with the lightest touch. I don't have to press very much at all to get the keyboard to register when I pressed it. [00:32:28] OB: Which one is the quiet switch? Because just asking for a friend. [00:32:32] MM: I'd have to look it up again. I think, it's silver something. I can send it to you, though. [00:32:37] OB: Show notes. Show notes. That’s why we have show notes. [00:32:38] SM: Show notes. Amazing. Speaking of notes, I was going back through my notes and I remembered that I wanted to ask you, especially because you came from a boot camp background. How did learning Elixir changed the way you think about programing in general, or how it changes the way you program other languages if you've revisited any of the ones you learned before? [00:32:59] MM: I have not gone back to Rails at all since diving into it. But I have written quite a bit of TypeScript. I have found that when I now look at TypeScript files that are more class-based and they're trying to behave like an oriented programing language, it throws me through a loop. I have to really think back to, what did I learn almost two years ago at this point about Object-Oriented Programing Language? I really now gravitate towards writing TypeScript in a more functional way. Writing out is just passing data around in a similar way and splitting up files into a way that would mimic how I would split up modules in Elixir. It has also been another thing that I've noticed. It's affected how I organize my code and think about how do I write this in a way that's going to be most readable for myself six-months from now and my teammates a couple of weeks from now? [00:34:04] SM: Yeah. Thinking about writing your code so that somebody else can read it can totally change the way that you – that influences your code a lot. It reminds me of put it – when I'm cleaning. Am I my cleaning for me, or am I cleaning because my parents are coming over? It's a different level of clean. That's what that coding reminds me of. Do you think about that for code reviews, or when you're visualizing for other people? Is it for code reviews, or just for future you even? [00:34:39] MM: A lot of it is for code review, because still feeling so new. I always have this expectation on myself of I want to do the best I can, so that I'm impressing my seniors. Not that there's any pressure to perform for them per se, but it's more of an internal feeling of I wanted to do the best I can. That includes writing clean, clear code. That I serve a personal goal. If I don't have to leave any comments for myself, or for people reviewing my code, then that means I wrote it in a way that it's pretty clear to follow. That means, sometimes it's just as simple as a really obvious function name. Sometimes they're a little bit long, but when you have thousands and thousands of lines of code, having a longer function name, so that's really obvious what functions are supposed to do, without having to get into all the nitty-gritty within it, it can be really helpful. [00:35:32] OB: Yeah, along the same lines, I also find – so yeah, sometimes I'll put longer function names. I also find that trying to keep a consistent pattern across modules can be really helpful. I'm not going to create a user’s module that does things entirely differently from a members module, or something. If it's a cred type module, it's going to look like other cred type modules, . [00:35:56] MM: Even organizing your files in the same way that – so you're having all your get functions, your edit function at the same location across your codebase. That can be really helpful, too. [00:36:09] OB: Making it easy to find things within the code base. That's admirable. [00:36:12] MM: We try. [00:36:13] OB: Right. It’s not always easy. [00:36:14] MM: It’s what we strive for. [00:36:16] OB: Are there other languages that you prefer to use with Elixir? Is there a dream combo in that PETAL stack, or outside of the PETAL stack? [00:36:25] MM: Really the fun, cool thing that I've been hearing about a lot lately is using Rust to do some of these more heavy-handed calculations and computations. It can do it a lot faster than Elixir can. A dream would be that someday dabble in that and learn a little more about it and see what all the hype is. That would be a fun thing to get into. I use TypeScript so much to help augment what Live View can do. I'm always trying to get better at TypeScript. It's challenging in different ways than Elixir. That’s for sure. [00:37:06] SM: Yeah. [00:37:07] OB: Is TypeScript your friend? Does it help you? Or do you feel like, you're always trying to satisfy TypeScript? [00:37:13] MM: I do think, it's a bit of both. It's your friend, but it's also the gnat that's bugging you, that you just can't get rid of. [00:37:22] SM: We all have that friend. [00:37:23] MM: We do. We do have that friend. I think TypeScript was that for me. [00:37:28] SM: Now, all of our friends are wondering, “Are they talking about me?” [00:37:31] MM: Is that me? Is that me? [00:37:32] OB: Right. Sundi, was it me? [00:37:38] SM: That's so cute. We think that all of my friends listening to this podcast. I wish. That would be so self-supportive. No, that's amazing. I do feel like, there's a pretty strong crossover of people who like Elixir, who also want to learn Rust, or do no Rust. I think, one interesting exercise, I don't know if you've ever done Advent Code. I never really paid attention. Do you know what it is, just before I go into it? [00:38:01] MM: Feel free to explain it, so that it any listener might know what it is. [00:38:04] SM: Yes, absolutely, absolutely. In the month of December, there's a coding challenge a day. Then people go in and try to solve it in their language of choice. Everybody, just like everyone on January 1st says, they're going to go to the gym. Everyone on December 1st is like, “I'm going to have end of code. It's going to happen this year. It's going to happen this year.” My favorite thing about it, though, is not doing it, but seeing everyone else's answers to the test. Because it's actually really cool to see different Elixir responses, different ways people do it in Elixir, but also comparing how different people do in different languages. Because the question is the same, but it is there for all developers. I mean, I talked about this a lot during Advent of Code last year. Now that we're talking about polyglot and you mentioned Rust, I was thinking, it is actually interesting when it comes back around. Or, you could even go back and look now at the way people answer it in Elixir, or in 2021, how people answered it in Elixir and how people answered it and Rust. It's a really good learning experience, even if you're not writing yourself, to just read and compare and contrast. Yeah. I mean, it's just a really fun experience. I love doing that when I did not have the time at all to even attempt a single Advent of Code. [00:39:18] MM: That sounds quite fascinating. I do think as developers, we often end up reading code more than we write, whether we're reading old code bases, or looking up answers on StackOverflow, or on the Elixir forum, wherever it might be. Even just being able to read different answers to something like the Advent of Code, that I feel very interested. I think I'm going to look into it. [00:39:44] OB: Even the Elixir source code is readable. I don't go into source code for everything, but I've gone into source code for a couple of Elixir modules and Phoenix modules and it's just as clear as the documentation. It's easy to follow, typically. Sometimes you'll get into some messy, or something that's just complex. Yeah, it seems to be as well-crafted as the documentation is. [00:40:11] SM: The thing about Rust is, I’ll preface this. As we always record this podcast when I – it's Sundi snack time. I am getting off the phone and eating snacks. When I see Rust, I think crabs. I have a lot of Crab Shacks near me, and I'm dying to try them all. We're about to be in crab season. That is where my brain went when you said Rust. Can end that thought there. I think, everyone listening to the podcast thinks I just eat all day. I really don't. [00:40:40] MM: Hey, we need to keep our brains going. You eat when you need to, Sundi. [00:40:46] OB: Right. [00:40:47] SM: Crabs immediately after this. Got it. [00:40:49] MM: Yes, do it. [00:40:50] SM: Crab Shack, literally in every direction. I'm so excited. Owen, have you played with Rust? I can't remember. [00:40:54] OB: I've not played with Rust. There was a NIF that I had to dig into for my side project, for Port MIDI, and that was written in C, I think. I don't know if I've fixed anything or not. I did learn a couple of things just from skimming through that code. Yeah, that's something I penned for later was, maybe take a crack at that in Rust, or Zig, or something when I've got time to just play with code. [00:41:22] SM: Cool. We talked a little bit about at Aperio, there's six folks, including yourself. Is there anything in particular that you noticed in terms of opportunities, or weaknesses that a polyglot environment can introduce that you want to share with folks? [00:41:40] MM: Yeah. When trying to find people to add to the team, if you're in a polyglot environment, it's very easy to find someone who knows at least something within your stack and has a certain amount of experience. It's almost impossible to find someone who has experience in all of all the languages and in how you do things. There are pros and cons of both. When we hire someone, there's always going to be training involved. The degree to which will vary. That also presents an opportunity to train people in the NewAperio way, so to speak. For me, when they brought me on, being fresh out of boot camp, I was very open to learning a lot of new things. I hadn't even done, made a pull request before joining this team. There is a lot of learning and a lot of training opportunities. The challenge with being on a small team is that everybody has to be contributing every day. It can be hard when you have to train someone, when you also know that you have a client meeting coming up and you have to have this feature ready. There's definitely a balance, and trying to find people that are eager to learn and want to learn the stack that you use, and are very curious with some of the features and candidates that NewAperio really looks for when they're hiring people. [00:43:15] SM: Yeah, awesome. That's really something that we all keep in mind when we're hiring and just thinking about how to grow and expand our team. That's a really good note for sure. Thank you so much. Again, Meks. This has been such a great, very well-rounded conversation. I think we've hit a lot of the things. If there was something that we didn't grab, do you have any final plugs, or ask for the audience? Any social media, where people can find your GitHub, or any projects you'd like support on? [00:43:41] MM: Well, my GitHub and Twitter are mmcclure0100. We'll keep them in the notes for the podcast for people can reach out. I consider myself a bit of a nomad, so I'm always looking for places to stay. If anyone has a city that you're like, “I would love to have a guest stay here,” and show them around, I am always up for adventures like that. Other blogs. I have some new blog posts for NewAperio coming out. By the time this airs, I should have my one year anniversary blog post out. I will be working on a post for Pride Month and this year's theme. I'm going to be collaborating with one of my co-workers to talk about queer name origin stories. Meks is not my government name. It's my adopted name. We'll be getting a bit into that. Those are some blogs that you can look out for coming from me soon. [00:44:47] OB: Awesome. Happy Pride, everybody. [00:44:49] MM: Happy Pride. [00:44:51] SM: Awesome. Thank you so much. That's it for today's episode of Elixir Wizards. Thanks again to our guest, Meks, for joining us. I'm Sundi, and my co-host, Owen. Our executive producer as Rose Burt. Elixir Wizards is a SmartLogic production. 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 @smartogic, or join the Elixir Wizards Discord. The link is on the podcast page. See you next week for more on Elixir in a Polyglot Environment. [END] © 2022 Elixir Wizards