EW S7 E6 Transcript EPISODE 6 [EPISODE] [00:00:07] AH: Welcome to Elixir Wizards, a podcast brought to you by SmartLogic, a custom web and mobile development shop based in Baltimore. My name is Alex Housand and I’ll be your host. I’m joined by my co-host, Sundi Myint. Hello Sundi. [00:00:19] SM: Hello there. [00:00:20] AH: And my producer, Bonnie Lander. This season's theme is Impact of Elixir, and we're joined today by a special guest, Jonatan Kłosko. Hi, Jonatan, how are you? [00:00:30] JK: Hi, thanks for having me. I'm great. [00:00:32] AH: It's great to have you. It's 9pm, your time, where are you located at? [00:00:36] JK: So, I live in Poland currently in Krakow. [00:00:38] AH: In Krakow. So, I know today in Washington, DC, where I'm at the height, it was 50 degrees, and I was cold. What's the weather like in Poland right now? [00:00:48] JK: So now, it's around like 10 degrees during the day, but it fluctuates very, very much. [00:00:55] SM: Celsius or Fahrenheit? [00:00:55] JK: Oh, Celcius. [00:00:58] SM: Okay. Cool. I was like, I'm pretty sure we're talking Celsius. I'm getting used to – It’s cool like we've been talking to people all over the world now in on this podcast. So, I'm finally starting to get a grasp on time zones and Fahrenheit differences and like the metric system.  [00:01:18] AH: We're the only country, Sundi. It's really on us. We're behind what the times. Right before we started recording, Jonatan, you told us something that we wanted to start with, because it was really fascinating. Can you tell us about speed cubing? [00:01:35] JK: Oh, yeah. So, speed cubing is basically a form of sport that is about people solving the Rubik's Cube and similar kinds of puzzles as fast as possible and it's actually my first hobby even before programming. So, I've been doing this over seven years. And it's really fascinating. Once you get to know the Rubik's Cube, the rules behind it. If you look at a person solving the Rubik's Cube, you kind of feel well, they are just following some kind of pattern. But to me, every single solution is like a blank canvas. You can just paint whatever on. And like, there was beauty in every particular. So yeah, that's great. [00:02:12] AH: What's your fastest completion type? [00:02:17] JK: So, at an official competition, it's five seconds, like 5.8, I guess. And unofficially is under five seconds. [00:02:25] AH: What? [00:02:27] SM: Five seconds? You mean, if this was a video podcast, you could do that right in front of us in like, in the blink of an eye. [00:02:36] JK: Yeah, that’s kind of how it looks. [00:02:41] AH: That's so wild. [00:02:42] SM: I’m enthralled. [00:02:43] AH: When you said five. I was like, “Wow, five minutes. That's impressive.” [00:02:51] SM: Are there like other sizes of Rubik's Cubes? [00:02:54] JK: Oh, yeah. There are many categories. And apart from like different sizes and shapes, there are even different categories. So, for example, people solve this blindfolded, which is basically you look at the cube for whatever time you want, and then you blindfold your eyes and solve from the memory of the whole cube. That's even more impressive, actually. I used to do this when I started, but then I just kind of stopped. [00:03:21] SM: Wow. I'm truly just like, “What?” [00:03:26] AH: Yeah, I'm actually wondering now, especially because you talked about that blank canvas thing. But you also said that people see patterns in it. I wonder, is there – can you draw a parallel between that and programming? Is that something that helped at all in influencing the way you learned how to program? [00:03:42] JK: Well, so I don't think there's like a direct analogy, but at certain points, there are certain analytical elements to solving the Rubik's Cube. There's even a category where you have an hour, and you have to figure out the shortest possible solution. So, this is more of an analytical thing when you sit down and just try harder things, or techniques. So, to some extent, yeah, but not directly, I would say. You certainly don't have to be good at math to solve the Rubik's Cube. This is a common misconception, actually. [00:04:13] AH: No, just very dexterous that's probably not a word. So, I'm sorry, everybody. But nimble fingered. Wow. Well, back to Sundi’s point, you are currently in school. But how did you get into programming before then? [00:04:28] JK: Yes. So, my very initial beginning, introduction to programming was fairly random actually. I just kind of get curious about how the applications I use, how this all built, and what it takes to create something like that myself. So, I just decided I want to explore this area and what I started was basically reading through a very large C++ book, and yeah, to the point where I actually investigated very specific language features, and even like newer standards. But when I do that, even though I was so into the language, I have never built any particularly useful tool using C++. But nothing particularly interesting regarding the initial story. [00:05:14] SM: Cool. And where are you currently going to school? [00:05:18] JK: So, I am in Krakow in Poland, and I'm going to the ADG University where I'm currently in my last semester of my bachelor of thesis. [00:05:29] AH: So, what's your computer science program at school like? Are you learning a variety of languages? Do you have more autonomy in what you're doing? You mentioned the thesis. So, are you completing like a larger project to the end? [00:05:41] JK: Yeah, so it was kind of gradual. So initially, there was a bunch of math and kind of a bit of formal computer science, I guess. Then on the other year, we had a number of languages to pick from. One of which was Erlang and Elixir, actually, so that that was my like, initial introduction to the language. And then like, on the other year, just like – having even more subjects to pick from. So, it becomes more like specializing in particular sort of things. And during the last semester, we are just focusing on bachelor of thesis. So, working some kind of project. [00:06:18] AH: What is your project? [00:06:20] JK: So, I'm working on evolutionary algorithms in Elixir, actually. [00:06:25] SM: Cool. Break it down for us. Those are some big words there. [00:06:29] JK: Yeah. So, starting this year, there was the introduction of numerical links here for the numerical computation efficiently. And evolutionary algorithms are basically like, are ways of optimizing, solving optimization problems. So, if you have like a function that you need to minimize, for example, or some other kind of problems, where you want to find the best possible solution. So, evolutionary algorithms are biologically inspired ways to do that, right? Where you have like a random process similar to population evolving over time, and you want to produce a best possible individual development, which is a solution to your problem. [00:07:08] AH: Fascinating. It's like very interesting, and kind of also, I'm like, over my head in a way, but still very fascinating. Sundi, go ahead. [00:07:16] JK: Yeah. How was working with that and Elixir been? How has that been for you? I'm curious if, first of all, and at least in the States, as far as I could tell, we don't usually have a thesis – I don’t know the plural for this. I don't think we have that for bachelor's, usually hear that in master’s and PhD programs. So, I don't really even know what somebody at a senior in college would have typically done for that. But I feel like they wouldn't have used Elixir, they would have used maybe a more conventionally taught language. So, I'm curious, how has that experience been for you? Was there an advantage to using Elixir for you? [00:07:56] JK: Yes. So actually, like, we have a number of topics to pick from, and the one we picked, actually has Elixir kind of hard coded into the topic. Because the other idea is to make this distributed. So, you can run this algorithm on multiple machines. And for this, we are using the Erlang distribution. And the final bit is that we got this topic, like a week from the numerical Elixir being released. So, it's like relying on something pre alpha, which is pretty unstable for a bachelor of thesis kind of project, which is usually like, you know, something pretty predictable from the very start. [00:08:34] SM: So, you're talking about Nx right now? [00:08:36] JK: Yep, that's correct. [00:08:37] SM: Okay, cool. Just for everyone who's only heard about Nx, it does stand for Numerical Elixir, is just something that I didn't think about that much. We use acronyms way too much in our field. Cool. So, that was that a hard sell? Did you have a board of people who had to, like approve your subject? And they were like, “That's experimental or something.” Or did they just say, “Oh, yeah, go with it.” [00:09:00] JK: Yeah, I went to just one friend and we kind of wanted to do the thesis together. And when we saw this kind of topics, and I got really excited that he was like, “Well, okay, we can do this. Why not?” [00:09:13] SM: I will say, I'm sad that the audience can't see how excited you are. Your facial expression right now is lighting up and that is exactly what you want to see, when somebody is talking about a project that they're working on in any capacity. That's awesome. [00:09:25] AH: Have you thought about whether or not you want to continue on to get your master's degree or not? You are very excited about your thesis right now. Are you really enjoying learning to the point where you want to keep going with it? Or are you kind of over school? [00:09:41] JK: Yeah, so like currently, I don't think I will continue over to the master’s, but I will certainly keep exploring the project we are building. Certainly, like once we are finished with the project for which we have a timeline, I will try to experiment with more unpredictable things to look into – without the time limit to do the easier experiment. [00:10:01] SM: Do you have immediate plans after being done with school? [00:10:04] SPEALER: No, I like just spending more time working on, on all the open source things I'm doing currently. [00:10:10] SM: That sounds fun. That sounds fun. I guess we can maybe move right into talking about the things that you're working on, not school related. We are context. We met a few weeks ago at the Birmingham Elixir Meetup where you spoke at a really late hour, we have now found out on Livebook and the newest updates to it. So, can you tell us everything about Livebook, the pitch. How did you start working on it? The whole thing. We want it all. [00:10:38] JK: Okay, so I can start with like how I got there. So, as I mentioned, I got exposed to Elixir of the university. And immediately there was an application that I wanted to rewrite anyway. So, I just decided why not do this is in Elixir? So, I build this application with Elixir, I kind of get more convinced that this is the right technology that really suits me. I just wanted to contribute to the community. So, I found HexDoc, the documentation project. And there was an issue about like getting rid of jQuery to kind of optimize the JavaScript bundle, whatever. So, I thought, well, I did a bunch of JavaScript. I feel fairly confident with JavaScript, so I will give it a go. And basically, I rewrote the whole JavaScript code base, and sent the pull requests. So, that was like my first contact with José and I sent like a couple follow up pull requests. I got an email from him that they're looking for somebody to do that project in LiveView, which I didn't really use at the time. I certainly got super excited and I just was very, very clear about my experience with Elixir is pretty limited. But I was super excited to work with José and in Elixir. So, that's how it all started. In January, I believe I just started working at Dashbit, focus on Livebook as a project. So yeah, that’s the initial story. [00:12:06] SM: It's so cool. So, I mean, this is really interesting, especially from a lot of people are trying to find out how do they break into the elixir space, especially like, as a person coming right out of college or a person with maybe not as much experience, you said yourself, you had like a limited exposure to Elixir before entering this project. So, I'm curious, like, was that offered as like an internship? Or was that talked about like we just want you to work on this project. Can you talk about like the dynamics of that, and maybe how you might give advice to somebody else who's looking to enter the space that way? [00:12:42] JK: Yeah. So, it was certainly helpful to get some kind of open source experience beforehand. So, I got the idea of how open source works. But as for this particular situation, there wasn't any kind of job interview or something like that. We just talked to José and I showed my excitement. And yeah, just went fairly, fairly smoothly from that point forward. But again, my advice would be to just get involved in the open source and opportunities should find you. [00:13:14] AH: There's something, it's not really hidden in there. But about really any type of interview process or hiring, I think that excitement and passion goes a long way and can take you further than just like your base skill set, necessarily can all the time. You want people that have like the heart to put into it right? Not necessarily just like the skills, not saying that's not valuable, either. That is very valuable. Rewinding it back. So, Dashbit, you kind of found your way there just like by chance, what's it been like so far? Have you enjoyed both working and going to school? Have there been conflicts there? Has that bit hard for you? [00:13:55] JK: No, actually, that'd be made absolutely brilliant, because I can work as much as I get time. Although, I'm so excited about the project that I just tried to find as much time as possible for building the stuff. But there were kind of conflicts and the work has been great, so far. I'm pretty much focused on Livebook solely, sometimes. So, side projects related stuff.  [00:14:19] SM: Yeah. So, can you tell us, like a high-level view, what is Livebook? How would one use it? [00:14:27] JK: Yeah, so Livebook is an application for writing, like notebooks, which are a mixture of text and code. And you can evaluate all of the code within such notebook. This is pretty general idea. So, if you ever used Jupiter or something like that, it's basically like the same idea. But we had like a couple key points that we wanted to address from the very beginning. So, the first is like, we want it to be collaborative. So, if you deploy the application to the cloud, multiple user can just join a single session and work together on the same piece of code, then we wanted the notebook to be reproducible. So, we ensure like sequential evaluation of the code and if you change something, we clearly indicate which code is no longer up to date. This makes like the usage very clear and expected, which is not necessarily the case imperative languages, where it all relies on a global state that can change like anywhere in notebook and is immediately visible globally. The third point was to make the file, the notebook files readable so that you can put them on GitHub or share with somebody and you can clearly like read the file, you can see the diff and easily like review the code. So yeah, these are a number of key goals of the head. Another way I like to think about Livebook is some kind of IEx shell combined with an editor. So, it's great for like prototyping an application. And then you can just copy paste the code to whatever environment you generally use. [00:16:05] SM: Yeah, and I think that it was so cool seeing it for the – well, I saw it over the summer, actually, when I was working with Frank Humbleth on like, we were just playing around with Nerves and Nerves Book was just an ideation phase, and I just – my face, I wish that we had like taken a videotape of my face when I saw you could run Elixir code and like compile it, like by pressing the Run button, and it actually runs through everything an IEx session would do in like a browser format. My brain just started spiraling. And I think Frank got to witness that.  If anyone's ever seen my smiling face, I have like this swirly eyes emoji that kind of represents it. But yeah, so I just saw so many cool ways that people could use it. I'm so curious, have you seen really cool things that people have done with it? Are you excited for what people are building? Or do you have any thoughts about things that you want to like do with it? [00:17:05] JK: Yeah, so initially, it was kind of motivated by the emergence of NX, like a sub ecosystem for Elixir. But even at the very beginning, I kind of felt that this is a much more general use tool. And like, we already explored a number of directions. So, for example, just recently, we made it possible to include a notebook in your documentation. And then if you go to the x documentation, you can just press Run button, and open this notebook wherever you just want. So, it's kind a decentralized way of running all the notebooks. Another idea is like using just for prototyping. So, this is probably like the most common for developers to just open it up and kind of use as an extra. And then, as you mentioned, trying to figure a way to run Livebook on Nerves, which, yeah, I didn't see that coming. Although, again, kind of fell just right in the Elixir ecosystem where everything is just super combined together and plays nicely. Yeah, another idea is about like using Livebook to connect to our production system, and try to run some scripts, while you kind of supervising the process and seeing the results live. So, this is another possible use case for Livebook. [00:18:29] AH: This is so cool. I was never doing anything this cool in college, Jonatan. I was just like, not at all. I can't even describe how – I don’t know if it's envious. But like, I feel maybe a little envious. It's just very cool that you're so involved in the community already. I think that's awesome. [00:18:55] SM: I think to describe the like swirly face I was talking about, Jonatan has actually seen it, it was my face when I found out you were still in college, after knowing that you would help bring Livebook to the world. I mean, that's just so cool. I mean, you're just going to do some cool stuff and we're all excited for it. Speaking of that, what is new with Livebook? Are you doing any fun stuff with that? Is there a point at which it will be called finished? Is there an end goal? Or is there just like an evolution process in place? [00:19:27] JK: Yeah, so actually just recently, José published a video on a number of new features in the 0.3 release. So, if you haven't seen that, just give it a try. And just recently, we published a website, which is actually the place that allows you to run various Livebooks through the website to whatever Livebook you have configured. And yeah, and there's just a number of ideas that we both have on our GitHub issues tracker and some other ideas that we are just kind of thinking about and discussing. So, there's certainly much more to explore going forward. I don't think there's a clear point where it will just say, “Well, it's all done.” Just just a number of things to consider. [00:20:13] AH: I'm really intrigued. How did you start learning Elixir in college? I learned Elixir on a job that that a company that just happened to use Elixir. I don't even think it was around when I was in college and I'm thinking back to other programming classes that I had. What was like the first thing you learned how to do? [00:20:32] JK: So, the initial classes were on Erlang. I guess, it was about like, the basic data types and then the processes. Like the processes is probably something something new, because otherwise we have like, at that point, we have some experience with programming, generally. But then we went through some of the OTP patterns, and then to Elixir. And at the end, we had like an assignment to pick whatever library we want, and just build something, just present it. So, I picked the Absinthe library for building graphical API's. I was so excited that I ended up building a full stack application with React front-end stuff. [00:21:16] AH: You've just been doing the most sense, but that's great, because it means you're excited about it. But I feel that way very strongly. I think, when I finally found my groove working in Elixir, I was like, “Ooh, I want to do work. I want to work. Wow, I like what I'm doing.”  [00:21:30] SM: Yeah, it shows and that I was also surprised at Livebook, you said January 2021, right? Like eight, nine months ago? Oh, wait, we're November, are we? I'm sorry. Months ago, I can count. Yeah, I think it shows a lot when you are really excited about a project that you can make so much progress on it, and it's not necessarily because you like grinding, it's because you want to and that's really cool. I was definitely super excited when you were showing the features of Livebook at the meetup, and you showed the pairing feature where you can follow someone around the screen. Can you talk more about that? Because I think Alex will love that. [00:22:13] JK: Yes. So, in the collaborative use case when multiple users are on the same notebook. You can, for example, click on somebody and as they move through the notebook, focus different cells and stuff, your screen kind of moves along them. So, you can just follow along if somebody is like, doing the coding, and you're programming or if you're teaching somebody some concepts, this is certainly useful. [00:22:40] AH: I do like that a lot. Sundi, you know me so well. [00:22:43] SM: Yeah, I mean, you're also doing a lot of pair programming right now. So, I think that could be an awesome tool. I just personally see Livebook as a potentially amazing tool for learning. Alex talked about learning Elixir on the job, I learned Elixir on the job too, same job actually. And I really wished there was a really good tool for learning. Everyone has a different learning style. We've all kind of talked about this. Some people learn well, from videos, some from books, and as an Elixir community, we have a lot of books, a lot of great books, so many books. But if you're not someone who learns well from books that can kind of be difficult, and I really hoping that some really cool Elixir tutorials and intro to Elixir, kind of stuff comes out of Livebook because how cool is it to be able to send someone a website and be like, here's like a basic pattern match, and hit the run button and you'll see what it does and then change some of the code and try it again. I mean, that's just so powerful. It's such a low level of effort, because you just don't have to – they don't have to install anything or set up an environment or figure out what's wrong with configs. So many things sometimes can just stop someone from wanting to go further. So, that's so cool. [00:24:00] JK: Yeah, that's especially great that you can like run Docker, or just deploy to the cloud with a few clicks, thanks to the false file, which made our custom launcher for us. So, basically, with just a few clicks, you can play around with Elixir without installing anything on your machine and figuring out any kind of set up for yourself. [00:24:17] AH: Yeah, just makes everybody's lives a lot easier. Just fantastic. I love just ease. It's also really interesting, you might be – well, correct me if I'm wrong. You've been in Elixir, you've been working in Elixir for the last two years maybe? [00:24:37] JK: Yeah, a year and a half. [00:24:40] AH: Okay, I think I'd have everyone on the show so far. You might be the newest to Elixir. So, we've had people who started working in elixir that didn't have certain macros like way back in the day. We know in the beginning. But you're jumping in at this point in time with José as a mentor essentially. And so, you're getting the prime experience here. What do you think has been impactful about like Elixir’s – working in Elixir for you, how has that impacted your experience with programming in general, you having been in this unique position? [00:25:17] JK: Yeah, so like, as I said, when I found out about Elixir, it kind of put all the pieces together for me. The like selling point is, for me, is the take on functional programming, where it's like super pragmatic. They're all the, like, proper functional programming, building blocks like immutability and function and composition stuff. But when there are like imperative operations to do to, like send a message or write something to the screen or to the database, there are no, like overly abstracted ways. In Haskell, for example, where you know, it's also great, but just wrapping your head around all the abstractions, it may is just like the initial steps and general fellas, like, much harder. In Elixir, it’s just super natural. The syntax is clear. Particularly, the nice thing about Elixir is that it kind of unifies the developer experience. So, we have the unified approach to documentation, we have the unified approach to testing, which is actually not obvious, because in many languages, testing like is your choice, there's a number of libraries, and then you have to – imagine you just started in a language, and you want to test some functionality. So, the first step for you to do is pick from 10 different testing libraries and read, which one is the best of the given point in time and this kind of stuff. While in Elixir, there’s this built in testing stuff, and just use that, and everybody use that. This also lowers like the Getting Started for contributors. If you get into another project, it's very, very much – the experience translates between products very well. Yeah. And there's also the formatter, which also works consistently for the whole ecosystem. So, all of this kind of made me feel, “Well, this is technology.” [00:27:12] AH: Do you know if the students in your program who picked a different language not Elixir, or Erlang, do you know if they are as involved in those language communities? [00:27:22] JK: Oh, it's hard for me to tell. [00:27:25] AH: Yeah, definitely hard to tell. [00:27:28] JK: Although, I know a number of people that to do the Elixir course and they’re working currently as Elixir developers as well. So, that’s great. [00:27:36] AH: One thing I've noticed, particularly about being well in this job, but in the job where I also learned Elixir was I felt that the community of Elixir developers is like very tight knit. and they want you to succeed and they want you to love the language as much as they also love the language, which is really nice as somebody who's learning it, is that the community itself is I think, very welcoming. [00:28:11] SM: Yeah. I actually I've never experienced this before, but during my interview cycle, oh, yeah, I guess it was like 18 months now, when I was looking for a job in Elixir, and I wasn't finding anything because it was like peak pandemic. No businesses knew what they were doing. They couldn't make hiring decisions. I was just kind of losing hope. I was looking for JavaScript jobs. And a number of people told me that they were sad, they would be sad to see me leave the Elixir community if that was how that happened. A number of people I interviewed with where it didn't work out because they couldn't hire, or turned out that they couldn't hire they said, “Well, let me see what I can do with some of my friend’s companies.” Or like, “I know this person. I know that person. We'd love for you to stay in the Elixir community. I can't hire you. But we want to make sure that you stay.” I was like, “Wow, I've never had that before.” Usually, an employer says no, and you just kind of move on with your life. But the Elixir community was the first kind of community that really wanted to take care of me and keep me, and that's a very sweet sentiment to have. So, Jonatan I hope you know that you're here for a while. [00:29:23] AH: We're not letting you leave. [00:29:27] SM: I’ve made a club when I said that. [00:29:29] AH: It’s no longer spooky season. But still, I'm going to do it. [00:29:33] SM: Yeah, well, we're just off of spooky season. So, we can do it. [00:29:36] AH: It's really always spooky season. Jonatan, you mentioned Haskell. Have you worked in other functional programming languages? [00:29:42] JK: Yeah. At some point, I just was curious about functional programming or something new. And I picked up Haskell to learn the concepts. So, I very much like the concept, but Haskell for me was kind of too much in a way. But then I kind of leaned, start leaning towards programming in a more functional style in whatever language I was working on. So, even in JavaScript, I was super trying hard to not mutate the data, to write functions like other kind of transformations and then I picked up React, which also kind of plays into the story. So, I was already going toward the functional direction and Elixir was the just the perfect volunteer,. [00:30:25] AH: It's so funny, because I think everybody who has come on has said pretty much the exact same thing whre writing in Elixir, or just kind of learning the concepts of a functional programming language made them write other code differently, which definitely is true for me. But it's just interesting that, I guess, everybody's brains work similarly, or maybe everybody's brains who really like functional programming. You never really know. [00:30:54] SM: Yeah, the influence of learning Elixir, or sorry, Elixir has influenced the way people write other languages as well, which is definitely a common pattern we're starting to see and we're only just starting the season. So, this is awesome. Yeah, I've also recently learned or heard that, the more languages that, the more you can think about something from like a broader view versus like language specific. It's interesting to think about problems that you're just facing in general code wise, from a greater computer programming point of view, than to just be like, “This is how I solve an elixir.” How would you solve it, and then think about elixir as a tool set of things, which you're probably definitely learning at school, because they ask you to learn a bunch of languages? So, I'm probably just touting what your professors say. But it's definitely an interesting way to think about. [00:31:46] AH: Jonatan, what do you think are the downsides of Elixir? Just turn it on its head. [00:31:53] JK: Yeah, so like, one thing is that certainly there are certain tasks that are hard to like do efficiently, tasks that require like mutability. So, for those, we can use sniffs, and just use some kind of low-level language. But there are ways to kind of work around. For example, well, a year ago, I guess most people wouldn't even think that doing numerical computations with Elixir, it's in a way, like possible. And then now we can just just do it by writing like high-level Elixir code and, and getting a very native performance on whatever target we want to run this on. So, this is kind of alongside that, I guess, not as much. And the other point that's, well, for me, it's a little real downside, but for many people it is, is that Elixir is not the type language. And again, this is like, very debatable. But for me, like it's not a real problem, especially the very assertive way we kind of structure the programs that we use a bunch of pattern matching and becomes clear what data we are dealing with. So, that itself, plus the standardized documentation and the emphasizes to kind of make the documentation good. All of this kind of is enough for me. [00:33:15] AH: I would say that, I think probably everything has a downside, but also, you just spoke to it that the Elixir documentation, I feel like is truly top notch. There's such a good push for people to actually document things, which is great as somebody who's learning it, that the documentation is actually pretty clear. [00:33:33] JK: Yup. And testing is like extremely, easy, I would say, as compared to other languages. [00:33:40] SM: Yeah, I think downside is probably a big word for that. I think another way, I would say that is like, what are things that you hope to see in Elixir that's just not there yet, that you might have in a language that's been around for longer? And it could be all those things you just said, but I'm just rephrasing it a little. [00:33:59] JK: Yes. So, one thing with Elixir is that you kind of never know what people do with it. So, it happens a number of times, like, just recently we saw Nx, which is like never – like like nobody would think that this is possible and here we go. Similar, like, who would expect to run Elixir on an embedded device, right? And it happened as well. And then there's also membrane doing multimedia processing, which means Elixir is super extensible and this is one of the beautiful features about the language itself. So, we can always expect new areas to emerge, and this is something to look for. [00:34:39] AH: Do you feel like Elixir as a language has had an impact on the programming community? [00:34:47] JK: Yeah, so I feel like, because what Elixir does great is it exposes the programming community to all the beauty of beam and OTP. So, this is like super great technology, but it wasn’t really that accessible especially, people not particularly interested in Nx domain or just not knowing about this. Elixir, by providing a great devolve experience and unifying all of this documentation and testing, and providing a syntax that is super friendly, by all that, Elixir is appealing as a language, but also enables people to start with all the amazing technology behind it. So, I think, in this regard, it’s really great, in fact. [00:35:33] AH: You are so right. Yeah, it’s so much more user friendly, especially if you’re a beginner. To come to it, and then be able to dive deeper kind of at your own pace, yeah. I don’t even – you worded it so well. Man, Jonatan, you’re just like really high performing, which is not a bad thing, but sometimes I’m over here like, “Look at this kid.” I’m just kidding. You’re not a kid. [00:36:03] SM: I’m happy that you do have speed cubing because it's nice to have some balance in your life. [00:36:10] AH: Yeah, what else do you have that balances your life out, Jonatan, besides speed cubing? [00:36:15] JK: I drink a bunch of tea. So, it takes some time to prepare the tea and then to drink it. So, it introduces some balance to the day. [00:36:23] AH: What's your favorite type of tea? [00:36:26] JK: Yes, I would say Earl Grey, but usually with Earl Grey, with some sort of additions there. Yeah, I like a bunch of different teas. [00:36:36] AH: I love Earl Grey. [00:36:36] SM: Earl Grey is a great favorite. I particularly like it as a flavor, particularly, in a certain pie that makes – [00:36:45] AH: Jonathan, what’s your feeling on chocolate in general? [00:36:47] JK: I don't eat much sweets, thankfully. [00:36:51] AH: Okay, well, this pie is not particularly sweet, but it's an Earl Grey like mousse pie and you steep Earl Grey tea in cream and then you make a mousse out of it. Great. Cannot recommend it enough, as Sundi can attest to. [00:37:06] SM: Yeah, it's way too complicated for me to ever make. So, whenever Alex makes it, I magically appear in front of it. [00:37:12] AH: It's so good. I also know that you love cats, Jonathan, is that correct? [00:37:17] JK: Yup. [00:37:18] AH: Do you have a cat? [00:37:20] JK: Oh, yeah, I used to have a cat. I no longer do. But I guess at some point, I will just have a cat again. [00:37:27] AH: You could be a crazy cat man. You can get like 10 cats. I don't know where Sundi's cat is right. I'm sure she's lurking around the corner. [00:37:35] SM: She’s wandering. Everyone thought I would be a crazy cat lady. And then after I had one and realize like how much love and attention she requires, I don't know that I have it in me to do that for 10 cats. I can barely go to Elixir Conf for like three days without being like, “She misses me. Oh, no.” [00:37:55] AH: I mean, I just left my dog for a week and it was the longest I've ever been away from her. It was wildly difficult. But before we get on too much of a tangent of pie and pets, the two best things in life, Jonatan, you, I feel like are very kind of embedded in the community. What do you hope for it? Like what do you hope for the Elixir as a language? What are your hopes for Elixir as a community? Dreams, aspirations? [00:38:23] JK: Yeah, so one point is I hope that the like adoption will just grow over time. We are seeing a number of companies like using Elixir here to reduce their resources and yet improving the performance and just reducing the amount of code. So, just making them more productive. I'm particularly excited about the new REO of Numerical Elixir, and also about LiveView, because LiveView kind of starts to redefine how we write applications. And it's especially prominent by other languages trying to mimic the same idea. But we have the perfect platform for actually like doing those things. So, I'm super excited about where life is going to go and how like we will leverage this in the future. So, these are like, two main things I'd say. [00:39:16] SM: You talk a lot about open source. Are there any projects that you know of that you're involved with, that you know could you some help if somebody listening was like, “Oh, yeah, I do want to get involved with open source. I wonder where I should start?” [00:39:27] JK: Yes. So, at this point, I would say though, it's super exciting to get started with the Numeric Elixir again. There is actually an Erlang ecosystem foundation Slack, where we're like there's a machine learning channel. So, if you're interested in Numerical Elixir, or anything like that, I highly advise you to join there. We are having discussions and if you're interested or want to help or check it out, just go for it. [00:39:54] AH: If you were to highlight resources for people who are interested in learning Elixir, where would you point them? [00:40:02] JK: Well, so I would say just start Livebook and there are some introductory material over there. [00:40:08] SM: Excellent product placement. [00:40:10] JK: But other than that, the docs are great and the walkthrough on the Elixir website are also great. So, definitely a number of resources. [00:40:18] AH: Do you have a favorite resource that's not Livebook? You can't say your own product. I'm just kidding. You could.  [00:40:25] JK: I mean, I don't think I use anything in particular, it was probably a mixture of things. So, when I was learning about specific concepts, I would just Google around and read something in the docs and then some articles. So yeah, different people have different approaches. [00:40:43] AH: This is true. Everybody's learning experience is different. Now, what is your favorite thing about Elixir? It could be like, pattern matching, the pipe operator. Really whatever you want to pick. [00:40:58] JK: Yeah. So probably, I would say the pipe operator, because this is something, I was super, very missing in JavaScript. Because I tried to write in functional style, I would often find myself like wrapping functions over and over and over and be super unreadable. So yeah. [00:41:17] SM: And then at the end, there's like seven parentheses. Oh, I hate it. [00:41:25] JK: Yes, this is like super tiny, syntactic difference, but it's really a deal breaker, I would say. [00:41:31] AH: Yeah, I went from an Elixir job to a primarily JavaScript job, and then here, and I did the same thing where writing JavaScript I was like, “Oh, what? Oh, crap. This isn’t Elixir.” And I wanted to like pipe results into other results. It's hard. Oh, my God, the readability, big thumbs down. [00:41:54] JK: You can always introduce new variables and figure out how to name them. [00:42:00] AH: Which might be the hardest part of programming, as we all know, what am I going to name my variable today? When in doubt, just name it, “What?” [00:42:11] SM: Yeah. What I find so funny about that is the programmer on Twitter said something about you know how it's hard to name variables, I'm trying to come up with my name for my baby. [00:42:20] AH: Yes. [00:42:21] SM: And just like drawing the parallel there. Just made me laugh so much. [00:42:26] AH: It might be easier to name a baby. [00:42:27] SM: Yeah, maybe. I mean, this has been so much fun. I'm really glad we were able to make this happen. [00:42:35] AH: Me too. [00:42:37] SM: I think your excitement, Jonatan, definitely it exudes out from your screen. Because I was already excited about Livebook and then I went to the meetup, and it was like, I'm 10 times more excited about Livebook now. And I was thinking, “Oh, man, it's kind of late after this meetup.” And it was way later for you. I was thinking, “I want to play with it right now. But then I will wake up tomorrow.” So, I appreciate your excitement. It's so cool to see that in the community. It's something I think the community really needs and helps move it forward. So, thank you for what you're doing and thank you for being excited about it. Because that's not a given. [00:43:14] AH: No, I would like to reiterate everything Sundai just said. [00:43:18] JK: Perfect. Thank you. [00:43:21] AH: Well, Jonatan, do you have any final plugs, asks for the audience? Where can they find you on social media, GitHub, et cetera, et cetera. [00:43:31] JK: So, I'm not really a social media person. So, you can either email me or catch me on the Slack I mentioned. Yeah. If you're interested in helping with Livebook, feel free to reach out. Or especially if Numerical Elixir, we are certainly looking for contributions. And yeah, happy to chat anytime. [00:43:51] AH: Awesome. I must admire you're not very on social media approach to life because I'm on Twitter too much. So, I applaud you for your – [00:44:02] JK: There’s the balance, right? [00:44:03] AH: There is always a balance. Yeah, finding it is the hard part. Here we are almost in 2022, everybody, still haven't found our balance, but it's whatever. Well, Jonatan, thank you so much for joining us, especially given the time that you're in, which it's almost 10 PM. Thank you, especially for that. That's it for this episode of Elixir Wizards. Thank you again, Jonatan Kłosko for joining us today. Elixir Wizards is a smart logic production. Today's hosts include myself, Alex Housand, and my cohost, Sundi Myint. Our producer is Bonnie Lander and our executive producer is Rose Burt. We get production and promotion assistance from Michelle McFadden. Here at SmartLogic, we build custom web and mobile software. We're always looking to take on new projects. We work in Elixir, Rails, and React, Kubernetes and more. If you need a piece of custom software built, hit us up. Don't forget to hit like, subscribe and leave a review. Follow @SmartLogic on Twitter for news and episode announcements. You can also join us on the Elixir Wizards Discord, just head on over to the podcast page to find the link. Don't forget to join us again next week for more on the impact of Elixir. [END]