Elixir Education with Adolfo Neto - EMx 266

In this episode of Elixir Mix, we chat with Adolfo Neto, a professor of computer science at UTFPR in Brazil, about what it’s like to teach Elixir, how we as educators can support the Elixir community to grow and thrive, and what the Erlang Ecosystem Foundation’s Education Working Group is up to.

Special Guests: Adolfo Neto

Show Notes

In this episode of Elixir Mix, we chat with Adolfo Neto, a professor of computer science at UTFPR in Brazil, about what it’s like to teach Elixir, how we as educators can support the Elixir community to grow and thrive, and what the Erlang Ecosystem Foundation’s Education Working Group is up to.

Links


Picks 

Transcript


Hello, and welcome to today's episode of Elixir Mix. I am joined as always by our wonderful panel of hosts, including Bruce Tate. Hi, everybody. Hey, Bruce. We've got Josh Adams.

Hello. Hi, Josh. Lars Vikman. Wait. What was that?

Colloquial Swedish. Very nice. Hello. Hello. Hello.

Hello. Very cool. And Steven Nunez. Hello. Or hola.

I guess I have to say hola or something. Yeah. I think you do have to. K. Okay.

We got Dominicans out there. Perfect. And joining us as a guest, we are very lucky to have Adolfo Neto, who is a professor of computer science, and he's also very active in the Elixir community, especially with regards to Elixir education. I am super happy that you could join us today because these are really some of my favorite topics, education and Elixir. If you wouldn't mind, go ahead and introduce yourself.

Thank you very much. My my name is Adolf. I'm a professor at the the Federal University of Technology, Paranal, which is it it's here in Curitiba, Brazil, and I teach logic for computer science and also an introduction to functional programming course. And I got interest in Elixir because it was created by a Brazilian. I have to say that because that's what attracted me to the language at first, but now I I admire the language and also its community.

So do you actually get to teach Elixir in at at your university? Yes. I don't have many students. Last offering, I had 4 students only because it's an optional course. It's you don't have to take this course to graduate in computer science.

So, actually, we don't have computer science here. It's computer engineering and information systems, but it's it's an optional. For instance, I I have an agile methods classes 2 class 2, and it's it has much more students because it's it attracts more interest for for the it's more interesting for the students to learn what's scrum than Elixir. But I hope that as the time passes, more of the students are going to get interested in the the this class. It's interesting.

We've gotten to spend a little bit of time together. For those of you who don't know, I have a mentoring group, and Adolfo shows up as, I don't know, something in between a mentor and a mentee, which is kind of great for my students. But I have some questions. Do you have any techniques that that you can throw my way, or are there any things that we do that you're gonna take with you in your teaching approaches? Oh, actually, I think I I'm learning more with you than the opposite because before this introduction to functional programming course, I only taught, logic for computer science.

So it it was not an introduction to programming. I'm still trying to learn what which is the best approach to teach programming. And, what I try to do is teach them the how to write a program in Elixir, but also the fundamentals, papers about the the Hector model when so it's kind of mix. There is also this academic approach that's I think that's what's different from your approach with your mentees. Yeah.

It's been fun to actually have smaller classes where we can flip the keyboard, and I think that that that has been an eye opener for me to get a chance to actually invite the key to get up and code ever. I I know I never had that in my ear. Yes. Yes. Because I I'm also a big fan of the coding technique.

I have written some papers about it. And whenever I can, I invite my students to do a coding with the whole class? And every 5 to 7 minutes, they first, they they do pair programming. So there is 2 2 persons on using the the computer, and one of them is the the driver and the other is the how do you say? I I don't remember the the name, but the one that's observing and saying Or navigator.

Yes. Navigator. And after some time, the navigators becomes a driver. The drives go back to the to his seat, and another student takes the place of the navigator. You have to to be always paying attention to what's happening to to be able to write some code in front of the class.

That's something that I really like. I had a master's students who wrote actually, they have 2 master's students. They wrote their thesis on coding the OSU, so I try to practice this with my students. It's interesting that you mentioned giving your students, I think you mentioned some papers on, like, the actor model to read, and that made me realize that when I was learning elixir, I didn't really know what that was or or even have an opportunity to think too much about it until maybe almost, like, a year into, you know, writing Elixir professionally, and I have an o o background. Like, I learned Ruby first.

I was a real developer. And so a lot of my journey into Elixir was characterized by, like, writing a lot of really messy sort of o o inflected Elixir code. And so one of the things I'm always curious about is, you know, what is it like to teach and learn something functional first as opposed to learning o o and then, like, trying to sort of fight your way into a functional way of thinking. I don't know if you've taught o o as well as functional or, you know, how you think about these different totally different frameworks and mental models. Yes.

The the problem is that my students, when they come to to this optional course, they already know how to program. So I don't know how it is to teach functional programming first because they they already know. The the problem that they have is and that I I tweeted a few days ago was that, they they do what you said. They they know how to do objective oriented program, and they try to do something like that with Elixir. And they they have it's really difficult for them, for the few students that I had, try to write some more idiomatic codes, some code that looks like Elixir that makes use of pattern matching and small functions and lots of things that you can do in Elixir.

You can do in functional programming language, and it's makes the code more readable, but you can't do it also. At first, I'm not a professional programmer, so I program whenever I can, but I I did my PhD thesis using Java. So I can say that I could write some reasonably good, Java code. And when I started Elixir no. And before Elixir, I started Closure, and it was difficult to say, now How do I do that?

How do we I do a far loop here? There's no far loop, so I had to try to to do things differently. So it's a a problem that I still don't have, but I want to have. One of my projects I have many projects, not all of them. I put them in practice, but one of them was to create a programming course or even write a book for complete beginners, people that can't program in any language and say, no.

Now let's learn elixir. Without the telling them that it's elixir, you know, let's because there there are main introductory books about elixir that for for example, my friend, he wrote a great book about learning functional programming and with elixir, but he kind of expects that people already know how to program with some other language. I believe Dave Thomas' book also expects an even more book. So there's no prog no programming book or that teach functional programming with Elixir for complete beginners, as far as I know. Yeah.

Such such books do exist for the Haskell language, which is kind of a a big step. Right? Because you're you're not just grappling with the the paradigm of, you know, what's an object and things, but you're also working into a completely different kind of type theory. And these these concepts are just pretty stunning to me. So another professor that that I really like is is a man named John Hughes, one of the creators of Haskell.

And he came to to Chattanooga to to attend our conference, and and I was fortunate to spend another couple of days with him. But he regularly taught students without any kind of mental corruption. Right? And these are computer science students. So what what's interesting to me is the students that I get that that are starting from scratch are normally professionals that have tried to make a go in something else.

Right? So they they have the benefit of not having some of the baggage, of a different programming paradigm that we have to deconstruct. But they also don't have the experience with the tools that they need for basic fluency, how to navigate the command line, how to use source control, how to do things like that. And and that's that is a tremendous obstacle. So you find the same thing teaching at university?

You mean they they don't have The the the basically, a fluency with with the basic tools, you know, source control editors, navigation at the command line, things like that. Yes. The 1st year's students here at the the universe, some of them don't have influence, so they learn c. The the teachers that teach them in the 1st semester, they teach them c. So they learn the basics in the 1st semesters.

When they arrive in my my class, they already know how to do that. But I see what I mean. And there there are some online IDs, like rep. So I don't know. It's repo dot it and also end box where you don't have to learn everything that create a file and all those things to to be able to write some basic programs in Elixir.

Yeah. On the subject of just teaching absolute beginners, one of the best books I ever found for this was Chris Pine's Learn to Program, which is in Ruby. I have a friend who was sort of model y technically competent. He learned to program Ruby using that book. He's the CTO now of a start up.

Really fun to watch that that actually can work. That's not a testimonial for Chris Pham's book. I really don't know what is. Yeah. It's really interesting to think about how to teach absolute beginners, and that's something that when Steven and I were teaching together at the Flatiron School, that's exactly what we did and what we were teaching was Ruby.

And I think, at least at the time when I was a student there, which I was before being a teacher there, Chris Pine's book was I don't know if it was required, but it was sort of recommended pre reading of starting the course. And I think one of the things that I loved about teaching Ruby to absolute beginners and one of the reasons why the school kind of touted it as such a great language for beginners is because it it's easy to see how it models the real world. Right? We there's an early assignment, I think, where we have students build out, like, a pet store or something. Right?

And you have a dog and the characteristics of a dog, and then you instantiate dog objects and, you know, take them, I don't know, to the vet or something like that. And for a while, I was really just totally sold on, o o models the real world. Like, that is the mental model for writing code that models the world. But now that I'm working in with Elixir and and thinking about things more functionally, I'm kinda thinking like, does it? Isn't it that message passing model of the world?

And that's certainly what Joe Armstrong, you know, would argue. And isn't it that the actor model really models the world? So it still feels like these things are at odds. Like, can they both be accurate representations of the way that, you know, people and objects move through the world? Well, I I think that's, as I said, I came from a logic and computer science background, and there's one thing that's it's real logic even before in program is that there are many, many models of the world.

There is, for instance, logic there is a classical propositional logic that we use mostly on programming. It's only one logic. There is multivalued logic. There is relevant logic. Logical logic.

There is many logic. I believe that depending on the problem, one model is going to be the best. For other problems, there are 2 possible models, and you can choose. So I don't think that's a problem. Maybe this book that teaches an absolute beginner how to program in Ruby is good for a person, and this other book that teaches how to program in Haskell is good for a mathematically inclined person.

And so there there I think that's the great thing about all these programming languages that there are many options. So I know people love closure. I know people hate closure because there is so many parenthesis. And closure is even has less parenthesis than list. There's everything that is is made with parenthesis.

So I don't think it's a problem. I think here is that we have to provide options, and the the students, the users, the the persons, the people that want to learn programming, they they choose what's best for them. I think that we're kind of entering a golden age of programming in some ways because, we've come out of a of a place when there was one true way. Right? There was the the Java way and in the darkness by them.

Right? So we we're starting to to get to the point where it's not just useful, but almost expected to have more than one tool in your tool bag. And, so for that reason, I think that probably the most important thing that we can learn is the skill of learning. Right? And so that's that's something that I've always really respected about you and and your work.

And especially this Dojo approach where where you teach people to roll up their sleeves and and get their hands dirty first, really early in the process. Yes. And what's great about coding dojo, it was created by 2 French guys. I believe that it was created in France. I can't remember their the names of the guy.

And I don't remember the name of the other guy. But and one of the goals when I learned the the coding dojo from one of my students, it is one of the goals I thought, you you do during 1, 2, 3 hours, you solve a problem, a Codecata. And this concept of Codecata was created by the great Dave Thomas, which you know well. And the his idea was it was a small problem that we you'd solve several times with different techniques in different languages. And the so in there, it's it's the the the seed for the this idea that you for you to to be a good programmer.

You can't be just I don't know. I'm going to become perfect with Java and forget all about the other language. No. You can learn Prolog. You can learn Lisp.

You can learn of course, you have to decide that something that was happening at the Elixir World Telegram group today is that sometimes you have to choose. You cannot, I'm going to learn a bit of Elm, a bit of Elixir, a bit of Erlang, a bit of Java, and end up being competent. Nothing. You have to choose. I'm going to be good in Elixir.

Like, I'm going to study the other language so that I I will be a better Elixir developer, a better developer in general. And maybe in the future, I can oh, no. Now I I I don't have a a job with Elixir, but I have a Java job, so I can do Java too. And this is this is, sorry. This is a real case.

A friend of mine, she had an Elixir job, and then she went to Sweden to to be an Erlang developer, and then she found a Java job. So Yeah. In my experience, the whole idea of being a generalist sort of turns out to be a pretty good specialty. Just having multiple things to lean on and having a wide knowledge of technology, servers, the for example, the field of web development is by its very nature extremely wide. There's a ton of things you should know to be really knowledgeable about the web, both back end, front end, and the web standards and APIs.

There are so so many things. And every domain in programming is basically like that, and that it's there's a lot of depth and there's a lot of width. And, of course, you can focus down on the language to become an absolute expert in wielding the minute details of Java or Elixir or Python or c, but you can also pick up a few different languages or pick up a wide skills that were, okay. You need a SQL database up and running, or now we need to set up some additional servers, or we need to write something in this language because we're using a project written in an entirely different language. Is there anyone that can actually read the code and work with it?

Okay. Yeah. If you know a few languages, picking up a new one, for example, is is usually fairly straightforward, except when you run into, like, the paradigm shift of o o functional programming, for example. But I think having that generalist approach tends to I've often heard the advice to specialize. You need to be good at a specific thing, and I think I think people mistake what that should be and what that needs to be.

I think you can be very experienced. You can be an expert. That doesn't mean that you know every detail of the language. It can. But then you're a language doctor or a language specialist.

That's usually not the most useful value add for for a particular endeavor in my experience. And, I mean, it strikes me, Adolfo, that you are essentially, starting to move people in this direction. Right? With your functional programming course and with the way that the world is moving or needs to move. Maybe it's moving there fast enough.

But it strikes me that that you've you've at some point, you've made a decision to take people in this direction. When when was that? When did you start to be more of, kind of open up the blinders a little bit? In the United States, there are a whole lot of schools that are invested in teaching Java and teaching Microsoft because that's where the certifications are, and they've made investments in those places that just came right away. I have a lot of freedom here in the public university where the government owns the university, and it's free for the students so I can offer the course.

I have some freedom to offer some courses, and I I decided to start this functional programming course. And functional programming is getting more well known with Brazilian software developers because there is a big company called NewBank, which it's a kind of a banking a digital banking company. They have a credit card, and they bought Platform Attack, which is the company where actually not only worked at that, but he was one of the owners of the company. And after that, the the same company bought Cognitec, which is was the company is it still is the company behind closure. So there was some kind of publicity for functional programming language here in Brazil because of these 2 companies that were bought.

So I hope that in the near future, I will have more students for my functional programming class. I I try to to offer them this because they what what they learn as mandatory courses is c, c plus plus, and Java. They that's what they have to learn, but if they want, they can learn Elixir too. I think, related to this, kind of on the topic of of teaching and producing generalists, sort of what you're saying, like, okay. Well, students are if not required, then they're kinda put into these boxes to learn these three languages.

And if they want to, they can come over here and learn this as well. Really relates to something you said earlier, which is that you're not teaching students elixir, although, you know, hopefully you are. You're teaching them how to learn. And I've always found that one of the best ways to do that is to, like, make your students strategically uncomfortable. Like, kind of let let them suffer a little, and I'm gonna actually put Steven in in the hot seat a little bit because I think that this is if that's my teaching philosophy, I think I probably stole that from you.

A little bit. Yeah. I I think that, you know, there's there's sort of the thinking about learning that you learn through uncomfort the most. So the the closer you can safely push people into being uncomfortable, the the faster they'll sort of learn. I think everything is sort of theoretical until you've gotten to the point where you're like, oh, I have a deadline and have to build this project, and I'm gonna present in front of my entire class in 2 days.

Oh my god. This is the end of the world if I do this wrong. But, yeah, I think suffering's important. Even if I sound a little little mean when I say it, I think that suffering and struggle is where you get the best learning and where it sticks. It's funny.

There's a there's a man named Evan Miller, which we should definitely have on this this, this podcast at some point. He is behind the Erlang Project Chicago boss. And so Adolpho, we were doing this mental group that you're a part of. You know, long before you and I met, we were doing it in Chattanooga, and everyone would show up. Right?

Pre pandemic. But Evan would look up my shoulder when I was teaching somebody, and someone would start to go off in the wrong direction. And I'd kind of give them a general nudge, you know, kinda nudge their rudder every now and then. And, you know, I turn around, and Evan will be shaking his head. Right?

And then, you know, so I would try to explain harder, and he would be shaking his head. And then so at this this one time, I turned around, I said, what? Evan? What? You know, and everybody just turned around.

I and I'm I'm, you know, usually pretty unflappable. Right? But I was not that day, and he said, Bruce, it's all about the struggle. And so, you know, that's that's probably my great weakness in a classroom setting is building in enough struggle. Right?

So I I teach a lot of technique. So what I should do is allow the mistakes to happen in the right context and be kind of a guide be a guardrail so that when the struggles happen, you can leave opportunity to bring people back on course and then and then cast them into the wind again. But, yeah, you saw that firsthand. Yes. Yes.

And it's important because it's related to that model that you use, the model. Of course, if someone is a beginner, you he or she needs more direct instruction. But if if someone that has a little bit more of experience, then you are okay. Right. Go to the Internet and try to find what's the solution.

Because one thing that I also think that's important nowadays that wasn't important when that important when when I started to learn programming. Because when I start learning programming a long time ago, I started with basic. There was no Internet. So all all I had was a book in the computer. But now we have lots of place where you can go.

If you want to learn Elixir, you can go to Elixir School, and there is also the Elixir Forum, Elixir on Slack, Elixir on Discord. And I have just created the Elixir World on on Telegram. And also Twitter, there's a lot of people tweeting about Elixir. And so, I think nowadays, if you want to learn a language, you have also to learn how to navigate all these opportunities to learn from others in the community. I I wanted to plus 1 elixir world on Telegram.

I'm a big fan of Telegram, and I I joined it once I realized it existed and, immediately scrolled up and saw interesting conversation. Thanks. I just started, my my idea with ElectroWorld was exactly that I'm part of the Elixir Brazil Telegram, and there's there are many interesting conversations there in Portuguese, of course, because it's our language, but there was no it's in the there's no group like that in English. So I'm going to create one for for English speaking. Of course, not English speaking.

It's people from all over the world. I once I listed, there are people from many countries, and so don't expect perfect English there, but people that can understand and write basic English. That's so important too, Adolfo, that that we don't all look alike or sound alike. I think that one of the things you get is, different problem solving perspectives. And when when we have people who have come from different backgrounds and different skills and and, you you get different language approaches.

And you you have Justin's, you know, make everything. You know, I will steamroll any obstacle. You know, I'll, you know, rewrite the the Linux kernel for nerves, and then you have Bruce Williams and and his approach and his kind of zen like approach to making things beautiful and making them flow and making them exactly in the right abstractions, and then you get absent. But that's what makes community special, and I'm really glad that you don't see perfect English there. Right?

That you see that you see such a variety, not just words, but of thought structures and paradigms and things like that. Yeah. And I I think that's one of our responsibilities as as teachers and as educators, I think, is not just to give people materials that they can learn how to do a thing, but it's how to create conditions around them in which they can learn. And part of that are are the conditions of this community, of the Elixir community, of the Erlang community, of the functional programming community. And that's why I think in particular, you know, a lot of the work that you've done at Elko to create these resources and these channels and these spaces where people can come together and learn together, I think, is really incredible.

And I would love to hear from you what more do you wanna see in the Elixir community. Like, what resource do you wish existed that doesn't? Maybe it's that Elixir for absolute beginners book. You know, what kind of involvement or participation do you wanna see from people in the group that you've created or or in other groups? You know, what can we all be doing to keep this community growing so that we can keep educating and keep bringing in newcomers?

Wow. That's a a good question. Maybe I really like exorcism, and that's a a resource that I think it's it's not there's no need to create another exorcism, but maybe people in the community that want to help others, they should go there and become a mentor, and the others that want to learn should go there and become mentees and try to learn using research like that. And, I mean, let me just say what I see in the Brazilian community. There's a lot, a lot.

It's a lot, though. There's some coding with Elixir, 1 on Twitch, some on YouTube. I would like to see this more in English. Maybe I don't see it because it has not arrived to me, but the it's there. So I if you know someone doing that, please tweet me, and then I I will try to include that.

And I have a a small GitHub project where I'm compiling. Maybe after some time, I I will give this information to do to the Erlang Ecosystem Foundation because that's one of the things that let me introduce this subject. We we I'm part of the education working group of the Erlang Acquisition Foundation, and we we are doing lots of things to try to make not not on ELIXIR, but also Erlang and the the other being language, make them more popular to allow more people that want to learn the this language to learn them. So for instance, we we have had, ElixirConf U virtual few months ago, and there is a professor and, well, my my students want to take part in the training. So the foundation, supported the the students.

And we have a lot of initiatives going on. We have before the pandemic, we we've had some meetings where we we discussed it. For instance, one of the initiatives initiatives was to try to find professors in many universities that are teaching either Erlang or Elixir or other language and to try to connect these professionals that use Elixir in production with these professors that teach Elixir or Erlang so that these professionals can give talks to the students. And I believe there is also a need, as I said, for a good introductory book, but I know that's that's because I particularly love books. Maybe most of the people nowadays don't love book as much as I do, so there's maybe no economic reason for, an introductory book, but I love books.

I would like to see a a a real introductory book on Elixir, and I think that's it. Elixir should be a good language to break into functional programming. And I say that because I think that Elixir can stand on its own when you just get into the core. You just the the kind of the pure functions, the exorcism size and shaped projects. And you can do that without absorbing a whole lot of functional algebra in in terms of the, of the type structures, but you still have the full power of functional programming that you can bring to bear.

So it should be and and the other thing that I think is critical is that with the pipe, you have this idea of glue between concepts. And that's the hard thing about teaching someone that's new or teaching someone from an auditorium system, where we say, okay. Objects, don't do that. Inheritance, don't do that. So there's a lot of things that we say not to do.

But if unless you replace that glue, it's difficult to to get traction with the new programmer. But if you have this framework of, hey. There's a module that's that collects things, and then that module surrounds this central type, and then you can kind of chain things together with simple transformations. I think it it should be. I think you're definitely onto something that learning programming 101 in Elixir is definitely something that you could do.

I would like to to say something else about this learning the the community. One thing that I noticed that it's really attracted me to the language in the larger communities, the the the BIM community because it's not only Elixir, but also Alang incident. It's the the podcasts. This podcast already has more than 100 episodes, and there are other podcasts. And there is it's great podcast that it seems has already finished, but it it has a a lot of great interviews there that you can if you want to listen to interviews with Joe Armstrong from the past that it's their own Alexa fountain.

So I think that the this community of course, I I before Elixir, I was following the closure community, which seems to be smaller. It has less resources for beginners. Or maybe today, it has the same, but at the time, it had more less resources for beginners. So the the idea of of podcast I love podcast because I I can learn unexpected things. It's that that's word that people use, it's serendipity.

Right? So you're not expecting to learn something. And, I mean, of course, the the learning that happens in a podcast is a much it's at a much higher level than the learning that you learn when you for instance, if you go to series in your channel, Bruce, and they they grow up to your channel. Of course, you're you're going to learn some more technical things, tech technical details about how to write an a live view app, but it's it's also you can learn a lot of things and listening to people from the community, and that's a great resource too. And I'm planning to do some research about this, the podcast, and how they are perceived by the community.

I I hope that when this episode goes on there, I will have a a survey that to survey the community about how because I know there are some people that don't like podcasts. They won't listen to podcasts. But I know also that there is many people that listen to podcasts. But what do they get from the podcast? What what do they expect from the podcasts?

What do they value more a person because he or she was a a guest on a podcast or because what he or she said on a podcast, that's there are some questions that I would like to see answered. Yes. I used to listen to I've forgotten the name of it now, but the only Erlang podcast that existed back in the day with Brian Hunter and, Zach. But, I would I would always get value from it, from things like Bruce saying, hey, you should really focus on the transformations. And, you know, it's a very pithy statement in exactly the right meaning of the word.

Like, learn hearing someone smart say that and go, I wonder how I actually put that into practice, and then figuring it out, you know, a month later. That's kind of the value I always got from programming podcasts. I I believe the name of the podcast was Mostly Earling. It was Mostly Earling. Yeah.

I listened to that while I was painting a house. I definitely agree with you and also that sometimes you're listening to podcasts and you don't you don't really know what to expect. You don't know what you're going to learn. And that's what I appreciate about it because I think, you know, you pick up a book for a reason. Right?

I want to learn how to do x and elixir. You know, you probably read a blog post for a reason as well. You were literally googling how to do this thing, and, like, a blog post came up and you read it. But with podcasts, it's just kind of like an open space to start encountering things that you didn't expect, hear people talk about topics that weren't necessarily on your mind. It's kind of, like, why I like I don't know how you guys are gonna feel about this comparison.

But what I like about cable television is that I only watch Law and Order on TV. They pick out the Law and Order episode for you all day long from, like, 8 AM to 8 PM. Like, you didn't choose the Law and Order episode. You're just watching whatever they put in front of your face. And that's fun.

You know, that kind of is that's what I'm looking for when I'm listening to podcasts. Like, I'm interested in the broad topic. You know, I'm interested in who these people are, and I just wanna hear what they have to say, and I don't know where it's gonna take me. So you're not looking for more murder in your podcast. You're just I I think I get it.

I get it. Well, I'm also listening. That'll be one of my picks, actually. It's pretty good true crime podcast that I was introduced to recently. So what you're saying is we'll get back to the murder part.

Yeah. We'll talk about murder later. Yeah. I'm very curious to hear what comes out of that survey at all because I do feel that the different podcasts that are available for the Elixir community, and we have a disproportionate amount compared to our community size, I think. So we have a lot of them, and I find I find all of them interesting.

And I feel like they we actually do manage to cover different focus points and have wildly different styles. The outlaws are definitely a style onto their own, and I feel like there's a lot of difference between the wizards and us even though we are both, to some extent, guest driven. And, yeah, the the whole meta conversation of what what podcasts are good for and yeah. Very interested. I hope to see your survey soon.

Well, speaking of picks, this might be as good a time as any to, wrap up our conversation and move into picks. So we'll just kinda round robin. And if anybody has any links or recommendations to share, this is the time for it. Start with Lars. What do you have for us?

Well, I have the newly launched Beambloggers Webring, and I'll call out Sophie. Well, Alex isn't here, so I can't call him out, that you're supposed to PR me your blogs so they can be in the WebRamp. But, yeah, this is a fun little project that I wanted to put together to just spread the love. Traffic is rotating around the Beam Bloggers. There's more design to come.

Maybe it will even be pretty by the time this episode launches. So, yeah, check it out. It's beambloggers.com, or you can look around for my GitHub, but beambloggers.com. Very cool. I'm very excited to PR that.

It includes my blog there. It'll inspire me to write more. Thank you for that. How about you, Bruce? Yeah.

I've got a couple. Of course, the the Gracia course is going on now, the LiveVue course. And that's been a lot of fun. One of the things that I get to do is is look at techniques that are kind of off the beaten path. And one of the things I really like is schema less chain sets.

So I've kind of been playing with where those live. Right? It's an Ecto thing, but it's something that likes to live in the view. So I'm working on a video this afternoon that'll go out with the 4th chapter that that'll come out, probably about the same time as this episode. So I'll post that.

I'm also excited to be working on a new project. But just to give you a teaser, here's a keynote. It was a keynote on failure by a guy named Brian Trautlein. And he's really just a fabulous speaker and an excellent person to you know, that kind of is the anti Bruce. Right?

So I'm optimist, happy path, and Brian is, how many ways can things fail? And so we're kind of kicking around the idea of putting together a video series of how things fail, why they fail. Less of a programmer series and and more of a kind of an exploration of failure. So but this is a teaser for that project. There's a lot of good stuff there.

I'm looking forward to checking some of that out. Let's see who's up next. Steven, any picks for us? Yeah. I I guess a general pick.

I'll give what I'm using, but find something that does this. I found an e like, a PDF reader that does text to speech. I don't know why where this has been my entire life, but, like, I now walk the dog, and I'm listening. I got Bruce in my ear. Well, I have a robot in my ear saying Bruce's words.

I've got, you know, everything that I've been meaning to read and then kind of get around to just constantly going in my ears now. I have Android, so I'm using ereader Prestigio. They have a couple different services for reading. But But if when they ask you to select, if you scroll down, you can pick the local Android one so you can get the generic Android voice doing text to speech, which is good enough. But if you haven't done this, do this.

You need this in your life. Being able to just throw a technical book, reading growing object oriented soft gift card guided by tests in one ear. It's it's really, really cool. Do that. Good call.

Yeah. It's a good idea. Josh, any picks? I have 2 picks. The first is the GitHub Articode Vault's Tech Tree, which I've linked to, and it's just, you mentioned curation in the context of cable television.

While I basically hate cable television, I do like the concept of curation. And this is, they've listed just a ridiculous number of books that, hey, if you wanna know about how to do stuff on computers, whether it be networking or software development or whatever, Here's a list of just really solid book choices. And then also I saw a quote, and I don't know who to attribute it to. My friend Michael Alvis sent it to me, but it wasn't his. Said running a successful open source project is just goodwill hunting in reverse, where you start out as a respected genius and end up being a janitor who gets into fights.

And I just wanted to share that. That definitely resonates. Yeah. Interesting. Alright.

I'll run down some of mine, and then we'll hand it off to our guests. I've got a few this time around. So we talked a little bit about being a generalist and how as engineers, as programmers, it it, you know, is that's the way to go, I think a lot of us feel. So there's a great book by David Epstein called, let's see, Range, How Generalists Triumph in a Specialized World. Really interesting book on this topic sort of more broadly speaking.

And, I was actually introduced to this book by my partner who is an artist and who wrote what I thought was a very interesting post on the topic of being a generalist from the point of view of, like, an artist or a creative worker. So I'm gonna share that link as well. Not quite shameless self promotion. Shame shameless someone else promotion. And then, we've got a recent blog post from someone you may have heard of, Steven Nunez, on the topic of managing RabbitMQ connections with the library called X Rabbit Pool.

And I just thought it was a really, like, very clear, very straightforward look at, you know, why we need to manage connections in this way, what this tool does for us. And what I really liked about it is there were all the pictures of I forget what it's called. Like, you know the Erlang GUI, and it shows you the processes? What's that called, Steven? Observer.

Erlang observer. Yeah. Showing you, like, the various, processes that are being managed by your connection pool, and it's really fun to see, like, okay. Well, if I do this and then we go back to the Erlang observer, and we see the tree kind of grow and shrink depending on what you're doing. And, I just thought you laid it out super well, and, of course, you hit upon this library and its tooling as part of the work we're doing to prepare for our very exciting, thrilling even conference at this year's Elixir comp on the topic of working with Elixir and RabbitMQ and using it to bring in a greenfield Elixir app into your, legacy technical ecosystem.

So if you haven't signed up yet, you know, you might wanna get on that. And that's it for me. Let's see if Adolfo has any picks for us. Yes. I I have maybe too much too many picks, but I I I have already sent you the the links, the the Alexei World Telegram group, which a Telegram group for any people related to any Bing language.

What I like about Telegram groups is that I don't have the the fear of missing out because when you go to when there is a Telegram group which is reasonably large, then you go there, and there is 200 new messages, and you can't keep up. You you forget that you you you'll not be able to keep up with all the message. So whenever you have time, you go there. You'll you see what's happening, and then you you go back to what you're doing. I have already sent out other links related to Telegram, but it's okay.

I think this is important to say that we have the education working group of the Erlang Ecosystem Foundation. We have a list of issues at our GitHub page, so I think it's important if people want to help the our group. There is there are many issues issues open. And Elixir Brazil 2,020 Elixir Brazil 2020. Is is it going to happen?

It it would happen in May, and Bruce would would be here in Sao Paulo, but it seems it's going to happen physically. We hope only in 2021, but it's probably going to happen online. So that's what I I would like to say. People want to learn elixir in Portuguese, the the language of the creator of elixir. It will be possible to learn it online.

And my last pick is going to be a movie because I really like the I really enjoyed the Elixir fountain podcast. The the last part, it was, I think, it was fire behind the code because I could get to know better the people that were part of the community and their for instance, I learned that Joe Armstrong loved to to play the piano. I can't play the piano, but I love movies, and I love some Brazilian movies. The last time I was a guest here, I suggested people watch the the movie Aquarius. Now I have another suggestion from the same director.

It's Bacoral. It's okay. Some people will not like this movie because it's kind of violent, but it has a a very deep message about Brazil today and about actually about the world today. So it's it's a a movie that I really like. It's called Bacorao.

This actually looks really cool. I just Googled it. This is my kind of movie. The locals are not exactly what they appear to be and hide dangerous secrets. Yes.

Sign me up. Alright. Thank you so much for joining us today at Ulta. This was a great conversation, and that's it for today's episode of Alyssa Mix.
Album Art
Elixir Education with Adolfo Neto - EMx 266
0:00
46:18
Playback Speed: