Powered by RedCircle

Choosing Elixir as your Language - EMx 226

  • Guests : Bruce Tate
  • Date : Aug 16, 2023
  • Time : 1 Hours, 1 Minutes
Bruce Tate is the founder of grox.io. He begins by introducing himself and talking about the services his company provides. They also discuss choosing Elixir as your first language for beginners, its pros and cons, and each of the panel's perspectives regarding it. Moreover, they dive into all things Elixir and many more!



The book is on sale this week at the pragprog.com - Code: CODING2023 (There are other books on sale as well.)




Allen (00:00.927)
Hello, everybody. Welcome to the episode of Elixir Mix. I'm your host, Alan Weima. And again, we have some other hosts over here. We have Adi Ayingar and Sasha Wolf. And we have somebody who came over to the dark side, another fellow podcaster, Bruce Tate. Bruce, welcome.
Adi Iyengar (00:08.735)
Sascha Wolf (00:11.564)
Bruce (00:19.382)
Hi, everyone. It's fun to be on this side of the conversation.
Allen (00:23.527)
This side. Was there another side?
Bruce (00:26.486)
Yeah, I was at Elixir Mix way back in the day. I was one of the hosts.
Allen (00:30.063)
Oh, so you're on the other side of the other side of the table, right?
So, yeah. Where are you actually at the moment? Because I think I've seen you before, you were traveling all over the place, right?
Bruce (00:36.246)
the other side of the table
Bruce (00:45.566)
Yes, so right now I'm in Chattanooga, Tennessee. That's so I lived for a number of years in Austin, Texas, and then spent most of my professional career there, and in 2016 moved to Chattanooga, and been there ever since. Well, and last year we took a trip, but we could talk about that a little later.
Allen (01:03.348)
What's wrong with now? I think we're good now, right?
Bruce (01:06.302)
Okay, so we, so my wife and I were kind of feeling COVID. I'm a high risk person. You could probably hear the congestion in my chest, right? So I have asthma, I have heart disease, and a whole lot of other bad stuff. And so I was really convinced that COVID would kill me. And Maggie was definitely convinced that COVID would kill me. And so we were doing quarantine in a house and we were both going through
Allen (01:18.145)
Bruce (01:36.234)
some pretty heavy times, I would say. And I walked down the stairs and I asked Maggie what she was reading. And she said, I'm reading this book called From What Is to What If. And it's a city planning book, but it's also at its core a book about re-imagining, a book about looking at life from a different direction, from instead of why can't something happen, it's what if it did? What would all the other things?
what other things would have to happen to make that so. So she was reading this, and I was too depressed to really care, but two weeks later, I walked down the stairs, and she was reading another book called The Great Loop Experience. And I about fell down the rest of the stairs, right? Because this is a trip that's been, that we've kind of talked about like, oh, someday maybe we'll climb Mount Everest knowing that it's never gonna happen, right? Like.
Wouldn't it be cool if? But when the planner in the marriage gets an idea and starts planning, then things get real really quickly and it did for us. The great loop is a loop around the Eastern United States. And so we live on a river called the Tennessee. We lapped the Eastern United States. So what that looks like is we went down the Tennessee River and then we took a left it between Mississippi and Alabama.
and went all the way out to the Gulf of Mexico, all the way around Florida, all the way up the Atlantic seaboard, into Chesapeake Bay. We spent a little bit of time with Frank Hunlith and his daughter there. And then we went all the way up to Delaware, and we cut across this tiny little canal just south of New York called the C&D Canal. And so ran around the Jersey shore.
into New York City at the Hudson River across Canada, and then down the rivers, the Illinois, Mississippi, and Tennessee. And I think the Ohio was in there also. So yeah, we spent nine months traveling by boat, pretty much working from there. So we traded our 2,000 square foot quarantine to about a 200 square foot quarantine.
Bruce (04:01.686)
But we had a bigger back port.
Allen (04:05.907)
It's quite a trip. I mean, how does it actually work? Because you obviously cannot just keep doing that. You have to have a lot of supplies. You have to stop. I'm sure you get to maybe a little bit tired of always rocking on the boat, right? You have to actually get off and touch land once in a while. I mean, how does that actually work in like a typical day?
Bruce (04:22.75)
Yeah, so the trip is built in two primary ways. One is that if you take the trip in about a year, you're essentially going to travel about one day in three. And you could travel longer distances. You could also decide to travel shorter distances and spend fewer days in port. But.
Yeah, most of the time you're seeing the country, you're buying provisions, you're doing maintenance, you know, because boats need maintenance. And so it's really built to explore places. And so, and we did. And the other thing that's interesting is that the trip is built to summer in the North, to winter in the South.
and then to use the other seasons to traverse between the two. So yeah, that's kind of the general shape of it.
Allen (05:29.087)
Okay, yeah, that sounds like a lot of fun. I don't know. I don't know if everybody would want to do that. I mean, I think the first question is the developers. Did you actually have decent internet connection when you were traveling around?
Bruce (05:40.266)
Yeah, that's funny. The developers and the programmers asked me that question. Nobody ever asked that question. Everybody has other questions, right? But the developers, what's your internet like? And it turns out we have this thing called a PEP wave, which you take a modem, it has a couple of slots in it. Well, actually, it has four slots. We use two of them. And you can plug in SIM cards for mobile access, right? And so.
Sascha Wolf (05:47.817)
Hahaha! It's probably...
Allen (05:52.42)
Allen (06:00.704)
Allen (06:07.312)
Bruce (06:08.266)
We had a Verizon card and an AT&T card because those were the best two providers. And this system called a PEPWave would actually stitch together the best possible signal between the two. So if I had one of the two, then I was pretty good. We had planned to actually teach the corporate Groxio classes to kind of get a bed and breakfast or something like that. And that never happened. We always had good enough internet import.
to make a stable, reliable Zoom call. Yeah, so we taught four or five professional courses, professional trainings on the loop.
Allen (06:53.367)
And this is a good lead into the next topic on my mind, which is, I mean, you're running Graxio, right? Now you wouldn't tell us what it means until now, so maybe let's digest that. What is Graxio exactly?
Bruce (07:01.835)
Bruce (07:09.126)
Yeah, so if you Google the word grok, G-R-O-K, and grok-g-o is G-R-O-X, right? But if you Google the word grok, you see that it means to intuitively understand. And if you tack on the I-O and hold your head sideways a little bit, you say that looks a lot like ones and zeros, right? So groks, ones, and zeros means to understand programming. And so the site is built.
to kind of satisfy another life goal of mine, one was to do the loop. But I am really in my element when I'm teaching, when I'm helping somebody make a breakthrough in their career, when I'm really improving their station. So that's what I really wanna do. I think that through my publishing career and through my early involvement in Elixir, I'm pretty happy with my technical legacy. Now I really wanna work on my social one.
And this is a great way to do that. So one of the things that we do at Groxio is we publish content, and we give a lot of that away to kind of advance the community. But we also do personal and professional trainings. The personal trainings is you basically join a group of somewhere between three and eight people. So they're very small courses. They're on Zoom. They're very short. But they're intensive so that they
so that we can bind together pretty tightly. And one of the things that I like to do is invite underrepresented programmers into that community. So in this way, we kind of knock off two things off my checklist that are really important to me. The first is we can increase the diversity in the Elixir community. But second,
We can help people take charge of their careers by plugging them into an environment where they're bonding tightly to people around them. So we kind of solve both those problems at once. How do you introduce somebody to the concepts, and how do you introduce people to the community? How do you provide access? And so that's what we do.
Allen (09:31.743)
What I find interesting is that obviously a lot of your students are joining our beginners to programming, right? Or at least a good amount. Yeah.
Bruce (09:38.978)
Yeah, a good amount. So I would probably say probably a third are brand new to programming. And about 2 thirds are probably from early to late intermediate, a few advanced people. And the advanced people, I mean, we're kind of looking for people who don't want to break through the things that you don't find in the documentation, right? Like, index comes along. What does?
What does the math model look like for NX? How do you do math in a functional language in a way that's fast enough for something like machine learning? Or what does the OTP abstraction look like? It's pretty easy to see what the functions are, what the library functions are in something like OTP. What we don't spend a lot of time talking about with Live View and OTP and Scenic and frameworks like that.
is the behavior that wraps around these concepts. And so by providing a class situation or a video situation, you can do things like role-playing that says, hey, this is what happens throughout the whole lifecycle of an OTP application. So we spend a lot of time doing those kinds of things. And intermediate developers really appreciate that.
Allen (11:01.887)
Well, one of the questions people often have is, as a beginner, you know, what's a good first language? And usually you hear the typical Python, JavaScript, maybe even TypeScript. Some people say you should go to C or C++, right? I think all those are somewhat valid, but Elixir to me is so different than other languages that I've ever used that I find it hard even for
intermediate to advanced developers to even get started. Now, do you still feel that it's a great language for a beginner to start with? Because it is quite different and not many people around them would probably actually even know it.
Bruce (11:28.44)
Bruce (11:35.67)
Yeah, so there's a lot of friction, right? And so you look at a couple of things, right? And it's almost like you have to look at the friction alongside the things that you get out of it. And if you ask people why they code elixir, very few of those people would say because it was so doggone easy to learn, right? Most people are going to say because.
because it made the hard problems easy, because I could build a self-healing system without all of the infrastructure, because when I coded my first application, it stayed up for several months before we had a major production issue. Those are the reasons people adopt Elixir. But that being said, there are a lot of things that are really nice for new Elixir developers of certain types, right?
Like one of them is that it's a functional language. So when a value goes in, a value comes out. And the same inputs are basically, when you expect them to, are going to give you the same outputs. And that's so nice, right? Especially in today's world, when you're thinking about things like concurrency and mutability, to have something predictable, like math is predictable is a.
is a pretty powerful thing. So I think that there is that give and take. And then also, I think one thing that wasn't true, that's becoming true with Elixir, is that the tooling is so good. Like I record, I'm working on the next generation of the Elixir course for Groxia right now. And I think that we're going from like 12 videos and something that's book focused to something like 50 videos and something that is a little bit less focused on books. But we're using a lot of light books in that.
And the idea of a live book is so powerful because it combines all of these little ecosystems in Elixir and kind of builds off one thing builds off another, right? So for example, you have this excellent documentation that's built into Elixir itself and most of the Elixir libraries. Because Jose said, that's important to me. And so I'm going to build the tools, and I'm going to.
Bruce (13:59.15)
lead by example, I'm going to document things as I go. And then it became important for people to document as they went, right? And then we included those tools into IEX with this module called IEX helpers. And so you could type H and then a module name or H and a function name and even an arity, and IEX knows what you mean. But when I'm using Lightbook...
I have this little setup block, and I can say, import IEX helpers. And then suddenly I have access to all the documentation right at my fingertips. And so those tools are starting to come at such a rapid rate that Elixir is beginning to become one of those languages that, yeah, it has a lot of complexity, but it also has a lot of tooling to help you understand that complexity, especially if you're willing to.
you know, actually do things that you do elsewhere in your life, hire professionals to help you kind of get over the hump of the core abstractions and the core ideas.
Allen (15:05.063)
Yes, it's going to go on a topic of tooling. Sorry, because I was looking at my phone because I was looking for a message. I asked somebody I knew recently who's been doing elixir for about a year or so. And I asked him, you know, how is it going? And I thought it was very interesting. This is the first time he ever said is he actually he came back with kind of a little bit of a complaint. He said that tooling is not quite there, which is the first time I heard somebody ever say that but he specifically brought up about the language server. And
Adi Iyengar (15:05.457)
Allen (15:35.62)
that the types coming in pretty soon. So that was his kind of reply back about how it's going with Elixir. Do you have any thoughts on this?
Bruce (15:43.226)
Yes, so this is the tension between a dynamic language and a static language, right? I've never been in a dynamic language community where everybody said, hey, the IDEs are great, right? Because you don't have all that type of information underneath. And in fact, you have the opposite, where I could type 97 comma 98 comma 99. I cram it in binary. It looks like a string, ABC. I cram it into a list. And it looks like a.
Chartlist, ABC, and nobody knows why, because there's not enough type information built into this construct, right? But on the other side of dynamic languages like Ruby and Elixir, there's a whole lot less friction when it's time to build things like functions. And when, I mean, it's, there's a cost to being dynamic.
right, that the debugger can't catch as many of the bugs for me. But there's also a tremendous benefit in that it reduces friction for beginners pretty tremendously.
Allen (16:55.611)
Yeah, it's interesting you're talking about that because I've been trying to get a Dart developer to check out Elixir. And again, you know, it's it is a type language, right? So the first thing he says is no types. I don't like that. And also, I mean, it is nice having the this the type specs, but then you have to make people fill that in. And then if you milk them fill it in, which get us a bunch of, you know, okay, couples with just a map, not telling you what keys are going to be in there, but just map.
or list, even an empty list, not telling you what's inside the list, all this kind of stuff.
Sascha Wolf (17:30.109)
And then you also get dialyzer errors, which honestly, like you feel, I feel like I need to be an oracle, like, like a medium to do to decipher what I got pretty good at this point at like reading dialyzer errors and understanding what dialyzer actually wants to tell me. But it's not intuitive, not always.
Allen (17:35.322)
Bruce (17:47.882)
Right, and this is the idea of taking a dynamic language that's really cool and say, oh, man, I sure wish it was a type one. So I'll bolt on this thing, right? And so I think it's going to be interesting to see what comes out of the typing research. And first, if it's possible, then I guess it probably is. And second is.
Sascha Wolf (17:53.707)
Bruce (18:16.35)
What is the ergonomic impact going to be on a language that was built from the ground up? Not worrying about those kinds of things. So we'll see we'll see what whatever it is Whatever the answer is. I mean, I'm gonna enjoy the ride
Allen (18:31.899)
It was the first time we were going from research to development. I think that was the term he used. Jose was development, right?
Bruce (18:39.67)
Yeah, yeah, so I think it's a... I never bet against him though.
Sascha Wolf (18:46.997)
Allen (18:50.4)
Sorry, Adi, you were going to say something a while back. Do you still remember your thought?
Adi Iyengar (18:53.147)
Oh, yeah, that's fine. I think I'm just going to expand on what Bruce is saying about I think the tooling being getting more mature. And if you look at the languages that are considered easy for entry level or beginners, it's very rarely you'll find a language that just came out two years ago and now suddenly it's adopted as a beginner-friendly language. Elixir for a language that came out
Sascha Wolf (19:16.858)
Adi Iyengar (19:21.275)
end of 2014 was the 1.0. Already, the tooling is so amazing. If you look at any other dynamically typed language, there's no comparison. It has a live book dializer. I was looking at the language server, and I've been looking at Python a little bit. Elixir language server is actually better functioning overall than the Python language server, which actually, there's so many, and there's no consensus. That's probably one reason why.
Yeah, I think it's just adoption is the last part now that all the tooling is left. Once more companies start adopting Elixir and it kind of starts becoming more normalized, I really think we'll see it more in academic places. My university actually just introduced that as an Elixir as an elective last year, which I was really excited about. So yeah, hoping it starts becoming more of like a...
it more of a norm in like the first or one of the earlier languages.
Bruce (20:24.554)
Yeah, sometimes I think people get a little bit too stuck on adoption. I think that Elixir with the community size that we have right now, it can be fine. I think that we will see adoption. And the reason is that there are so many interesting things happening with, with critical mass and quality on so many different fronts, right? So if you're doing, if you really have to turn through a lot of data and build data, effective data pipelines and things like that, you know, you have the whole.
at the Broadway stack and everything that goes with it. If you have to do machine learning even, even if you didn't build those models yourself, that stack is just, they solved some problems, not the intuitive way, not the easy way, but the way that kind of allowed them to layer onto core abstractions and ideas. And they introduced this new thing called a Dev-in that-
makes it so kind of painless and seamless. And so we're starting to pick up pace there. And then if you're not using like the NX and the Bumblebee machine languages or machine learning, machine language, machine learning is still on the table because you have this thing called Bumblebee, which allows you to consume models and other language and other languages. And so all of these things are going to increase the communities. But.
It's not critical that they do. With what we have, we have a critical mass. And this isn't the days of the Java language where everything had to be compatible. It was like one true language in the darkness binds them. It's not like that kind of a contract. It's like, since we're building on top of open standards and open ideas, and we're used to building systems that can cut across these things, and we have some.
We have some common infrastructure. And even the JavaScript that sits on top is the common infrastructure. It's a different world. And I think that we're going to be OK with the adoption levels that we have.
Sascha Wolf (22:33.225)
Yeah, I just want to do plus one on what you just said, Bruce, because the one thing I keep being impressed about in the development of Elixir is how things that were built sometimes a decade ago now get used again and to layer other things on top, because I still remember when I started with Elixir that, for example, we had daytime and naive daytime, we still have daytime and naive daytime and daytime by default also always only has UTC times, right?
And I think it was a few versions ago that they added the whole ability to have different calendars plugged in. Right. Like just to, for example, use TZ data to plug in a different calendar. And that is, I feel that there's, there goes so much thought into coming up with these layers to make them extensible down the road. I mean, just take a look at how.
the whole macro system is working with. Like most of the language constructs we just take as a given with, or if, or all of those things are just macros and anybody could write those. And still all of that kind of comes together to form a coherent whole where I've seen, I mean, I've seen in other languages, I think that...
The worst example would probably be with Python 2 and Python 3, right? Like where they had that breaking change and then people kept using Python 2 and Python 3 and it was like a little bit hacks on top of hacks. And in Elixir, you don't see that often. I mean, yeah, we have a few rough edges, especially when it comes to compatibility with Erling, Charlest, something you just mentioned earlier, right? That can kind of be surprising, especially to newcomers. But all in all, I feel there, especially what, what
Jose has been doing this so much thought about how do all of these pieces compose together without having the level of friction you sometimes see in other technology stacks. And that is, that's just a genius, honestly. That's just genius.
Allen (24:41.787)
I think you're muted right now.
Bruce (24:44.314)
Oh, sorry. So I used to say that Jose was BB King, right? And the idea is that great guitar players are great, not because of the notes that they play, those that they can cram in, right? But because of the air they leave, the notes they don't play, right? And you could have some languages like Perl, where everything is in it, or like Scala. Everything is in the language. And pretty soon, the language suffocates, right?
But now I think there's definitely a little Mozart going on here too, right? It's like all the layering and all the concepts that are cut the right way so that five, 10 years down the road, they actually work together. I mean, who would have thought that you could take Elixir, rip the number system out, rip the core storage elements out, replace them with tensors and
of data types that have nothing to do with the numeric types in Elixir and have something that's not only coherent, but that's actually super, super high performance because of a couple of core features, right? Like the protocols, the macros with a DEF, with a DEFN instead of DEF. And the foresight to write this in such a way that it's not.
This is deaf, but this is deaf in machine learning. And we're going to special case it in this way. He didn't do Python 2, right? He did another layer. That's explicitly another layer, but that works with all the other ones. And I don't know how he does it. Yeah, I quit betting against him many years ago.
Sascha Wolf (26:18.366)
Yeah, yeah.
Sascha Wolf (26:22.241)
Sascha Wolf (26:34.538)
I'm going to go.
Allen (26:37.959)
Yeah, but now I'm starting to think about, I think it was Dave Thomas quite a few years ago, came up with some interesting ideas about how we can even improve more upon Elixir by, I mean, everybody has that project, you know, you do your mix new and you have a bunch of files, which you never touch, you know, your main module of your application. And did you see this talk, Bruce?
Bruce (27:02.478)
Was it the components one or was it something else?
Allen (27:04.387)
I think it was components one. Yeah, it was quite interesting. I mean, there, I thought that was kind of interesting about how, yeah, maybe, maybe we can do some more interesting kind of things. But I mean, when you're teaching the, you know, people elixir, it's like, okay, here's this deaf module. You kind of talk about your app, and then you move on. It's like, well, what else goes there? And what's the point of that? And why did it just create this thing? It's kind of empty. People never ask this kind of question.
Bruce (27:28.062)
Yeah, so I love the question. I need to be a little bit careful for myself, because I get excited when you talk about reducing complexity. And so too many times, I've seen myself take shortcuts on exactly the type of layering that we're talking about. Like the good functional systems, there was a, gosh, I can't remember the paper. But the paper.
said something about there being a functional core and an imperative shell, and then somebody in between that looked like a protocol, and that this was the way to build beautiful functional programs. And that's what you saw in the Haskell world. And right now, there's a bit of a movement in the Elixir community to collapse that somewhat. And I kind of rebel against that personally, not because I
I don't understand what the models that are consolidating are doing, but because I don't trust myself with them. I don't trust myself to make the right separations at the right times. So probably what I would say is that I lean to using to producing more layers more often. But I try to.
I try to only create layers that give me something in the layering concept. So for that reason, I probably wouldn't combine like what I would call, in designing Elixir Systems, the OTP. I call the OTP layer, the process machinery, and the uncertainty, all of that's the boundary. And the module itself, that's like an API layer and the functional core. I try not to collapse those things together. I think...
you at least need to bring yourself to a point where you can access those concepts, those layers conceptually. But again, Dave Thomas is way smarter than I will ever be. And so he's probably got some.
Allen (29:41.819)
Yeah, to me, it's just like there definitely is some files that get created. And I'm like, I never touched on them since once, as soon as the first data project ever gets created, even for like kind of filling out some documentation or whatever, they just kind of sit there. And when he gave that talk, I was like, yeah, what the heck is this file? And why is it here? Uh, like one of the first frameworks ever picked up was Ruby on rails. And, uh, I talked to somebody about it and they called it, yeah, it just basically craps on your hard drive is what his words were.
because all these files go everywhere and I felt a little bit like that. It wasn't as bad, but a little bit like that with some of the files. But I mean definitely the mix exs file is so much nicer to work with and I think what you usually have to do is work with like, I don't know, like it was a list of tuples or something and to configure stuff from, oh my god, I'd go nuts with that. I don't know how these guys, these Erlang developers can do it. I'm so happy we have what we have now, but...
I mean, there's a lot of nice stuff that was brought in as we've been saying. I still feel like there's still more things that we can do, but I do remember hearing a couple of people saying like, okay, yeah, we can do some of the stuff, but we don't want to stray so far away from Erlang because that could rock the boat. Like, have you heard about this before that we want to kind of, I want to say the word play ball, but we want to play nice with Erlang people.
I don't know. Do you have any thoughts about this?
Bruce (31:07.83)
Yeah, I have some really big ones. I think that that's right, and that the Erlang ecosystem is providing a lot of value to the Elixir ecosystem, maybe even the most important piece, the OTP and the fault tolerant piece. And there was a time before Elixir 1.0 when some in the community were trying to push Jose towards 1.0 now. Right?
And he waited. He waited for a key Erlang feature, which was Maps. I think that was one of the last things that got added to the Erlang language. And they weren't so important to the Erlang community because they were dealing with different kinds of data because of the types of problems that they were solving. But once Elixir was going to be built on top, Jose had the foresight and really the experience in dealing with web type systems and
database type systems that show up a lot in this particular space that we're in, that maps were going to be everything. And they were, right? So I would say that caution is warranted and has served us very, very well over the years. And again, I'm just one guy and there are infinitely smarter people out there, but that's the way I think about it.
Go ahead.
Sascha Wolf (32:35.541)
I also think, I mean, you already see some influence from the Elixir community even beyond this, right? I mean, look at, for example, how you used to have to write dynamic supervisors, and at least that is something where we now have a module that is a lot easier to use, a lot less complex, a lot less pitfalls. So I feel the approach there...
Honestly, so far it has been paid off. So I agree with you, Bruce, that I can understand that it might be frustrating for some engineers to receive a comparatively slow pace of innovation on that particular front, but I mean, the results speak for themselves. So, and look at what has been happening in the past year or two with the Erlang Foundation, right? So now...
like different languages, people from different backgrounds come to the same table to kind of discuss how can we push the beam forward. And that could not have been happened if there was more of a bridge burning approach towards
Bruce (33:47.507)
I love the way that you said that. I really like what you said about the Beam. I want to be clear. When we talk about the Beam, we're really talking about the virtual machine. But it's more than just a JVM. It's also this idea that things that communicate in this ecosystem get to take advantage of the self-healing aspects of the system.
because we all agree to a general contract. So I think that there are a number of new languages that have these libraries available, but they don't have the tooling and infrastructure, and they don't really have the collective history of the Erlang family of languages. And I think that those things together are tremendously powerful and are really pushing all of the Beam languages forward. And I think that that's interesting.
But it's not where I've always been, right? So if you look back in my publishing career, you can see a lot of things like a lot of books like, oh, for example, Beyond Java, right? It's move faster, right? Or like better, faster, lighter Java, which is, leave this EJB stuff behind and simplify and faster. And we don't need committees. And we don't need to work together. And
You know, gosh, over time, I've started to see the benefits of communities that work together. Yes, through committees, but also with good faith. And that's yeah, go ahead.
Sascha Wolf (35:23.029)
Yeah, I think good faith is like the number one thing here. And I think there's a lot of that going around, at least from the outside perspective, from where I'm standing as an engineer, looking into the inside of what's been happening with the Erling Foundation. There is a lot of good faith there. There is friction, but I feel it's professional, healthy friction in that I do see sometimes Erling engineers being like, ah, these elixir peeps, like the new kids on the block.
They're questioning everything, right? But it happens with a lot of respect for what we already have. So, um, we still kinda are in the same boat, uh, which I think where the whole idea of not rocking the boat comes from, right? Like to have that buy-in because I mean, the, the Ollong Vm is an impressive piece of technology and we wouldn't be here if that thing hadn't been battle tested over the last three decades. So you better not get on the bad side for people who actually really
deeply understand what makes the end tick under the hood.
Bruce (36:29.793)
Sascha Wolf (36:33.909)
And maybe coming back to what you said at the beginning, Alan, about like these files. Again, I also see some, I agree with you, some of those defaults feel weird. And especially like that entry level module is something where I always delete that, right? Like when I create a new MixedPix project, that thing gets chopped first. But you also see some changes there. And like, just imagine how, just remember how we used to do configuration with MixedConfig, right? But there was, now we have...
Allen (36:33.987)
Yeah, but.
Sascha Wolf (37:01.205)
the in config module and we also have a runtime.ex config file. So there is iteration happening on top of that. And I think even by default, you don't even create the compile time config anymore. I think that is like a thing of the past. You can still do it if you want to, but the default generation for new projects don't do that. So I also would like to see a bit more drastic changes on that front, which I think the language can be doing because that is outside of the...
The ballpark with the early engineers that say that. Um, but again, I mean, coming back to what, what Bruce also said earlier, Jose has a pretty good handle on how to iterate and how to build on top without breaking things and with, uh, while, while also keeping maintainability and composability in mind.
Bruce (37:52.45)
Do you guys remember this talk that they did? I think I want to say it was like maybe five or six years ago that was basically Elixir is Done.
Sascha Wolf (38:04.695)
I think so, but it's a while.
Bruce (38:07.914)
Yeah, and the impact that talk had on the ecosystem was kind of a signal that said, look, we're stable. We're stable. We're going to protect you from churn. Go knock yourselves out. Now is the time. That was, by slowing down, he actually sped up the greater community. And that was a really powerful lesson for me to see.
Sascha Wolf (38:33.853)
Yeah, I mean, if you know that the ground beneath you is not going to shift, then you feel more comfortable investing into it. Right. I think the exact opposite of what you can see there of the web approach, I guess, is what you tend to see in the JavaScript community. I think it has slowed down over the past few years, but I mean, there is a reason why we have that meme, oh, you don't have a JavaScript framework, right?
Bruce (38:56.951)
Ha ha.
Allen (38:58.951)
Yeah, but even though Elixir was done, I feel like there was a lot more bigger changes that happened, right? We had quite a few iterations on configuration alone. I think that happened after he said that we're done. Right. Like it was always mixed config for, for the longest time. And all of a sudden it's like, no, we're gonna do this and then we're gonna do that. And then now we're just got import config instead of use configure. I think it was their use config for a short time.
Bruce (39:11.443)
Yeah, that's true.
Adi Iyengar (39:20.475)
Oh, there's a mix outside of Elixir, standard library though. So.
Allen (39:24.511)
Yeah, true. But it's kind of also part of Elixir. I mean, you can use Elixir without Mix, but you can't really deploy or release without Mix with Elixir that I can think of. I mean, I guess you could probably, you could do anything you want to do if you believe in yourself. But at the same time, I mean, it's easier to use Mix, right? But there's also a lot of other things too. And also, like, for Phoenix, right, it's been so much stable for a while, but, you know, we came up with the presence and now components and it just seems like
Sascha Wolf (39:24.695)
Allen (39:54.371)
Yeah, we're done, but maybe we're done with like the core functions, but that doesn't mean we're not done cleaning house. So they're knocking down walls and adding additions and doing all this stuff. And I feel like we're moving faster, but in I don't even know what you would call that. Like in instead of with functions pieces with actual components of the whole thing.
Sascha Wolf (40:10.564)
User learned?
Bruce (40:16.87)
Yeah, exactly. Exactly. Well said, Ellen. I think that what I was trying to poorly say was that the announcement that Elixir has done let the innovation happen on the next set of levels. And yeah, I mean, especially with Phoenix, I feel you because we've been trying to keep this programming Phoenix live view up to date with all the changes. So it was a hard book to take on. We knew.
Sascha Wolf (40:39.039)
Ha ha!
Allen (40:41.467)
That was on my list to ask you about. Yeah, that was on my list to ask you what's going on.
Sascha Wolf (40:43.893)
I can't imagine.
Bruce (40:46.006)
We knew it was going to be a beast, right? So we have written that book cover to cover about five times. And we're probably doing another rewrite now. I think that there's maybe one more major one in it before we nail down the major APIs. But I think that one of the things that
LiveView even possible was that Elixir was stable enough underneath. Configuration changes and the occasional new functions aside, this was a really important announcement and idea in the system that we weren't going to manage this thing, like, say, for example, Ruby on Rails, which is we're from
Major versions have major breaking changes always. And that lets innovation happen, but it also is a limiting decision.
Sascha Wolf (41:57.773)
And I mean, you just, I feel like what is the testament to like how these things are layered and composed together is you could go ahead and write a Phoenix application that kind of looks like Phoenix 1.2, right? You could still write it with the newest Phoenix version if you wanted to. I'm not saying you should, but you could, because all of the different parts are still like, fundamentally still there. Like a controller is still under the hood, just a plug, and you could...
Again, have view modules which use templates. Nothing would stop you from doing that. And while I agree that on the surface, Phoenix has been shirming a lot and it looks a lot different from what it used to, like the individual building blocks, the layers are all still there. Just again, it was built on top and it was iterated. Safe components, yeah.
Bruce (42:45.326)
Save components. Yeah, yeah. And some of the layering is, so if you've been depending on code built by the scaffolding or the code generation frameworks, you've seen some significant changes, right? Because responsibilities have shifted, for example, into core components. You have built-in tailwind now that you can turn off, but you can't enable for other frameworks. So
Sascha Wolf (42:58.208)
Yeah, yeah.
Bruce (43:15.146)
Yeah, but my point in the Alistair community is that Chris and the Phoenix team have done a marvelous job of signaling, hey, you could write this book, Bruce, but this is going to change. This is going to change. We are pre 1.0. We didn't have that conversation, but by virtue of writing to the pre 1.0 version of Phoenix Live View.
Sascha Wolf (43:29.741)
Bruce (43:45.65)
We knew it was going to change a lot. We just decided that the book was worth writing because we thought it was important to have some support in the publishing community for that particular framework.
Sascha Wolf (44:00.809)
I'd like to pick up a question that Adi asked before we recorded. And that is, Bruce, like, what is motivating you to keep being this, this is teaching force and this educating force inside of a community? What is it that is driving you behind that? And like, why, why do you have this apparent inner drive to, to like, teach the ropes to the next generation of engineers?
Bruce (44:27.478)
Yeah, I think it's a good question. And I can't answer it with money, right? Because that's not where people don't pay for content these days. I can remember, gosh, let's say that if you had a similar book that was written even a decade, maybe two decades before.
it would have 10 times the sales, right? Because there weren't as many information sources. Amazon is a different animal. Things get bought and shared around. Videos are very much the same way, video courses. Trainings, people believe that they can learn in other ways, so it's not about money. I think the more important bit for me is that about 10 years ago, I went to a conference, and I'm not gonna say the...
the name of the conference, probably the people in this room wouldn't even know. But there were 403 people, and 400 were white males. And that's OK. I mean, I don't think that there's an inherent value judgment there. But I do think.
that in order to make the most, that if there's a smaller community, we're better if we're more integrated. I mean, if you look around this room and see, right? So representation has been really important to me. And I've been kind of noodling on how to solve this problem for the past 10 years or so. And so the idea that I can take these professional trainings and I can offer just
20% of my unsold, or I can offer unsold tickets, which is just 20% of my total, and really move the needle. And I can look up and see the Croxio students behind the podium for keynotes and talks. And they're talking to a Lusra conference. They're getting a major job. They're making impacts on some of the communities that are building the software that we're talking about.
Bruce (46:51.266)
I think it's much needed and I think it feeds my soul. And so if I'm curious about something, I'm curious about Elixir and I get to do work that feeds my soul on a regular basis, that's a good place, that's a good head space for me to be in 2023. I mean, there's enough hate flowing around for all of us, right? But for us to...
to be able to agree on something. You know, I couldn't do this thing and now I can. In the community of other people that are doing the same thing, it's just, it's very rewarding and it's very exciting for me.
Sascha Wolf (47:33.289)
I think that's beautiful. And like, I also think that is something that, that our, that the community, for Lixir, but like the larger tech community at whole should, uh, could, could do well embracing more.
Bruce (47:48.274)
Yes, do well by doing good, right? That's the Garraxio model. And that's exciting to me.
Sascha Wolf (47:51.818)
Adi Iyengar (47:57.543)
Yeah, again, what is the it was, yeah, it's just awesome to hear this, Bruce, like, I think it's also like one of the good things about how you teach and how you communicate, you know, your passion to people you're teaching, it's like, it's like almost like a, like viral, like, you know, it induces that same passion into the people you teach, so they further go and you know,
teach others. It's like a multiplicative effect, like exponential impact in the community. So yeah, it's real 10x 100x engineer. Yep.
Sascha Wolf (48:29.544)
The real 10x developer.
Bruce (48:34.986)
Yeah, so yeah, I hate the 10x comparison, but yeah, but I love the idea, right, that we can be more and that we can have to leverage as developers. So all you have to do is, if you find yourself going to Croxio, just look at the testimonials and see how happy people.
Sascha Wolf (48:40.451)
Yes, I did that ironically. I did that ironically.
Bruce (49:02.462)
are relating to each other on those testimonials. And I mean, if you could do that every day, if you could make people have breakthroughs that define their careers every day, why wouldn't you, right? And so that's, you know, it's fun to me that Groxio has been this place where people come to say, I wanna take my ELISA career to the next level. It's really a powerful and exciting thing for me.
And to be able to layer on the social good on top of that mission is just, it feels good, so I do more.
Sascha Wolf (49:39.953)
And I just want to circle back because I said it in passing the show that I'm not very fond of this whole A10x idea, but I do believe that there are engineers out there that if they focus on teaching other engineers, unblocking them, getting them faster, helping them being the best possible engineer they can, those are the people that if you would want a title like a 10x developer...
those would be the people that help other people be faster, be more integrated and have a coherent team that's working together. So yeah.
Bruce (50:17.47)
Yeah, yeah. So what you're talking about, though, is not a 10x developer. It's a 10x person. It's the culture. If you get, I mean, culture is going to eat profits every day of the week. And so you get those people who get excited about making the people around them better by making them happier and more successful.
Sascha Wolf (50:22.889)
Yeah, yeah, 100%. You're absolutely right.
Sascha Wolf (50:29.962)
You're absolutely right.
Yup, yup.
Bruce (50:46.414)
I mean, that's what it's all about.
Allen (50:51.215)
Yeah, but there's something else that comes to my mind, which is...
I think we also focus a lot on the programming part of our work, but that's not always, I feel like that's sometimes the least valuable of our work, if that makes sense. The most valuable to me is always about the communication and actually solving people's problems, which I think a lot of us forget about. I mean, this is elixir mix, right? But at the same time, I mean, we're getting paid to do elixir to solve somebody's problem, not just to have fun, right?
And it reminds me of this conversation I had yesterday, where so this guy's working with Flutter. He says he wants to do a lot of Flutter. He wants to get better in Flutter. So I'm trying to help him with that, but at the same time, he's quite young. So he's got to get some, he's got to get basic developer skills to begin with. And I...
I was just a little bit in shock and awe about something that happened. Specifically, the font was not rendering properly. I don't know if you know about Flutter, but it's really all UI-based framework. The fonts weren't running properly. I said, can you fix this? Oh, it's a library's problem. It's not my fault. I'm like, but this needs to match the design. This is... Yeah, yeah, yeah. I want to get better at Flutter, but it's like, yes, but that means you need to also get the problem solved.
And he went as far as saying that I think figma is broken because obviously it's not rendering the same as the figma design. And I'm thinking to myself like, I wish there was a way that we can somehow get some developers up to speed about, Hey,
Allen (52:26.647)
I know you want to get better at programming, but sorry to break your dreams when you're younger. I broke my dreams for a short while. Most of my job is about communicating and making, solving things for people. As much as I'm going to put my head down and not talk to anybody and keep hitting on a keyboard, most of my life is really about talking and solving the stuff. I mean, that is something that I think we need to figure out how we can do.
Bruce (52:46.686)
Yeah, love that.
Bruce (52:51.082)
Gotta care about the people, right? It's all about, I mean, that's our job. And that's, yeah, and I guess going back to your question, Sasha, that's why I do it. It's all about the people.
Allen (52:52.911)
Sascha Wolf (53:04.109)
Yeah, I'm more than 100% with you. I also tend to, like when people ask me what I'm doing, and I do say that I work with software, but I usually describe myself as a problem solver. And the best way to solve a problem, from my point of view, is not writing software, is that is to write a different way of solving it, because software is very costly and very expensive. And if I can actually solve a problem without software, that's a win in my book.
Sascha Wolf (53:32.085)
But if I have to write software, then I would write it with Elixir.
Allen (53:39.723)
Yeah. But it's kind of coming back to, to groxio, right? I heard that you made a recent hire. FYI, this is a segue.
Sascha Wolf (53:54.206)
Very smooth, very smooth.
Bruce (53:55.958)
Yes, so we did. So we hired Paulo Valem. So that's the brother of Jose. And Paulo is actually working with us on doing some website design. He's doing some marketing. And he was a big personality in the YouTube teaching space for chemistry students in Brazil. And so
If you want to have some fun, Google Apollo Velham and watch some of his chemistry teaching videos in Portuguese. I mean, you won't stop smiling for a week. And so he built this teaching empire in Brazil. And he's going to help us work on conversions and site design and things like that. He's a brilliant man. He's a lot of fun to be around with. And even though we just have him for part time.
he's already making a tremendous difference. So all of the, for those of you who've been around since Grazio 1.0, all of the new website changes are, he's kind of helping us spearhead those. So he's a wonderful man and he's a fantastic hire. And thanks for noticing and asking, Alan.
Allen (55:15.715)
Yes, it came across my desk in some way. I don't know. I think a bird told me or something. But actually something came to my mind because I did subscribe to Graxio before. You were doing besides Elixir, you're also doing other languages that you're showing. Because well, first of all, people may not know this about you, but I think you got into Elixir because you did. Was it seven languages, seven weeks? Is it?
Bruce (55:41.022)
Yes, yes, yes. I did seven languages in seven weeks. And so I started with Groxio as kind of an online version of that community. But it turns out that most of my followers now are Elixir people. So everything that we did that was Elixir focused was the new bestseller in the platform. So
It takes so much time and energy to get sharp enough at a language to be able to do any kind of video recording, to be fluent enough to make that go. We just couldn't sustain the effort for things that weren't front and center on the overall site. So we shifted more towards Elixir. We'll probably be Elixir.
and probably some machine learning, like I could see us doing a session on how to code with AI assistants or something like that. But we're going to focus on Elixir for a little bit here.
Allen (56:49.607)
Yeah, it's too bad because I thought that was really valuable because I always think that the more language you learn, the more expand your mind gives you new ideas. You solve problems in different ways. I'm sure there's plenty of things that we have in Elixir that came from other languages. I mean, there has to be obviously Erlang stuff, but I'm sure there's other things. But it's not really coming to my mind which things are. I'm sure Bruce, you probably have a couple of ideas that come to you. Adi's shaking his head. I mean, obviously, a lot of Ruby influence, of course, but that's obvious.
Bruce (57:13.522)
Oh yeah, oh yeah, oh yeah, so...
Yeah, Ruby syntax, right? There's the beam that's underneath and the self-healing part from Erlang. There's a, of course, Erlang has a prologue legacy, so Elixir gets some prologue in that way. There's a Haskell legacy that's pretty strong. In fact, there was a talk called
John Hughes driven development or something like that. I forgot who gave the talk. It might've been Jose, but it was about property-based testing and about the format or then a couple of the other ideas that came from John Hughes that are in a lecture proper. There's the ML, which I think gave us the pipe operator. Jose, correct me if I'm wrong on that. There's closure, which impacted the way that
and list derivatives, which impacted the way that we write macros in the election language. And some of the math behind the stream models actually came from Haskell. I think I was at a conference when Jessica Kerr was helping Jose write some of those libraries, maybe the iterates or something like that, that helps unify the streams and enumerables. I'm sure I'm not getting them all.
IDGF, do you have more on that?
Adi Iyengar (58:47.471)
No, that's like more than what I had. Yeah, it's a good call out to ML on the pipe operator too. That's a good point.
Allen (58:56.091)
You know, I had to go look this up because I always heard John Hughes, but I merely think about like Uncle Buck and all those other great movies that the director made. So I had to look up, cause I kept thinking like, why the heck are we talking about John Hughes? Is this just some, one of the movies he did that was interesting? Why, why do they keep talking about John Hughes when it comes to programming? I remember hearing about this one before though.
Bruce (59:16.194)
Well, next time we get together, I'll tell you a story about how we got John Hughes to come to Gixxity Elixir. Getting kind of late, but next time.
Adi Iyengar (59:25.189)
I ffff-
Allen (59:27.132)
Which John Hughes did you get? Oh yeah, obviously you got this one, not the other one.
Bruce (59:32.2)
Yeah, no airplane designers.
Allen (59:36.45)
Okay. But yeah, speaking of that, you also put on the Gig City Elixir, right? That's you who puts it on, right?
Bruce (59:44.254)
Yeah, more Maggie than me, more my wife. And so I think that conference is a little bit different than most conferences because of our focus on it's single track. And rather than curating talks, we curate speakers instead and let people talk about whatever they're passionate about. And so we tend to get a pretty.
engaging speakers and we tend to do a pretty good job with hospitality. And I would say probably the closest conference to the overall experience is the impacts conferences because they're kind of off the beaten path and they're interesting venues, interesting speaker dinners and cool experiences outside of the conference as well.
Allen (01:00:43.759)
Yeah, just look at the speaker list and you definitely have quite a big inclusion too, because I mean, now there's not a lot of people who stand out, who are people of diverse backgrounds. When I look at the Alex community itself, but you do have quite a few people who are fitting that bill, right? So even for the conference, you're actually trying to get a lot of inclusion. And that's really great.
Bruce (01:01:07.934)
Yeah, yeah. So the conference is actually built to put some of the best programmers around the world and around the same table with the people in our mentoring program, with the mentees, and start fires, right? That's what it's made to do. We didn't do as well with women at the conference because we didn't do as well with women at the podium. But in past conferences, we've had representation of 20 to 30 percent of the attendees.
being women and that's pretty stunning in today's numbers at a functional programming conference.
Allen (01:01:44.671)
Well, this is kind of a question I have, right? And you kind of play the cards that you have, meaning like, I mean, is there enough women that you're aware of that are actually in the community that could come? Was it just a problem of couldn't connect with them or that or maybe they turned down or what I'm kind of curious about how you can get such an inclusive background because I just first of all, I'm in Hong Kong, right? So everybody around me is this is I'm the diverse one, right? So
in more than one way, as you can see.
Bruce (01:02:14.422)
Yeah, yeah, yeah. So I would say that when there are more women at the podium, we get more women at the conference, almost without fail. And to get women at the podium, we have to have a bit more time to recruit. And we don't compromise on quality at all, but we do specifically look to fill...
Allen (01:02:24.196)
Bruce (01:02:43.322)
enough slots so that the panel, the speaker list, has about the same breakdown as the people in the audience that we want the people in the audience to have. And so what we tend to do is we tend to develop a lot of speaking talent. And we also tend to.
go out and find people, go watch a lot of videos and go meet interesting people and talk to other people in the same positions that we are. And we also try, this year we weren't able to because of the down economy, but we tried to get enough sponsors on board with us that we could actually pay the speakers, their hotel, and their flight. Because.
I mean, they're not making their lives better. They're making our lives better, right? They're our product. And so we wanna make sure that people feel good about being there. And we invest in things like our speaker dinners are at pretty nice places. And we try to pick people up at the airport and do things like that. And when that happens, people wanna be there. And you love the speakers.
Allen (01:03:48.519)
Bruce (01:04:09.942)
They love your attendees and that's our formula. Always has been.
Allen (01:04:13.391)
Now for like the attendees, like how many people actually come to this? Because I watched the videos and I get a feeling like it's a very, it's not a huge conference, right? It seems really like everybody's quite tight knit. So it's usually that small feeling, but I'm just looking at the angle of the speaker. Right. I think I watch Amos's talk and so I don't know what it's like. I'm kind of curious about how many people actually come.
Bruce (01:04:30.913)
Bruce (01:04:37.174)
So normal years, we have about 150. This year, it was a little bit down, was about 100ish, 110ish. But that's still pretty respectable for an Elixir conference. Typically, the way that we structure things, we don't have a lot of people standing in the corner. The people that come are pretty engaged throughout, and we try to plan things that way. Don't ask me the secrets.
Allen (01:04:40.488)
Allen (01:04:51.487)
Bruce (01:05:08.519)
Maggie runs everything to do with hospitality. But yeah, we try to be as much of a hospitality conference as we can, and we try to be as inclusive as we can, and we try to plan things that people wanna be at. And it just means talking to people and making sure that they feel included and loved.
Allen (01:05:32.415)
Yeah, for me, actually the most surprising thing that I do see on your speaker list is most of your speakers have pretty presentable pictures that they gave to you, a couple that are interesting, but most of them are pretty professional. I thought it was quite actually the most interesting part because when I do, I do podcasting for other things and I always get very interesting photos when I ask them for a headshot. And sometimes you have to try to cut them out and it's takes time.
because of the angles and everything else.
Bruce (01:06:04.16)
Yes, so we have somebody that's pretty good at asking.
Allen (01:06:09.555)
Yeah, that's the big one.
Bruce (01:06:12.274)
Yeah, Maggie's a secret weapon, always husband. She puts on a tremendous conference. So I was having dinner with Jim Freese at one point. And he said, we're not going to do Lone Star Lixer next year. And this was like 2019 or something like that, or 2018 for the 2019 conference. And he looks at Maggie and says, I'm giving you this conference. And then he turns around and looks at me. He says, did you hear what I said?
I meant that I'm giving you point to Maggie, the conference, not you, because he bent a gig city looks where he kind of saying she, she just has an act for, um, for hospitality and making sure people feel loved and included.
Allen (01:06:55.463)
But Jim Freese is still doing like the Elixir Conference ones in US, right? Okay.
Bruce (01:06:59.402)
He is, yeah. And I think that he brought Elixir Comp back during some of the pandemic for, I think he brought it back to Austin, Texas for a little while. We'd like to go back to Austin and we'll see when that actually happens.
Allen (01:07:19.839)
Yeah, I mean, I think we've definitely used up most of our time already. I mean, we still gotta leave some time for pics. I feel like I'm using up all the time. I mean, the audience, do you want to? Oh, he's shy.
Adi Iyengar (01:07:35.823)
No, yeah, I am, yeah, the more I talk, the more the fanboy out of me will come out and you know, probably stay here for like five hours. But yeah, I'm ready for picks.
Allen (01:07:47.999)
Yeah. I mean, is there anything that you think that we missed or something that you want to touch on before we start the wrap up?
Bruce (01:07:56.49)
Yeah, so I'll give a pick. And that is currentlytheboat.com. Currentlytheboat.com. And that's important because that's going to talk about our book about the Great Loop Experience, right? So if you want to help us launch it, we're actually going to be with a small publisher, the Pragmatic Bookshelf. And we're not known for.
for traveling memoirs, right? But if you want to help us launch the book, sign up there. And we'll let you know when it's ready to come out. And we'll try to organize a mass buying, where we all go get the book at the same place at the same time and see if we can't spike the ratings for an hour or so.
Allen (01:08:49.583)
Is this supposed to be a pun by the way, the currently part?
Bruce (01:08:53.229)
Currently is the name of the boat, the name of the book. Yeah, yeah, it's a three-way, right? It is the current, the water, and currently meaning in the moment, in the present, and current being river people, right? So yeah, you get all those things. It didn't work so well when, or wouldn't have worked so well if someone was saying,
Allen (01:08:56.064)
Oh, okay. I think about the current like the water.
Allen (01:09:01.359)
Bruce (01:09:22.573)
Drowning passenger, could you repeat your boat's name? Currently. Currently what? Drowning passenger, could you repeat your? You never want to have an adverb there, but we did. So the book will be called Currently Away. The website that we have to talk about it is called currentlytheboat.com.
Allen (01:09:32.959)
Allen (01:09:48.051)
Did you get bit by the author bug is you're always writing books
Bruce (01:09:54.975)
Allen (01:09:58.339)
Yeah, it's good to hear. I mean, I don't know why I just love books. I love collecting books, but never reading them. That's that's my hobby. I think a lot of people are like that. Definitely, I'm sure. I'm kind of curious about how you went through Chicago, because I'm actually from that area. So I was kind of curious about how you went in and went around in that area. So I have to check it out.
Bruce (01:10:07.71)
You'll read this one.
Bruce (01:10:20.096)
Yeah, you will.
Allen (01:10:22.464)
Um, Adi?
Adi Iyengar (01:10:26.007)
Yeah, I guess let's do, I suppose I have Bruce here. I have a couple of Bruce picks. I mentioned one of the Groxia courses a couple of weeks ago. The one I'm taking right now is the NX course. And I know a couple of people who took it, or at least bought it, and are doing a few videos. And they really liked it. So yeah, it's a good course. I only watched a couple of videos. But it looks like a very.
organized course that walks you through a lot of math and a lot of deeper understanding of how just ML in general works and how NX works. So yeah, highly recommended. We mentioned the seven languages in seven weeks. I think the Elixir one is the seven more languages in seven weeks, if I'm remembering correctly. Highly recommend that when Ksenhoz has Elm and is that the one that has Clojure? Oh no, Clojure isn't the first one.
But yeah, either of the books I would highly recommend. The first book that I read, and I mentioned this to Bruce once, I finished that in a week. And it just was like the inflection point in my coding career. I felt kind of faster, more productive as an engineer. I felt like I understood things more intuitively because I read so many languages. I had Prologue, Clojure, I think Haskell, Erlang.
Maybe Ruby? I don't know. I can't exactly remember. Bruce, correct me if I missed something. But that had a bunch of these languages. And it was a great set of languages to do in seven weeks or seven days, in my case, to just have that overflow of knowledge. So highly recommend either of these books. Bruce, do you want to say something?
Bruce (01:12:13.138)
I can't believe that you were able to remember some of those, so many of those off the top of your head.
Adi Iyengar (01:12:19.102)
Yeah, I think I might have mixed a couple of those in the more or a lot, but yeah, those are pretty awesome.
Bruce (01:12:24.65)
what makes it so impressive right because you knew that you were coming from memory you weren't reading from a list so that's pretty impressive
Adi Iyengar (01:12:34.423)
Yeah, but I think I missed four or five languages. But yeah, there's 14 languages. Definitely something I would highly recommend. We talked about John Hughes, so wanna give a shout out to StreamData. Andrea, I guess from last week, wrote that it's a great, it's a simpler property-based data generation kind of approach to property-based testing. Highly recommend that. I know we have Propper, which has like the whole ADDs and stuff if you wanna really get into it. But people who are like new to property-based testing
Give it a try. Stream data is very user-friendly and very simple. I think I had one more pick. Right, SpawnFest. Registration is open. Sign up. It's so awesome. You can use any of the Beam languages. Last year, we used Gleam and Elixir. My team used that. And this year, me and my wife are going to be taking part doing Elixirs. So if you want to hang out with us, compete against us, or whatever, yes. Sign up for SpawnFest.
Bruce (01:13:33.634)
By the way, Gratio typically gives away a subscription for SpawnFest winners, so that's a $250 value.
Adi Iyengar (01:13:43.305)
Allen (01:13:46.435)
Yeah, for me, I've gone back to heaven to sometimes travel around Hong Kong and I got my Steam Deck and I just recently we're playing an old video game. I don't know why I got all these new video games I got, but I like to play the old ones. So I had this one called Teenage Mutant Ninja Turtles, the Cowabunga collection. So it's got all the old arcade ones. And what's nice is it takes very little juice to run. So I had like 10% battery, but it says I had like three hours of playtime because it just takes no effort to run that game.
So if you have a Steam Deck and you need something to kind of play around with, I think that's a lot of fun.
Adi Iyengar (01:14:22.911)
That's really cool. Did you, I mean, if you played for three hours, you probably had a lot of fun doing it. But yeah, one of my problems, I guess, has been I've been so into the newer video games, I haven't been able to enjoy the older ones as much. Maybe I'm too materialistic or not mature enough to enjoy the simplicity sometimes. But I really wish I could go back and enjoy some of the older games. It's awesome that you're getting a chance to do that.
Allen (01:14:29.116)
Allen (01:14:51.791)
I guess it could abuse all that travel time, right? So I might as well do something useful with my time. Instead of taking a Groxio course, I'm gonna play Ninja Turtles instead.
Bruce (01:15:01.919)
I would too.
Allen (01:15:03.627)
By the way, I have been paying for the Groxio course every year, but I haven't been using it sadly. I just logged in and looked at it. Oh my God, I'm paying every year and I'm using it. That's on my list now. Now I got to put my Steam Deck back away and start watching the courses now.
Bruce (01:15:18.474)
Yeah, the live view and the OTP are brand new.
Allen (01:15:21.275)
Awesome. Cool. Well, I just want to say thanks, Bruce, for coming on. It was really appreciated hearing from you. And you made Adi's dreams come true. And sadly, Sasha had to leave a little bit early, so he's not going to talk for the rest of the show. So now we can say bad things about him and he can't reply to it. But anyways, again, thanks for coming on and hopefully I'll have you again in the future.
Bruce (01:15:48.234)
It was great to be here.