Become a Creator today!Start creating today - Share your story with the world!
Start for free
00:00:00
00:00:01
#91 Josh Glover image

#91 Josh Glover

defn
Avatar
61 Plays1 year ago
Josh joins us to talk about Clojure, engineering, teams, lambdas, Babashka and more :) Follow him on https://mas.to/@jmglov and his adventures on https://medium.com/@jmglov
Transcript

Introduction and Cosmic Recording Joke

00:00:15
Speaker
Hey, welcome. Welcome to Deaf Air. Oh, yeah. Episode number 91. And we're, I mean, we're on a roll, actually. So this is, I mean, probably the people who are listening to this might listen to this like a week apart or a month apart, I don't know. But we just recorded yesterday, one episode and today. This is like, you know,
00:00:39
Speaker
climate change level, earthquake and definitely scheduling because we usually record like one episode every
00:00:48
Speaker
I don't know. It's a cosmic event, you know? It just happens once. Yeah. But I feel like the normal situation is more like climate change. You know, it's like long drawn out. When's the next one going to come? Nothing ever happens. You know, it's more like that. This is more like a heat storm or something. Exactly. Yeah. It's like a solar storm. 2020 of Deffen, you know, all the shit just happens at once.
00:01:14
Speaker
Yeah the most we've ever had like i don't think we were going to win a weekend would you say that's what happening. Definitely right on the brand just cut my mic anytime you want it's fine.
00:01:35
Speaker
I mean, if anybody's mic should be cut, it'll be probably mine and I was going to

Emacs vs. Other Editors Debate

00:01:40
Speaker
say, right. Yeah. Oh, thanks, guys. It's a fucking emacs war already, is it? Of course. You had your fun in the previous episode. So you had a non emacs person on the podcast. Yeah, I think this is this is this is I know, man. I mean, it's just we're losing our
00:02:07
Speaker
It's like the Game of Thrones season 8 or something. It's like everything is shit now. Anyway. Well, maybe we can argue which UMAX we use, like the People's Liberation Front of Judea, or whatever.
00:02:23
Speaker
I'm doom all the way. Oh my god. We should play one of you, Max. Doom or space. Yeah. And then there is always going to be some tiny voice. Like, who's default? Defaulting. Yeah. So I know it better than you people. It's Bushy Dark. You know that guy. It's like a preload.
00:02:42
Speaker
Honestly though we've got some people at work not to throw them under the bus i don't think listen to the program name name the first last names and twitter handles please. I'll put them in the show notes okay.
00:02:57
Speaker
And then once the episode releases and then Ray's LinkedIn updates, like looking for a job now. As the kids say, let me cook, you know, it's like, it's going to start off bad, but I'm good. But yeah, these ones both.
00:03:15
Speaker
They use Vim or they use Emacs or VS

Tech Interviews and Workplace Dynamics

00:03:20
Speaker
Code. All bad things, obviously, as far as I'm concerned. But they use them in the raw. They use them like there's no bindings, they're not bound to any wrap hole. Nothing is happening. There's no even key bindings. That's fucking weird. Not even code completion or anything. Then why don't we just use paper? I know, but it turns out.
00:03:44
Speaker
But two of these people, I mean, I'm not going to say all of the people because some of the people aren't that great. But we are narrowing it down. OK. Two of the people in that group, right, are like the best closureians in the company. Yeah. Without a doubt. Because these guys, because they use him, actually, you know, they use him, but they use it with no, with no, no, no affordances. Well, yeah. No bindings, no accoutrements, nothing. They're unbelievable, you know.
00:04:13
Speaker
If only that... Yeah, exactly. Yeah, they don't use the ruffle. You don't need to use the code anymore. You see programmers just spit out code and run a test. It's like, what is going on here? It's a test-driven development. It's a new thing where you ought to try it out. It's amazing.
00:04:38
Speaker
I mean, if only the usage of editor gave away the quality of your software programs, you know, it'll be so much easier. And then all the job interviews are like, can you please open your data? Get the fuck out. Do you have any questions for me? That's pretty much it. That's pretty much it.
00:05:01
Speaker
Hey, can you share the screen? No, you don't need to write the code. Just open your editor. That's it. Show me the config. Actually, if somebody shares their screen and Emacs is not already running as the window manager, no, they're done. Thanks for your time.
00:05:26
Speaker
But do you find this, because you work in a closure shop, Josh, do you find that like there are some people that just don't that have, you know, sort of like a very bare bones tool set. But by the way, I mean, for the people who are listening to his guest is Josh. Mr. Global Man. Maybe it's a good idea to tell people who you're listening to.
00:05:56
Speaker
Do you want to do that for me or should I do it myself? Please, please go ahead. I mean, we don't want to discourage people from tooting their own
00:06:09
Speaker
Go on, Josh. No more tweeting, only tooting. Tutoring minimum. Which social media platform toots? There is one, right? It's a mastodon. I've been trying out the blue skies, so people skeet, which is terrible. I can't say that on the street. I thought the people on Mastodon would normally mastidate, but apparently they're gone.
00:06:36
Speaker
Okay, so anyway, yeah, I'm

Niche Podcast and Audience Jokes

00:06:40
Speaker
Josh, and I do work at a closure shop, but I'm not gonna disclose which one because my- Oh my God. After the episode, there are gonna be two people on wedding day. Exactly. Don't worry, nobody there listens to this shit, so it's fine.
00:07:03
Speaker
I mean, nobody there. I mean, you don't need to qualify it as there. Why are you qualifying it with some, you know, you don't need to locate. I do work with some vegans though, and they probably listen because this is the world's foremost vegan closure podcast.
00:07:21
Speaker
Vegetarian, actually. Vegetarian. Oh, only vegetarian. Yeah, because I'm not vegan, so. And I was a vegetarian at the beginning as well, so it's kind of like, you know, I've changed. We started. Yeah, not the podcast. I thought BJ had graduated. That's the thing. Okay, so you're still only a vegetarian. That's cool. That's cool. Yeah, yeah. The law is common denominator, yeah. This is what we're operating more out of.
00:07:49
Speaker
And you can't complain because I didn't actually switch to vegetarianism, you know, just all my existence, I've been vegetarian. So, you know, there goes my, I mean, I have more, I've saved more fucking carbon than every other people can imagine. So I done. Nice. So that's why I drive a diesel car to compensate that one.
00:08:32
Speaker
I don't know what more do you need to know. I'm in Stockholm.
00:08:39
Speaker
I will not disclose exactly where because you know. Undisclosed location. In Stockholm. In Stockholm, yeah, near some woods. Yeah. And you've been doing Closure for forever now, right? Yeah, yeah, yeah. So I bought the first Closure book, I guess, back in 2008. So I did Lisbon University.
00:09:09
Speaker
I think it was Common Lisp. And I had the correct reaction, which is, what the fuck is this? And why would anybody want to write this shit? So. I think it should be more like, hey, I'm Josh. And I work at a closure company. And I record Scratch. And then you might be wondering how I ended up in this place. And then we go back to the Common Lisp.
00:09:35
Speaker
Yeah, I started playing with Scheme a few years after university when I was reading some blog posts by someone who I thought was smarter than me. I've since discovered that person is way worse than me.
00:09:50
Speaker
But I was impressed and I was like, oh, this whole Lisp thing is cool. Let me find a Lisp. Oh, there's Scheme. And then compared to common Lisp,

Challenges with Clojure on AWS Lambda

00:10:00
Speaker
Scheme is amazing because there's so little of it. So I messed around with it a little bit, but it's like, okay, I'm never going to get to write this at work because I was living โ€“ sorry, I was working for some big e-commerce company at the time. I will not disclose which
00:10:17
Speaker
But then, yeah, the Closure Book came out and it was like Lisp on the JVM and I was like, oh, I use the JVM at work and this is Lisp and that would be cool. So that's kind of how I got into it. But I didn't start using it like for anything professionally until maybe 2012 or something. But yeah, since then I've been like closureing pretty much nonstop.
00:10:43
Speaker
Until three years ago I became a manager so I don't...
00:10:51
Speaker
I think VJ is a manager as well. I mean, I've been I've been manager all my life. And interestingly, so let me tell you that my managerial, you know, level, because there is some recruiter, some recruiter contacted me and said, hey, there is a CTO position open. Would you be interested? I'm like, three days or you need to go to the office. Fuck it. No. And I don't know. They're a really nice company. They're doing awesome shit. And, you know,
00:11:17
Speaker
for the for the, you know, medical, medical health care thing. I said, sure, why not? So I go through like series of interviews with them and then I get a feedback saying, well, you're too technical to be a CTO. So now I'm like, that's interesting. Yeah. Yeah. So me being a manager now, isn't it not? It's like,
00:11:43
Speaker
technology, it's more like marketing, like, or something. Yeah, I think they're looking more like a, exactly. I mean,
00:11:51
Speaker
I mean, they're like, okay, how much do you want to be hands on? I'm like, the fuck would you mean? Like, you know, I have full screen e-max and what else do you expect from me? We're talking through e-max right now. Yeah, exactly. I'm using e-max speak as we speak. And, but then, you know, so that's my managerial level. So, I mean, I do manage manage people, but it's not managing, but it's more having fun with a bunch of people.
00:12:18
Speaker
And then complaining about their code and telling them how shitty my code is. And that's, that's the fun part. So can't wait to work for you. Where do I apply? Well, you are more like a Coca-Cola manager, aren't you, Josh? No, the real thing. Yeah. Me. Well, I don't know. Like I don't write code.
00:12:41
Speaker
That's the kind of manager I am. So I just manage. Thanks a lot for joining the podcast. I just barely manage stuff. Just about. So it's not it's not manager. It's barely manager. Barely manager. Yes. That's my actual title at work.
00:12:59
Speaker
It's uh, I hope to be promoted to senior barely manager pretty soon The kids these days they say bear for meaning like a lot yeah, you know, so management is like, you know, it's like a lot of management It's like that's the advantage

Development of Blamda

00:13:20
Speaker
of having a younger generation at your home, I guess yeah, I have no clue that it has moved
00:13:25
Speaker
The only thing I notice these days, Riz means charisma. That's what I...
00:13:31
Speaker
Yeah, that's what I read on the internet now. I'm like, fuck, I'm getting old. Well, there's not charisma as such. It's more like chat up. It's like, if you've got the words, you're kind of like flirtatious, you know? Yeah, if you can, it's like, I can tell you a little joke, actually, that Christ, when he was reborn, because he's coming again, yeah, reborn, and he went off.
00:13:55
Speaker
He went off and he went cut this bit. He went off and he joined Love Island. He is risen. Wow. This is our last episode. Congratulations Josh. He is risen. You're part of the history in the making now. Amazing. You can say, remember the fall of Deafened? I was there. I was the cause of.
00:14:25
Speaker
Oh man. I'm so proud. But it's fucking ironic that we need to learn this latest terms from this Victorian old guy.
00:14:40
Speaker
He's from paleo-nithygera or something. What the fuck? And he was there when the dinosaurs were getting bombed or some shit. And now he's telling us, by the way, the new lingo. Well, see, this is an advantage. I watch Love Island, see, which is a sort of, for you, it's like TV. You know, remember television, BJ? Yeah. Now you guys watch, you're these people who don't watch TV anymore.
00:15:04
Speaker
You don't have a television. You don't have a television. You don't watch TV. You probably watch Netflix or something. No, I don't have a computer. Your email is printed out.
00:15:25
Speaker
I used to work with managers like that. I thought it was all gone, but it's great to see it coming back. Anyway, watching Love Island, you get all the juicy words. Confirm it with my kids.
00:15:44
Speaker
I should subscribe to your sub stack or some shit, you know, like, please keep posting these how to understand the latest lingo. Ray is not enough of the Nazi to have a sub stack, you know, you got to be pretty right wing.
00:16:01
Speaker
Yeah, Dr. Cut that. Yeah, there are some there are some nice people out there, but you know, one subset. Yeah, sure. It's like, you know, I think there are certain platforms that are like owned by shitheads, like Twitter. You know, I wouldn't call everyone on Twitter a Nazi, but you know, then that's your jazz. You know, well, yeah, I mean, Twitter is just, you know, very welcoming of Nazis. That's all not not everyone there. No, no.
00:16:30
Speaker
He runs cool with it. He's down with the the nads don't have to be a nazi to work here, but it helps. It's recommended I thought I thought he's gonna rename everything to x or something. Oh, yeah. He tried some other shit x.com. That was his thing He wants to have 90s. Okay. Yeah
00:16:57
Speaker
I don't know if you watch, I don't know if you watch this TV program, you won't watch it, of course, TV programs. There is a TV series called Succession. Have you ever heard of this thing? Yeah, I actually watched that one. It's not a TV thing. How did you manage to do that without a TV or anything? No, I have a TV. I'm not as at once in progressive like Josh. Well, I haven't seen Succession, but I had someone read the script to me, so I'm proud of it.
00:17:26
Speaker
But it's under HBO's platform thingy. Yeah, right. The main point is that they're like, they're like Phil, what do they call them? Phil sons, you know, Phil children, Phil siblings. And they're basically, you know, they've got this massive empire that their father is Rupert Murdoch, basically.
00:17:46
Speaker
that's built up. And they're, you know, they're obviously incompetent and not fit to manage it. But they but they're going to get to, you know, I haven't finished I haven't finished the series yet. So I don't know what happens. No. Oh, okay. Well, but the point is, you know, I know you've read it all, Josh, but you know, but the point is that like, that like, that's what that's what that's what the laddo is like, isn't it, Elon, you know, rich daddy, or Donald Trump, rich daddy, but total like shitheads at business.
00:18:16
Speaker
But I think they're great at it, you know? Yeah.

Transitioning to Management

00:18:20
Speaker
And yeah, so some kind of thing, I guess. Yeah. Anyway, closure. We can close this bit, actually. Let's talk about fucking closure. Jesus Christ. I mean, we don't need to talk about fucking closure. We can just talk about closure. That's fine. We don't need to get all family friendly. Yeah.
00:18:43
Speaker
I don't even have Closure. I only have Babashka. Oh, okay. You're living the fall, moved on. Yeah, I'm post-Closure. Except you have to have Closure installed to run Babashka sometimes, because sometimes it exacts Closure, I think, under certain circumstances. Okay, but it's just a daughterboard type thing. It's just a sort of beautiful assistant.
00:19:10
Speaker
Yeah. I'm not exactly sure. Like maybe, maybe that's different now. I just remember I wanted to do something and Bork dude is like, Oh, well it's just showing up to closure to do that. And I was like, Oh, but, but I don't want to do anymore. So I'm probably even wrong. I probably just misunderstood what he was saying. Cause he's fucking, you know,
00:19:32
Speaker
some kind of rocket scientist and I don't own a computer as we established previously.
00:19:44
Speaker
No, no, no. But why is this transition? Is it because of the type of the tools that you're working on? Or you're like, well, fuck JVM. I'm done. Well, yeah, it was kind of like, fuck the JVM. Because a lot of the stuff I do, it turns out I care about startup time. So it's just completely randomly. I ended up writing a lot of things that are not like long running programs.
00:20:13
Speaker
but do a thing and are done. And just waiting for the JVM to boot up. I mean, the thing that really got me into Babushka was Lambda, right? So I was working on serverless applications and Closure never had a great story for that. Like from the beginning, you could run the JVM and you could
00:20:39
Speaker
I think U Switch had a library called Lambada and they did so. Yeah, whatever. And of course you could write the death class or whatever yourself. But, you know, and that was great. It worked. You had the JVM, but it took a while to start up.
00:20:58
Speaker
You know, the way lambda works is that despite being serverless, it turns out they're actual servers somewhere or containers or some crap. God damn it. And they have to like. It's a video joke. What? Come on. It's a video joke.
00:21:13
Speaker
I mean, it was in the previous episode anyway, but you know, it's not my joke. I'm just, you know, stealing from some random internet dude. And there is, it's a graph that says like zero thing, like a line chart with zero. And then it says, well, my serverless app is now clientless. Well, I'm pretty sure most of the stuff I work on is clientless.
00:21:42
Speaker
I mean, it says something when you say, well, it needs to start up, do something, and then disappear. Nobody wouldn't even notice that it was there. But is this the blamda thing that you blogged about? That we've got you on the talk about. Right. Oh, OK. I thought it was just you. Apart from your managerial. Yeah, exactly.
00:22:11
Speaker
Where is we can come back to your manager will start a bit later i mean we're only here for synergies and you know all the buzzwords are all that shit so that shit can come later so let's focus on. Yeah it's a paradigm two yeah exactly yeah so.
00:22:32
Speaker
JVM on Lambda is not great because not only does this like container thingy have to start, which I mean, they've gotten that quite fast AWS has, but you still have a container booting up and then you have the JVM starting up.
00:22:51
Speaker
So if you write just a Hello World lambda in Java, I think maybe it takes around 1.5 or 1500 milliseconds thereabouts for the JVM to return Hello World to you. But in Closureland, now you've got to initialize the Closure runtime. So realistically, you're looking at like three, four seconds for the JVM to start.
00:23:19
Speaker
So

Programming Languages and Productivity

00:23:20
Speaker
this isn't really a problem if you have pretty steady traffic, because once your, your Lambda runtime environment starts up, they keep it around for like 15, 20, 25, who knows, you know, AWS, but they want to score. But 15 minutes is a pretty safe way to think about it.
00:23:43
Speaker
So if you have fairly steady traffic, it's not a problem, because that first request to your API or whatever is going to be expensive. But then the rest of them get amortized down. But then the problem comes when you have, OK, your traffic is still steady maybe, but it's rising. And then now Lambda has to fire up separate instances, because now you have too many concurrent requests.
00:24:13
Speaker
Yeah, I mean, this is exactly why you're using Lambert, right? Because you want it to scale for you without thinking about it.
00:24:21
Speaker
But now you're introducing these random slow requests into the JVM startup and initializing closure. It's kind of like hotspot at scale, isn't it? Really? Yeah, kind of. Right. The jet has to warm up, but now it's the whole JVM has to. Yeah, yeah. So they're all of these tricks. And then AWS came out with this thing.
00:24:43
Speaker
maybe two, two years ago thereabouts, which is called provision concurrency. So then you say like, it's kind of like an auto scaling group, you say like, give me minimum five lambda instances at all times. So then, but you know, now you actually have to
00:25:02
Speaker
you have to pay for those. It's like getting... You're not exactly serverless in that sense. It is serverless, but you're paying serverless. Serverless doesn't mean bill less. Yeah, exactly. Oh, God, yeah. So closer on the JVM, if you have, let's say, an API, because this is what I was using the
00:25:28
Speaker
for HTTP APIs. And as long as you don't need consistently low latency stuff, it's fine. It'll get the job done. And every once in a while, a request takes five, six seconds. And for most things, people don't really care about that. The internet, sometimes that happens. You get a slow request.
00:25:50
Speaker
But then, I don't know, there are situations in which you want a predictable P99. You want to say, OK, I need less than 1,000 milliseconds P99.
00:26:06
Speaker
So that's like, sorry. What's P99 is because, uh, I mean, you know, I kind of vaguely know what I think you mean, but it's yeah. P99 or TP99. Yeah. I was getting ready to explain stuff. You know, it's a little dark. Um, what that means is like 99% of your requests are less than a thousand milliseconds. If your P99 is like a thousand milliseconds. So 1% of your requests are more.
00:26:35
Speaker
If you want a predictably lower latency thing than that,

Clojure Community and Misconceptions

00:26:40
Speaker
then the JVM closure is not really going to do it for you. What else can you do? Well, I tried closure script obviously. If you want a predictably lower latency thing than that, then the JVM closure is not really going to do it for you.
00:27:02
Speaker
So what else can you do? Well, I tried ClosureScript, obviously, and the biggest mistake that was ever made in the history of humanity. Wow. Come on. Oppenheimer has something to say about that. Well, Oppenheimer, when he said, I am become death destroyer of worlds, that was right after he
00:27:23
Speaker
sketched, you know, the blueprints for Node on a cocktail. No, it wasn't the Manhattan Project. It was just managed to roll a dial. Yeah, exactly. Do this, son.
00:27:38
Speaker
Well, that's why he's doing edon or whatever it is. Dona, dono. Dino. Yeah, dino. Yeah, dino. Yeah. So yeah, Closure Script. I mean, people are using it on Lambda, but I just was fed up with building shit for a Closure Script. And I mean, Shadow CLJS is really nice, but it's still using all of the,
00:28:07
Speaker
you know, all of the NPM machinery, blah, blah, blah. And, you know, if I think Thomas Heller made good choices there where he's not trying to like hide the complexity from you, right? He's trying to give you a thing that does what you want.
00:28:23
Speaker
But he's not doing millions of layers of abstractions. You pretend you're not messing with NPM. And I don't have enough of a background in that stuff, and I found it frustrating and annoying. But even if you do, though, Josh, I mean, even if you're tolerant of it, there are certain things that aren't there, like JVM stuff, JVM libraries.
00:28:52
Speaker
a lot of those libraries exist only for the JVM or much better on the JVM. So it's definitely, you have to be tolerant of the difference, as it were, because there is a huge difference.
00:29:08
Speaker
Yeah, there is. Yeah, exactly. And the biggest difference that I really can't stand is the whole async await. Yeah, yeah. Yeah, I mean, I get it. It's it's much better, right, you know, co routines or the new whatever everybody should be something something. But, you know, I'm old school, I was
00:29:28
Speaker
You know, I was not around when the dinosaurs were, were nuked like Ray, but I was, you know, next week I came by and looked at the smaller rig breakage. You know, the funny thing is Josh, I mean, this is like a bit of an aside to your story and we'll come back to it. Okay. We're just like, it's like, it's like, it's like, yeah. Is that, um, I,
00:29:50
Speaker
But to do some async testing in Closure, actually, on Kafka, I wrote something last week, 10 days ago, using something called Promise. And then in the async code, I deliver. Then in the test code, I, you know, at the value and wait for it. It's like, oh, promises are a thing in Closure, you know? And so it turns out that async await has always been there, you know?
00:30:21
Speaker
Yeah. Well, you know, in a nice way. Okay. Carry on. Right. So back to arching. Yeah. Well, I actually, um,
00:30:30
Speaker
When I was first kind of discovering, um, using AWS for reals with Closure, I actually did some thing where I, I spawned like a hundred promises in Closure and had them do something to Dynamo and blah, blah, blah. So yeah, I remember promises in Closure. I used them once in anger. It was fun.
00:30:53
Speaker
Um, yeah, but so, you know, you have a lot of different stuff, like you have promesa, which, um, you know, gives you like P let and all of this stuff for dealing with promises. So you can kind of pretend that it's not this async away, you know, weird style of programming.
00:31:12
Speaker
until you can't, right? It's like everything, eventually the abstraction leaks and you end up in some state where you're trying to be like, oh, is this promise been delivered? And blah, blah, blah. Do I de-ref this thing? Or is it already the value? I just, you know, I just can't. I just can't. My life is too short for this kind of nonsense. I don't want to learn new things. I'm a manager. What happened to that game?

Communicating Functional Programming Concepts

00:31:41
Speaker
The other issue I have or with, and this is just my experience. I mean, other people have their own and I'm not trying to, so like, let me give my display.
00:31:51
Speaker
I'm going to say a lot of nasty stuff about Node, but I'm not trying to shit on Node for people who like it and find it useful. That's completely wrong. Different strokes for different folks. Different strokes, yeah. Now that I've made that disclaimer, I will go back to saying Node is fucking terrible. What is the fucking terrible list for me as a closure programmer? I mean, we were talking earlier about these people who use editors with no replication or whatever.
00:32:22
Speaker
That's not me, like I can't. And the REPL experience in Node I just found was not great. And then, you know, this could be like, maybe it's gotten better, but I would, it would mostly be okay. And then I would get myself into some weird condition where I couldn't email something or
00:32:45
Speaker
that trying to, you know, debug this asynchronous code by like stuffing things in an atom or something, and then like, you know, seeing what got in the atom. It like I even had sometimes that just
00:32:59
Speaker
I could see the code running, and then there was nothing in my atom, and I was like, the fuck is going on? So yeah, that's no way to live. So then, of course, there were things like Lumo. I never tried Planck on Lambda, but I did try Lumo on Lambda. And Lumo really is like,
00:33:26
Speaker
The whole reason that I did Lambda is because I tried Luma when I was like, Oh my God, I can edit my closure code in the AWS Lambda console. This is amazing. Like I don't want to go back to something that doesn't let me do that. And, you know, even AWS console support Emacs.
00:33:50
Speaker
Yeah, it's got to be my expo. So, I don't know if you've used this, PJ, but back in the day, actually. I have control W, control S. No, no, no, you don't need to. There is a plugin for all the things.
00:34:12
Speaker
because all the text areas in the browser can be edited with an Emacs. That's what you're mentioning about, right? You don't even need to say, I don't know if you used it. Yes, of course. I mean, look, the first thing I touch anything remotely technically, can I do this in Emacs? Yeah, exactly. I'm going to the dishwasher and I'm thinking, can I do this in Emacs? Exactly.
00:34:45
Speaker
You don't need to, what the fuck is control A, control C? No, you just already just edited a new max and it's going to transparently just move that to there.
00:34:58
Speaker
Yeah, don't hit Ctrl

Effective Language Learning Strategies

00:35:00
Speaker
A, Ctrl Z because that's going to move to the beginning of the line and then suspend your Emacs process and nobody wants that. Exactly. Yeah. That could be a superpower. I accidentally do that sometimes. I accidentally hit Ctrl Z and my Emacs window disappears. And I'm using some
00:35:23
Speaker
some ridiculous window manager that doesn't show me things that have been minimized. I'm like, how do I get this back? This happens roughly two or three times a year and it takes me 30 seconds to figure out what the fuck just happened.
00:35:59
Speaker
I can't remember. I don't know if it was the person who wrote Lumo or it was just some random, you know, closures, but somebody produced a runtime for, uh, for Lambda that let you use Lumo.
00:36:13
Speaker
Um, or maybe you had to roll your own. Maybe there was like a read. I don't remember. Um, but that was super cool. And so, um, when I, so I, I, um,
00:36:25
Speaker
had a mandatory extended vacation from a previous job. You took a sabbatical, is that what you did? I did, yes. I was given a sabbatical if you will.
00:36:45
Speaker
No, but so, yeah, I got laid off from a job with the kind of first wave of the tech layoffs. So the fentex kind of started the wave when the VC money started getting tight. And so I had a nice long summer vacation. I think I had like four or five months between jobs, four months maybe.
00:37:09
Speaker
I decided I was going to finally solve this fucking closure on Lambda story once and for all. This is a heroic tale, actually, isn't it? It is. It is.
00:37:25
Speaker
I submitted a talk for this where I was going to do kind of a Terry Pratchett style, the fool's journey through trying to do something relatively straightforward and all these things going wrong. So yeah, I kind of made a little checklist of the things that I really wanted to have. And one of them was like the fast start. So as we call them in Lambda Land,
00:37:54
Speaker
fast cold start. So a cold start is that process where the container plus JVM or what container plus runtime, I should say. So, you know, that has to be fast. I wanted a good REPL experience with developing this stuff. You know, that really has nothing to do with Lambda, but that kind of, you know, I didn't basically want to use Closure Script because I was unhappy with how that worked.
00:38:23
Speaker
I really wanted to be able to edit the code in the console. And the reason for that is, and, you know, closure programmers are going to recoil in horror when I say this, but sometimes when you're debugging issues on a Lambda, like the most common problems you run into are like your IAM permissions are not quite right for whatever your Lambda is trying to do.
00:38:49
Speaker
and the feedback loop of making a change in the code and then deploying it and seeing if that works. It's usually really silly things like getting debug prints, so it feels very old-school. It doesn't feel very closurey, but yes, you're putting debug prints in. Being able to do that in the console gives you a lot faster feedback loop on stuff like that.
00:39:18
Speaker
So it wouldn't have been a deal breaker, but it was pretty important to me to be able to do that.
00:39:24
Speaker
I think at the end of the day, I mean, the REPL stuff and everything like that is fast feedback loops. So I think if you're getting a fast feedback loop, you can't get outside the REPL, then I think it's a win, you know? I think you're making a really good point there because, you know, you can have a REPL, but if it's not like hooked directly into this lambda, which obviously is never going to be. Well, you could. We talked about this, right? Maybe you could, but you shouldn't.
00:39:50
Speaker
You definitely shouldn't. Well, it's hit and miss, isn't it? Yeah. Exactly. Yeah. Yeah. So yeah, there was like, so what did I say? I said, fast cold starts. I said, good rough experience editing in the console and no fucking node JS anywhere near that shit. That was like the fourth, just no, just no.
00:40:19
Speaker
It's no JS. It's no JS. Exactly. No JS. None. Not at all. Yeah. So then I played with Babashka a very tiny bit, but I figured Babashka is kind of the perfect thing because its whole purpose is to start up fast and let you write something that's more or less closure.
00:40:45
Speaker
And I mean, these days it's more closure. I mean, almost everything is supported inside these days. So yeah, so that was kind of, you know, I picked up Babaล›ka and I was like, this is going to be the answer to all of my problems. And indeed it was, and it was of course the cause of a few more problems, but such as life. And then like, I think, so I started messing with this and something like,
00:41:13
Speaker
you know, how bork dude is just like something like 15 fucking days later, he's like, Oh, I did this thing in BB. And I was like, what the fuck is this? Like, what is wrong with you? So I mean, bork dude, and I have kind of a love hate relationship in that
00:41:31
Speaker
Like he's, he's great, but I hate him forever because he did NBB. So he's, he's dead to me. Um, is the Nord version. Yes. Thank you. Yes. I should have said that. Yeah.
00:41:47
Speaker
So given the amount of shit that you're flinging at. You just didn't want to mention know it again, did you? Well, he has these amazing Babashka t-shirts, right? I bought one.
00:42:06
Speaker
And he was actually nice enough because he had done some of those web shops where you can upload your designs and people can order the shirt. So I love the Babushka shirt because the Babushka logo is super cool. I mean, hopefully most people listening will have seen it, but if not, Google it, put it in the show notes, whatever.
00:42:29
Speaker
So I tried to order one of these shirts, and the shirt was like, you know, whatever, 25 euros or something, and then the fucking shipping was like 50 euros. So I posted on the- That's a big commitment. Yeah. So I posted this on Closure and Slack, and both dudes like, oh, fuck.
00:42:51
Speaker
And of course, like three minutes later, he's posted five links to like new web shops and he's like, all right, try one of these five. So he was he even said like he was sitting there like uploading his shit to all these other t-shirt printing things. So, you know, this explains how Bork dude gets so much done. This is the kind of dedication that he purchased everything. So so I bought a shirt.
00:43:18
Speaker
uh for a reasonable shipping price and um it's super dope it has the babushka logo on the on the front and in the back it's on the back it's it's fucking nbb it's god damn it i mean it's it's it's kind of i don't know if it is called metaphorical or maybe you know poetic justice or
00:43:39
Speaker
You turned your back to MBB, right? So you can still wear the t-shirt. You want to wear it with a jacket at all times, do you? I wore it to the closure days and I put a piece of fucking duct tape over the MBB on the back. Just to wind up fourth, dude. So yeah. So there was MBB and you wrote a
00:44:06
Speaker
blog post on the jocks blog about it, didn't you Ray about like the best things since sliced bread. And then I, I was like, fuck Ray's, you know, this is, I'm going to go to his podcast. Yeah. Well, yeah. Appreciate your, uh, canda excoriating, but I appreciate it. So that's how the whole blender thing gets started anyway.
00:44:35
Speaker
Yeah, yeah, yeah. And isn't, isn't it at this point, isn't it better to use some other language? Is it like the Mount Everest thing? Why did you do this? Yeah, because I can, you know? Well, I mean, it's a really good question and yes, the answer is more or less because I can't, but the thing is like, like I said, I'm a manager. I don't write code.
00:45:00
Speaker
for a living anymore. So when I do write code, I want to have fun. I want to fucking use some language that doesn't fill my heart with joy. If you're paying me to write code, I will use whatever language you tell me to. No problem. I'm a professional. Except Node.js. Well, except Node.js. You'd have to pay me a lot for that anyway.
00:45:24
Speaker
What I wanted to do was have the lambda runtime for my own stuff, the stuff I wanted to do. Honestly, at that point, I don't even know if I had it. Oh yeah, no, I did have a use case because when I got laid off and had all this free time on my hands, I decided I was going to start a blog and I was going to try to write one post a day just to improve my writing.
00:45:49
Speaker
It wasn't a, and you do it in public so that you have some accountability, so people like Ray can be like, it's been 13 days since you last posted some meaningless shit about your dog. You asked me to do it. Yeah, I did. It's true.
00:46:10
Speaker
Unlike some people who put out words like, I owe you fuck all, nothing. I owe you nothing. Some people say that. You sort of said, oh no, I owe you a post today. So I annoyingly took your word.
00:46:27
Speaker
It felt like there was a sub-tweet, but I don't know who it was aimed at, so I'm just going to let that slide. It is that slide. Yeah, it slid in. Yeah, so I wanted to do some kind of just site view analyzer thingy that just told me, oh, you've gotten this many hits on this page, and they came from these IDs, and blah, blah, blah, blah, blah.
00:46:51
Speaker
And it turns out I found out that like AWS CloudFront gives you like a nice graphical dashboard with all of that stuff. I didn't know that. But I'm going to make a shitty or broken version of it on my own framework. Exactly. Exactly. Yeah. So that is what I wanted to use it for. I wanted to have a Lambda that would, because this blog was hosted on S3. So it was like, you know, when, um,
00:47:21
Speaker
When you get a page load, you can have like something kick a lambda or whatever and blah, blah, blah. I forget exactly what my intention was, but it was something.
00:47:35
Speaker
So that was what I needed it for. And yeah, so I wanted to do an enclosure just because I wanted to do something that was pleasant to me to write in. And I have a lot of experience with AWS enclosure. And honestly, having a REPL that is connected to AWS is one of the most powerful experiences you can imagine.
00:47:59
Speaker
You can do anything. You're just in a ruffle. It's like a shell. So once you've tasted that power, once you've become drunk on that, you can't go back to whatever it is people did before. I don't know. I don't know what it is. Yeah. So that was it. Yeah. Terraform. Well, I mean, hey, I like terraform. As it turns out, there's some terraform and blemda too, right?
00:48:28
Speaker
Oh, well harsh on that later. Yeah, you can do that. Yeah. Yeah. Maybe I think it's a good idea to explain like what exactly is blammed up providing it. Is it like a framework or is it something? Yeah. Yeah. No, but I mean, it's, it's just going to be a long show, you know? It's doing, it's doing like a blog. Exactly. And after another one hour of shitting our node, we'll get to the point.
00:48:58
Speaker
And that's my wife if she can bring in a beer, actually. You finished your wine already? I finished my wine, yes. I need more. I'm just on water, tragically.
00:49:12
Speaker
Yeah. So the question was, what is blended? Yeah. So it is primarily, it's a runtime. So a Lambda runtime is back in the day, AWS,
00:49:28
Speaker
they introduced Go as a runtime for Lambda, right? So the original ones were like Node and Python and Java maybe. And when they released the Go one, some people found out that like the Go one was doing these things with network requests. And so like, hey, you could actually use the Go runtime to have a Haskell Lambda or have a, you know,
00:49:55
Speaker
And so AWS eventually released like a custom runtime. So it's like, you need to basically upload a zip file that has an executable called Bootstrap. I think that's the name of it. And, you know, that can either be a shell script or it can be a Linux binary, you know, like, you know, binary, whatever.
00:50:22
Speaker
And so that bootstraps your runtime environment. And then Lambda has a runtime API. So your runtime basically does an HTTP request saying, give me the next invocation of my function. And that's a blocking call. And when it returns, the response is like,
00:50:46
Speaker
basically a map of the HTTP request. It feels very ring-tacular, right? In Closure Line, you get back a map. Then you can process that however you want, and then you post back to the runtime API, like here's the response. That's how the runtime works. The Blamda runtime packages the Babashka binary.
00:51:14
Speaker
I use the pre-built Linux, either the AMD64 or the ARM64 version of Babashka. Babashka, their build system produces these statically linked binaries. And statically linked is super duper important because otherwise you have to make sure that you build Babashka on the Amazon
00:51:42
Speaker
whatever Linux that is the thing. So the statically linked binaries are a game changer. And so the bootstrap script, all it does is it runs Babashka on a script that handles like the runtime API stuff. And then the runtime API stuff basically just requires in the entry level namespace of your code and then Bob's your uncle.
00:52:11
Speaker
So this gives you the ability to, the runtime itself is deployed as a Lambda layer. And then you deploy your function as like just through the function code thing. So the result of that is like everything in the function code thing is you're able to edit that in the console.
00:52:37
Speaker
But then the stuff in other layers doesn't show up in the console because it's somewhere else on the file system. So this gives you the nice experience where I can write my entire Lambda in one closure file if I want to. And the runtime will take care of invoking it for me. So it's a very minimal experience. And that's what I was going for.
00:53:07
Speaker
But then, of course, I also wanted the stuff to be easy to use. So I wanted to be able to deploy my, build the runtime, update the runtime when a new version of Babachka comes out, whatever. So you deploy that. Yeah, pretty much.
00:53:34
Speaker
Actually, while we've been recording, I think three new versions have come out. I have my Emacs RSS feed reader just like, you know, on the fourth dude GitHub feed. So yeah, so I also have some kind of build machinery stuff. So there's some
00:53:59
Speaker
written in Babashka, of course. So you have scripts for building the runtime and building your code so that you have to zip it up and upload it to Lambda and so on.
00:54:12
Speaker
And then, because I actually do like Terraform, what I decided to do is just write a script in Babashka that would spit out some Terraform configuration. So now I can use Terraform, like IAC, just to manage all my stuff.
00:54:31
Speaker
And of course, Ray got really angry about that because he's like, well, this isn't simple anymore. Maybe it's terraform, blah, blah, blah. Because he wanted it to be easy. So no, it's not simple. And I was like, you know, Ray, fuck off. You can just use whatever you want to build this ship.
00:54:51
Speaker
I heard was red fuck off, but yeah, I mean, so you got the gist of it. Yeah, exactly. Um, yeah, so I mean, all of this stuff is, is optional. So like you have the, the basic Babashka script, just, you know, it'll build the runtime as a zip.
00:55:08
Speaker
It'll build your code as is it, and you can get that on AWS anyway, UCFIT. So the funny thing was, as I was developing this and also writing my blog concurrently,
00:55:23
Speaker
I started out my blog by cloning so bork dude had this like quick blog thing which was his blog and Back in the day you just cloned his blog and then replaced his content with your content So
00:55:42
Speaker
I don't know. I annoyed him somehow when I was producing my blog with his clone thingy. And he was like, I need to actually make this stuff a library so that people can use it without cloning my repo and stuff. And so he did that. And then the two of us started working on quick blog because like, oh, I wanted to do some weird thing and whatever. And then in the course of that,
00:56:10
Speaker
I ran into some limitations of the Babashka Clyde stuff. So the command line or fish library.
00:56:18
Speaker
So then I started working on that a bit with him. And I mean, like when I say I started working on it with him, I mean, like I wrote a function somewhere and then he was like, where's the test for this? I'm not merging this shit without a test. I'm like, God dammit, this is a REPL driven development port, dude. What the test? I sent him a screenshot of my REPL, you know, there's the test. Fuck off.
00:56:43
Speaker
Um, so anyway, uh, this is, he's a manager as well, you know? Yeah. Oh my God. Of his repos. Yes. Oh, right. Yes. Yeah. Yeah. His iron fist. Um, but, um, you know, this was supposed to be, um, an advertisement for Bovashka Akwai cause it's super awesome. And, um, one of the things you can do is you can do these like sub command things. Um,
00:57:12
Speaker
And so, like, Blender uses that. So the way you do stuff is you're like BB, Blender, whatever, build runtime or something.
00:57:21
Speaker
But if you want the Terraform config, then you say bb-blamda-terraform-generate-config, right? So you see, you could slot in CloudFormation or whatever the damn kids these days are using, like CDK, blah. So if you hate yourself, you can do it that way. But for me, like... Bare configuration options, yeah. Yeah. Did you say bare or better? Bare configuration options, yeah.
00:57:51
Speaker
I mean, we already established bare means better now, so. Bare, yeah. No, many, many, many. Oh, many. OK, yeah, yeah. They are legion, myriad, configuration. Yeah. So that's what Blend is, yeah. But did you compare it with, because one of the main pain points that you're talking about, the startup time and potentially performance and
00:58:15
Speaker
Did you compare it with any other runtimes? Or is it any rough estimate that, OK, this is going to be on par with Node.js? Or is it going to be better? Yeah. In terms of startup time, so I did some rough benchmarks and I mean, convinced myself that you're looking at a P99 of,
00:58:43
Speaker
50 milliseconds or less, which was fine. There's no way it beats node because I think that's their most heavily optimized one and they've done all sorts of... They're probably running node in LLVM or some shit. It's a kernel process.
00:59:05
Speaker
Or maybe there is a special CPU and GPU. They're building custom processes for Nord. It's their NPU. I think they have had a world of Nord built into the kernel. Yeah, probably. But yeah, so again, since this was just for my own purposes, I would have been satisfied with anything under 100.
00:59:32
Speaker
I would never advise anyone to use Lambda for actual production code simply because I don't owe you anything and I'm not going to support you. It's the closure wear. It's the closure wear. It is. It's great that you're a manager now. That's the founding principle. I would happily, myself,
00:59:57
Speaker
uh, run shit in production with Glamda because, you know, I'm the one who's accountable for it. Like, you know, so, because people get a little nervous, but like, but Boschka is pretty fucking great. Like, you know, it's, you know, what do you want? You want enterprise support, like join closure and slack and ask a question on the channel. And if fourth dude takes longer than 15 seconds to answer, he's, you know,
01:00:23
Speaker
on a train in Siberia or some shit. Is that what it is going down? His B99 is going down. Yeah, yeah. No, but in all seriousness, yeah. So like, it was very much good enough for my needs. And I thought about like, I'm going to do some serious benchmarks. And then I was like, but that sounds like work and I don't do that.
01:00:50
Speaker
I'm a manager. Exactly. I'll have somebody else benchmark my stuff. I think the main point is if, I think if you, even for getting kind of like all the Lambda stuff, if you know that BB basically starts in less than a hundred milliseconds, it's not going to start in, in AWS any slower, is it? No, no. Oh yeah. And I mean,
01:01:15
Speaker
Bibi starts in like, God, I don't know. It starts in no time. Let me just see here. Time Bibi. That was...
01:01:35
Speaker
0.025 seconds. So what is that? I don't know. Is that 25 milliseconds? There you go. And that's, you know, that's when I'm running Zencaster taking up all my CPU. I'm, I don't even want to show you this computer that I'm using because it's embarrassing. It's like, it's a manager computer. It's very old. It's very old. I had to borrow a computer from my neighbor for this, for this recording.
01:02:02
Speaker
They don't have my own. We wish we could send the questions in, you know, printed and then we should be very impolite to actually be accused. Exactly. Yeah. That's terrible.
01:02:26
Speaker
But what is the, I think because you're now managing team of people and obviously closure people, right? And so how do you see the, you know, closure and sort of, how do you see closure now not being IC and actually managing people who are actually writing closure? What is IC? Individual contributor.
01:02:52
Speaker
no it's it's uh it's what we mentors call you fucking people we can fire i know well i just say fucking here i see yeah anyone who calls me and i see must be from hr and there so
01:03:07
Speaker
That is the name for people who are actually making money for us and not using computers. I didn't have this conversation before. It's like individual contributors. I hate that idea. Well, how about worker? Oh my God. Me? A worker? No. I'm a sort of, you know,
01:03:31
Speaker
Right, right, right. Technically. I'm a professional, I don't know what your work is. I like that, you know, it's, well, I'm kind of individual contributor on some things and I'm kind of, you know, managing depending on the situation when we're working in a small company. And it's like, oh, there is an individual contributor, there is a collective contributor. So I want to be a collective contributor. So you don't need to notice what I'm doing. It's just part of a group.
01:03:57
Speaker
There's a group output. I don't know. The fuck I did. The individual contributor is aware to sort of atomize your contribution. If you feel lonely and, you know, just to crush your dreams. Anyway, sorry. Yes.
01:04:17
Speaker
Where to resource those humans? Sorry, anyway, I see. No, because I was wondering because you know, you're now managing people who are writing closure, right? And now, because you've been in part of the teams who are writing closure before. And yeah, do you see now because, you know, right before we started recording where we were thinking, we're talking about like the
01:04:44
Speaker
closure at large, like in the community and the problems that come with not enough new people coming into the community and all that stuff. So do you feel the pinch? Do you see that in the hiring, in the team, in your company? Yeah. Yeah. Well, certainly. So I joined the company like about nine, 10 months ago.
01:05:10
Speaker
And so they grew a lot before I joined and have since contracted a bit. But definitely when the company was growing at a fast pace,
01:05:22
Speaker
They pretty much hired up all of the closure programmers within their gravity well. Yeah, exactly. Within 2,000-kilometer radius. Exactly. And so that was an actual issue. So then they started hiring people who didn't have any closure background, mostly with JavaScript front-end background, because
01:05:46
Speaker
The company does a web application that's the main thing. I don't know where you two stand on it, but I used to be of the opinion that a learning closure is super easy and you just hire any decent programmer and they can learn it. To some extent, that's true.
01:06:12
Speaker
it does still take you a while to get proficient. With any tool, yes, I can learn the syntax of this programming language in a couple of weeks, but learning the idioms takes longer. It works pretty well if you're in teams that are, I would say, teams that are both co-located and do a lot of pairing or mobbing.
01:06:39
Speaker
that works really, really well. I'm sure, you know, so my company is, is like remote first. And we do a lot of my team anyway, just a lot of pairing and mobbing, you know, using, well, you know, one of the one of the video meeting platforms, I will not disclose which. Yeah, you know, but that does work pretty well. So it's kind of
01:07:08
Speaker
With Closure people, it's double-edged sword, right? If you're trying to hire Closure programmers, that is attractive. A lot of people will apply because they're like, I really want to do Closure. Most of those people don't have a whole lot of experience with Closure. Some of them like very little and others like, okay, they've been doing stuff at home for fun for a while and now they want to get paid to work in it.
01:07:36
Speaker
which is fine. And, you know, sometimes those people, the stuff they're doing at home is like, you know, industrial grade type stuff.
01:07:46
Speaker
And then, but for a lot of people, they're like playing around with it like I do. Right. And then you come into screenshots in terms of tests. And then you come into a work context and just like, it's a very different style of, you know, of writing closure. Um, and so like there, there is a learning curve and so on, but, um, you know, I, I don't really, I don't think closure programmers are,
01:08:14
Speaker
you know, any different, like, I don't believe that that whole thing of like, you know, closure programmers are this type of person and they're like, they play musical instruments and they're this and that. Because I've seen a wide variety of people who are, you know, good closure programmers and all they have in common is like, they use Emacs because, you know,
01:08:38
Speaker
That makes sense. I mean, that is the only yardstick to measure closure programmers anyway. You still see that in the surveys and all that stuff. So that's much easier. But it's kind of funny. I'm going to go off on a small tangent still related to management and closure. Yeah, go ahead. I would advise people out there if you're trying to get closure into your shop.
01:09:08
Speaker
say anything along the lines of like, this will let us be way more productive. Yeah, because like, I worked at a million places and I've seen a million people use a million programming languages and honestly, like the time to ship, you know,
01:09:25
Speaker
It doesn't matter what programming language you're using. Mainly, it matters what problem you're solving. And also the people. And the people. There's so many variables. It's definitely true that if you give me a problem to solve and you give me a choice of three different programming languages in one disclosure, yes, I will be much more productive in closure. But for any random team, that's not the case. And that's what I've seen.
01:09:54
Speaker
you know, at my current employer too. It's like, it's not like we ship software amazingly fast because we use Closure. It's no, we've got a complex application and it takes time and you know, what you get with Closure is hopefully you get code that's simpler, but you know, that's not necessarily true either.
01:10:14
Speaker
Sorry, I think it's in our tendency to try to find one reason and then rally behind it. It's always easy to say it's because of closure. And then I think right before we started this, I think Ray and I were just riffing a little bit. And I was also mentioning that the productivity and the usage of the application has no relationship with the language itself.
01:10:39
Speaker
There are enough people who built amazing shit super fast in Ruby on Rails, in PHP and Node. C++. C++, exactly. And of course, there is an objective difference between languages. And we can certainly say, hey, the experience here is much more enjoyable, much more
01:11:01
Speaker
you know, simpler compared to the other things. And, um, but that's not the only variable in this thing, as you're saying, right? So that's the, uh, this is something that, that probably we need to, uh, maybe personally, I feel like, you know, the, in general, unnecessary superiority, you know, at least projected, not a feeling, but at least the, that is the impression that other people get like, Oh, you know, the list, uh, closure people think they are or whatever.
01:11:31
Speaker
That's something to need to need to die. This is really bad for inviting new people. It's really bad for growing the community, I think. Yeah. Well, ironically, that's how I got in the door. I was reading Paul Graham's book all those years ago. That's what got me into scheme. And talk about Arab superiority. I mean, that dude is high on his own forks, let's just say.
01:11:59
Speaker
And, um, you know, so that got me in the door and, and unfortunately, you know, I imported that whole way of thinking of like, aha, now I get it lists, you know, I'm aha, you, you, you know, with your toys going, but you know, then I've, I've encountered the same thing, like with some people in the Haskell community have that kind of attitude towards, and then you see it and not all of course, like many people in the Haskell community are absolutely lovely and humble and welcoming.
01:12:29
Speaker
But then you see that, you look in the mirror and you're like, oh my God, am I like that? Like, is the Closure community like that? Like, please no. But I think that's a great point, DJ. And another thing you said in there was like, it's about, you know, happiness, right? You know, we might be happier writing Closure. And I honestly believe that like, the happier your team is with their work,
01:12:58
Speaker
I mean, that's where productivity comes from, I really think. If you get a bunch of people who like to write closure, then let them write closure and I think you'll get good results. But just don't make these promises because first of all,
01:13:19
Speaker
show me the studies showing that language A is more productive than language B, define productivity, whatever. But also, I think that if you're not using the right tools, then closure can be a horrible experience. If you're prepared to, if you don't mind,
01:13:37
Speaker
the brainfuck of all of these like unbalanced parentheses, then fair enough. You know, we never, we never, we never feel that because we use Emacs anyway, go on, go on. No, no, but if you use Emacs, you'd be fucked, you know? Yes. So, so these people who do that, you know, kudos to them who kind of balance their own parentheses, you know, that's a super power. You know, doing your own accounts or something, you know, it's just not something I'm going to do.
01:14:07
Speaker
I think something like that. Yeah, I've seen his email. I've seen we've seen him on screen using email. So he's in your camps. Excellent. Yeah. Yeah. But what I was going to say was that I think the other problem that I see sometimes as well is that
01:14:25
Speaker
People like, although they come, they come and they want to do closure, et cetera. They bring like language X or language Y with them. So they write closure like Python or like Ruby or like Java and often all three, you know? What's going on in this code base?
01:14:42
Speaker
Oh my god. What is occurring? You just remove the parameters and then you see Java. Exactly. Yeah, exactly. Try catching, what the hell. It's kind of like that, and you see that.
01:14:59
Speaker
that in many places. And then it becomes like, wow, actually, this is not fun to work with. This is torture. Why would people enjoy this? People have to write closure, and then they have to enjoy the idioms of closure, like you said. Learning that isn't always obvious.
01:15:19
Speaker
Yeah, exactly. Like, you know, some of a lot of these things these days, I remember speaking with someone a long time ago about like, the beginning of closure was fine. But if you've got to kind of like, look at a code base with core async transducers, reducers, a juices, what the fuck? I think it's just taking a piss at this point. But you know, is that a real thing? You do, sir.
01:15:44
Speaker
Induction is a real thing. I think at this point it feels like you don't know what it actually is. Get a dictionary you retard. Just get by a dictionary.
01:16:01
Speaker
What the fuck? I'm kind of joking, but the point is that it's all true what I'm saying, but it's also funny. But it's a relative, it can become, if you're doing multi-methods with component systems and all these other things, it can start to become a bit
01:16:21
Speaker
complicated, you know, I mean, reading an arrow configuration file for the first time isn't everyone's idea of joy, you know, even though it does help, you know, it helps with a certain set of use cases. But, but, you know, so I'm not knocking that thing. But it's just it just means that like in a professional setting, you're going to encounter a lot more code, a lot more styles, a lot more surface area and closure is not a small simple language anymore. It's got a lot of stuff, you know,
01:16:50
Speaker
Yeah, but I think I mean, in that case, you know, objectively, I would say, well, it's difficult to say objectively, but from my personal perspective, you know, that's the other languages. Objectively. Yeah, because there is only one.
01:17:10
Speaker
There is only one perspective that is mine. I think that, I mean, if you see the amount of syntactical elements compared to any other language, you know, it is objectively less, right? The syntactical element is less, but the semantics are something that you need to learn. So I think that is the part which people don't realize when, if we sell it like, oh, it has no syntax, it's awesome. Yeah, for half an hour.
01:17:39
Speaker
I have all this new stuff that I don't know, and the libraries and everything. Luckily, I mean, we can still say cumulatively it's less than if you are entering Scala, if you're entering Haskell, because the amount of concepts that you need to learn syntactically is way higher. So that is still, I think, for me,
01:18:01
Speaker
Even now, I was trying to learn some JavaScript and the JavaScript that I learned like 20 years ago, 15 years ago is completely different and it's impossible for me to grow. I need to read like, oh, is this ES6? Is this the ECMA? Whatever. I don't know. Something different.
01:18:18
Speaker
So they keep adding to the language, and I think things like Clojure extend it in the library world in that direction, but still syntactically closer to the language, which is slightly easier, I think. The thing that I like about Clojure, I mean, if I'm going to turn it slightly around...
01:18:40
Speaker
Is that the thing i like about it is that if you are using a raffle and you can like fire up a raffle and make a request against raffle and do stuff. And it kind of works then when you're shipping your code.
01:18:55
Speaker
If you've been doing REPL-driven development, then it usually will just work. You don't have to do a lot of building and deploying kind of stuff. Whereas a lot of other languages, there's a kind of pipeline. You've written your code, and it's all kind of fine, you think. But then there's this other admin process of actually shipping your code.
01:19:18
Speaker
And I like the fact that with Clojure, that is really pretty small, you know, that kind of gap between like actually writing the code and deploying it is almost zero. And it can be zero, in fact, you know, which is really good. I think that's a really, really great thing about Clojure, you know.
01:19:38
Speaker
yeah i think if these are the ones that are being you know advertised and then told to people hey this is the difference between different languages so pick whatever the thing that you have most affinity for and we enjoy this because of these these reasons and and then
01:19:58
Speaker
keep pushing this positive message and keep making this openly discussed and make it like that rather than saying, well, if you write Lisp, you're fucking awesome. And then that's it. That's the reason why we win. And OK, that sounds like the dumbest way of advertising anything. Yeah, I think that's exactly right. And I was just thinking earlier when we were talking about different languages,
01:20:27
Speaker
For me, the best way to learn a new language is to sit with somebody who knows it really well and just like, I'm going to suspend all judgment for three, four weeks. Empty your cup. I'm just going to do what they do. And it's all in zero again on what are the things about this language that are good? Are these the things that I value? Maybe, maybe not.
01:20:55
Speaker
And so that's why for me with something like Haskell, I can write it. But the things that Haskell is good at are not things that I especially value. And I think there might be use cases where you would value those things. But those are not the use cases I have. And so I think it's like you said, Vijay, it's like listing, OK,
01:21:21
Speaker
the things that I enjoy about Closure are the rebel-driven development, the this, the that.
01:21:31
Speaker
If those sound nice to you, give closure a shot. If they don't, that's cool, too. Yeah, yeah. And also, what I notice more and more is that when people, I see some stories about, hey, we wrote everything in Closure, in Closure Script, now we're going back to TypeScript or whatever, because of various reasons, right? I mean, it's not a dig at the language, it's not a dig at something, but there are broader reasons, you know, wider
01:21:57
Speaker
way more reasons than just language to switch from A to B. And they're like, but the ideas that we get from Clojure are still being used here. And that's what, you know, things like Haskell did as well, like people learning Haskell, you know, noticing, oh, I can write
01:22:14
Speaker
it restricts me to think really functionally and then now you come to and you see the advantage of it and you see the friction points in the language and you go to another language where i mean hopefully another general purpose language not like you know you can't do this shit in this language
01:22:29
Speaker
sort of thing, there you apply the ideas. And like Closure is, you know, essentially, if you see Closure Core, you know, as mentioned, I think a million times, it's basically a copy of Haskell Prelude, basically, all the functions are pretty much the same. So that's what the nice thing about
01:22:47
Speaker
finding the thing that gives you joy. And then now you see, oh, I like these principal ideas in this language. And I can now, I learned these really nice stuff because of these reasons. I'm going to use this here. And more and more, you see the functional thing coming into Python and some static typing ideas and everything. And then I think everybody's life gets better, right? It's not just, oh, Pascal people are doing great stuff and rest of the languages are shit.
01:23:15
Speaker
Yeah, I think, I think, I think the, I remember like this Evan, oh my God, I'm going to screw his name, Evan Kapelsky, the elm guy. Yeah, right. He wrote this thing about Let's Go Man, he wrote this thing, he made a presentation at some Lambda days or something about Let's Go Man stream. And his argument was that
01:23:37
Speaker
The things like, things like function, referential transparency, and all this kind of stuff, it doesn't matter a fuck because we can't no one can get it, no one rocks it, you know, especially want to explain to people why it's good.
01:23:52
Speaker
You'll say something like fewer bugs or simpler to debug. So you can use like safety or debug ability as a kind of code phrase for immutability reference.
01:24:13
Speaker
I want no. I've often said this about not about closure specifically, but I mean, I think like immutability as a concept is pretty fine. But as a word, it's pretty offensive. You know, no one knows what the fuck it means.
01:24:29
Speaker
And it also is a bit of a sort of weird word in the sense that it's like an academic word. Immutability implies you can never change anything. And it's kind of true, but it's kind of wrong because the whole idea of immutable data is that, yeah, you can't change it when it's in flight. No one can change it underneath you. You're not going to get any concurrent update exceptions.
01:24:54
Speaker
Well, you can add to a collection, you know, you can add to a mutual collection, it's fine, you know. So it's kind of like this idea of immutability is sort of wrong, you know, or it's like, it doesn't, it's correct, but it's sort of, it's not communicating enough.
01:25:11
Speaker
And I often feel like that with functional programming, I think there's a superiority of the mathematical language. And I feel like somehow we need to go back to the drawing board, and I get even closer to it, and just sort of basically try to be a bit more straightforward about it, and less academic and snooty to some extent.
01:25:32
Speaker
Well, I mean, you mentioned Daniel Higginbotham, right? And Closure for the Brave and True, right? Yeah.
01:25:48
Speaker
It's more towards what you're talking about. Like, okay, it uses the words immutability, but those are not upfront. It's like, here's the thing. And by the way, Closure has called that immutability for Europe. And there's also, hopefully you've looked at maria.cloud. I think the Berlin Closure Bridge people, I think,
01:26:13
Speaker
Yeah, to teach closure. Yeah. And that is really great too, because it's aimed at beginners to programming, but it very much goes away from that whole superiority
01:26:31
Speaker
thing yeah yeah yeah but isn't it maybe you know i'm gonna take the other side of the argument now just for the sake of it isn't it then if we start using the words that don't mean the thing like there is a reason why you you pick a word yeah you know to do something
01:26:53
Speaker
No, I mean, in a way that makes sense, right? Because you need to be very careful about what you're calling it because people might get a different idea of what it is. Maybe that's the clear example of immutability because the general notion of immutability. A great example of this is Rust. They don't talk about, there's a technical phrase for what is occurring when you borrow a memory.
01:27:18
Speaker
There's a language before Rust that invented this concept. I can't remember what it's called now. It's like temporal. Borrowing or something.

Rust's User-Friendly Approach

01:27:27
Speaker
Borrowing is the one that Rust uses, but I think it's called something like temporal blah blah blah. With the correct name, essentially. But Rust doesn't talk about borrowing, you know? Rust talks about memory safe. It's a memory safe language.
01:27:45
Speaker
So now, okay, you could indeed argue that they're sort of lying about it, but they're not really, you know, they're getting the message across. So I think it's fine to use friendly language or more language that is kind of communicating more than academic words.
01:28:05
Speaker
Yeah, so there is no there is no initial barrier. Of course later you can explain much deeper Meaning later. You don't need to say oh, you don't know what Monad is. It's just you know Yeah, I mean it's a bit weird because I think there's a lot of harshing on

Programming Terms and Their Meanings

01:28:27
Speaker
People doing that in the closet even rich himself seems to laugh at these kind of things and yet we kind of do it as well You know, there's a sort of
01:28:36
Speaker
There's a sort of blah, blah, blah with transducers and shit. Come on. We do that, but it's right when we do it. Exactly. I mean, you know, it's like this idea of correctness is just take the pole out of your ass, mate, and let's just communicate in a friendly way. And then, yeah, if you really need, for whatever reason, to make a strict, then fine.
01:29:04
Speaker
But this idea of one word fitting everything is a bullshit anyway. Every dictionary, and the funny thing is, Rich goes to a dictionary, and there's always five meanings for every word. He picks one that's close to what he wants. That's fine. That's what he wants to do, and that's great. But stop telling me there's only one meaning for these things.
01:29:26
Speaker
Oh, and the Latin means this. And who gives a fuck what the Latin means, you know? It doesn't matter. And then we end up with beer. Which is fun. And then we end up with Riz. Yeah, yeah, yeah. But the thing is, it's like the back one in sort of thing. You end up with this thing that you want to solve. You look it up in the dictionary. You find like 15 words, which all mean different things. You've mashed them all together to sort of vaguely come together around one idea that you've got.
01:29:54
Speaker
and you know it's a trick and it's a fun trick you know but it's but it's it can be used as a kind of tool of oppression let's say you know if you want to get kind of harsh about it you know this is what i was saying like a few days ago i think ray you saw that as well on euro closure sorry the the closure europe channel and somebody mentioned contiguous vacation oh and for me
01:30:20
Speaker
I always read contiguous like you know this sorry contagious sorry you know like I was thinking like contagious like what isn't it disease or something like no no no it's like contiguous and then so the it's it's very difficult to have like a English English in the communication anymore because the the words are are so much different in every context every community so you can't just say well it used to be mean this in Latin like yeah
01:30:51
Speaker
What does Riz mean in Latin? I have no clue. Yeah. I mean, I think the classic one for me back in the day in Unix was cat. It's like, why is it called cat? Oh, well, because concatenation. Yeah. Okay. Okay. Well, yeah, I don't know what the fuck that means. Yeah.
01:31:09
Speaker
But what? Okay, now you've explained what concatenation means. What's that got to do with this cat thing? Oh, it's because I'm concatenating input from a disk to a terminal. What? No, that's not right. Now you really hurt my head. You know, I understand now what concatenation is. Cat is joining these two things. No, no, shut up.
01:31:32
Speaker
they're unjoinable. You know, you're lying to me big time. That is the kind of elitist thing, right? Because back in the day, like there is this Unix Power Tools book and I felt like I have this, I have the secret knowledge of all these weird names that nobody knows about. And meanwhile, you know, Richie and Kennegan and Richie sitting and then how do I fuck this thing to be just two character? We don't like it.
01:32:01
Speaker
Okay, or fd ar so why not? What should we call this arc? Okay. Why because it's the first names in the last names or whatever first characters move on We've got we've got we've got eight bits of memory for our operating system Anyway

Babashka vs. Traditional Clojure

01:32:26
Speaker
Well, closure, yeah. So, closure is awesome. That's what we want to say. That is awesome. But, you know, that's been nice to people, I think we're saying. And everyone is lovely and nice in closure as well. So, that's all fine. Except people using NBB.
01:32:45
Speaker
Everyone is welcome except for Nord people. Okay, but we said closure is awesome. But this is a semi serious point that we were talking about earlier, which is like, you know, I'm living in a post closure world, you know, I don't, I don't ever type CLJ these days.
01:33:05
Speaker
Because I'm only using like Babashka. But then, you know, what is Babashka? It's just a little, you know, a wrapper around Psy, which is the real cool thing, right? Yeah, yeah. And I know, like, Ray, you've used a lot of the, the Skittle and all that stuff, right? So I've used BB and BB Skittle, you know, I'm, you know, what?
01:33:26
Speaker
More promiscuous. I'm very promiscuous. Less cultured than you are, I'm afraid. I'm more tolerant. I don't know, whatever you want to say. More promiscuous is probably better. I've used all of his terms.
01:33:42
Speaker
Think it's really nice. I think the it's always one of these strange things though that you know, I'm the tooling isn't always as Simple as the JVM tooling. Yeah, I think that's probably the big thing but sometimes the two wings easier, you know like NBB and
01:34:06
Speaker
Yeah, tooling for NBB is like almost zero compared to ClosureScript. Yeah. And the tooling for Skittle is almost zero. Actually zero. It is actually zero. Yeah. Compared to anything else. You just create, you just drop a fucking like line in your HTML file.
01:34:24
Speaker
That's it. You're done. You're evaluating at that point. That is incredible. I think for some of the tools, it's not quite on par. For other tools, it's way ahead. Of course, I love this guy's stuff, and Mikel is awesome. Yay! I think that Sai is finally delivering on the promise of Closure Rocks, JavaScript, Reaches, whatever.

New Tools: Skittle and Cherry

01:34:53
Speaker
because like now we can run Closure really anyway.
01:34:58
Speaker
I don't, I don't need, you know, JS interpreter, you know, I just need something that can run Psy and Bob's my uncle. And so that's, that's super cool. Yeah, I think it's gonna be really interesting. What happens with like squint and cherry and stuff like this side, there obviously still works in progress, but a lot of people are getting pretty excited about it. Yeah. Where it's a much closer.
01:35:23
Speaker
It's a much closer integration to JavaScript than we've seen before. So I think that's a super interesting experiment you're doing. Yeah, and this kind of goes back to when you asked me why in the world I used Babashka for the stuff I was doing for the whole, for why I did Lambda.

Unix Philosophy and Simple Tools

01:35:43
Speaker
I think a lot of the things that we as programmers do are a lot less complicated than we want to make them.
01:35:52
Speaker
And something really appeals to me about kind of the bork dude suite of tools because they really are, I think most of them really are simple and that they kind of do one thing and that's what they're for. And then you can put them together. So it really feels like, oh, I'm unixing over here. You know, so when I, when I did like Lambda, it's like, okay, I have the Bosch kit here. I have whatever, you know, this piece here, that piece, you know, like I have,
01:36:21
Speaker
Babushka and I have a tear form and I have like fucking zip or whatever. Hurrah. You know, I'm combining these and the same you get with, you know, now you have like a sign, you have Skittle and Cherry and all of this stuff. And, you know, if you.
01:36:36
Speaker
There are a lot of things you can actually do just by dropping it, a tag in your HTML file, right? And that's good enough. You don't need to have some wild closure script, amazing advanced compilation.
01:36:52
Speaker
So I'm all for like, use the, you know, the least effort necessary. Let's, let's stop pretending everything has to be fucking enterprise, you know, webscale, whatever. Yeah. Yeah. Yeah. I think the thing about, and I kind of hit on it as well is the thing I like, the thing I like about Closure is like low ceremony, you know, and I think that's what you're hitting at as well. Yeah. So it's like, it's low. So if we can get low ceremony, then we're good. The more ceremony we've got, bad.
01:37:22
Speaker
Yeah, that's sort of like you can be simple and not easy. I don't like that. I don't like not easy. Yeah, exactly. Exactly. That's sort of you have to do some somebody should do some work on the not easy bit.
01:37:36
Speaker
Because if you've got simple, then not easy should be easier. Easy. That's kind of the thing, what you were talking about when you, you know, you don't know closure and like, okay, yeah, sure, the syntax is easy and minimal, but then you stumble across component systems and arrow config files and so on.
01:37:59
Speaker
You know, like those things are there for a reason, like they're, they're really good for, for what they do. But I think a lot of times we look at.
01:38:09
Speaker
Like we look at all of this stuff and we're like, okay, so we have to, we have to have all of this and, and every closure program we write, like, you know, it doesn't matter. I'm copying a file from, you know, one path on the hard drive to another, but I have to have an arrow config file and I have to use mount or integrant or whatever. You know, fucking death, you know, protocols and multi methods galore. So, you know, I, I,
01:38:38
Speaker
The thing I love about Babashka is a lot of times just cheat. Just not do any of that stuff and just copy the damn file and just using it without doing an actual program.
01:38:57
Speaker
It does these things like it imports a bunch of or requires a bunch of namespaces in for you and you can do just whatever JSON parts stream and all of that. That's what was so fucking fun about Pearl or
01:39:13
Speaker
JavaScript back in the day, the stuff was there. It's back to basics, but literally, isn't it? Put the cassette in and start typing the code. I never did that, but I can see the appeal of it when people grow up like that. It's like,
01:39:33
Speaker
Anything where you've got a rep, where you've got feedback, where you can just do things just quickly. To me, by the way, and again, if we're talking about welcoming people, these are the kind of use cases we should be talking about. Yeah, sure. It can scale up to the big banks. It's owned by billion dollar banks. It can run billion dollar banks. It's proven. It's a proven use case.
01:39:57
Speaker
So, okay, don't sweat that one, guys. You know, it's bank scale. We'll get that story in a minute, but you want to do, you know, you want to do something simple. Boom, boom, boom, boom. Here's 10 use cases of something super simple that will literally be nice for your life. And it will take, it will take you 10 seconds. Well, that's where the welcoming pack should be, you know? Yeah. And that's why PHP is super awesome,

PHP's Simplicity and Quick Achievements

01:40:23
Speaker
right? Like.
01:40:24
Speaker
Yeah, whatever you want to say about it in terms of the user experience from getting something done, you upload the script to your server and it's done. I think we have to revisit this idea of doing things quick is actually fine.
01:40:44
Speaker
Yeah. Yeah. Well, it's like, you know, what, what did they, what's the old thing that everybody says, but nobody does, right? Like make it work, make it good, make it fast and don't do any of those things until they're necessary. So exactly. Yeah. I mean, in a way, I think we are, we are getting there because given the iterations on the, on the frameworks, iterations on things and, and we, I mean, there is a reason why, you know, Babashka and all the
01:41:14
Speaker
related family of programs are way more popular and you know those are giving people more joy and then oh wait we had this one and then something happened in between and then now we're going back to basics and
01:41:26
Speaker
I think it is happening, but I think it would be nice if it is more, it's not just a branch in the community rather than it's adopted by the mainstream saying that, okay, this is a blessed thing. This is what you can experience closure with or something like that. That'll be super nice, I think. I'm very happy that it's in the community personally.
01:41:52
Speaker
I think it goes a lot faster. There's a lot more contributors. I think it's a better model. I'm not bullshitting. I think the model that we've got at the moment for the main system is very conservative. And that is what it is fine. But that's not a poor dude's attitude. He wants to have a more vibrant experimental approach to things. And I think there's definitely a huge amount of room and love for that, I think.
01:42:22
Speaker
Yeah. And I think that's like, if you want to talk about how do we build communities, I mean, look at, look at how he rolls. I mean, he's a, he gets so much done, but he's still like, you know, super friendly, super humble. He'll, he'll answer a question for the 6,000 time, you know, without saying read the fucking manual or whatever. Like, you know, he gets, when other people send him pull requests, he actually like looks at it and you know, he's encouraging even if, you know,
01:42:51
Speaker
He's never in a million years going to merge my shitty pull requests. He makes you feel like you're a valued member. And contrast that with how a lot of communities work, including some aspects of our own closure community.
01:43:14
Speaker
It kind of goes back to that era of superiority you're talking about. It's like, ah, we know the right way to do things and that's not it. And a lot of times that is even true. But just because I know the right way to do a thing and you haven't figured it out yet, that
01:43:33
Speaker
doesn't mean I should just dismiss you. That means I should say, oh, OK, cool, Vijay. You could also do it this way. And here's what happens if you do it this way instead of that. But again, I think that level of, I think, empathy and that level of safety needs to be there in the community from top to bottom. That is the reason.
01:43:57
Speaker
And as I mean that the reason why I totally understand that this needs to be. Kind of a branch in the community that that is much more vibrant and greener branch compared to the rest of the list of the fucking tree or you know what I worry about is that when when.
01:44:15
Speaker
all this, quote unquote, burden is put on one person or a few members, then it is much more difficult to expand it. And I mean, compared to every other language community, compared to JavaScript, we are tiny. That means we need to be way more protective of these mindsets in the community. It's much more valuable to us to make sure that there are new people coming in and then being able to
01:44:43
Speaker
um contribute being able to learn new shit and have fun in the end that's the whole idea and so that's that's the there is a reason why i was hoping for oh this could be kind of a the mainstream this is the trunk and there are some branches that are that are much more restricted i'm fine with it but if the trunk is much more at least and it's just a branch then it's like okay that's a pre-metaphors but
01:45:09
Speaker
I mean, to be honest, I think the way I look at it, you know, I think I saw a talk by, we're kind of like winning a bit long now, by the way, so I'll sort of make this my last winge of the night, okay? But, you know, I kind of like, I remember someone, it was a talk, I think, at the
01:45:30
Speaker
the closure tray in 2019 by Richard Feldman. And he was talking about why aren't functional programming languages mainstream?

Big Companies and Mainstream Languages

01:45:40
Speaker
And he was trying to look at like, well, it's basically because most programming language is not mainstream, actually. So why is that? Why are certain programming languages mainstream?
01:45:54
Speaker
And it's often because some big company like Oracle or Sun or Google or Microsoft has its back, puts a shitload of money into it, and essentially markets the shit out of it, puts community managers on it, puts a lot of money into documentation. Now, again, I don't want to be ungrateful to our friends in Brazil, but they've bought this company. They're sitting on closure. They've got billions of dollars.
01:46:23
Speaker
put a few million into it. I think there's a scope for that company and they don't owe me anything. Okay, I get it. But just as an idea, if you're a multi-billion dollar company that actually relies on this technology, you rely on it for your business or you're getting rid of it silently. I don't know what's happening, but I'm assuming they're keeping it a bit like Oracle with Java. They kind of had to put money into it because
01:46:50
Speaker
It's their business now, if they need it. I'm surprised that either Rich is saying, I don't want the money because fuck it, I'm just not interested, or he's being denied the money. I don't know what's going on.
01:47:08
Speaker
Well, it seems like there should be money. And even if there's not money for like, because at the end of the day, like he wants to control the core programming stuff. That's fine. Why isn't there money for marketing, for documentation, for outreach, for that kind of stuff? And like, you know, for conferences, free conferences in Europe, free conferences in America.
01:47:32
Speaker
This is a rounding error on one of their departments in that bank. I'm worried that either for some reason they're resistant to doing it, or there's a resistance to taking the money for some cultural reason where we haven't had the money in the past, so we always like to live in poverty.
01:47:51
Speaker
It's this kind of mentality that the poor people have sometimes where they don't know how to behave when they've got money. So maybe it's just like that. Maybe it's just a bit like that, that the culture is just an impoverished culture and it doesn't know how to deal with its wealth.
01:48:07
Speaker
Yeah, that's a real, it's a real, I don't know, I've just thought about that. So it could be really, could be winding up. I've had a glass of wine, forgive me, you know.

Valuing the Clojure Community

01:48:23
Speaker
I think, hey, dude, it's one of those, like, I'm writing this blog post, don't like it, go and start your own blog.
01:48:33
Speaker
If you come to this podcast for this content, not for these playing guests. Sorry, Josh, I'm going to give you the last word. Please win your prayers or whatever you want to do.
01:48:49
Speaker
Yes. Any last words for the episode? Yeah. Well, here's my last word since we've talked a lot about community. I don't know if Closure will ever become mainstream. I don't think so. But the greatest thing about Closure for me is just like the people that have met in the community. I like the language, but I never would have stuck with it if I hadn't met these people who were
01:49:16
Speaker
passionate, nice, friendly, helpful. I absolutely love going to closure conferences even though I don't write closure anymore.
01:49:32
Speaker
I love the European scene. You meet some of the people you always see around, but then you meet new people. So at least we're getting enough new people in that it's not the same old group of, you know, whatever, middle-aged men or whatever the fuck.
01:49:52
Speaker
You know, just moaning about how it used to be good back in the old days when you could concatenate, you know, tape drives to terminals or something, so teletypes. So yeah, like the community stuff, yeah, it could be better, but also I think we do have a pretty great community in many ways.
01:50:13
Speaker
especially here in Europe. I think it feels small enough to still know everybody a little bit and feel comfortable saying what you have in your mind. That is the nice part. One of the things for me, as I was mentioning, I've been
01:50:35
Speaker
in the community, one way or the other, since the blog spot days when Rich used to blog about closure. I mean, there is so much of intelligence, there is so much of experience in the community that I just keep... When I used to idle on IRC, now I'm idling on closure ends basically.
01:50:54
Speaker
Yeah. And every now and then, you know, posting my dog photo, that's what I do. That's my contribution. But otherwise, you know, I just read the stuff and they're like, wow, this is fucking amazing. And then there is something new comes up all the time. And and there are still people like, for example, Cycloach Daniels was doing doing amazing work to to keep the ball rolling, to keep there is a rhythm and focusing on different areas. And which is which is really admirable. You know, that is something that I that I love. And
01:51:20
Speaker
There is a lot of love and that and all the it's like, you know, my mother used to say, I mean, I'm slapping you because, you know, I love you because I want you to be. That's right. That's that's the kind of thing like it's like a harsh medicine. And and since we are so much invested and since we much even dare I say, I love the community and love the language so much. And that's where all these frustrations pop up as well. Every time we see something and it's not a big get. Well, this is a shitty language. And I would have just wrapped up and then went to something else.
01:51:50
Speaker
But that's not the thing, right? We want to be better. We want to help people. We want to enjoy writing code. That's the whole idea. So I think for that part, I think we're doing great. So I think that's pretty much it. Yeah. Well, I think at the end of the day, you want to share the love, don't you? Exactly. That's my view. Maybe this sometimes comes across like I'm sharing the head.
01:52:16
Speaker
but what we really mean is no but yeah it's sugarcoating you know but now really i know i like you say with great people and it's great language and you know we just yeah yeah yeah we just want to make this make have more more people to have the joy of this thing really
01:52:34
Speaker
Yeah. And for the people who probably read or saw the movie, the horse, the mall, the boy thingy.

Metaphors of Love and Support

01:52:41
Speaker
I'm not sure if you've seen it. It's a great, really, really amazing Oscar animation, but a book, the small children's book. It's not a children's book. It's really.
01:52:51
Speaker
you know, a lovely thing. And the mole is like, okay, you know, everybody says, Oh, I love you. That's why I'm here. And then the mole cannot say that. And he says, I'm glad we are all here. That's the, that's pretty much you can go to. So, so we have our own way of expressing our, you know, love towards each other, which is, which is really nice. You know, anyway, we're all, I'm glad we're all here.
01:53:15
Speaker
I'm glad we're here. On that happy note, thanks a lot Josh. I mean thanks for joining and I hope you're gonna you know do less and less closure and then tell the stories of closure to you know bring it to more people and make it faster and you know spread the node hate.
01:53:41
Speaker
It's a full-time job now for him. Yeah, well, thanks for having me. Yeah, thanks a lot. It's been fun. Thank you for listening to this episode of DeafN and the awesome vegetarian music on the track is Melon Hamburger by Pizzeri and the show's audio is mixed by Wouter Dullert. I'm pretty sure I butchered his name. Maybe you should insert your own name here, Dullert.
01:54:09
Speaker
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 or the lack of hard work that we're doing and you can also catch up with either Ray with me for some unexplainable reason uh you won't interact with us then do check us out on slack closure in slack or closure verse or on zulep or just at us at deafened podcast on twitter
01:54:38
Speaker
Enjoy your day and see you in the next episode!
01:55:15
Speaker
We could just sit here rambling on for like two or three hours anyway.