Become a Creator today!Start creating today - Share your story with the world!
Start for free
00:00:00
00:00:01
876b4c306172 Cora Sutton image

876b4c306172 Cora Sutton

defn
Avatar
0 Plays2 seconds ago

It's all just a bags of maps

That video about different languages in one file https://www.youtube.com/watch?v=ptN53mef_IY

Guest

  • Cora Sutton

Hosts

  • Josh Human Glover
  • Ray Person McDermott

MP3 SHA

75ddbedf4fdef254b043133f8af23d0de3cbc980df54b13adad3eae81049307a

UUID v5 from SHA + People

d21d6832-0cbe-53c3-a7c3-876b4c306172

Transcript

Introduction and Guest Introduction

00:00:16
Speaker
I think we actually have to say that this is definitely episode something or other hashly hashy hash string with Cora Sutton because, you know, oh yeah I'm excited to have you here, Cora. And now ah the show has officially begun, even though we've been jabbering on for 20 minutes already.
00:00:35
Speaker
Yeah. Hi. Hello. I did. Hi there, dear listener. I'm Cora. Oh, I have to state at the beginning, um i asked about this because I'm a cautious person.
00:00:48
Speaker
And ah all these opinions are my own and not my employers. um And so, yeah, just wanted add that in there. That's a good thing to add. We have no idea who you work for. I i assume it's not Ray.
00:01:01
Speaker
No, I do not work for Ray. Okay. No. Good. Good thing. so Ray works for me. I should say, by the way, I should also say that these are my opinions, not those of my employer. You know, i I've never said that before, but I've kind of always assumed that is the case. What about you, Josh?
00:01:18
Speaker
ah My opinions are the official position of my employer. um And actually, I don't even think my employer knows what closure is. My boss does because I talk about it all the damn time.
00:01:34
Speaker
But no, no, of course, these are my own opinions that do not represent my employer in any way.

Cora's Personal and Professional Background

00:01:40
Speaker
Yeah. And it and it it's kind of like a s safe harbor, like legal statement. We've never had that before. I know. actually court it's amazing Well, I've had yeah it's it's kind of a dangerous time, like for trans people in general. And so I'm trans. That's on everyone. yeah I think that's obvious by now.
00:01:57
Speaker
But yeah. um And so the risking my job is like obvious, by the way. Oh, well, all right. ah Risking my job ah is a thing I don't want to do right now yeah because things are pretty bad.
00:02:10
Speaker
And so anything I can do to kind of hedge that is really, really valuable to me. No, totally fair. Yeah. You're in the U.S. I take it, Cora. Yeah. Milwaukee, Wisconsin.
00:02:22
Speaker
The Rust Belt. yeah Wow. by Right by Lake Michigan, just north of Chicago. do you know Eric lives near there? Eric Normand. ah No, I didn't. Actually, yeah. He lives around Madison, doesn't he? Because they have the Madison meetups and he goes to it. I'm like, I didn't think Eric lived there. That's weird. Interesting.
00:02:39
Speaker
Well, he's from New Orleans, but he moved up to Madison like not long ago, right? Like couple of years. Okay. okay Yeah, Madison's a lovely city. If you ever get a chance to go out there, it is beautiful. It's built on an isthmus.
00:02:53
Speaker
if You know what that is? An isthmus? Is it like Christmas, but shorter?
00:02:59
Speaker
I do know what an isthmus is. It's kind peninsula sort of thing, right? Sort of. it's It's a tiny strip of land between two bodies of water. So there's these two lakes, Mendota and Menona.
00:03:10
Speaker
And the capital is right in the middle of that isthmus. And it's a beautiful capital building. And everything kind of swoops up in the city up to this capital. The the capital is at tallest point. And so it kind of, if you look at the layout of the city, it all kinds of come comes to this isthmus at a point. And it's like a four winged capital. it looks like Greco style. Like it's gorgeous.
00:03:31
Speaker
It's just kind of a really neat city around there. And it's like a university town and really left-leaning and um fun and so much culture and lots of good people. i have so many friends who live there.
00:03:42
Speaker
I'm from the area originally, so I love that city a lot. and Where do you live now, where you said? Milwaukee. So it's like an hour and a half drive east, or so give or take. yeah A much larger city.
00:03:55
Speaker
Bemis for beer, I think, isn't it, Milwaukee? Bemis for beer. Yes, there is no shortage of beer here, let me tell you. that's ah yeah Beer and Bratz, that's the ah Midwest... In a Westway.
00:04:06
Speaker
Yeah. yeah um I was running on an isthmus today and I i didn't realize it so ah ah peninsula has water on them three sides and an isthmus only has water on two.
00:04:19
Speaker
Yeah, exactly. Wow. You learn all sorts of shit on a closure podcast. Right. Okay. All right. Lovely. very christmas <unk> ah So we talked about isthmuses and talked about hedging. think it's is my, isn't it?
00:04:35
Speaker
Is my plural?

Technical Discussions: Data Processing

00:04:36
Speaker
It must be right. Or something. Not really. It's kind of like octopuses versus isthmuses is isthmus I. Yeah. I'm going with ismuses.
00:04:45
Speaker
Ismuses. I'm just going to be wild out there. Just, you know, take a risk. Ismuses. It is ismuses, clearly. it It is, it yeah. is No, I don't know. I'm just making shit up.
00:04:56
Speaker
Like, please, nobody at me. Josh, you're the authority on ismuses as far as I'm concerned. so I mean, let's just not be ismuses about it. oh So, Cora, anyway, what do you do over there in Milwaukee then?
00:05:12
Speaker
What's your thing? What's my thing? Well, I am one of the lucky or cursed people that ah their hobby is also their job, like their their special interest. And so the things I like doing are generally like around programming in general outside of that as well.
00:05:27
Speaker
And I'm kind of a bit of a novelty seeker. So I like hopping around a subject to subject. And so like and I've ended up with like a really broad range of expertise in my career because of that, just going from thing to thing. And I'm kind of not afraid to work on whatever.
00:05:42
Speaker
um So like last year, i was focused on making visualizations that became kind of like the centerpiece of this product we're putting out. And so like making stuff in SVG and canvas and like geo visualizations and stuff like that.
00:05:56
Speaker
And then this year I've switched my attention over to like OLAP query engines and building on that as you do. um And so it's just swinging from one to the other.
00:06:08
Speaker
um and And so I'm working on something right now that's like ah using Apache data data fusion. Have you heard of that? No. no It's kind of like a toolkit for building a database. It's basically like all the things in a relational data or in a OLAP database that you would want to hook into, like table providers or query planning or um execution planning. And you can hook into, there's all these these integration points where you can extend it in your own way.
00:06:35
Speaker
And you can plug into analytical processing and customize it to you however you want, like whatever you want to do. And so it's like this like database toolkit. And it's built such that um you can just pick it up and run a query with it right away. like You don't have to do anything by default. By default, it just works.
00:06:53
Speaker
um And it uses things like standard formats like Apache Parquet and Apache Arrow and can query all those formats and whatnot. Arrow.
00:07:04
Speaker
I don't like arrow. So that's where I get off. No, sorry. Sorry, data science people. I think arrow is so cool. It was all going so well. and So cool. And suddenly he took an arrow to the eye.
00:07:16
Speaker
oh Good one. Yeah. It's King Harold all over again. It is, yeah. If you don't have analytical problems, then arrow is a pain.
00:07:27
Speaker
Yeah. That'd be... I have 99 problems, but analytical problems are not one. Okay, so that's like this would be an annoying thing if you were forced to work with it. But it's so beautiful.
00:07:39
Speaker
If you're having arrow problems, of course I feel bad for you.
00:07:45
Speaker
so Sorry. love it. Yeah, well, you know, I didn't yeah i didn't want to misgender you on the air. Thank you. That would have been shit. so I appreciate that. Fuck, I was thinking of Avro.
00:07:56
Speaker
i hate Avro. I love Arrow. Arrow is my favorite thing I've never heard of. Avro I hate. Avro, yeah. Avro is like the, so they're like, instead of columnar, it's row based. Right. And it's pretty old. No, no. Avro is it's more of a, more of a kind of marshalling on marshalling kind of thing where you have to put a schema.
00:08:15
Speaker
It's flu this you like, ah the idea is it's a bit like, it's a, it's a bit like Jason. Yeah. seventy deer Yeah. Well, yeah, that, well, that's for sure.
00:08:26
Speaker
Yeah. Yeah. The idea is that, like especially for large volumes of data, you use Avro to squash it right down. so it's unlike The other one is Protobuf, but Protobuf doesn't have a schema. Even worse.
00:08:38
Speaker
Yeah. yeah So Avro has a like schema attached to it, whereas Protobuf is just you get you get the bytes and you work it out from there. Yeah, my understanding is that it's like it is like an interchange format. You can use it like that. But you can also store stuff in it, and it's row-oriented instead of column-oriented. like like Arrow and Parquet are column-oriented instead of being row-oriented.
00:09:01
Speaker
And that's really the difference. And so like ORC is another row-based one. CSV is another row-based, where just it's for serializing records of like some kind of array of things and into a storage thing, and then being able to get it out later.
00:09:17
Speaker
So between systems works too. I was thinking of like, I've always just like for one row, basically. it doesn't enforce row or column per se. Yeah, it's just record.
00:09:28
Speaker
It's more like, um so you think of an OLTP database like Postgres, right? It stores things in rows. So when you update a row, it'll go write that row somewhere and it'll invalidate the previous one.
00:09:41
Speaker
Right. So if you're scanning and you want to use all the columns on those rows, that's really, really useful because you can literally just scan row after row after row and use all of them. But when you have time when you have huge amounts of data, it helps to have them oriented like columns. So like you would have several arrays. And so like the first field around would have, yeah, you're you're basically pivoting it.
00:10:03
Speaker
Right. Yeah. Yeah. Turn the db around. i don't know what that is. Let me see your queries. hu go Anyway. No, it's fine. It's fine. Turn the beat around. We'll put it in the show. looks you know Yeah, there you go. Perfect.
00:10:21
Speaker
Good use of the show notes. Sorry. d p overra yeah oh d b ah Yeah, you you upgraded my ah my song there, right? Sorry, Cora. Anyway, you were saying something important and I made a stupid joke. and Oh, no. I can't remember what we were talking about other than Arrow and Parquet, which is really cool. There's all these new formats that are coming out that are really neat too. The Linux Foundation has this one format that they're working on called Vortex, which is like...
00:10:51
Speaker
parquet on steroids. It's like parquet and you learned all the lessons from this ancient format at this point. And you make it really, really CPU friendly to like query and to decode and to decompress and whatnot. Like that's, it's kind of beautiful as far as that goes. I mean, that's like the big trick with analytical processing is that everything must be CPU friendly. You'll do duplicate work as long as it takes fewer cycles to process it, like a fewer CPU cycles.
00:11:17
Speaker
So like things that you as a human would be like, oh, why would I do X? Why would I process that column again if it's already? No, if you if you try to eject that column, that's like branch misprediction. And all of a sudden it flushes its pipelines and you lose a CPU cache and it slows down.
00:11:34
Speaker
You just do all these really bananas things to make queries go fast, even duplicate work just to take fewer cycles. And it's kind of neat. I love bananas. I love bananas, yeah. And bananas work is the best work.
00:11:48
Speaker
It's the best work. I love that. Yeah, absolutely. Especially double bananas work. where Where does like OLAP end and big data sort of begin? Or is it a kind of like continuum?
00:12:04
Speaker
I think the big difference is, does it fit on one machine or not? Yeah. Yeah. Right. Because I know that there's some like the data, what's it called? Data science people in Clojure.
00:12:15
Speaker
um They have a whole bunch of things that are that are made for processing large amounts of data in columns and stuff like this. And I think they have it such that it's using the GPUs.
00:12:30
Speaker
as well oh yeah that's cool interesting i guess that's probably the future of all of this too i think that's mostly for like matrix multiplications and stuff like that rather than for like searching stuff you know yeah because with matrix multiplications obviously you can parallelize the yes simdi instructions single uh single instruction multiple data like that's that's that's all the olap magic like You have one instruction, but you can pile in like 50 different bits of data and do them all the same time.
00:13:02
Speaker
And that's one cycle to complete all of those multiplications that would have taken 50 times. And it's like, oh, God, you can make databases so fast. that's That's the duplication stuff I was talking about. It's beautiful.
00:13:13
Speaker
It's so cool. Damn. Because it's, um what do they call it? Yeah. Well, I guess in multiplication, if you do it twice, it can be bad because, you know, that would really fuck your numbers. Yeah, you wouldn't do it on the same data. yeah Yeah.
00:13:30
Speaker
The correctness does matter, it turns out. Yeah. Yeah. Yeah. Yeah, you know, for some definition of correctness. so So, it's vibes, you know? It's getting vibe data now. we need that's what the next I would love this, like, you know, we're talking new formats. There's a new format called Vibe.
00:13:53
Speaker
There's got to be. mean, there isn't, but but it would be really funny if there was, you know? Don't worry, somebody will vibe code it up, you know, three seconds after listening to this podcast. Blurg. Yeah, I don't know how to feel about all this

AI Skepticism and Programming Philosophy

00:14:08
Speaker
AI stuff. I know how to feel about it. It's fucking shit and I hate it.
00:14:12
Speaker
I'm not a big fan. I'm on record. Yeah. Okay. think I think it's a tool that's good at some things, but people are using it for all kinds of really terrible things. Indeed, yeah. Yeah. I mean, if we're talking specifically about LLMs, they're good for extracting stuff from unstructured text, and they're good at predicting the next word or phrase that comes in yeah a blurb of text.
00:14:37
Speaker
They're fancy Markov chains. Yeah. Fancy Markov chains. Yeah. Stochastic parents. They are. Yeah. Emily M. Bender. I'm making a heart sign listeners with my hand.
00:14:48
Speaker
Yeah. I think the the thing they're really good at is ah getting rid of workers and yeah everyone making a large swath of people very, very unhappy.
00:14:58
Speaker
Yeah, yeah. So usually we hold off on the shitting on AI until the very end of the show, but I see we've kind of jumped straight into it. So maybe we'll put a pen in how much ai is garbage and come back to it. Sure.
00:15:14
Speaker
But Cora, so we were talking about community or rather you were, and I want to kind of go back to that a little bit and and hear about how you got into Clojure. um Sure.
00:15:26
Speaker
One of the things you said about community was super interesting to me, and it finally answered the question in my head of like why do we care if closure is growing or contracting or whatever?
00:15:37
Speaker
Yeah. so I will come back to that point, but- Now, tell tell us about you and how you got into Clojure and all of that. So I think this is a common refrain in the Clojure community that like you have a community that's largely senior.
00:15:54
Speaker
They usually came from somewhere. And usually it's as a backlash against like trauma in some other areas. like i I wrote Ruby for 10 plus years and that hurt. like i I came out of that and I never wanted to touch Ruby again.
00:16:10
Speaker
and Now I'll write occasional Ruby script. Like, it's fine, but I will never work in Ruby again. um There's just too much trauma there. And i think I think people come out of Java and they come to Clojure and hoping that it'll, like, rescue you them from all of the pain that they've had there.
00:16:25
Speaker
And people come out of JavaScript and do the same thing. And people come out of all these communities. There's a lot of, like... A trauma response. And actually, we were talking earlier about this. I think a lot of the focus on focus on simplicity and correctness is a trauma response to people prioritizing, making it slick and easy at the cost of simplicity and dealing with all the pain ah from the fallout of that.
00:16:47
Speaker
People are just protecting themselves. That's very well said. yeah you don't want to People want to protect themselves from all that pain and they want to like save themselves from future heartache of it. So they they tenaciously defend it, even though like there is like some sort of synthesis of simple and easy where you can make these on-ramps for people to get towards where they can appreciate and use simplicity as experts, even if they didn't start out that way.
00:17:14
Speaker
That's like, yeah.
00:17:17
Speaker
and exactly I love the idea of um closure as a salve for trauma though. Yeah. think that's a I think that's, I mean, actually when I, the way you put it like that, I feel like,
00:17:30
Speaker
I feel when I listen to Rich Hickey's talks, he's kind of expressing that to some extent. Oh, totally. you know Yeah, now now you cast it in that light. It it makes a lot of sense. He's really preaching relief.
00:17:41
Speaker
he's he's yeah yeahs up there He's preaching relief from the things that we've been so hurt by in programming. Because programming so trauma-driven. Every new framework where they're just like, we're not like that other framework.
00:17:53
Speaker
They're really saying, that hurt. I don't want us to do that again. yeah Here's a better way. And I think also what's happening is that, and again, maybe it's the sort of the trauma aspect is, let's say that, you know, like you say, maybe this is this is better medicine than that was, you know.
00:18:12
Speaker
But like, I think what Rich Hickey was trying to say, and and to some extent, you know, other people are trying to say as well when they want to change change things is look, it's not the medicine that's the problem. It's not your dosage. It's really something deeper. It's something we have to deal with the core, the basis of this thing, you know, and that's painful also to address that and to accept it.
00:18:36
Speaker
Um, so yeah, because you can paper over it with coping mechanisms and you just end up just as controlled by the thing that you left because you're now not occupying the space that it did on purpose because you're afraid of it because it hurt you.
00:18:50
Speaker
And you're not actually free from it until you can step in back into that space and take the things that are useful to you, the things that you want to keep yeah and use it like adaptively wherever you want to use it and not be hurt by it anymore.
00:19:03
Speaker
like Like you're never actually free from something if you only occupy the spaces it doesn't occupy. It's still forcing you. You're still being controlled by it. You're never healed then. And so we need to be able to get back to some easy, but not at the expense of the other thing that like has been traditionally sacrificed, the simplicity part of right be a you need to be able to occupy both and take from both where it's useful to people yeah like yeah i think though i mean i think it feels to me i mean you know i have the whole of like especially western society these days is driven by convenience and ease yeah and it's definitely very countercultural to say we're not going to value that as highly
00:19:51
Speaker
Yeah. um You know, because we value this other thing more highly. Now that's not to say yeah you can't get things that are easy, but then but but it has to be very strictly something that does not come at the sacrifice of simplicity.
00:20:10
Speaker
And I think that's fair. i like that about closure that it's like, okay, simple is the thing we value the most. But I also agree with what you know you said, Cora, and what you're getting at, Ray, that we can also have easy as long as we don't make easy at the at the cost of simplicity. And I think maybe that's, I'm just guessing a little, Cora, coming from the Ruby world, Ruby, i think, gets that wrong sometimes. And they really go all in on easy things.
00:20:41
Speaker
Yeah. And, and you suffer so much because of the lack of simplicity yeah and and you, you struggle so hard to get back to it. Like it's funny though, isn't it? Because Matt's strikes me as a lovely person whose goal was to bring joy to programmers.
00:20:59
Speaker
Yeah. It was joyful. Yeah. I think it depends on what his, he was reacting to. Like he was reacting to something too. Things that were not for him. Right.
00:21:12
Speaker
And so his is a shape. His, his past experience has shaped what he put into Ruby. That was joyful. Mm-hmm. And so if you look at that, you're like, well, what were his influences? And you can almost see, based on the spaces it occupied, where he was coming from.
00:21:28
Speaker
ah you can You can imagine like, oh, manual memory management probably, where it was like, this is really, really painful. yeah um Interfaces that like made you jump through hoops in order to do the things you basically want. Like, I just want to iterate over this. Make the iteration really, really easy to do.
00:21:42
Speaker
make like Pile in into numerables. That's what Clojure does. Clojure piles everything into numerables. Yeah. Right? and And that's what they did in Ruby too. And it made it really nice for a lot of things. um You can see Clojure's reaction to the pain of mutability is that you're just not changing anything.
00:22:01
Speaker
Right? You can see a closure's reaction to the proliferation of things. The proliferation of types is to just say you have like three or four types and that's it.
00:22:11
Speaker
And everything operates on those, but you have like three or four types. Like that's, that's all you get or however many it's not, it's really not that many. yeah um Whereas like other languages say, I'm going to throw a type system on that. And that's how we're going to deal with the proliferation of things.
00:22:25
Speaker
Right. By the way i do like that def type is a map. Yeah. The old bag of maps here. Yeah. The bag of maps. Yeah. and And you look at Rust, say, for instance, and they deal with the pain of um of mutability by saying only one thing can mutate this at any time.
00:22:45
Speaker
Other things can read it and look at it, but only one thing can mute because mutation is still useful, especially for low-level languages. It's very, very useful. I mean, Datomic takes exactly that approach, right? Like we have one thing mutating the thing and everybody else is just reading the transactor, I think they call it.
00:23:03
Speaker
Yeah. And so like you you see all of this coping with, with mutability and um trying to understand and hold a system in your head and the proliferation of things and how to control that and make sense of it.
00:23:15
Speaker
And you see like the REPL is, I know it was existing for a very long time before we had this problem, whatever, but long compile cycles, like that's a reaction to long compile cycles. I want to just be able to like run this immediately and get feedback immediately. Cause that long, like that long cycle is painful.
00:23:33
Speaker
Like I want to get that it right away and see how it actually works. Yeah. I think the other one is macros, isn't it? Where I think the, the, the Lisp macro system was so powerful that it ended up being super easy to essentially put yourself in a small place yeah where only, only the, lang only the essentially everything was a DSL, you know,
00:23:58
Speaker
And then you're constrained by the DSL if if if you you can't eject from it really, yeah not not easily. Yeah. I think that was the point Nathan made as well in our conversation with him that I thought was really good because I i think about myself 10 years ago and I did that all the time.
00:24:17
Speaker
The first thing I did was I made a DSL and then I was fucked. yeah But it's interesting because like yeah I think your point about trauma is like i mean it's still really kind of, yeah, still causing me to think of about a lot of things. But I think Rich did a lot of C++, plus plus right? So I think like what you're talking about, you've got your mutation, you've got types everywhere, you've got the STL on top of that.
00:24:49
Speaker
um Long compile times, terrible build systems that are painful. Yeah. Yeah. So this is, I mean, that that really makes sense to me. But like also on the macro side, it's kind of funny because um I got into Clojure through Scheme and um the the kind of modern scheme out there is Racket, which I i love Scheme. I love Racket.
00:25:11
Speaker
um The Racket community is great as well. But those people love them macros and their hygienic macro system and macro this, macro that. And I'm just like, nah.
00:25:24
Speaker
Give me my functions, please. they have the thing where you can have a ton of different languages all running on Racket at the same time? Really? This file you can annotate. Isn't that the thing with Racket? That's true. Oh, maybe. like some languages where you think like I think it's per file in that case.
00:25:41
Speaker
So it's like you put like at the top of the at the top of the file what language it is. I mean, using entire languages whatever as a macro for your language is like the of Peek macro form.
00:25:56
Speaker
Like literally I'm writing another language on top of my language to execute as a macro. It's just mind blowing. Just it's, it's, there was a talk about this. It was actually on the London closure and I'm blanking on the, on the gentleman's name now, but I'll, I'll look it up afterwards.
00:26:14
Speaker
And he, his experiment was to say, you know, what's a language? Does it matter? And, and essentially what he was saying was that, and he, he demonstrated this ability to you know, C, Python, and C, Python, and Clojure, I think, and and maybe Scheme as well, all in one file, because basically everything was interpreted.
00:26:37
Speaker
um So, yeah, you know, interpreted or emulated, I can't remember which, you know. and So it's kind of like, yeah. and But I feel like there's a lot of these things with like Jubilee notebooks or especially with like microservice systems or whatever, where this this concept of the language doesn't matter.
00:26:58
Speaker
i mean, let but maybe we should talk about that a little bit because yeah this is something which you often hear, language doesn't matter. And I i reject that completely. But maybe maybe as and maybe as you guys don't, actually. i think I think language matters insofar as we're talking about capabilities.
00:27:15
Speaker
And so certain languages make things easier and make things better. yeah Like that's, that's really useful. i think language does matter. youre i Go ahead though, Ray. I, i just took over. No, no, I finished. I was so throwing, throwing it open Yeah.
00:27:29
Speaker
I can elucidate my point further, but please elaborate. were talking about this earlier, how I wrote a thing for work, how it was moving data between systems.
00:27:40
Speaker
And it was just moving from one Postgres database to the other. It's a Babashka script using the Postgres pod. and just executing queries. I tried to write it in TypeScript and I was like, this is so painful. I know that the schema is the same between both.
00:27:53
Speaker
I just want to grab a bag of maps and move the bag of maps to the other system. The language really, really mattered there. I went from, I tried to port it to TypeScript after I wrote it Clojure and ended up like like six times as much code. Like it was insane how much code it took compared to what it was in Clojure. Clojure is really, really like terse. It's really, really tight.
00:28:14
Speaker
And can like, do the bag of map move it between systems thing so well. And everything everything's a bag of maps, isn't it? It is kind of, isn't it? Yeah.
00:28:26
Speaker
Unless it's a bag of columns, in which case that's... Yeah. yeah I also agree that language does matter. mean, i mean Clearly, you can do anything in any language, but the question is like how, I mean, new you said trauma. I'm not going to maybe use that word exactly for this, but...
00:28:49
Speaker
I'll go with frustration. like How long do you want it to take? How frustrated do you want to be while you're doing it? And I think like for me, and I also do think that language matters, or rather different people like different languages. And I think that's okay because you know I have a lot of friends who use Haskell and yes, I'm still friends with them. It's fine.
00:29:17
Speaker
and um They are so convinced that Haskell is the best language. And what I've been trying to get it across to them is like, best for you, i will grant you that because your brain probably works in categories. And so Haskell fits your brain really nicely.
00:29:32
Speaker
Mine does not. I have used Haskell. I have used you know Scala and other ML languages. And um for me, it's just like, no, I need, you know, my brain is squishy. I need Clojure and just, you know, bag them maps and ship them around.
00:29:53
Speaker
yeah I mean, that's impressive. I mean, for for me, it was just like, i don't know, just the expressiveness of Clojure and just the direct access to the data is... yeah it's just, I don't know. There's something like ah bizarrely, there's something incredibly easy about that to me.
00:30:13
Speaker
Oh yeah. It's very direct. And I really like that. I think you can, you can basically do what you want to do exactly directly, quickly to the point.
00:30:25
Speaker
It's not a faffing type of language, you know, that's what I call a type. It's just a faff, you know, um, Because you have to think about, sure hang on.
00:30:35
Speaker
Now I have to think about a whole bunch of stuff. But what does it mean? What does it mean? What is the meaning of this data? I don't know what this fucking data means. It doesn't mean shit.
00:30:47
Speaker
Like you say, you just take it from one database to another, or you put it out to a web socket or put it out to a web server. It doesn't mean anything. mean shit. Yeah, it's a really good point, right? Because if you're if you're dumping a table full of people and putting it in a JSON file somewhere like...
00:31:06
Speaker
What does it matter that it's people to you? That just slows you down because it's like, okay, what fields does a person have? you know Do i have to use these Gitters and so on? And it's like completely unnecessary for like... And i I think that at least my experience working like professionally as a programmer has been most of the time what I'm doing is taking data from over here, transforming it in some trivial way, and then putting it over there.
00:31:32
Speaker
And Clojure is so good at that. Also, just thinking about, like since we mentioned people, yeah see okay what is a person? A person has a name, an address. Hold on, I've got my philosophy hat.
00:31:47
Speaker
right No, no, but you have this name. Oh, name and address. No, that's not a person anymore. That's an address. So you need an address type and you need a person type.
00:31:57
Speaker
but And then you have um a relationship between a person. And, oh, it's a one to many. Well, it's many to many because many people can never, oh, my God, fuck off. I mean, it's just like everything becomes incredibly, like, that's stress to me. You know, that's frustration because, and then, okay, if you even settle on something, even even if you say, okay, like, I'm just going to settle on this way of doing things, then you start building programs around it.
00:32:22
Speaker
And then guess what? You know, ah things change. you know You want to use it in different ways. Oh, fuck. Okay. But I've settled on these things. Yeah. It's a different kind of attitude. Am I an idiot for making the wrong decision like six months ago or a year ago?
00:32:38
Speaker
right. You did not predict the future, therefore. Yeah, what I'm trying to say is that everything is pushed to sort of like, you can push things out to the point where like,
00:32:51
Speaker
It doesn't matter. You know, it's user data. You know, you want you want some user data and keep as much of it together as you possibly can until you need to split it out. You know, I always think of like everything that's like a massive spreadsheet from column A to column Z, Z, Z, Z. And just keep everything in one spreadsheet until you really need to, you know,
00:33:13
Speaker
until someone forces you to say, oh, you need two spreadsheets. Like, no. All right. You know. can i Can I offer a counter argument to that? yeah of course.
00:33:23
Speaker
Please. Sure. um i So I really like this argument. I mean, I pushed it to the absolute extreme that I don't believe that, but you know. Yeah. Well, I mean, I agree with it too. The thing is, I i believe two things here, which is kind of the hard thing when you're like, it's dissonance. of you guys Like I don't understand the cases where both either of these things actually matter more.
00:33:50
Speaker
And I just tend to use it based on intuition one versus the other. But like the type system exists. It's either does it exist in your head, and when you forget about it, you you don't know what the data is that that that you're dealing with anymore.
00:34:04
Speaker
Or does it exist in a file so that when you come back to it, you know exactly what the data is because it's been checked. And so where does the type system exist? And at a certain size of system, it's actually really beneficial to have like specs, for instance, yeah where you define the data and you're like, like you have some way of describing it in a way that's checkable so that there's value there, right? That's why we have spec in the first place. It's really, really valuable to have like something written down. If I come back into it six months, I know what I'm dealing with.
00:34:33
Speaker
But at the same time, there's an onerousness to defining all of these. And like yeah what happens if it gets out of sync? and um Am I actually testing it to see if it got out of sync? like There's all of these like validation problems. And as soon as you cross system boundaries, how do I make sure the other system's definition stays in sync with this other system's definition?
00:34:52
Speaker
And how I make sure it just cascades through the system? Afro. Afro. God, fuck off. Hooray. I love it yeah yeah So so so so the kind the counter argument is that like, oh, we should assume that humans are fallible, that we're going to forget, yeah that we're going to want to be able to reference it somehow.
00:35:11
Speaker
And it's going to be hard to get at later. so if we write it down somewhere that's like executed constantly so that we know that it's correct, then we have a way of like referencing that. Like like we we are we have it as like a...
00:35:24
Speaker
um what do we call it? A prosthesis for our brain, like a way of of propping up the frailties of our brain for our future selves. So I like that.
00:35:36
Speaker
ah like I like you having your cake and eating it too, because you know that's delicious. So this is one thing I think Ruby got right and Clojure also got right in two very different ways. But like One thing I loved about Ruby is the idea of duct typing. right like you know the If you can call this method on it and it does the thing you expect, then just call it whatever type that was. And again, like coming back to bags of maps, I think the map is the ultimate duct type. right
00:36:11
Speaker
Because a map, to to use your spreadsheet analogy, Ray, the map has all the things in it. It has the person, it has the car, it has the address, whatever. And then what I really love, one decision that was made in spec that I think is really, really good, though I didn't get it at first and it made me angry, is the fact that you can't have closed maps. right So you can't have a map with only these three keys.
00:36:38
Speaker
It's a map with these three keys and God knows what else. And I think that is actually, that was a great design decision because it really forces you to think about this idea of like,
00:36:52
Speaker
i I don't want to constrain myself actually. like And yeah this is in keeping with the philosophy of having 100 functions operate on one data type is better than having one function operate on 100 data types or whatever.
00:37:07
Speaker
So i um I just really like, and and also the the idea that you can introduce specs gradually and they don't kind of poison your code base or infect your code base.
00:37:20
Speaker
Yeah, it's completely optional. I like that fact that you can just, like like you say, if there's a certain place where you need to have like certainty about those types because it crosses a system boundary or because they're long-lived or whatever, then okay, yeah that'ss let's let's put some put some type information on those things yeah as in when we kind of like feel a need. but I do tend to do that, actually. like Yeah, yeah, but I but but i think the the the the thing about it is like,
00:37:51
Speaker
i think it's just like I think maybe in terms of prosthesis, the question is, do you do you go in like and get, assuming you're in a battle all time, so you're basically walking around with a suit of armor all of the time, which is heavy and protects you, yeah But it's annoying when you've got the toilet, you know?
00:38:11
Speaker
um So it's like, you know, it's it's just tricky.

Work Environment and Programming Practices

00:38:16
Speaker
Oh, Lord. That's amazing. Okay. So moving away from the toilet quickly and the image of Rey on his fucking armor on the throne. Hey. On the throne? hey um they On a throne. You're wearing your armor.
00:38:31
Speaker
Anyway, so Korra, you mentioned... You mentioned trauma in Ruby, and so did you come to Clojure directly from Ruby? And what was that journey like? How did you get here?
00:38:44
Speaker
I'm going to name drop her just because... Drop it. ah So are you familiar with OutPay systems? You know the company? No. No. Okay. All right. ah It's fine.
00:38:55
Speaker
It was a company in the US, but they're still around, but it's much smaller now. But Brooke ah Swanson was... ah working there and I'm like, we were both former students of a teacher MATC Madison. And so we were in this one Slack that's like, you know, students of Eric or whatever. Like, you know, I have bunch of friends to do that and whatnot.
00:39:20
Speaker
It's pretty cool. um But Brooke was doing Clojure and then showing me some Clojure. I'm like, that is really cool. And so she kind of sold me on it a little bit. And I started learning it. I'm like, I really like this. Like getting closure is a fantastic, that's an incredible book.
00:39:35
Speaker
but karen meer read Um, I don't know. No, no, that's Russellson, isn't it? I think so. Yeah. Yeah. yeah Okay. Okay. It is an incredible book. Um, it's the pacing is like perfect and it's like very much like go through a concept.
00:39:49
Speaker
Uh, here's examples on the wild. Here's exercises to do. And you can literally just go piece by piece by piece. And by the end you really get it. And that's, it's named really well. Um, And so I learned it through that.
00:40:01
Speaker
And then I made like a maze generator and I applied at Outpace and I got the job um working at Outpace, which is really great. And then, you know, the pandemic hit and like ah I finally came out, which is fantastic.
00:40:15
Speaker
Yeah. um Thanks. And so finally got the transition. I mean, that's like a common refrain. People who just didn't. They're like, all right, well, I'm stuck at home anyway. And the world's ending. I'm going be myself.
00:40:26
Speaker
I'm going to be myself. That's fucking awesome, though. Yeah. We need more pandemi. Yeah. one And also, help i was out I was at a place where people are great. All the people from Outpace are stellar humans. I didn't realize how bad of a place I was in before until I started working with them. And I'm like, this is just...
00:40:45
Speaker
Fantastic humans. And so I got to come out and transition and it was gentle and everyone was fantastic. And it's a small group and really, really tightly knit. Like we did um and pair programming 100% of the time, which is a whole different yeah journey. Like beautiful amazing.
00:40:59
Speaker
I recommend it. It's so good. so I was on a mob team at two jobs ago and a closure mob team anyway. And there was like four of us and the amount of work that we did ah compared to like you know these teams with one engineer, ah one ticket working on Java systems. It's just incomparable.
00:41:22
Speaker
The throughput's crazy, and you build the right thing. Yes. Well, that was the thing, right? like We were definitely slower getting to the PR, but then the review was done.
00:41:35
Speaker
And what I found is once we were in production, we had a ridiculously small number of bugs in production because four brains had been looking at this code And actually the code doesn't matter. Four brains had been in the problem space thinking about the shape of things.
00:41:55
Speaker
And um also we had like very different personalities the team. That helps a lot. And that was so good because I'm a kind of YOLO, ah you know tested in production kind of guy.
00:42:09
Speaker
but So I need somebody who is like very disciplined and who is like cautious to hold back some of my excess. But then it's also good that I was kind of dragging him more into that, okay, but we do have to actually release this. We have to like try it with real stuff.
00:42:27
Speaker
Yeah, I feel like that constant, um you constantly like sharpen each other, like you improve each other constantly. Like i I, that's where I learned TypeScript too, is like we're building front ends too. And we decided not close your script um for these, various for various reasons.
00:42:42
Speaker
And so I was ah pairing full time with this guy, Max, who's one of my dear friends. He's fantastic. Um, and we, i learned TypeScript from him and I learned react from him. And like, if I hadn't been pairing with someone, number one, I just wouldn't have gotten the TypeScript at all.
00:42:59
Speaker
Um, and number two, like I would not have learned it as well as I did. Like he is he was really good at it and I learned just an incredible amount. Um, And, you know, it's interesting, the people that I paired with that I felt like I did the poorest with are actually the people that I like learned the most from, like the people had the most clash with, you know what i mean? Like where we're just vastly different people.
00:43:19
Speaker
Yeah. Like I gained an appreciation for different concerns more. Yeah. So, yeah. And so now I value that my career. Like if I conflict with somebody, usually like it's a good signing to work with them more.
00:43:32
Speaker
like Oh, yeah. it's like There's something there that they care about that's meaningfully different and also valuable that I don't appreciate to the same degree. I love that. I love that.
00:43:43
Speaker
So I live in Sweden and Swedes are a famously conflict-diverse culture. o And so one of the things I have to do, I'm a manager as well, so I don't like write code at work anymore.
00:43:56
Speaker
um But one of the things I always talk to teams about is like conflict is good and necessary and you need to surface the conflict as soon as possible and then deal with it in a healthy and and honest, genuine way.
00:44:11
Speaker
because like a, any relationship, like whether it's, you know, ah with one other person or whether it's with a team or whatever, like any relationship that goes through conflict and comes out the other side is much, a much stronger relationship.
00:44:27
Speaker
So I, I really like, I like what you said there, that when you're having a conflict with the person, that's a good sign you should lean in and, uh, Yeah.
00:44:39
Speaker
Yeah. Lean in with empathy. So like try to understand what they're concerned about. As long as they're not an asshole. Yeah. there There is limits. There absolutely are limits where somebody just doesn't, if, if, if they're not engaging with good faith in good faith, no there's just not a way to, there's not a way to broach it. Like you have to both approach it with good faith and empathy.
00:44:59
Speaker
um Good faith is Ray and I's favorite concept, right? Everything has to be done. The thing i was going to say is that, I mean, conflict is is fine if in the end of the day you can resolve it amicably and you know you can agree to disagree sometimes, but at a certain point you have yeah you have to make a decision.
00:45:20
Speaker
you know Are we going to write the test? Aren't going to write the test? Are we going to like are we goingnna
00:45:27
Speaker
I don't know. Are we going to spec this? Aren't we going to spec it? is Is this a certain set of choices you have to make? you know Are we going to use this library? Aren't we going to use this library? you know So there has to be some...
00:45:40
Speaker
rationale and then you have to you know argue it out prepare to hash it out and obviously don't want to be having those like arguments on every map right that's the key to good yeah hash it out like a bag of maps yes yes yes uh so can have for you oh go ahead was just going to say, i feel I feel like, you know, you can have like conflicts and stuff like this, but it can't be about everything and it can't be every meeting, every session. It's going to too tiring, too wearing. So there know there has to be, you know, I'm all for like differences of opinion.
00:46:18
Speaker
I'm not, I'm not frankly so keen on conflict. Maybe the words mean different things to me than to you. You know, I don't know. Yeah. I find conflict quite difficult to deal with.
00:46:30
Speaker
find you quite difficult to deal with. Yeah, well, I am. I am an absolute thin ass, yeah. so All my colleagues are like, fucking hell. Listen to yourself, Ray. you know ah I love that.
00:46:46
Speaker
ah Can I offer you an analogy that I find yeah like really useful? And I think it applies to the Clojure community too, as far as like continuity and health and whatnot goes.
00:46:57
Speaker
um There's always going to be differences in opinion. and like within and within any organism, there's there's there's competing systems that like want other want the same resources they want to.
00:47:09
Speaker
But if they don't work together, they suffer, they fall apart, they die. um And so if you have an injury, if you have this disagreement that's festering and you never actually clean it out and resolve whatever caused it, like it gets infected, becomes toxic, it spreads. It doesn't stay in one place and everyone gets sick and it becomes a problem where you just have to leave.
00:47:32
Speaker
you have to eject yourself from it in order to cure it, order to find a place where you can have a healthier relationship. And that analogy also carries over to communities where they have like conflicting views on what should be accomplished.
00:47:45
Speaker
And like if we don't make space for the different views on what need to need to be accomplished, then they they act as sores in the community. And people think that, like oh, wow, that community is really bitter. i always hear these people like infighting about these different things, and it's really negative.
00:47:59
Speaker
And people don't want anything to do with it. You end up with like driving people away. Right. And it's like a it's like a organism. That's more like, um, less like a human body and more like a, um,
00:48:13
Speaker
like a collection of cells that are independent or something like that, like a lichen or something like that. Or like, if you're not bringing in new blood and you're not bringing in new cells, then when the old ones die out, like you, it loses vibrancy. It shrinks. It's less able to, like, if somebody loses a job and goes somewhere else and starts working with a different language, who's really important to the community and they stop working on stuff, like it's a huge hit when it's a really small community.
00:48:37
Speaker
yeah um Someone passes, God forbid, or whatever. um So you need this. like We're all part of this chain of continuity of people. And if we are not careful to plant new trees for for the people that are coming up to to eat the fruit of, then the things that we're building are ultimately built on nothing. they they'll They'll fall apart as soon as we're gone. They'll go away. There's no continuity. You're not part of a chain, in a hole that you can be part of like as a...
00:49:05
Speaker
I don't know. That's like the human condition, like being part of a chain and and experiencing that and making sure that each part is well taken care of. It's just, it's gotta be human. I think I like that. The other thing that I, talking about things like Babashka earlier on, yeah I think, I think what's happened, what's interesting with the Borkyverse, you know, the call I love that. The Borkyverse. That guy is fantastic by the way. yeah I love that guy. Friend of the show.
00:49:31
Speaker
yeah yeah yeah was speaking to him on monday actually name dropping robbing elbows with the uh it was a very fun conference by the way but um we'll we'll put a pin in that um yeah kale bork dude or council michelle borant but and yeah i was speaking to him on monday actually name dropping looking name rubbin elbows with the ah obviously it was a very fun conference by the way but um wellll but put a opinion um Yeah, was going say was I think he's producing a lot of nice tools um and you Clojure script and you have Clojure and then you have like this Borkiverse stuff and yeah oh, it's kind of like nice, it's an ecosystem.
00:50:10
Speaker
It is. It's like a Lycan. There are certain aspects of Clojure that are kind of annoying, you know, that it's like You can't use it to script things very easily, you know, it's slow to start, et cetera. Now, okay.
00:50:23
Speaker
He hasn't like, he hasn't left the closure system. e and Quite the opposite. He's very active, but he's made something which acts in concert, but, but solves that problem, you know?
00:50:34
Speaker
And that, that's really nice. You know, i feel like, there's you know, conflict, uh, it's a weird way of saying it. I'm just saying I trying to get at was that you can have an ecosystem where certain things that are, that are, you know, that are very close to the trunk of the tree, as it were, you can branch out, but they're still part of the same thing, but they just do slightly different. they different like ah so tree is a bad example, but do you know I mean? It's kind of like, it's kind of like this, this ecosystem.
00:51:01
Speaker
Yeah. Expanding ecosystem where instead of conflicting and trying to take over each other's existing stuff, it's expanding it. Yeah. Yeah, it's mutually, it's like a compatibly, um it's a, it's ah it's a compatibly different thing. Symbiotic. Symbiotic. I love that. Yeah. Like a lichen.
00:51:17
Speaker
No, sorry. That's not like a lichen. No, lichens are multiple organisms, right? Aren't they? Wow. Aren't they multiple types of organisms that come together? i thought that's. Yeah. No, that's why they struggled to grow it in a lab because they didn't know that it was multiple types of organisms. I think you're right.
00:51:30
Speaker
Yeah. I encountered some lichens in the wild today, quite literally. I was in the wild and there were lichens there, but anyway, So I want to connect the yeah the the Bork dude and what you were talking about, Cora, about community. Because I think the Bork dude, in addition to making really cool symbiotic tools that um

Clojure Community and Programming Language Choice

00:51:52
Speaker
that do attack some of these pain points that Clojure has kind of hand-waved away over the years, the newcomer experience to the Borkiverse is fantastic. He is the most helpful.
00:52:07
Speaker
loveliest guy ever. like People will ask a question on a Slack channel and it's been answered 87 times in that Slack channel. And he will totally like answer it and you know maybe refer somewhere if necessary. But like there's no RTFM, there's no newbie shaming in there. And but at all I just love like the example that he sets because other people then in those Slack channels you know there're They then also kind of follow the lead of of the Bork dude. and um you know
00:52:41
Speaker
There's just a lot of enthusiasm around his tools as well. And I love that. That's really important too. And in one of the things that his tools do, which is like this knock-on effect that I think about it a lot,
00:52:52
Speaker
like you were talking about expanding the the realm of the like of ah land space of Clojure, right? But also it revitalizes a bunch of things within Clojure as well because you want to make it Babashka compatible.
00:53:05
Speaker
You want to like make it work or maybe even be built into Babashka. So like all of a sudden they're like making it Growl compatible. And so it's breathing new life into old libraries again because you them to work with new things.
00:53:17
Speaker
And so like that's a... that knock-on effect is really, really valuable. and that's what i mean about people coming in and building new things and making it approachable to people because it just brings new life into all of that.
00:53:28
Speaker
The more people we have contributing this way, the more high-quality things we're going to have building, the more jobs we're going to be able to get that do closure, the more like everything. It needs to expand in order for us to have a vibrant ecosystem.
00:53:41
Speaker
Otherwise, it just stays constrained or collapses. Those are really the options. And so...
00:53:51
Speaker
Didn't you have something to do with ah squint at one time, Cora? I did. I contributed a little bit to that. Just a little bit to that. i Very small part. I really like the idea of it, that of that being like a shim over the nastiness of JavaScript to make it less painful.
00:54:08
Speaker
um I find myself always wanting in JavaScript to have the closure enumeration methods or functions and whatnot. but And it's like just nice to have that available when you want to write something. It's very, very cool.
00:54:21
Speaker
That is a really cool tool. Cherry is also very awesome. But I think Squint is like nailing on something that like people have wanted for a while. And there's a lot of excitement around it for it. But I don't know where it's at now.
00:54:33
Speaker
But I do have the t-shirt. yeah I think it's still going. I think it's still going. I think it is. But it's going. I've got to yeah check it out because I've been all in on Skittle. like i I absolutely love Skittle. It's it's the tastiest candy in the Borkiverse.
00:54:50
Speaker
But I haven't tried Squint or Cherry yet. Tasting the rainbow? I'm here all week. Tasting bag of maps at the end of the rainbow? There is a bag of maps at the end of the rainbow. Yeah.
00:55:02
Speaker
Oh, they're always after me bag of mops. Oh my God. It gets better every time. Love it. Yes. Our three Irish visitors are spinning in their full leaf clover.
00:55:17
Speaker
Now I, I do know that that's not a real Irish accent, by the way, you know, Irish listener, or maybe, maybe plural, who knows? But yeah, it is.
00:55:29
Speaker
um So yeah, this is this is fascinating, but yeah we were somewhere in your closure adoption stories. So you were working at this lovely company. This is normally five minutes in, Cora. So come on, what's going on? I'm going an hour so far. I will go on tangents as long as you let me. Oh, tangents are on branchent here. I am. Okay. oh I'm branchent. Oh my God. I love it.
00:55:53
Speaker
Tangents are on branchent. going to use that. My coworkers are going to cringe. I love it. three So, no. So I used Clojure at Outpace. And so building kind of like an ETL type system at large and then eventually like some backend more CRUD type stuff.
00:56:09
Speaker
um And I really, really enjoyed it. But then when I got out of it because Outpace was hitting some hard times and I needed to look for another job, um it was just much more difficult to find Clojure jobs that I wanted to work in. Like one of my requirements for a job but it is it needs to be morally neutral or better.
00:56:27
Speaker
And there's a lot of like finance jobs, which I'm not saying are morally negative, but like for me, I don't feel great about working at it. And there's a lot of advertisement jobs, which I don't feel great about working at.
00:56:38
Speaker
you And so like those are the jobs that like were much easier for me to get as a Clojurian. And I was like, well, this other thing is working in green tech, but it's Ruby.
00:56:49
Speaker
And so I went and did Ruby again, which it was a mistake. um They had layoffs within a year. um tell me a little ah Tell me a little about your Ruby trauma, because um I'm very interested.
00:57:02
Speaker
I did Ruby myself for a little while, and I felt plenty of the joy. i also felt some of the pain we talked about. But my experience walking away from Ruby is like, oh, that was nice.
00:57:14
Speaker
So um I worked at a company called Zencoder. It's a YC company. Yeah, right. know Yeah, so video transcoding in the cloud. And so I worked on everything from but everything but the transcoding tool. So a lot of like orchestration stuff around like scaling up and down and running stuff on transcoding workers and distributing work to them and whatnot.
00:57:35
Speaker
And doing that at Ruby, especially Ruby 1.8 to start with, was pain. Like when you're running thousands of servers, you run into things you just don't run into otherwise. Like right a bit flipped in memory, an ECC memory.
00:57:47
Speaker
How is this possible? I look on disk. It didn't change. Literally so like a cosmic ray. Yeah. ray ah changed Flipped a bit. well guys Flipped a bit in memory. And when the code was getting executed,
00:58:00
Speaker
it like aired because you can literally go and look at like, like if some Ruby code is getting read and like literally one bit is different in memory as it's executing it. And so you'll get it and you're like, well, I can't debug this. There's nothing to debug here. This is just living in a magnetosphere with a sun pouring radiation at it.
00:58:20
Speaker
Like you can't do anything about it. and You could build a Dyson sphere and then live outside of the Dyson sphere, obviously, Cora. Obviously. Yes, obviously. Yeah, totally. um i could live in the far reaches of space, and I'm sure nothing would go wrong there. Yeah, that's fine. Space is famously hospitable.
00:58:37
Speaker
Oh, yeah, totally. yeah Totally. This tiny, tiny, tiny bit of it, yes. But then you deal with Rails upgrades in the face of a enormous systems that are constantly in motion and constantly getting things developed for it.
00:58:51
Speaker
And I built, I, this is completely candid. I, uh, committed atrocities, uh, um is gnarly the things you can do in Ruby because you can monkey bash anything.
00:59:03
Speaker
So what I did this is my most famous, I'm going to own up to it on the air. And my apologies is to anybody working at bright cove. Now bright cove acquired Zenkoder who has to work on this, but I wrote this thing, ah called blob it.
00:59:15
Speaker
And the idea was that we have all of these gigantic blobs of text like JSON in Postgres. And Rails just wants to do select star. That is its favorite thing to do in the world.
00:59:29
Speaker
And so when you're loading data, it's all select star. And when it loads that data, it's loading a bunch of text. And so... Every time it goes and writes the the row again, it's updating these gigantic text blobs. Everything's expensive about it. So i'm like, hey, what if I wrote an active record of extraction so that it actually stored the blobs in another database, another type of database, React, actually?
00:59:52
Speaker
And then it acted just like it's a text field on it. Everywhere that ActiveRecord hooks in with saving and loading data and whatnot, it'll behave exactly like it. As soon as they access the field, it'll go load it from the key value store.
01:00:04
Speaker
And then when it saves, it'll write it back. If I re-serialize it, check it, and it's actually changed. And this is all this monkey patching ah Rails 2 ActiveRecord code.
01:00:15
Speaker
So it became impossible to upgrade anything because of it, because it was all over the system. And that's on me. And I will forever remember that as a just don't monkey patch, like write a new thing.
01:00:27
Speaker
Just do the hard work of of making the interface simple because that is insane. I try to make it easy at the expense of simplicity. yeah And that's where the pain happened. And so when I heard that out of Clojure, I'm like, oh, my God, that's exactly the problem we have.
01:00:42
Speaker
We were also running stuff in parallel a lot, which like on the back end. So there's all this weird mutation and having to write like, I got really good at writing like forking worker managers with like crazy concurrency stuff using the built in mutexes and condition variables and monitors and stuff like that. i got really, really good at that.
01:00:59
Speaker
But that's insane. Like yeah getting good at that is so much pain. At that point, you should be using Erlang. Like just, you know. Come on. we You say that, but we actually switch to Elixir. Switch to Elixir.
01:01:11
Speaker
Yeah, Elixir is great. I love it so much. I love Elixir. Really cool. So good. I do have a problem with any language, and I have the same problem with JavaScript, where like they take one type of concurrency and make it the centerpiece of their language.
01:01:26
Speaker
Because concurrency things like that are tools. So like like ah JavaScript said, everything's a reactor. The whole thing is a reactor. It's just one big reactor. Everything is setting off I.O. and then waiting for it. And if you block that reactor, it's a problem.
01:01:39
Speaker
But everything's a reactor. You can't escape. yeah And Erlang, the Beam VM, is like, everything is an actor. And you can't get around that. Well, it's a process, Cora. They get angry if you call it the actor. Yes, it's a process. Yeah. But let's be honest. OTP is the, that's why everyone's there.
01:01:57
Speaker
um down with OTP. Yeah, you know Yeah, you know me. And I think OTP is beautiful. i think it's wonderful. I was a big fan of React. i learned Erlang because of React and I thought it was really, really cool. Yeah. um That database had a bash show for people that don't know.
01:02:09
Speaker
It's a value store built on ah the Dynamo paper essentially from um Amazon that became DynamoDB and really, really cool database that they built and they added all kinds of things to it. And they were kind of like the distributed systems cool kid when I was in San Francisco. I was like, this is like, I'm into this. I want to be part of this click.
01:02:27
Speaker
um I think it's flamed out now, hasn't it? It has. But React is actually getting restarted. People are picking it up again and running with it because people are still using it. so yeah good yeah But yeah, we did use that. have high hopes for it. So that would be that's really good news. yeah Yeah.
01:02:46
Speaker
I mean, and so someone at um Bright Cove that I worked with was a big fan of Elixir. And I think it was his like, this is my trauma. This is my escape. I'm going to an immutable language that has actual concurrency. That's not insane.
01:03:00
Speaker
yeah And this is really great. And it's kind of Ruby-like. So it's like, oh, we can just do this. And I went, I don't even want to go to that. These actor things kind of suck. You have to like memorize OTP's behavior to the degree that like you are an expert in it in order to debug anything. And it's just like, that is, I can't do simple.
01:03:16
Speaker
I can't do simple at that point. And if you're just doing stuff in their web framework, yeah, you can make it simple because the framework's taking care of it. But if you have to memorize how all of OTP works and think about like every single nuance when anything goes wrong, it's like, oh my God, that is just insanity to keep all that in your head and try to debug that.
01:03:34
Speaker
It's frustrating. Um, and so i really struggled with it. And I'm like, closure so much more simple. I can use reactors if I want to, I can use actors if I want to, I can build my own things if I want to, I am so much more free and adaptable.
01:03:48
Speaker
And like, that's what, that's what was enticing to me was that like, I am free with it, but also it addresses all the things that traumatized me about Ruby. Yeah. um And that adaptability is kind of like my mantra sort of with programming. So let's ask the question.
01:04:07
Speaker
Do I use Emacs or some other shit? Oh, you have VJ'd yourself. Nice one. just VJ'd myself. I'm sorry. I'll let you do it. You can if you want. So, Cora, Emacs or some other shit?
01:04:21
Speaker
Yes. ah I am an editor anarchist. I use all the editors, basically. I use Emacs. I use Vim. use IntelliJ. Sorry, we're editor Marxists here, so... Marxists can anarchists. I think you're polyamorous by the sound of things. I use IntelliJ. I use ah VS Code.
01:04:41
Speaker
I use for different things because they're good at different things. And so I use the right tool for the thing. And as long as I have Vim key bindings, like I can suffer through and make whatever work. the fuck? What? I know. I used that E-macks too. You had me until said Vim keybindings.
01:04:54
Speaker
God damn I know. know. They're a curse, right? They're like a terrible curse that you should never inflict on anyone because once you get in that place, then you can't go someplace unless they have it there. Because my brain thinks in Vim keybindings. I can't do anything else.
01:05:08
Speaker
It's frustrating. for i Do use Dvorak well? I do not. No. I tried to use Dvorak and other things, I can never get used to it. Okay. Okay. It's JKL. I mean, come on.
01:05:21
Speaker
Yeah. And it's so easy to have shake a JKL. Yeah. There. But um I try to use, I think, Workmen or something like ah at the key layer. No, no. It was a. What's the other one? The other really popular one.
01:05:35
Speaker
It's. it not say No, not No, not a. It's the other one. um It's quite popular in Europe. is it Something DH. Something DH. Like they switched it. It was. um I have. Colomac. Colomac.
01:05:50
Speaker
D-H. Like I try to switch to that. That's like a thing that like Mac has built it Like Colomac. Like it's a different key layout. Interesting. Interesting. T-I-L. It's really close to QWERTY. They just made it less painful QWERTY.
01:06:05
Speaker
But I still couldn't get used to it, so I give up. So you you use all the editors. Yeah, I mean, you're right, though. Marxists can be anarchists. Anarchists are Marxists in many cases. Anyway, any case that's a different show.
01:06:17
Speaker
Absolutely. um Yeah, we could definitely get into that, but let's not. I think we should. like Forget this closure stuff. Let's yeahs go get into a political Hardcore political theory, yeah.
01:06:29
Speaker
Let's talk about the political theory of AI. o no oh mean, I can get into that. Nicely done. There's some jujitsu type. Yeah. I mean, it's clearly a way of unseating the last bastion of skilled labor that capital has not been able to like commodifies like the last bastion of it. And this is their way of hopefully commoditizing it so that they can unseat labor power.
01:06:54
Speaker
That's my opinion. um It seems that's why they're so excited about it, because they can just rip down the structures of power that workers have. And like it's literally the last one. And we're all sitting on our on our on our hands, reluctant to join unions and fight against this in any way, shape, or form.
01:07:11
Speaker
like They're trying to take over the creative industry. That's another area where the creatives have power, and they're trying to throw AI at that too. And just stealing all of our livelihood like like livelihood and And trying to also simultaneously take away from unskilled labor too. Like people need to work to live.
01:07:29
Speaker
Like that's the unfortunate fact under capitalism. yeah, Like, what are you going to do about it if you can't change the system? Like, you need to band together and protect each other. Like, the only people that are going to save us are each other.
01:07:43
Speaker
Not any political system of like, like, we vote in the right person and they're going to save us. It just can't work that way. It doesn't work that way. like Yeah. Much like fascism, you can't vote out LLMs, I'm afraid.
01:07:56
Speaker
Yeah. Funny thing is, I was, i mean, this is like very serendipitous in some ways, but in a horrible kind of way is I was listening to, um, a book today ah by Quinn Slobodian, who's doing a kind of three volume history of neoliberalism.
01:08:15
Speaker
And I was assuming the first one. And yeah, I mean, you know, put it in the show notes, Ray. Yeah. That sounds intense, but I want to hear about it. Yeah, put it in the show. Yeah. I mean, it's pretty intense, actually. I must have admit, I'm kind of like, I'm into it now, you know, but like this day is quite- I'm sorry?
01:08:34
Speaker
You're into neoliberalism. No, I'm into the book. I'm definitely not into neoliberalism. But there was a ah ah an Austrian economist. It wasn't Hayek. It was a guy called Misa. And he was talking about like how you know they have a theory, which I was not aware of, called the two worlds theory, which is that um you should basically have like the nation state, which takes care of politics, and then the global the global system, which should take care politics,
01:09:01
Speaker
laws which protect the market. um yeah And his idea, and he just put this out there, was that um having like the same level of global precarity...
01:09:16
Speaker
was his goal for neoliberalism. Yeah. that's That's how he perceived, like, that it will be the very best way to control the markets. and And it's kind of like, it was really weird because this is exactly what, you know, Uber and all these like gig economy things are trying to do.
01:09:35
Speaker
And you're quite right, Cora, because that's what they're trying to do with coding now is to make it more precarious. yeah You know, so, yeah, I mean, I mean, the classic border argument, right, is you're talking about precarity, like capital can move freely across borders. You know, it can't. And so because because of that disparity between borders, they can ship things overseas to make it cheaper and then ship it over to the other place and sell it to make a ton of money because because of the difference. And workers can't move freely in order to, like, make it more uniform across the globe.
01:10:08
Speaker
They can also move their HQ to Ireland and pay no corporate tax.

AI's Impact on Labor and Society

01:10:12
Speaker
So, you know that's cool. Then there is a pot of gold at the end of the rainbow. after all i There's the pot of gold we're looking for right next to the bag of mops. Sure it is. The Irish accent keeps on getting worse. I know. but no ah But no, 100% agree with all that. um There was a good article that just came out in the New York Times by their labor reporter.
01:10:35
Speaker
um And actually his last two pieces that I've read anyway have both been on AI. And um I think that's great because I think it's great that labor reporters are looking at AI and making that connection that like, obviously that's what this is.
01:10:50
Speaker
So this piece is on AI coding tools and use at Amazon. And basically the long and short of it is, is that like Amazon is encouraging people to use AI tools, but not mandating it.
01:11:05
Speaker
But what they're doing is they're effectively setting quotas that are so high that no human being can bang out that much code. you know So you have the you know the Steve Yege writing his 20,000 lines a day and Gene Kim you know gushing about how amazing this is. But like come on, writing 20,000 lines of code in a day, that's terrible.
01:11:27
Speaker
That's like we we should not be doing that. Right. But i' sorry to get back to the story. So effectively, like Amazon is um reducing the size of teams by laying people off and not backfilling them.
01:11:43
Speaker
And, you know, they have all of these AI tools there and, You know, what what's happening is when we had like Google workers and Amazon workers like five years ago, for example, doing collective actions, pushing back against, you know, whatever it was like um reneging on climate targets or, you know, standing in.
01:12:06
Speaker
Yeah, exactly. but Yeah, exactly. Exactly. um You know, that the company's actually backed down a bit, right? But now when tech workers are organizing, so some Amazonian, sorry, I shouldn't use the big company lingo.
01:12:21
Speaker
some ah Some Amazon workers were like doing a solidarity action for Palestine like a month ago and they were just like all fired, like immediately. Because it's just like, okay, you know you know, you are no longer the labor aristocracy engineer, so fuck off.
01:12:39
Speaker
And it's hard to do direct action for an online organization. Like like if you were, you could disrupt a factory. but If you and your buddies got together and were putting a protest and you kept deliveries from showing up and you kept the machines from running, you can force things to change.
01:12:56
Speaker
You can like put pressure on them. But if it's online and you don't have access, you can't do a damn thing. Yeah. Like how do you how do you actually stand up? Like in and put pressure on businesses as like a ah collective workforce when they can just fire all of you.
01:13:13
Speaker
There's no power there. Yeah, it's super hard. were Us sitting on our hands and waiting so long to take collective action and like formal formalize these things as like like industry wide unions is like it's it's going to hurt and hurt a lot.
01:13:29
Speaker
You're literally preaching to the choir because ray and I did a podcast on organizing tech in Sweden where we were looking exactly at you know the collective action problem.
01:13:41
Speaker
And luckily here we have strong labor protections, so you can't really be fired for you know union actions. I mean, you can be, but like you know they have to be pretty sneaky about it.
01:13:53
Speaker
um But i I think the other thing you said there was that, oh yeah, so not only are we sitting on our hands, but in many cases, engineers are like eagerly putting their hands on the keyboard and you know vibe coding fucking everything.
01:14:10
Speaker
And like that's one thing I have to say. like i i mean i'm just gonna come I love the Clojure community, but like the Clojure conferences I've been to over the last five years,
01:14:22
Speaker
Like maybe five years ago, it was all machine learning. And you know whatever, machine learning, I don't have a huge problem with like the kind of old school machine learning because typically- Like linear regression stuff.
01:14:34
Speaker
Yeah, exactly. Typically, people were talking about models trained for to solve a specific problem, right? So that's something different. you know It was a little too much for me because I wasn't really into ML. So like every Clojure conference, having five talks on ML was a little bit like, ah come on, let's do something different.
01:14:53
Speaker
But you know now just like having these LLM talks at like every Clojure conference and in every Clojure space, like it's just... It infuriates me, to be honest. Like I just, I see people that I respect just like going so wild about this stuff and being like, this is the best ever.
01:15:14
Speaker
and then like at the best, what they say at the very end of their talk or their blog post or whatever is, oh, and of course there are problems, but, and then they never expand on that. And like, I'm getting a little furious just talking about it and thinking about it now. So I'll shut up and let somebody else say something.
01:15:34
Speaker
i I think about like, it's it's like um it's like sheep celebrating the advent of wolves. wow it's it's it's It's like we're we're celebrating the very thing that will like be our downfall. Yeah.
01:15:54
Speaker
It's just, it's so insane to me. As workers, I just want to clarify you're not talking about the vengeful AI god that's going to destroy us all. Okay, let's get into Zizians and rationalists and whatnot. Oh, yes, please.
01:16:07
Speaker
Yes, please. Okay, so who what do y'all know about this? Quite a lot. Quite a lot? Okay, I know quite a lot Maybe it's the audience. Tragically. okay For the audience, for the audience um there was a very, in in a small niche I guess, famous ah work of Harry Potter fan fiction that kicked off the rationalist movement. It's like Harry Potter and the methods of rationality or something like that. If you go find it, it's like a hundred chapters now.
01:16:35
Speaker
This will not be in the show notes, but just want those people, but still. So I kicked off this thing. it was written by this dude who who started the website LessWrong. Right. So all of these people kind of are getting high on their own supply, thinking about, like, pretending that there's no never been a thinker before and in the universe and and and ignoring all of social science and trying to think of everything from, quote, unquote, first principles. Right.
01:17:02
Speaker
Well, Ray Descartes did the same thing, but I guess they rejected him too, right? They're like, I think, therefore I get VC.
01:17:11
Speaker
and Cogito ergo sum of money. Yes, exactly. Oh my God. Oh damn, Ray, that was good. This is like you know mob programming here. we like we're We're vibing on the puns.
01:17:27
Speaker
But anyway, the rationalists, yeah. I'm quite pleased with that one myself, actually. stay So eventually they came up with this. This actually came out of a ah niche community that writes like these like a horror encyclopedia essentially online.
01:17:41
Speaker
They came up with this idea of info hazards. So information you learn where if you learn it, it's hazardous to you because you can get into like this thought trap or like you learn it and it curses you or something like that.
01:17:53
Speaker
And so there's this famous thing called ah ah something basilisk. What's the thing called? Roku's basilisk. Where it's like, if AI gets created, ah it could punish you forever or an avatar of you forever um if you stood in the way of AI coming about or did not contribute as much as you could for AI coming about as possible.
01:18:16
Speaker
So we're all three fucked. We are totally tortured forever in some transhuman fucking cloud. And so these people literally do Pascal's wager. They do Pascal's wager with ah AI where they're like, well, I got to bet on the fact that like, i I guess I got to dedicate myself to this just in case it's true and just in case it happens ah for my safety.
01:18:37
Speaker
And so you have all these people that believe that there's going to be like this AI savior then too. So like, it's very much just Christian theology. I'm sorry for anybody's Christian out there. It's really Christian theology. It's the stick and the carrot where If you stand against this, you're going to be punished forever.
01:18:54
Speaker
And if you contribute to this, there's this utopia for you that's coming. It's literally just a reification of this. And if these motherfuckers would just study theology for like five fucking seconds, they would see through this, but they don't.
01:19:05
Speaker
But that's an info hazard, Cora. It's an info hazard, right. Yeah, but also like transhumanism is basically essentially saying that we can live in a computer and have a utopia there. Yeah. Which is essentially just heaven.
01:19:18
Speaker
Yeah. It's just kind of like, again, you know, the kind of of the concept of all of these things are basically just kind of Christian theology wrapped up in a just reassy or digital situation.
01:19:34
Speaker
yeah So, you know, i think the thing about it is that I was listening to something today and it was about Naomi Klein. I want i want to give her a shout out. yeah And she was saying that like people talk about hallucinations and But actually, all of these things that the rationalists and the transhumanists and the um the the effective altruists and long-termists, they're all thinking about, those are the true hallucinations.
01:20:02
Speaker
Yeah. Beautiful. Beautiful. Yep. They're like, we to become a multiple planetary species in case it wipes it out. So instead of solving the problem, right they want to give an escape hatch so they don't have to solve the problem.
01:20:13
Speaker
Yeah. And so they can basically leave everybody else behind to die. And they think that they're not just going to recreate. That's... I wish people would understand that progress progress does not happen for humans.
01:20:25
Speaker
It happens technology. It happens in society. It does not happen for humans. Humans are the same. Everywhere you go, it takes so long for humans to evolve. We do not progress. like There is no progression. There is no like high summit we're going to as humans where we're going to be gods.
01:20:40
Speaker
It's literally we just are doing the thing that human humans always do, which is just recreate our societies over and over, reify it over and over again, and have an accumulation of stuff.
01:20:50
Speaker
And we accumulate knowledge. We accumulate goods. We accumulate technology. We accumulate ah humans even just procreating, ah taking over, accumulate land. We accumulate all these things constantly. We're just doing the same things humans have ever, always ever done.
01:21:03
Speaker
And there's no progress. We're not changing. So if they go off to another planet, they're going to have exactly the same problem. If they have the technology to get to another planet, can you imagine the the whole human urge to self-destruction, like being like...
01:21:17
Speaker
in a multi-solar ah humanity. If you can send something at FTL to another star, you can just ram it into the other planet and instantly end it. You don't need a nuke.
01:21:29
Speaker
You just need speed. Did you just throw some Nietzsche death drive at us or what? Yeah, it's just... We're getting philosophical up depth. If you want to solve it, you solve it here. There is no planet B. There is no planet But the funny thing is that you come back to trauma again because this is displacement behavior. It is. yeah And, you know, we we are rats chewing off our own tails at this point.
01:21:52
Speaker
Yes. Yeah. We feel like we got our our are are our leg in the trap and we're ready to chew it off even though it's going to hurt us because we think it's going to save us when really we're just going to bleed out.
01:22:04
Speaker
And the outrageous thing is we fucking know how to like disarm the trap. Like yes we know how to do it, but we are still wanting to chew our leg off anyway. Cause it requires, requires losing power and control yeah and all these people that are got wealthy doing all these things with them.
01:22:23
Speaker
They want their power and their control and they don't want to give it up because they don't trust anybody else to do the right thing. And you also think that there's not enough, there's kind of not enough people hurting.
01:22:35
Speaker
In the West here. Yeah. Yeah. Well, they're starting to, yeah, no, no. It was just great. You know, I mean, but that's, but that's essentially the thing that's happened, you know, in the last 50, a hundred years is that, you know, well, let's say post-war post second world war, you know, things got a bit better.
01:22:54
Speaker
you know, was better living standards, you know, people got used to like a relatively high standard of living. And for many, very many people that is still, you know, sufficiently high that they don't feel like that that's threatened.
01:23:10
Speaker
But, but maybe in this, like, especially with Trump, it feels like that's turning, it's changing. You know,

Economic and Social Reflections

01:23:18
Speaker
it's, it feels like people in the whole of America and now feeling not not everyone in that over there, obviously, because a lot of people voted for him and still probably believe in the the project, but yeah, but it feels like there's enough people who are like turning their back on that project and thinking, holy shit, this is actually really pretty damaging.
01:23:37
Speaker
And, and I think, unfortunately, people getting hurt is probably going to be the way that things change, which I don't like to see it. You know, I really don't.
01:23:49
Speaker
No. Yeah. Oof, man, I kind of want to bring us back from the edge. Yeah, please, please. Something nice about Clojure before else Wow, okay, yeah. I mean, this has gone, like, yeah, okay.
01:24:03
Speaker
No, I mean... We moved away from AI to... To rationalist and... Well, not really, though, right? Like, not really... All right, so anyway, to bring us back from the brink and to end on a high note, Cora, we've been talking for, I don't know, 45 to 50 hours now.
01:24:24
Speaker
And

Conclusion and Positive Messages

01:24:26
Speaker
it's been gripping. But um what would you like to leave us with? And you have as much time as you want, so don't don't don't feel any pressure.
01:24:37
Speaker
I would say think about being pro-social. Like it's really easy to be an anti-social. It just means like, like laws in general, I think are good. Not because I think that the state should, should be punishing people, but because usually it reflects like a pro-social thing. Like don't be an asshole to your neighbors. Don't hurt other people. Like think about how to be pro-social in a programming sense.
01:25:01
Speaker
Like what steps can you take that would like increase this like the wellbeing of, of the different varieties of people that are in any given community. People are beginners, people that are really experienced and how do we, who who is underrepresented? The people that are most able to make changes in these communities are the people that are least able to see the needs of the people that are the beginners.
01:25:25
Speaker
And so like there's necessarily a blind spot. And so you really have to think hard about it and work hard at it in order to take care of that, in order to make sure there's continuity from you to the next generation.
01:25:36
Speaker
And to, yeah, like just think about how to be pro-social and how to but help others. and And so I love like the gratitude channel. It's why i love like like the different ways that we're leaning into helping each other with our projects and whatnot. Like that's everything.
01:25:52
Speaker
we need We need more of that. Can you, would you mind maybe expanding a little on like what you're doing? Because I know you have a lot of kind of community building efforts that you're in. Right. And ah I think maybe that would be a wonderful way to wash the taste of AI out of our mouths.
01:26:09
Speaker
Yeah. So i've I've been mostly focusing in it and like a work sense, like with mentoring people like at work and trying to help like bring opportunities to people and to mentor and to share things. I been doing so much in the Clojure community ah lately, but like when I was more involved with the Clojure community, i was doing things like like we didn't have ah individual docs at search in CLJ doc.
01:26:31
Speaker
And I'm like, that seems nuts. If I'm somebody who's new trying to find something, I don't know even the first place to begin. How do we make this easier for for for beginners? um I wanted to contribut could contribute to Calva because Calva is like what everybody's using. They're using VS Code.
01:26:46
Speaker
like the more The better that can be for beginners, for people to get into, the the the easier everyone's going to have <unk>s time everyone's going to have in the community. Because honestly, i love Emacs. I use Emacs as like my note-taking and different programming for Clojure work.
01:27:00
Speaker
But like that's a steep learning curve. That is a barrier to entry for people who are beginners because people are just not using it right now. um And so like the more we can make it accessible to meet people where they are in a pro-social way to help ensure that like we are not the end of our community, that we're just the beginning of it.
01:27:19
Speaker
Like that, that is, that's how to be a pro-social, like a good citizen of the world and a good citizen of, of the people around you. I think that's a great message. Yeah, it is.
01:27:31
Speaker
should we just- My name is Ray and I endorse this message. Yeah, yeah, totally. I honestly, I, I think we should maybe end on that one because i can't think of anything better to say than what you just did.
01:27:45
Speaker
Thanks for your time. ah Thanks for having me on here. This has been so great. I hope we can do it again sometime. And yeah, it's been lovely. It's nice to put voices and all that. cool.
01:27:57
Speaker
Totally. All right. Take care y'all. Thank you for listening to this episode of Deaf Anne. And the awesome vegetarian music on the track is Melon Hamburger by Pizzeri.
01:28:09
Speaker
And the show's audio is mixed by Wouter Dullert. I'm pretty sure I butchered his name. um Maybe you should insert your own name here, Dullert. pleasureer 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.
01:28:28
Speaker
And um you can also catch up with either Ray with me for some unexplainable reason. ah You want interact with us, then do check us out on Slack, Clojury on Slack or Clojureverse or on Zulip or just at us at Deafen Podcast on Twitter.
01:28:46
Speaker
Enjoy your day and see you in the next episode.
01:29:14
Speaker
Slender Minor for two hours from now to make cover art of Rich Hickey as leprechaun.
01:29:24
Speaker
but min for two hours from now to make a cover art of rich hickey as a leprecha