My third appearance on defn
We talk about the Clojure community on this episode of the defn podcast. I think my take is cautiously optimistic.
Transcript
But now, by the way, we don't have episode numbers anymore, are we? Oh, that's good. Yeah. We're going for some, like, modern, like, vestigest-type system, which is basically made of, like, names and titles. And then we'll include the title, but the number is going to be, like, a message digest. We want to cryptographically secure episode number. We should base it on my sunset time, right? Is it a digest of the, like, MP3 data, or is it a digest of the title? Ooh. You know something? That's not a bad idea. The moment we've kind of went with, like, names of the people that are involved. But maybe we can include the digest of the, the, the data of the MP3, yeah. That way people can check it from, you know. It's the authentic- Yeah. Yeah. Definitely. It has been adulterated in some way. Oh, man. Make sure they don't cut out the good parts, you know? Yeah, that is a great idea. We should keep this in. Oh, totally fake, some words. This is the beginning of this episode number F or three, two, seven. It's great that you can guess the digest before you even record it, but that's awesome. That's great. There's going to be an F or somewhere in there. No. F off, maybe. Oh. F off. Oh, man. That's good. Maybe that should be the beginning. Yeah, everyone. Yeah, at the beginning, middle or end, you know, it's like, oh, Jesus. What's the, um, the class, the class file, uh, the Java class cafe bay. Oh, yeah. Cafe bay. Yeah. Yeah. We got to, we got to figure out, we got to write a program that writes out every possible, uh, every possible, you know, letters of hex and then checks it against the dictionary to see if it means something. Well, I've got the busker and I've got a dict file. So give me two minutes and closure. I mean, you need to do it so fast. By the way, this is, this is not the sort of podcast you can get your dict file out on. Leave it, leave it, leave it in the computer and we are recording now. Okay. Welcome to the show. Oh no, do not cut that, that is, that is fantastic, that is. So this is the part where you say welcome to Def N episode F off cafe, babe, something, something right. Right. Right. Right. Okay. Well, welcome, uh, to the podcast and, uh, Eric, welcome to you back again. Yes. I think you're, uh, you're, you're, I'm a most repeated, most frequent visitor. Yeah. And I'm trying to keep it that way. Yeah. Yeah. Come on. I have to say yes. Otherwise, sounds going to catch up. That's true. It's true. Well, Josh has got to, Josh has told me he's got to go through all the guests to get an interview and then properly, you know, it's, uh, being, being DJ made an absolute mess of it last time. So, you know, like, you know, like people want to rewrite closure whenever they see someone else's closure. That's right. It's just like, like he's got the same vibe about Def N, you know, that's why he's here. Do it all properly. Right. That's the re-write, the big re-write. Yeah. Yeah. Well, I'm going to rewrite closure in L O V M. Oh wait, no, that's been done. Nevermind. In rust. In rust. That's the biggest. No. That's been done too. Right. Oh, yeah. By some, some jerk. I don't know. Web assembly. Nah. Somebody's doing that. Yeah. Closure and closure is all, it used to be a hot topic. Nice. It's closure all the way down. Yeah. Right, so wasn't that one of those things which would have been possible, like for closure script in closure script because of the way that what it calls for, because of protocols and stuff. Yeah. But it's too, it's too late for closure, I think. Yeah. Certainly the way Rich likes to keep backwards bug compatibility and everything. Yeah. Yeah. Because, you know, he likes his, his commits, you know, I committed it. He's in there. It's not broken. Don't fix it. So, it's what keeps it stable. Yeah. Yeah. Yeah. That's going to say. Right. Oh, that dead space can go away. Now, that's going to be something more fun. More fun. Well, fun. Eric, you came here on the back of a wonderful conference we all visited and joined and enjoyed. Sure. The heart of closure in love and in Belgium, where Josh came on a few bike rides with me. I did. And nearly died. Yep. A few like two hour, 15 minute bike rides. Yeah. Something. That's what I, that's what I hear, a little detour on a 15 minute bike. Right. Well, well, yeah, I did say half an hour at the beginning and it was a turn out to be about an hour. But, okay, I think, I think, you know, half an hour at an hour, that's a, that's within reasonable, you know, I think that's the kind of, the estimate is, okay. Yeah. Yeah. And that's for being a bit slow. You know, I told you. Well, sure. Yeah. It was, evil was slow, man. You know, slow ripping his jeans, all sorts of excuses. Intense. Well, anyway, yeah, it was a really great conference. I mean, we were very lucky where it was fantastic and, you know, everything was great about the whole scene, really. But you get the keynote Eric, the closing keynote. That's right. That's right. So, I mean, you know, obviously we'll talk about some of the things that you were mentioning there, but what was your kind of, like, like lasting impression of the, of the conference and of Belgium, maybe? I don't know. I think it's your first time visiting or, uh, I had been to Bruges 20 something years ago. Right. But just like. It's a fairytale. Backpacking through Europe. Oh, yeah. Bruges is amazing in terms of just the, you know, you don't see, you don't see medieval architecture like that anymore. You know, you might see a building here or there that survived, but this is like basically most of the town is still intact, but, uh, live in was amazing. I just had no idea. Uh, it's such a lovely place. Um, it's old. So it has like a 550 year old, like city hall building, uh, that is adorned with hundreds of statues. I mean, it's just, you know, it's the kind of thing that as an American, I walk by and I'm like, how can you not stop and just gawk this thing every time? But of course, in Europe, you're like, you're used to it and I'm not sure actually. I think that is a particularly impressive one. I mean, you know, I got it when I came over here and I still gawk it when I got past it. So and the statues are still there. They haven't been like knocked over, you know, I guess they're pretty high most of them, but a lot of, a lot of this. I used to live in Paris and a lot of Belgium, they are pretty high, um, you know, a lot of the statues in Paris have been defaced or is it defaced either by the revolutionaries or, you know, something happened to them over the 500 years. Um, and so it was just cool to see like this thing is like mint, not mint, like, and they keep them clean too. They wash them. They wash them. I mean, they must have washed them in the last decade, which is, you know, not something they would do in Paris. Um, so I don't know, and then I also, because of the weather, uh, just having all of these outdoor seating, like outdoor restaurants, it's like so amazing. Like it literally looked like the whole city could go to lunch at the same time and there would be a table outside for everybody, uh, I make sure it's a nice long one as well. Yeah, exactly, well, there's enough for everybody. So like two hours, if you're, if you're, if you're, your restaurant is full, just go to the next one. Um, and, uh, you know, I just always get very envious because in the US having, you usually have to drive to a place and the outdoor seating is not great and the service isn't good. And, um, this is like amazing that there's within walking distance, hundreds of restaurants, all with, you know, 30 to 40 tables outside, um, so lovely. And then the location of the conference was on the, like the square in front of the train station, which also had, was really big and spacious and it also had cafes all around. And, um, so it's the thing I mentioned in my newsletter about the conference. That was great that you didn't have to be inside cramped in the kind of dark theater that we were in, um, but you, you did lose something, which is the serendipity. It was a little too open, like someone could, you know, you wouldn't notice that this person sitting, you know, two cafes down is another closureist because they're mixed in with all the other people and it's a little too far away to, to like interact and like, say, Hey, can I join your conversation, you know? So, um, I, I feel like it was great that is like, um, Arna said, Hey, use the space outside, but then you kind of do lose that, like you're all in the same space, you can identify each other easily. You're kind of bumping into each other. Um, there was a little bit outside how five that was like that, if you remember. No, how five I even sat with you, uh, talking about, um, talking about some book or whether I got my book. Some books. Yeah. Yeah. Yeah. No. How five was nice for that there? Because so just for the people who weren't there, there was lunch served at how five for the whole conference. Great lunch. And he has a great lunch is like a buffet and then there were all these picnic tables outside and a, uh, reserved for us, I think, where the conference goers and you just grab a plate, fill it up, go sit outside and it was amazing. There's like, you're just surrounded by a 50 to a hundred closureists all eating and chatting and, you know, mingling and just a kind of random chance for who you sit next to. And that's all. Great. And it does go to the like kind of purpose of the conference, which, you know, I ran a conference, right? And one of the things that I was trying to not do was to have talks, right? Because when I, when I go to conferences, I like to do the hallway track and everyone I talk to, even, even not just the hallway trackers, other people who go to conferences, they say, yeah, my favorite part is the hallway track. It's always the best. So like, well, why don't we just cut out the talks if everyone just wants to hang out, you know, um, there's some logistical issues with that because, um, the talks do serve a couple of purposes, uh, they, you know, when you're convincing your manager and give me a week off so I can go travel, uh, like maybe, maybe you'll pay for it. And they say, well, why should I do that? What's it? What's in it for the company? And then you can point to the talks like, well, they're using Kafka and there's a talk about closure and Kafka and like, you know, I'll learn something and get to talk to this person and then they're like, okay, whatever you can go. But if you don't have a talk and all you can say is like, well, I don't know who's going to be there, but it'll be fun. It's not quite the same argument, right? And then also for people like there is a draw where you see Rich Hickey on the, you know, giving a talk, David Nolan's giving a talk and yeah, maybe you want to see it live. There's kind of that, you know, why, why do you go to listen to a band live when you have their CD, you know, the audio is going to be way better on your stereo than in the, um, but also they're going to be mingling. They're going to be there. You might meet David Nolan. You might meet Rich Hickey. Um, and so there's, there's something to that. And it's, it's not just like, I'm going to meet Rich Hickey. It's, I'm going to meet other people who also want to meet Rich Hickey and so we'll have something in common. Yeah. Cause I, I think being in the audience watching a talk live, there is something to that, right? Like I do enjoy, you know, sitting next to whether it's Ray, you know, arguing about whether a given talk is good or not, or, you know, if it's somebody that I haven't met yet and we're laughing at, you know, some inside closure joke or whatever, like there is that sort of sense of camaraderie. And like, I feel you on the hallway track, um, I have a slightly different perspective. For me, it's like, I need the talks to make the hallway track fun because I, I like hear an idea or something and then I'm like energized, I'm excited to talk about it. So it kind of feeds into it. So yeah. Yeah. Yeah. Yeah. I can see that too. I also have the, I mean, I have that experience when I also have the other experience, which is, you know, six talks in and like my, my mind shuts down. I'm not hearing anything anymore and, and, um, even sometimes like before I was aware of that going on, I'd be like, that wasn't a very good talk. It wasn't, didn't excite me. And then I'll see it pop up on YouTube six months later and I'll watch it and I'll be like, this is awesome. Why didn't I see it? And then I realized I like kind of ignored it because I had been there and, um, I think, I think to me, the experience of watching videos in general, sometimes it is great to be there. But in general, I have a better experience of talks when I get to choose when I watch them. You know, like I'm ready for this one. I'm interested. Yeah. The title sounds good. It's not just cause it's next, you know, and during the conference. Um, so, you know, that's, that's just me though. Anyway, what I'm trying to talk about is heart of closure and how great it was. Uh, it was awesome to be in Europe. It was my first European closure conference, uh, just to meet all the people who like rarely get over to the U S, uh, that was awesome. Uh, there's so much activity in Europe, um, around closure and that's cool. Um, and it's, you know, just like the Europe is, you know, relatively dense, small and compact and like everything's close. Like you're getting people from all over these different countries that could travel there by train usually, sometimes by plane and it was a bicycle, even, um, someone was on like a houseboat down a canal, like, you got everything, you got everything. Uh, and, um, that's also cool that, um, you got this big diversity of people. Um, and the, you know, it's just, it's like, it's a lot of people, but in a smaller area. So you're just getting a lot more activity where as in the U S, you got centers that are like thousands of miles apart and it, it changes the dynamic of it. Um, so it was just great to be in Europe. You know, um, let's see, what else, um, the talks that go ahead. Yeah. Yeah. I was just going to ask you about the talks. Yeah. Yeah. No, you should watch the talks. They're good. The, I think what, what Josh, uh, wanted to talk about around the talks is I wrote this newsletter article, like it's called a love letter to heart of closure. It really was the best conference I've been to, um, but I was expecting something a little different. So there was some part of it that like didn't meet my expectations. And that was the, the subjects of the talks. So not the talks themselves, you know, each talk was good. But, um, when a lot of the rhetoric around the heart of closure is like, it's like very human centered and it's about the people. And it did feel like that in terms of like the logistics of the conference. You know, Arna was talking about, you know, being inclusive, like open up your discussion circles so that there's room for someone to kind of just come in, go have lunch together, do an activity after the conference. If you need to have space, go to a cafe outside like there's, he talked about that, but I thought that that would also flow into the topic selection of the talks, right? And so, um, I compared it to a conference I went to locally here in the town where I live and, um, that conference, it was a Ruby conference and the talks were much more people centric. So, you know, there was this, the, the theme of the talk was we're all people, the programmers of people, business people you work with are people, sales, all that, the support people, your customers are people. So programming, basically the idea is programming is about people, so let's get better at learning about people and being good people and stuff like that. And so a lot of the talks were like, what, uh, let's, let's talk about personality traits and let's talk about emotions and you know, it's, it was a much different theme than what what I saw, which was more like just technical stuff, like I'm writing a, uh, what is a jank? It's, it's, uh, is it LLVM? Yeah, that's a closure and C plus plus, yeah, closure and C plus plus, that's right. Uh, you know, it's just like, okay, that's another technical talk, you know, it's just how, how to write this compiler. Oh, I had this sailing problem and I wanted to solve it in closure. Um, very, very much like you would see in closure conferences, um, yeah, still cool, still closure-y, but just didn't hit my expectation. I mean, interestingly, I, I, I kind of, I get that vibe because I get what you're saying because obviously we work with like software and, if I closure potentially every day. Um, and a lot of the, there are some things around closure that are like, you know, they're always like sparking joy, let's say, when you discover something or you, you just, you see how neatly you can express something that's a little, little, that's quite nice, but a lot of a lot of projects actually are about, you know, dealing with the bloody, uh, the messy people, you know, we want to make, I, you know, I want to make this change, uh, oh well, you know, I think that's going to take a bit too long. No, it won't. Honestly, it's going to be fine. No, but I think you should do something else, you know, like I don't give a fuck what you think. Really? Um, oh God, I've got to you. My boss. Right. You know, so it's all these kinds of, how do we deal with it? You know, and it's, it's totally, and yeah, well, yeah, there's, there's, oh, sorry, go on Josh. I was going to say like there was actually a talk talking exactly about this, right? It was the, the talk that Philippa and Martin did on the replacing the legacy software system at that logistics company and like they were talking exactly about how they had this amazing like technical solution that was replacing this old AS 400 system and like they weren't getting any traction and then they discovered, you know, what did they call it? They found the gray beards and they, these different groups of people. And so it was a people problem that they couldn't solve. So they kind of pivoted to a different group of people and got some traction there. So that talk was exactly about what you're talking about. I think. Yeah. I mean, it was one of the talks about something to do with people, but I think Eric's right in the sense that it wasn't a dominant theme, you know, I think you're right as well to pick that one talk that was about like the fact that they were negotiating with different parts of the company and, you know, in the end, they all became good friends. It was like, it was a kind of like a, it was a heartwarming story. It was a heartwarming story, you know, it was, it was beautiful. I mean, yeah, that's, that's an ongoing story, which is fun as well. Eric talk reminded me how, how, like the real value of a contractor is that they're an outsider. Yes. And they can bridge all these, bridge all these connections between different factions inside the company and like skip over red tape, just like get something done, make some. I had an experience as a, as a contractor like that once. I was actually an employee of our company, but we were hired to do an integration with their system. And it was, it was exactly like that. It was like all these old processes, very waterfall, nobody had any agency. And like through maybe like maybe a little bit of their fault because they weren't practicing agency, but also like maybe there's a good reason they weren't practicing. And so man, I remember having to fly out to them. This is after months of working with them, like weekly meetings on the phone, like how's it going, how's your side of the integration going, oh, it's just fine, everything works. And then you get there and they've never run it. They've never, they've like, they've never run the software that they've written, like hello, like we've had months, like you started, see what happens, like talk to our system or not. And they're like, oh, but there's a firewall and I can't poke my hole in like walk over to, it's like the debt is this, it's one floor, like go over there. That's where the operations people are and talk to them about poking a hole in the firewall. And he would walk over there and he's like, oh, they said, no, like, okay, let me go with you and I held this hand and we walked over there and we explained better like what we needed to do and how the deadline was in three days and please can we have a thing and we agreed on this, you know, and it was just like, you know, I had to be the one to like be the ambassador and talk to all the different groups and get things done. And yeah, that's how big companies work and that's why nothing happens. Cool. Yeah, I think that I'll just say one thing on that before we pivot a little bit. But I think that's great about starting a new job. And I know Ray, you've just recently started. You have that first six months to be an outsider and you can actually, you can actually bridge a lot of gaps in that first six months because, you know, everybody has nothing against you. You know, when you come and start. You haven't made enemies yet. You haven't made enemies. Yeah. Well, you're making enemies. That's what you're doing. Right. Choose your enemies now. Definitely making enemies. Yeah. So one of the other talks was about obstacles on the path to closure adoption. And that was, that was an interesting one. And I know you have some, I don't know how you want to say it. You have your ear to the ground or your nose to the radiator or something. Anyway, you have a magical way to spot trends and closure adoption, Eric, I think. So how's it going? Is closure being adopted? That's a really, really, I don't know where to start. So I'll just start somewhere. So my magical signal is not too great. It's, it's that my core sales are something of a, of a signal about what's happening in the closure community because I sell to beginners and so it's, it's a good way to know how many people, new people are interested in closure. Also I look at my like website stats, you know, what kind of, what are people visiting? That is kind of a signal too. And the traffic has been going down over time, like, and who knows if that's like SEO or whatever, but it's a signal that I have. And you know, you look at Google trends and all that stuff. And compared to other languages, closure is not keeping up like you just proportionally even like, you know, if everybody had 10% growth a year or something like that, you'd, you'd see that everybody's growing and there's going to be exponentials because it's compounding. But closure like goes up and then it kind of, you know, kind of is trailing off, right? And I think that most people who are not in the closure community would think that closure is not that exciting right now, that there's not much happening. And I can see that, like, I don't think we have what used to look like some silver bullets, you know, some like killer apps. When closure first came out, first of all, it was a totally different environment. Like this, this is, you know, in 2007, there weren't a lot of great options for a non mainstream language, right? Yeah, we're talking like Ruby was like, oh, wow, it's came out of nowhere, right? And that was one of the big sort of, I don't know what do you call it, non mainstream. You had your Java, your C sharp, your Python, even JavaScript wasn't big back then. And so it was that it was like a new thing with like an advantage, it ran on the JVM. We got this big ecosystem. And then it also had good concurrency. And at that time, we were all excited about getting thousands of cores on our machines, right? That was the, that was what people were talking about. Like we had two, then four, then eight, and like, when are we going to, you know, how many doublings before we're at a million? So we were, we were excited that we had a story for that with all the concurrency stuff. You know, that, that didn't pan out. And I don't know if there's anything now that's there. Even closure script had a good story, which was that it was like, it was better than JavaScript when it came out came out in like 2011 or something. And you know, JavaScript has improved quite a bit. And it also has a big ecosystem of libraries and stuff. And we just don't have, we don't have a thing that makes closure that much better. That I don't know, here's, here's the cynical part that doesn't take, you know, five years to learn, right? I think that that's another thing. Yeah, like we, especially someone like me who's been using closure for so long, I, I forget that like, it's not the stuff that I know that makes me fast. I didn't learn it overnight. It wasn't like, oh, I just like did import XYZ and I could do all this stuff, right? And a lot of people aren't there, especially, you know, as the industry grows, it's growing from the bottom, right? It's growing from people who have no experience. And we don't have a story for them, right? And I don't think it's about installation. I don't think it's about tooling. I think that it's a, it's, it's a cycle, right? So it's like a, it's a bootstrapping problem. It's like a, you know, how do you, how do you get people to learn this stuff? And you need some motivation. They need a reason and a job is a good reason, but we don't have that many jobs. And why don't we have that many jobs? Well, there's not enough people to do them or the people you need have to be so senior that you can't afford them. You know, there's, there's stuff like that. And it's just a cycle that we, we don't, we don't have a good answer for it. No. There you go. Man, let's just end the show. Jesus. All right. Yeah. What do we want to do? You want, you want to do it right, Josh, you know, do the interviews over again. I mean, you've, you've just killed the show. Well, listen, I'm going to, I'm going to. I'm going to say, I know I just opened this in a very downer note. Yeah. We're heading to the mountain at the moment, you know, the, the, the few lights are flashing. The ultimate is going down. Yeah. Let's get out of this nose dive, guys. Come on. Yeah. So I do want to say that the energy in the closure community, the people who are here, we, that it, there's a lot going on, like there's a lot happening. It's just not, I think a lot of it is not like the kind of, I don't know, the kind of hype that you get in other languages. Yeah. So, you know, the whole scientific closure work that's going on, like that has a lot of pieces that need to be put together. Yeah. Right. It's like, and a lot of that putting together, I don't think it's that hard. It's like documentation and tutorials and things like that, like they could just pull it together and show some practical, like this is how you get an AI stack enclosure, you know, so that you can start doing some LLM training or, you know, I don't know what it would be, but they're, they're, they're close to that. It's just at the moment, like to use the, as an example, the Python closure thing, the, the bridge that lets you run all the Python libraries for, for machine learning, in closure, there's no good tutorials. And I've tried it, I've, I've booted it up, I've brought up a Python tutorial, AI tutorial, and I'm like, I'm just going to translate this code into closure. And I couldn't do it. It was, there were just too many things that I couldn't find. And I'm honestly, maybe not the right person to do it because I, I'm not good at chatting. Like I'm not a chatter, never been one. And a lot of these communities are like docs are asked to chat, you know, ask the discord. And I'm not good at that. And I want to, I want to document, I want to be able to search it. I don't want to talk to somebody along. Yeah. So, um, I feel like that, so like, I guess part of the part of why I'm bringing that up is like, I wish I could help, but I can't, like I'm not there. Uh, I mean, maybe I just need to suck it up and like talk to somebody, but I mean, reach out to everything, you'll listen to this reach out. Yeah. But they're so close is what I mean. They've got all these pieces. They've got, they've got talks every week about, about what's happening in the community. They're building so much cool stuff. It's just not, it's not, unless you're involved in the community very heavily, you can't be a part of it because it's not, it's not easy to use. Um, so anyway, they're right. They're writing the PhD thesis now they haven't published it yet. Yeah. Yeah. Yeah. And they'll talk to you all day on chat about how to, you know, solve a problem using it, like what libraries you need to use. Um, there's, there's like Babashka and, you know, that stuff, this, the, um, small closure interpreter, the SCI, like the stuff that is going on there, like scripting enclosure has never been better, never. And that was a complaint people used to have, but they don't have that anymore. Um, like, you know, the slow startup times. I can't write it for little scripts like, Oh, we got Babashka. Um, and just all the stuff that that enables, it's all there. It's just like maybe too late, you know? So like, so like I, I look at something like elixir, right? So, elixir is maybe smaller than closure, um, but it had a, it was really fast adoption. It grew super fast. Yeah. And I think that there's still excitement in the community because Jose, the guy who created elixir talks at every single conference. Yeah. And at the American one, he talked to the European one, like he's just always talking about something and the talk is not great. It's not like just, it's not like one of these rich hickey talks that's going to like stand the test of time. It's just like the things that he's working on, you know, and it just, he has an energy and he's like, we're working on this type system for elixir and we're, you know, there's, you know, we've been tracking the growth and here's what it looks like. And it's just like a status update similar to what Alex Miller does. Yeah. Yeah. But with more energy and more frequently and it's, um, it just, I, it's just not something that we have. There's another thing that the closure community is not as great at and this is the whole community, not just conge the tech, um, you know, a Ruby programmer who like moves to a new town and looks around and is like, wait, there's no regional Ruby conference here. I guess I'll start it, you know, that's, that's so common, right? And there's like a lot of, um, Laravel podcasts, you know, like you'll, like 10, 10 Laravel podcasts. It's a framework that'll, you know, it's very popular, but a lot of people haven't heard of it, but there's 10 podcasts and how many closure podcasts are there, maybe two. And we've been around for a long time. And you know, this one isn't even weekly, um, so I'm sick for a week. Wow. Yeah. It's just a fact. Just a fact. Yeah, well, and that's, that's, that's part of it, there's no sponsors for these things. So like, you know, there's no hope that like, oh, if I put in the, my time, I'll get paid for it. No, it's not there. So like we just don't have that, um, that same, uh, community minded, like, I'm going to get us together kind of vibe that, that you see in other communities. Um, I think we have it. I think we have it more in Europe, Eric, actually, because like, this is the, this is the thing I really missed with the pandemic because we used to have 87 closure conferences a year here, right? Right? Right. I mean, a ridiculous number. It was small. Yeah. Yeah. Um, and, uh, you know, with the pandemic that went away, but they're starting to come back and you know, it's, it's funny you mentioned elixir and Ruby because I did elixir for a while and I absolutely loved it. I loved the community. I loved the programming experience. I mean, it is the only non-list I've had like an amazing interactive development experience, like sitting in e-max doing all the repling. It's like amazing. And, um, but the other thing it has going for it is, you know, uh, Jose Valim comes from the, uh, Ruby community and he brought his people with them and Rubyists are like, amazing. They're, they're super friendly, you know, they're, they're excited. They want to tell you all about it. One thing that I think Rubyists are almost unique in is they're not shitting on anyone. Like they just want to tell you all about how cool everything is. And, you know, they're, they're like, oh, you're coming from PHP. Cool. I used to do that. Like, here's what Ruby can do blah, blah, blah. And um, you know, I think like there is a bit of that energy, I think in the European closure community as well, where people are just excited and they want to tell you about stuff. And yeah, there are a few people like me who always have to make no jokes or whatever, but you know, luckily I'm the minority in the community. Yeah, we do have to watch out for that. There are a lot of in jokes that are like anti-JavaScript, you know, and it's not, it's like, maybe not even a joke. It's just like a passing comment, you know, or it's like, or at least it's not JavaScript. You know, someone will say that and it's like, Oh, come on, like there's half the audience here has to do JavaScript. And they're not totally, they're maybe they're not unhappy on JavaScript and you just alienated them. Like, um. All right, so we were talking about elixir, I think, and JavaScript and basically not shitting on other communities. And I was just saying, Josh, I might have been guilty of that myself on this very podcast at some point, but I will, you know, I will definitely sort of own it, but I'm not proud of it. That's for sure. And I feel like I feel like this, if we look back on things, I mean, things like JavaScript and PHP, the dynamic nature of those languages is something which we should be relishing, we should be joyous about like Ruby as well, you know, because we're a dynamic language, you know. And by the way, one of the things I find quite annoying about closure in the industrial setting is that people want to, people want to have it as an executable or they want to make, they want to compile it on as kind of now, you know, I mean, maybe it will, it will squeeze out that bit of performance that you really need, but I would much rather like be having a kind of environment, a production environment, which was much more interpreted. Because it's good enough, in the end, this interpreting thing, you know, gets boiled down to Java and bytecode, and it will go fast, you know, we'll go fast pretty quick. It was fine, you know, the jiddle kick in, it'll, the JVM will work, it's magic. I mean, the closure is not my point, my point Eric though is that my just, my quick point is that distribution becomes a zero, it's not, it's not a problem anymore. Yeah. You just copy your source code. Boom. You're done like PHP. It's true. You know, that's what we used to like. We used to like, oh, we just, we just have an FTP thing open. Yeah. We just drop the PHP and bam, we're done. The changes. The next page load. Well, you said Skittle, but it's actually closure, you know, that's my point is that we, we're kind of like, we don't have to invent a whole new thing. Yeah. No, no, no, it's true. So like I, I have this side project that I recently put together and I was wondering, how can I have the fastest deploy? I don't want a whole pipeline. I don't want to jank in this that like looks at the GitHub pull requests and like, or, you know, I don't want all that. I just want something. I hit a keystroke on my machine. I'm a single developer. It's my own project. Yeah. It's a keystroke and it happens within seconds, right? And what I, what I landed on, I don't know if this is the best possible, but what I landed on was if it's a simple change, simple code change, I push to GitHub and then I SSH into my machine, it does a get pull so I get the new code and then I, I reple in. So I have a reple open behind a firewall. So like I have to be an SSH into the machine. And then I just, excuse me, I just do a require core reload all and he just reloads all the code with, with the new code. So it doesn't even restart the JVM and for a lot of simple changes, that's good enough. Like it's, and I also have another keystroke that's, you know, actually restart the server, right? It is the last, the last advantage that closure has. I'm just going to put it that way. Yeah. The fact that you are, you're working on a, I mean, Stu Halloway puts it the right way that it's, you're working on a partially correct program. It's, it's running and it's partially correct. It's not done yet, but it's already running and that's something that you is really hard to do with types, right? To have it running when the types aren't right yet. And it's something that you can do with the REPL because you're like modifying the code, you're redefining functions on the fly. The thing is, like, like I was hinting out before, that's like a multi-year process to get good at that, to get good working with that. And what you were saying, Josh, was Elixir had something like that. And I've, I listened to Erlang talks, you know, Elixir runs on the Erlang VM. Yeah. And they're, they're doing stuff that I think is awesome, but I'm also like, is that written down somewhere? Cause like, I don't want to spend five years figuring it out for myself. I would like someone to just tell me this is the best practice. And, you know, maybe explain like why we don't do it this other way, this other path. And then we try it, it doesn't work, but like just bootstrap that information in me. Because I think Erlang has similar problem to closure. Like we just, one, we just don't talk about it enough and try to explain it. But like Erlang people are doing some cool stuff with their VM and like, like the fact that here's just an example, I was watching a talk. They built a system during COVID for a hospital that had since they started 100% uptime and they had it like triple redundancy where like there were three servers running in different data centers and they were all sinking between each other. Yeah. So, and then, but there was no database. There was no separate database. You don't need one. Right, because it was just all because of the redundancy, if one went down, they could start it back up and it would sink again and get a backup from the other two. And it's like, wow, I would love to work with just closure data structures in memory and not have to map to like a SQL statement for everything that I think is important enough to save till later and like come up with a table schema and just like, oh, I'm just working with closure in memory and it's saving it all and it's never going to go away. I had loved that, but, you know, they have that. But the thing is, it just also sounded like they had 15, 20 years of experience with it. And so they knew exactly how to boot it up so that it that worked. And I don't, you know, I don't think it's written. Can I suggest something to, I mean, I'm actually working on a system right now with, with Kafka and closure. And there's a really nice, there's nice symbiotic thing there because with Kafka, you can persist anything and with closure, you can write anything and they have essentially like a key value store underlying Kafka and which is very, you know, and you can, and you can use even data structures on there as well. So it's, it's, it's really close to like a perfectly distributed system. But like you say, closure wasn't built as a, like Erlang, like the beam is something magical. The Erickson one that is, you know, always, always on system. And so they've built everything around that concept and we don't have that, you know, we're sitting on the JVM and it's really about essentially the convenience and the sort of dynamicity of list, not really about kind of like the infrastructure, you know, so there's definitely different, a different vibe between the two things. Yeah, but I can also understand that like I, I invented this reload all thing. Like I don't have read it anywhere. Yeah. Would, would a, would a someone with a couple years of a closure experience be able to come up with it? I don't know. Or like no when to run one versus one, you're going to have to reload the whole day VM. I don't know. I think this whole component system was built around this kind of concept though, wasn't it? Well, I think, and again, like, I don't want to say, well, it was Stewart Sierra and I know that they've now transitioned, but I think they accept their old name for certain, for certain libraries and things. So, you know, I don't want to detonate them, but, but they themselves in a, in a blog post said that they would accept that name for, for their, their work in the past. So, so anyway, so crude us to them for being open about their whole situation, but, but also, you know, so, but, but, but they actually made that jump themselves. But the problem to me with the component system is that it's very infectious, you know, and it tends to then be, I'm now the dominant, I'm now, I'm now on your code base, basically, which is, I think it's a kind of natural thing, but if you have an, you want a certain guarantee or a certain set of infrastructure things, then you need to buy that, yeah, buying into certain like concepts or certain protocols or, you know, processors or ways of doing things that say, anyway, right, let's stay on that point. Because I think that's actually a problem, because we have like a lot of the, a lot of the stuff written about closure or like the quote unquote right way to do closure is with stuff like that, right? So it's, it's with component or whatever the new thing is. And I see people who are like relative beginners to closure, you know, they've been doing it a year or two and they have like protocols, they have deaf records, they have all the stuff all over the place. And it's like, but all you need are data structures and you're due, you have all of the ceremony and you're struggling with closure and you're, you're like, well, this isn't really any better than Java. It's like, yeah, not if you read it that way. And it's, so there's this weird disconnect between people who really know what they're doing for building these big systems where you actually do want protocols and deaf records and so on, where they actually do help you. But that is not the case for the vast majority of closure programmers and the vast majority of programs they're writing. So this is the weird, like, and this is, I think going back to your, how do we get people started with closure thing, Eric, I do that. That's a great question. I don't have an answer. So what you're bringing up, like, I think it hits at a really key issue, there's, okay, so there is this blog post, I don't know, 10, 11, 12 years ago, when closure was getting really hot by Steve Yaggy, he was still kind of active blogging. He was, and he was a lispur, you know, he had done lisp and, yeah, very legend introduced a lot of people to emacs, which was cool, but he was, he wrote a, I think he was on the closure mailing list when it was still like a Google group, you know, or a daily news, whatever. And what he said was that closure was a no culture, no, and no, the negative culture, meaning someone would say, oh, how do I do this enclosure? And the first answer would be, no, you shouldn't be doing this. You shouldn't do it that way. There's always a no, like, oh, here's, here's the right way to do it. And I think that he was right, like, after, after being in the closure community so long, I even do it, you know, it's like, you see someone write protocols when they're not really needed and you're like, oh, don't do the protocol. But the thing is, it's working, their code is good and working and like, and they're just using the tools that the language gave them. And maybe we should be a little bit more, yes. You know, a little bit more like, okay, yeah, hold on, bite our tongue a little bit and say like, yes, and you, though, well, we'll start. But like, my whole thing is to start with the praise. Start with the congratulations. You got a program working in a new programming language, new to you, like, good job now. Let's go over how we can improve it. Instead, it's a lot of negative, like, oh, don't put a def inside of a function. You know, don't do this and it's like, well, that's a lot of critique for a beginner. But do you think that's actually happening in the closure community? Because I don't see a lot of that. So like, what I'm talking about is, I'm not talking about, like, criticizing people for having protocols when they don't need them. Yeah. What I'm getting at is like, why are people writing this code? No, I agree too. I agree with that. There's not having fun. Right, that's the other side of it where they're, as beginners, they're maybe, they see a parallel between their Java object orientation and protocols and they're like, oh, this is how you do an enclosure. And so they're kind of writing Java enclosure. And I agree with that too. And that's going to happen. I'm going to, yes, and you, that it does happen. And the thing is it happens. It happens in every, you know, every community, someone is writing their last language in their new language. Yeah. Yeah. And we have to, we have to support that, like, transition in a positive way. And I think that it's, it's similar to like how people, people will often say something like, you know, don't use a macro, like you don't, like probably like your default should be, don't use a macro until you really know you need it. But that same person probably spent a year playing with macros to learn. Yeah. And so they're not supporting someone else playing for a year with them. And they're, they're, they're trying to, I don't know, maybe save someone from a year of waste of time or what, but they're, they come off as negative. They come off as instead, they're doing like, do as I say, not as I do. And what they, what we need is more like, Oh, wow, protocols. That's a cool way to use them. Let me show you how to do it without protocols, you know, like, you, you, you, your implementation protocols is 50 lines of code. If you just use the closure map, it would be three lines of code. Yeah. And, you know, a couple of keywords. So, you know, the other thing, by the way, with macros, which I mean, you know, I think we've all, we've, we've kind of been like dog whipped into not, not liking macros, and I, I sort of rejected that a few years ago and decided that I will write, you know, a macro a year or something like this. And yeah, I mean, I, the question is why, you know, and I think that's the problem is that like we, we often miss like, oh, you know, why should we write a macro? Why shouldn't we write a macro? Perfectly good reasons to write a macro, the perfectly good reasons not to write a macro. And I, you know, half of the bloody core, you know, this whole chord of air sink is written in a macro. Yeah. Didn't have to be, but it was. So some of the bosses are using it. That's for sure. Yeah. You know, a depth is written in a lot of macros, spec, spec, sorry. But you know, and again, you could argue that we shouldn't be written in macros. But it is. And, but for me, I often think about it as a way of like, you know, I think like all of us do is a way of reducing boilerplate and it's one of the powers of language, you know, if you see repetition and you can't get away from you, you could use function passing. But what about if you just like used a macro instead and it wouldn't, wouldn't it be so much easier? And yes, especially for things like exception handling, it makes a lot of sense. But there are, there are certain things where you want to like, put things together and you can't compose macros and then hey, presto, you're out, you know, you're out of luck. But people don't, people, and I think as long as you can be clear that, look, and again, education is what it's all about Eric, you know, that's where you're coming from. That's, that's your jam. And it's very difficult to, you know, like you say, you've got, it's a people problem, you know, people want to come in and they've got an ego. They were very good at their previous language and they want to be good at this language because they're, you know, they're a good programmer. Right. And, and there's no, there's no guide that's like, hey, if you've been doing object oriented programming and Java, and you've got all these ideas about how a program should be structured, it's not subtle like, oh, you translate your for loop into, you know, a map filter reduced chain or something. It's not that simple. It's like, you first start with this idea of, like, I'm going to have this class and it's going to talk to this class and talk to this class. And so you, you start like, well, I'm going to need something that's that class, like, is it a protocol? Is it a namespace? Like, where does it like, no, you don't need all that, but that's where they're coming from. Yeah. But we don't have a guide for that person. We don't know. Like, it, and I say we're negative, we have the no culture, like, it's just one way of saying that, that like, there's no, we don't, we don't, as, as people in the closure community, answering the questions and trying to guide people, we don't have those resources. So like we, um, I see a lot like, okay, one of the reasons why I think spec did not succeed was it had a very no culture. So when someone would ask, well, how do I do a closed map? The answer was always, oh, well, we, we shouldn't do a closed map. And, uh, you know, we've found that every time we do a closed map, we regret it. And so we're just not going to even have that feature. And it's like, okay, but like, you're, you're, this isn't just, this isn't the only thing you're saying no to. It's like every single question is an answer like that. What are we supposed to do with this thing? If you have all these great best practices, like, oh, we do it this way because of this and we do it that way because you're not sharing them. Like they're not, they're not saying like, I mean, I remember when spec was released. Here we go. Like maybe be canceled again. Like spec spec was released, um, it was on, I think the cognacast podcast where, uh, Rachiki was interviewed about it and he was like, yeah, we, we made these great tools and we're happy. We're looking forward to seeing what people do with them. Yeah. And then the nose started coming back from them like, oh, no, not like that. That's not what we meant. That's not what we meant. Like, well, you, you're the one who just opened the door and just said, let's see, what you do with it. Like give us some guidance because I do think that they might have a lot of great wisdom about how to build these systems using it, but I don't see that, you know, more positive guidance coming. That's, yeah, damn. And so I, I, and I think that that happens about everything, like how do we work with maps? I don't even know. Yeah. So someone, someone who's like steeped in a, in a very type-based language, they're like, how do you, you know, you're just throwing stuff in a map? Yes. And I, that, and it works and, but then there's probably like a million little practices that I have that coworkers have about how to, how to make it work so it doesn't turn into garbage really fast. A great example of that, Eric, was this, this, the, the Spectre library, where, I think, Nathan Mars, the Red Planet guy, yeah, very smart guy. And he came out with this, I mean, very big closure advocate as well. And he came out with this library called Spectre. Closures missing. He called it Closures Missing Core Library. Yeah, exactly. Yeah, yeah. I mean, he's got an ego. Fair enough. That's right. And he's done some great stuff. So, okay. He's got an ego, but, you know, and, and, and, and, and, yeah, yeah, yeah, exactly, you know, again, big, big claims, anyway, but, but the point is that he, he came out with this, like, Spectre library. And I mean, basically everyone was saying, no, it's like, well, you shouldn't make your maps like that. You know, your maps shouldn't be that deep or that complicated to require such a complicated library as Spectre, and it was kind of like a very peculiar thing, you know, because he, he, there was Nathan, like, making claims that like, well, in the real world, there are these, like, complicated maps and these complicated data structures and he is a library which will actually help you, yeah, it's a bit complicated and I've done some documentation on it. Maybe it's not enough. Who knows? I didn't, I've never used it, to be honest, in anger. You know, where in the real world we have that complicated stuff and the 8 gigabyte JSON files that API's are returning to us, right? Yeah, probably. Yeah, for sure. Yeah. Yeah. Yeah, but my point is that, is that like, like you were saying, like, if you, if you have a, if you have a preference about how to use maps, then you wouldn't need the Spectre library and you would need, and you would need like, oh, like, if you want to do a reduce and you've got update in, you've got a sort, you've got, you know, you've got, uh, uh, assocking, you've got all these sort of things. This is the sort of thing that you should be doing. This is the sort of, this is your, this is your real world data structure and this is how you manipulate it using the core libraries. And if you want to go outside of it, then, you know, you might need to invent something that does this or does that or does the other and we're not going to do that because it doesn't have, like, generic appeal. You know, that, that kind of thing could be interesting, again, from a developer relationship perspective, if they have people like that who want to, you know, sponsor content or whatever, you know, it could be, this could be all great stuff, you know, or like, you know, the sort of stuff in your making and your courses, you know, well, and like, uh, Johanathan Charlotte's book, the data oriented programming, like, I felt like that was a really great attempt at explaining, like, what is this data oriented thing we're doing anyway? Yeah. And, um, you know, it, to me, like the, it was great that it happened, but the sad thing is like, wow, we hadn't really tried to tell anybody yet, you know, like, and I mean, even like beginners, like, we didn't know what to say, we're just like, use a map. What are you doing? And like, he actually broke it down into, I think it turned into four principles by the end of the book, um, that was like, you know, at first, you're like, no, it's more complicated, no, it can't be that, like, you know, and then like, after a while thinking about it, I'm like, oh, yeah, that's kind of it. That's what it is. It's just using generic data structures. Um, what's another one? Um, functional programming, so like immutable. Um, so there's, there's four principles. I can't remember them all. I think it's, it's no, don't do it. Do validation at runtime and set up a compile time, stuff like that. Yeah. Right. Well, yeah. And he has a whole tree that he worked, you know, as I, I'm an author and I know like you think so deeply about these ideas, like you want to schematize it, but then it's like, this isn't really appropriate for the book. He has a whole cool tree that's like, you know, you take the left branch, you're using immutable, you take the right branch, you're using mutable, and like he, you kind of walk down these choices and you arrive at data oriented programming on one branch. And functional programming is like, is, is another choice, right? So it's, um, is that, you know, it's, it's cool that, that he's actually gone deep on it and thought about it. Yeah. Well, speaking of going deep and thinking, um, the recently ostensibly had you on was to talk about abstraction and shit has gotten pretty abstract already. So, but just to kind of wrap off this, like, you've given me something to think about that I haven't thought about before, which is like, we need a book, you know, closure for Java devs that is not here is how to write for with map reduce and filter instead, but it's actually like here is how to build a real program, you know, because if you're coming from Java, you're probably building industrial software, right? Or sorry, that sort of program. Um, and I think another interesting way into it though, is like the way that a lot of people have come to closure is they've seen a rich icky talk and they've, they've seen the ideas and then they checked it out and like, that's actually something I think you're pretty good at, which is talking about ideas and in your newsletter, quite a lot of the time you don't even mention closure, right? You're talking about ideas, but then every once in a while you do mention closure. And I think, um, I wrote a blog post about the heart of closure conference, which I still haven't published. So I'm even later than your monthly wrap up. But, um, in your closing keynote, I don't know if you said the word closure in your talk. So I think I did. Yeah. So what in the world were you doing on stage at a closure conference? Not talking about closure. Uh, yeah, good question. Um, so my original idea for the talk, and I think it kind of stuck pretty close to that was to, you know, again, also I was expecting the talks to be much more about people, uh, like I talked about before. Um, it was about how abstraction is this uniquely human thing, this human skill that we have. And just kind of explore that and celebrate our skill of abstraction. Um, so, I mean, that was kind of the, the, like beginning idea of that talk. And I think I got pretty close to that. It, it explored, uh, abstraction from, you know, the fossil record of like how can, can we figure out the cognitive capabilities of like pre pre, uh, human hominids and, uh, there's actually, it's not just me. I didn't do any research into that, but there's, there's a, there's a whole branch called, uh, cognitive archeology that's looking into this. And I just looked at what they said basically. Um, but, uh, put it in a talk form and then went through some examples of in history of like important, um, moments in, uh, in the history of, of ideas that were like now kind of we all take for granted as like, this is how abstraction works. And it's like, no, that was invented by like one person. Uh, and, uh, we all do it now. And so just like trying to set up this idea that we've got this legacy that we're all carrying around, uh, of, you know, a genetic legacy and then a cultural like educational legacy, uh, that we can make use of in our, in our lives. So the thing I think this is absolutely right. But, um, one of the things that I posit is that, um, I mean, we are all abstracting all the time, but I, I posit, I think you posit it maybe he's in your talk as well, that every level of abstraction kind of in the human world, we have, we, people drop off. Um, as we get into further and further like, uh, depths or heights of abstraction. Let's say, you know, we get people get dropped off. So a great example to me is like the difference between, um, arithmetic, algebra and calculus. Now those three things, not everybody makes it to calculus. Yeah. Yeah. Yeah. I'm not everyone makes it to algebra. Right. Right. No, it's, um, so I, you know, I feel like I feel like there's that, there's that kind of, um, although, although it's correct, I feel like there's some abstractions and I don't want to be elitist about these things because I'm not saying that, you know, there are certain people that can abstract and certain people that can't, that's bullshit, but you know, it depends on it. It depends on education. Like you just need education. Yeah. That experience, really, unless you're Newton or, I mean, you know what I'm saying? Like you have to be very special to come up with it on your own. Yeah, exactly. And so this is kind of like, well, let's jump on that because okay, you said the word invented by one person and then you have to be pretty special to come up with it on your own, but the calculus was invented more or less by Newton and Leibniz at the same time. Right. So something was in the air. That's right. They're putting pieces together. Yeah. It's a scientific community. You know, um, so this was in a way, a hive mind, uh, of which Isaac Newton, you know, like I'm not saying he was just some dude, like clearly, you know, he made some leap that, that, you know, only one other person was currently making at the same time. So I don't mean to shit on Newton. I mean, I could, you know, there's all sorts of reasons to do that. It's true. Wow. Uh, we don't need to go there. Um, I think it's too soon. It's too soon. You're meant to drink mercury. I mean, come on. Uh, well, yeah, no, I know, I know. It's that's why it takes Josh. If that's what it takes. You're absolutely right. And that's, that's kind of one of the, the themes that I tried to weave through. I don't know if it came through. It's, it probably didn't, but that, um, the ideas are often and co-invented. Mm hmm. Independently co-invented and I, not two people working together, but two people working right sometimes a part or like one person will invent it. And then like their journal is like lost for a hundred years. And then someone else will invent it in the meantime. And then it turns out that they invented the same thing. But yes, there's something like in the, in the air, they're all working in a group communicating. Um, there's also the privilege that a lot of people have in this. So like Newton being like independently wealthy, um, able to just be a scholar and not, you know, work at a, work in a coal mine or whatever. Um, and until they made him run the mint, right? And could afford, well, yeah, right. But, but he could afford all of the like equipment, right? He could afford to like order these weird chemicals from all over the world that were very rare at the time. And drink them. Yeah. And I'm like, well, he drank them. He burned them. He did, he did all the alchemy stuff. He was actually. Yeah. And also, this is the thing I wanted to get into in the talk that I didn't, which is, I think we should on alchemy too much. Like totally. Like when was the last time you invented chemistry? That's what I want to say. Somebody's like, all those alchemists, they thought they could turn lead into gold. Dude, they were doing real stuff that chemists still do. They're, you know, melting compounds and doing reactions. They just didn't know what was going on. And they were doing their best to explain it. Um, it's in the name. Come on. Yes. Exactly. Exactly. Um, and, uh, by the way, the other thing I was going to say to you was, and I think you mentioned it in the talk, and it's not mentioned enough is that, and it's a sort of so, so, um, so like, annoying to me and frustrating is that people, some people at least have this concept that like Western civilization is responsible for all of like the benefits that we have in the modern world. And it's so bullshit. You know, that like, you know, algebra, okay, Newton was a great guy. And he was on the West, you know, an Einstein's great guy. There's a nice guy. But, but hey, you know, what about, you know, all of the kind of Chinese, Indian, African, Asian people that invented, for instance, algebra, you know, not a Western dimension. That's right. It was, it was, uh, it's an Arabic invention, for sure. Um, but the decimals that we're super good at taking credit for shit and appropriating shit, like, we're the best. Yeah. I think we're, you know, we're, you also have to look at how different cultures kind of have their own. Oh, yeah. Uh, we have, we, we, every culture has their sort of golden age, you know, and true. And so, um, you know, it's Western culture. If we, if, if Western culture is like influencing more, it's because we're in the golden age of the Western culture right now. Uh, and we're, you know, we do have a bias when we look back and, but then like in a, in a thousand years when we look back, we'll be like, oh yeah, that was like a, it was a really flourishing period of that Western, you know, hemisphere. And then it just kind of went back down to average. Uh, just like we could look back and say like, Oh, look at this Arabic period where they like invented all this cool architecture and math and science, poetry. They were just doing all sorts of cool stuff. And then they just kind of came back down to average. And you can say the same about Chinese. You can say like all these different cultures have their flourishing's. And then they, they regressed to the mean. I think we could say something about empire in there as a reason for golden age. I mean, the Arabs had their empire too. Like, no, that's what it's something to it. Chinese empire. Yeah. You know, yeah. Yeah. Yeah. Yeah. I mean, let me add something again. I mean, towards immigration because there seems to be a problem at the moment with immigration in certain countries, in most countries, most Western countries at least. And yet a problem with people dealing with the fact that there is immigration or well shit on immigrants, basically. Yes. And you know, both you and I are immigrants. Josh, you know, you're an immigrant to Sweden. I'm an immigrant to Belgium. And yet because, you know, we're white men, we're probably, we're probably one of the good ones, you know, two of the good ones. Okay, do my maths. Well, one, I don't know about you. Yeah. Okay. But I was going to say that if you look at America, all the kind of stuff that happened, you know, like pre the second world war even, you know, the fact that like, they put this whole thing together for the the Manhattan project, it wasn't made of Americans, you know, there was some there obviously, but there was a lot of immigrants working on that project, all the high tech stuff that have been built so the can Valley, a lot of it's being funded by Americans, but it's coming from immigrants. And what I'm saying is that when you've got a rich civilization or rich, a rich court, as I say, empire court, they call it the imperial core, you know, with this imperial, yeah, Nazi immigrants, yeah. When you've got an imperial core, any imperial core, you tend to attract the sort of best and brightest for the from the other parts of the world. And then you like you say, you then you take credit for their work, because it happened here, you know, right? But in fact, you know, so so that's, you know, that's where the bullshit is. But but the history is definitely that that kind of like abstraction and like the development of the civilization that we call it at the moment, as being multi centered, that's for sure, you know, yeah, and I like that about your talk a lot that you definitely you give truth to that, you know, I if I have a regret is that it was very hard, especially going further back in time to find examples of women doing it. It's they just have not been represented well in history. Yeah, yeah, history has kind of erased a lot of the contributions of women and it's just hard to find hard. I think a race is exactly the right word, right? Because I mean, obviously women were doing science and for sure. I mean, a lot of as we know, a lot of women were writing under pen names that, you know, sounded male. So I think that was one really interesting thing about the, I don't know if you saw the shoulders of giants talk about the foundations of Lisp, which also I thought was interesting because it was about people and not really technology at all. And it there was one Hungarian mathematician who's a woman Rosa Petter, I think her name was. And she was like the only mathematician mentioned in that talk that I had never heard of. And I'm person who actually enjoys reading about that sort of thing. I'm not a mathematician. So I'm just an ignoramus, but I'm an ignoramus who enjoys reading about mathematics. And, you know, it's like surprise, surprise, the one mathematician of who made important contributions in this chain that led up to, you know, the discovery of Lisp or whatever happens to be a woman. And so yeah, I think a race is the right word. Yeah. Yeah. I think we've got it a lovelace as well as the first programmer and Marie Curie in the kind of like the search for DNA and stuff like this. You know, there's all these Marie Curie. I believe so. I believe it was radiation, right? Oh, radiation. God damn it. There's a woman involved in the DNA race that Watson and Craig stole. Yeah, the still results from. Yeah. I mean, you know, she just didn't give a fuck because she just thought, well, in the end, it's all going to get found out, you know, so I'll share. Yeah. But yeah, but they got the prize. Right. So this, yeah, I heard different. I heard like the story was that because she was a woman, she had to be super careful with her results or they would be discredited. So she's super conservative. She was getting more evidence and then they were two men came in and were like, Oh, we could publish this. And they just public, you know, they made it a little bit of work and they made a model of it and like published it. And you know, yeah, it's like how, you know, men will apply for a job where they have two out of 10 must haves and women have nine out of 10. And they're like, ah, I'm not qualified for this. Right. Right. I'm laughing, but I guess it's not funny as much as well. Yeah. But you know, what are you going to do? Yeah. Well, let's just be aware of it at least and push our awareness, which is the most important thing that we can do now, I think, you know. But yeah, I mean, I think the whole abstraction thing, Eric, I mean, one of it's got back to that because the thing that I found like kind of like interesting at the end, which we were talking about, like a bank, a bank can be represented by a computer. And I also thought that a computer can represent a bank, a bank can get rid of this. Like, again, there's like, you know, having worked in banking systems, I think Josh has as well, and maybe you have as well, Eric. But you know, there are like a million banks on top of FinTech is all about essentially rewriting banks in software. Yeah. And bits bits of the bank. And you know, so I'm wondering where we're going to go with the kind of abstraction stuff. How where do you feel like it feels to me like software and computing is where abstraction meets the real world these days. That's where we're kind of like integrating abstractions, like on the floor and on the websites, all these kinds of things, you know, right, right. So, so one of the big questions on my talk that I was trying to speak to to answer partially was how is it that we can basically build a bank out of electrons? Like a bank in, you know, if you really think about it, it's like accounts of gold, like big vaults of gold, like it's just saving money, right? Now our money is all, you know, data. But how is it that we are doing this? We like think of it as the same and like kind of works out, right? So that we can just run it all on a computer. And so I try to, I try to explain that throughout the talk that we're able to do it because there's a correspondence between the abstract operations that we're doing and the concrete operations that you would do in a bank like moving gold from one account to another is a transaction. And that transaction is just represented as some data. And somehow they correspond. And we found these correspondences between real world operations and these abstract operations. Yeah. Well, I mean, a ledger itself is an abstraction of right. That's right. Vaults of gold, right? That's right. That's right. So it was all, it was pre abstracted. That's another, another advantage that accounting had is like someone had already figured out, this is an information system. All we have to do is write down like what account is it coming from and what account is it going to? And we put in each of the books, each account has a book news, right? Like deposit from this account, this $600. And then in the other one, you say credit or sorry, debit and credit 600. Yeah. Instead of deposit, it's like a credit. Yeah. Credit $600 here. The other one is debit $600. And then it should all add up in the end, just like if you had gold and none goes missing, you know, in somebody's pocket, like it, it, it works out. And so it's pretty abstracted. So all we had to do is kind of digitize that, like make a database instead of a book, right? The real hard thing that we do as programmers is we're abstracting stuff that hasn't been abstracted before. Right. Right. People might be good at doing it. You know, an employee knows how to fill out this form and then where does it go? Have to fill it out. And like, we have to go through and figure out like, what are the forms that get filled out? And where does each bit of information in the form go? And like, what, what are the values that are allowed in this form and stuff like that? And abstract it into something that we can build on a computer. And I guess another thing that I wanted to get through in the talk, and I don't think I succeeded too much of this, is I wanted to have like a set of modern thought tools that were like, this is what makes an abstraction better and then a better and then better. It's like we've got all these, like, it's not just like, okay, yeah, the basic, you know, table stakes is that it works, right? It does the right thing that money adds up correctly in the end, right? But then like, you know, what if you make a simplifying assumption, like just like in physics, you might say, we're ignoring air resistance in this problem. Is you know, to I've been in situations where I'm telling my boss, well, we're just going to ignore that and they're like, Oh, no, but it's important. And it's like, it's, it's a simplifying assumption. Like, I don't know if we can even come up with an abstraction that includes the complexity of, of these little details, you know, and, you know, it's web scale. Doesn't matter if you like miss a percentage here or there, you know, and I try it. That's really hard to do. It's, it's the same kind of trouble that, that I've had with people where I'm talking in probabilities and to, to, I mean, honestly, to, to someone who's not trained in probabilities. If I say 90%, yeah, 90% is, you know, 90% accurate. They think they think it's perfect. No, they think it's perfect. That means every time, right? Like, no, 90% is bad. So, you know, there's, there's, there's that kind of good abstractions. I mean, the pandemic proved this as well. That's right. Yeah. That's a thing that Alan Kay talks about is like, he had this back in like the early 90s with AIDS. He was trying to show that like, yeah, it looks like there's not much AIDS in your community, but you're just looking at the, you're looking at the present, very small, you know, hole into the time, right? But if you could project it out and you know that it's exponential, that, that people have, people have the virus now that are not showing symptoms, right? And they're going to be giving it to other people and they're going to be giving it to other people. If you could see five years out in the future, let's say, you would stop now, you'd be like, Oh, let's stop. Whatever we're doing, we got to, we got to stop this spread. But you're just seeing, Oh, it's just like a couple percent. Like it's probably not a big deal, but that's going to double every two years. It's going to be almost everybody. If you don't do something. Yeah. And even if it's just a couple percent, I mean, like, I blew somebody's mind last week at work where they were like pointing to their 99.8% availability and like, that's good. And I'm like, yeah, but that's terrible because if your system is unavailable, planes can't take off. And guess how many hours a month, you know, zero point two percent this? And they were like, Oh, shit. Right. Yeah. I mean, I remember we were, I think this was a machine learning class back in grad school. It's called AI now, Eric, please. Let's come to that in a minute. Okay. Let's have the quent reminiscence first. Yes. Okay. So I mean, this was before deep learning and stuff, but the it was a lot of it was probability back then, right? Like you're doing a lot of probability. So a lot of what we did was learn, learn probability and how there's stuff like you're doing, we learn stuff like if you're having a medical test and it's 99.99% accurate. Yeah, which sounds great. It sounds like like let's do it. Like we'll get a lot of good information from this. The problem is that if the disease that it tests for occurs one in a million people, then you're going to have more false positives than then you're actually going to capture people to have it. And so this and this is a thing that like even doctors, highly educated doctors make this mistake a lot because if you don't, you know, in your head 99.99 sounds like I'm never going to see a false positive, right? But if you have a million people and only one of them has it, you're still going to you're going to have like a hundred people are going to say, or more probably a thousand people. I don't know. I haven't done the math in a long time, but like a thousand people are going to have positive. And so now you have to figure out which one of those thousand has it. So it's that kind of reasoning that I that we need to get to as programmers as that's kind of where I was trying to get to that there's like a history of like big inventions of like leaps that this lets us think better about our abstractions. And we can apply them. And because we have computers, it helps us. It helps us build the models better because we, you know, we're not just like writing on paper, we can actually run it, we can actually test it. Yeah. Yeah. We can get to quicker. Yes, regular specifications. That's my runnable specifications book. Yeah. Is that that, I mean, the main idea behind runnable specifications is kind of the same thing that like people talk about declarative programming, where a lot of programming is you like work something out on paper, and then you figure out how to translate it into for loops and if statements so that it gets the right answer. But what if you could just write it directly in in whatever the best language for that specification is, and then it runs like like ideally it runs fast enough efficiently enough that you don't need to optimize it. But even if it just runs like 10x slower than what you would like it to, it's running you can test it. It's maybe your model is wrong. Maybe it has problems that you hadn't foreseen on paper. And so the idea is like we want to get to this point where we're expressing stuff at the level of the problem. And then it's good enough the way it is. And if it's not, at least you can use that specification that you wrote 10x too slow. But you can use it as an oracle to write tests for the optimized system. So you can just give the same input to both and see if they get the same answer. So yeah, that's the idea behind that. That's a great idea. I think the main thing for me is that it's very easy on a bit of paper or something like this to just forget how these data structures relate to each other. How can you access one thing from another thing? And they've been following your progress on the book. So this idea of like, oh, you want to get access to the price about a coffee. You want to work out, oh, how many, what's the size of the cup or what's this, how, where do these things belong? Where do these things sit nicely in the system? I think that is a skill which I think you've talked about, which is drastically and dramatically underplayed. This ability to make those abstract, those abstractions and to segregate the decisions. And then if you can do it through vulnerable abstractions, then I think what you're saying is you can use it as a little laboratory to try these things out. And then again, get fast feedback and say, oh, actually, you know what, if we, because whenever you've got a low price thing, whenever things are low cost, then you will do more experiments. Right. It's qualitatively different. Yeah. I mean, I think that that is, you know, going back to the REPL discussion, like the basically the last thing that closure has a big advantage on is it's dynamic. You can run it even when it's not all the way working. Like the feedback you're getting and the number of experiments you can do is so high. Like, you know, look, I'm not, I know we just talked about like not ragging on other languages, but I'm going to say a thing about Haskell, not ragging on it. But when I programmed in Haskell, people would say stuff like, well, as soon as it as soon as it compiles and it type checks, then it's very likely to be correct. And I found that to be true. I did. It was, it was, it was a, it was a kept promise. Let's call it that the problem was, I also often learned that it wasn't what I wanted to do. It did what I said, and I got it working. And then I'm like, no, that's not really right. And so I just spent two hours getting it to come to find out that it wasn't right. Same with refactoring, you know, like I'll add a, I'll add a parameter to a function and then spend spend an hour following the error messages. Oh, you have to add this to here. This is has a needs of parameter. Okay, trace it through. And then like, no, that doesn't look right. And undo it. Right. And so it's, I guess what I want to say is the dynamic nature. We give up having a type system, having a type system is nice. If everything's right, you want it to like, keep it right. Don't let me break it. All right. That would, that's very nice property. But the idea is that it's you're, you're often not right. You're often wrong, and you don't know it yet. And you would like to see, am I right or wrong? And committing to types is expensive, because it removes that experimentability. I think that's why closure was, and probably still is, a good start of language in the sense that people want to experiment a lot in their ideas and refactor things and change things and change ideas and change your mind. And it's a really good whole thing. I'm just going to, I hate Paul Graham and he's awful, but I will say that, you know, in his whole list is the secret weapon, you know, they were a startup and they could just experiment 20,000 times faster. But back to you, Ray, sorry. You know, that's, that's the point. And, you know, I think the thing about closure is that you can experiment. And often you don't even need to rewrite it, because it's good enough to actually deploy in production once you've finished your experimentation. But like you said, Eric, if you do need like that extra performance or whatever, then you've got a great, you've got a great kind of data model, you've got a great kind of set of abstractions, that if you want to, you know, optimize them in like go or rush or Java or whatever, or Haskell, then you've kind of got the basic data model and the basic set of abstractions there ready to sort of like drop in. And you've kind of went to that experimentation phase. Now, whether anyone wants whether many people do that or not is like up for the bit, but this feedback is really important. I think that's the main thing that one of our abstractions is all about. And I want to, I just want to also say, I'm not great at Haskell. There might be like workflow practices that I would have learned in, you know, if I had a few more years in the language of like, right, like one thing I remembered, tiny holes, I think, no, one thing I, the thing I remember learning like just after I stopped was that you never add a, you never modify a function, if you're refactoring, you make a copy and you put a two on the end. And then, then it lets you modify it without breaking anything that's already working, you know, like, okay, I didn't, I didn't know that. And so I didn't have that in my workflow. Yeah, yeah. Well, there was one thing, Ray is distracting me in the chat with all of these interesting things, but you said something super interesting. You're breaking the fourth wall here, man. Yeah, one of you. Yeah, sorry to reveal the, you know, behind the scenes, behind the curtain there. But no, it'll, it'll come back or it won't proceed. Something about I always say interesting stuff. Thank you very much. Oh, no. Yeah, experimentation. Right. So there was another, this was one of the last Euroclosures back when Cognitec used to do them. And I forget which one it was, where it was. But Nada, I mean, gave the closing keynote. And at a closure conference, she gave a keynote on towers of interpreters in Scala. And somebody asked her afterwards, like, you know, what's the deal with Scala? You know, this is a closure conference. And she was like, yeah, I rate closure too. And one interesting thing she said is that I use a Scala when I'm solving a problem, I already know how to solve, because the type system is helpful. I use closure when I have no idea what I'm doing and I'm exploring the space. And like, that really resonated with me. And I realized in my work, I'm almost always in the latter, like very rarely am I solving a problem that I've already solved a million times, right? Yeah, that's such a great place. Right. I think we're on our clock is like so many hours now, where we've really kept you for a long, long time, Eric, and deep, we're very grateful for it. But I think we should start to wrap up because, yeah, yeah, I just got a bed over here, you know, yeah, yeah, I should go to I was going to say something. So how do we wrap up? Y'all are the hosts. God damn it. Yes. Okay. Did we lose Josh? Oh, yeah, I think it's just frozen a little bit there. Maybe she's back. I don't know. Yeah, what I was going to say was maybe it's to wrap up a little bit was, you know, you're writing books in general, you're adding a lot to the sort of closure community in terms of your educational material, et cetera. What's your sort of forward looking advice to maybe some decision makers out there, maybe who are wanting to adopt closure or movies who are kind of like, we say, at the core team or core team appropriate, you know, maybe it's two kind of like camps there. Like, maybe you can't talk to the core team, forget those people. I mean, you know, they're very difficult to reach, I think. But let's talk to the community or to adopters of closure. What's the kind of prognostication from Eric Normand tonight today? The prognostication. Your forward looking forecast, and this is not a financial advice, but... No, no, don't put any stock in that. But the... Oh, no pun intended, clearly. I think closure is not going anywhere. Like, it is cemented itself in enough big companies that it's going to be around. So it's not like, you know, fading out of existence, anything like that. I think that it actually is going to have, because of the support from New Bank, it is going to have new... What do I want to call it? New development, you know, like this whole ad-libs thing, I think is great. It's a big deal. I don't know if we'll ever see the kind of growth or excitement, or even just like media presence that we saw at the beginning of closure. I don't... I don't know. It doesn't look like it's just going to happen. It's not happening now. And so, you know, I've talked to a lot of people outside of the closure community, and they're like, "I haven't heard from about closure in so long. Like, I thought it was dead. I thought no one was using it." Which is just the way people think. You know, they don't hear about it on Twitter. It's not in their circles. And it's not like big enough to like burst their internet bubble. You know what I'm saying? It's like not on the front page of Hacker News that much anymore. You know, it's that kind of thing that we're not that present for them. But at the same time, like, you don't know how many people I met at heart of closure who worked at New Bank as like junior programmers, learned closure, and then moved on. And they're like, "at startups." They're doing closure at other companies. And this is just the people in Europe. Like, I just imagine in Brazil how many more people are still there who are moving on from New Bank, but still want to do closure. So, I think that there's something there. There's something brewing. Like, New Bank for all the criticism that may or may not end up in the podcast of New Bank as a, you know, steward of closure. I feel like they are educating a lot of people in closure who might not even have wanted to do closure in the first place. They just wanted a job. And now they're learning closure and they're getting good enough and they're moving on and looking for bigger opportunities. That's great. That's awesome. They're this engine that's like, frankly, it's the kind of thing that I've always wanted for closure is like a place that was going to train you up and give you a decent salary and like, you know, do it at scale and then have this just people coming out of them there that are good enough. And I think that that's happening. Pitch did that as well. And I think to a lesser extent, maybe Griffin over in London, because I know they're hiring programmers who, you know, don't yet know closure. So I think, yeah, exactly, Eric. And that was, that was what I was getting at with my old like comment way back when on, I don't think new bank cares about. Maybe that the really to get those lovely points, though. No, no, no. But this is the positive side of it, which is exactly that new bank will hire programmers who do not yet know closure. Yeah. Right. And then, and then teach them closure or give them. I mean, and I've heard really, really good things from folks who've worked at new bank about the support and education you get. So I mean, it's very structured education. It's not just like, here's a code base. They have a team that's like dedicated to education training and yeah. Yeah. Yeah. So I think that that in a sense, you know, I hope that new bank is not the only producer of new closure programmers. But they're probably the biggest and like, they could dominate in terms of numbers. And like, but that's frankly, you, you want something at that size, right? You just need, you need the scale. And I think that that's great. Like, it, it could, it could keep closure fresh, like new people coming in. And that's really what we need. Like, you know, we all have gray hair like, you don't want it just to be a gray hair language. You know, you wanted to, know, to have, have some fresh blood. Right. I think that I think that fresh blood is a perfect way to wrap it up. You know, thank you again very much, Eric for your words of wisdom. Thank you. We'll have you back again when Josh has agreed on a new way to do this. I thought you were going to say when Josh has been fired, and we have a new host who wants to read the video. I wasn't going to tell you that live on there, though. I was like, all right. Well, we're going to read and review your performance afterwards, Josh. Eric, be prepared. You know, five stars, five stars. Okay, perfect. Thank you. Thank you. I give them five stars. Yeah, but it was, it was great, Eric. Thanks. The longest I've ever gotten to talk to you. So hopefully this will be not the longest we'll ever talk in our lives, but it's been fun today. Yes. Likewise. Thank you so much. This was great. Okay. Bye. Thank you for listening to this episode of Deaf Ann and the awesome vegetarian music, how the track is Melon Hamburger by Pizzeria, and the show's audio is mixed by Wouter Dillard. I'm pretty sure I butchered his name. Maybe you should insert your own name here, Dillard. What's up? If you'd like to support us, please do check out our Patreon page, and you can show your appreciation to all the hard work for the lack of hard work that we're doing. And you can also catch up with either Ray with me for some unexplainable reason. You want to interact with us, then do check us out on Slack, Clujarian Slack, or Clujubus, or on Zulep, or just at us at Deaf Ann Podcast on Twitter. Enjoy your day. I'll see you in the next episode. [Music]