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

#62 - Mia

defn
Avatar
76 Plays5 years ago
We had super fun talking to Mia - "rock" star Clojure Developer and co-host of apropos! Enjoy!
Transcript

Introduction & Humor

00:00:15
Speaker
Recursive how? Well, because there's only one level of recursion, right? There's only one level of recursion. Yeah. If the fetus were female, then she would have eggs as well. So there's, you know, getting there, but then it can, it can go there to the next level. That's a big point.
00:00:40
Speaker
So, uh, welcome to DefN on that, uh, quote unquote joke from Ray. There's episode number 62. A humorous observation, I would say. Should we, should we explain the joke as well? Because probably people wouldn't know. Oh yeah. No, no one knows I'm knocked up. Uh, and I'm sorry, depending on when this, uh, depending on when this gets released, like I hope, hopefully I'll have my Twitter account back up by then so I can.
00:01:07
Speaker
OK, because I was looking for your your account. By the way, I'm recording now so you can see how we can chop this shit out.

Social Media & Pandemic Stress

00:01:15
Speaker
So that's OK. Oh yeah, I got stressed. I didn't want the FBI coming to my door. For tweeting, so OK. I was looking for your your account and then it said I can't reach it, so maybe it's my VPN or something so.
00:01:35
Speaker
Yeah, no, I got, uh, I got, I got too stressed reading about all the COVID stuff. I had to get off. Uh, that's a, that's a good, that's a good call. Especially with all the, anyway, I mean, let's not, let's not, you know, make this episode about another pandemic podcast. You know, like, fuck it. That is, there is enough news in the world already. So let's keep it into a closure side of the world. Hopefully. At least for one hour. I think me being knocked up is actual news that people are interested in.
00:02:08
Speaker
So you are not you are not you want to make another joke. You are not a mere closures. You are far more than that. That's true.
00:02:26
Speaker
No, the Mia has not, it's never been made a joke of that. Oh, I see. Because of your accent. So it puts the power at the end of the day. His granddad jokes are now multilevel. You know, that doesn't work. They're moved on to like accents. That doesn't work in my language where my people live. I did a, I nanny for an Australian family that used to call me Miaar. Miaal. Miaal.
00:02:56
Speaker
Actually, that's what I noticed whenever Ray speaks. Everything that ends with an A, I hear a hint of R. If he says Java, I hear Java. And apparently he can hear it too, and he thinks that's how it's supposed to sound. No, that's not how it's supposed to sound. I think there is something wrong with him. I'm thinking of Mia as in M-E-R-E. I know, and there's no R in Mia. The R is not at the end. It's Mia.
00:03:21
Speaker
But there's no R in Mia. There's no R in Mia. I know there isn't. Yeah, I know. There's no R in Mia. It's not like the, you know, the fighter speed, like, me-ar. You know, there is no R there. God damn it. Anyway.
00:03:39
Speaker
Right. Well, I mean, at least this is this is this likely better because I think you you are you have already suffered, you know, being gray in the same call because they're proposing. So there is nothing new for you, I suppose. And I'm I'm surviving four years. So, you know, it's nice because like.
00:03:59
Speaker
Usually when I don't get jokes, it's my fault and I rarely don't get jokes, but when I don't get, no, no, no, no, no, no. It's Ray's fault. Cause they're not funny. Totally. Oh man. This seems like, you know, it's like people who are stringed by Ray anonymous call now, like the group, now we can just chat about how we are suffering through his bad jokes and shit.
00:04:26
Speaker
Okay. Give us another one. I think, yeah, I think it's, uh, it's me who's going to turn out to be the suffering one. Well, at least one episode. I know. No, I know. No, he's not. Anyway, I'm not. No. We're actually talking about talking about new things. You know, we've got a little puppy and, uh, so it's not quite as exciting as a little baby, obviously. Um, but they're much cuter.
00:04:55
Speaker
I don't know about that. Wait, who are they? The puppies or the babies? Oh, puppies. They have floppy ears. They're born with hair already on their bodies. That's cute. That's true. I was going to say they don't piss and shit everywhere, but that's similarities. There are similarities. Can't get a nappy on a little shit.

Mia's Journey to Programming

00:05:20
Speaker
That's for sure. How old is the puppy?
00:05:25
Speaker
He's four months and we've called him EULA because, you know, well, it's a long backstory and it's really related to sort of how me and Erica and the kids are going to relate to him. But in the end, you just have to accept it and move on.
00:05:46
Speaker
What? Is this a spoiler joke? No, it's end user licensing agreement. Oh, I thought you said E-U-L-A-H. I heard an H at the end. Fine. Clearly your A's are corrupted with R's and H's.
00:06:09
Speaker
The thing is, she thinks I'm cleverer than I am. See, she's thinking it's a joke about some fantastic mathematician. I was waiting for, like, oh, like, you know, the dog, like, is it a pointer? Shortest distance between two points. Like, I don't know, just something. No, I think I think Dogg already started doing all the Project Tyler problems on the internet. Already level 273 or something.
00:06:37
Speaker
super smart duck. I have the same Euler project ranking as your puppy. So I have done as many Euler projects problems. Me and you and the puppy are all in the same ranking now.
00:06:53
Speaker
should be funny though I mean if they say oh you know our puppy is super smart they're like oh you know can can I fetch a newspaper no I mean she's like he equals an NP you know that he just went that level equals yeah exactly the funny thing is you know of course you know the funny thing is that we kind of say oh yeah he's not biting as much he's very advanced you know he's a very advanced puppy
00:07:21
Speaker
You've got to catch yourself, you know, being a total twat. Anyway, hello, Mia. How are you doing? Hi, I'm all right. I'm a little nervous about this. I haven't really had a thought in weeks. I just sort of pitch my round body around my environment groping blindly for food like a jellyfish. I thought you would be pregnant with ideas.
00:07:48
Speaker
No, just fetus. Hopefully, I can remember things. Been working, so that's cool, except I'm keeping the same hours as my colleagues in Japan because that's the hours the fetus keeps. I'm glad I have colleagues in Japan that I can say hello to at 11 p.m.
00:08:17
Speaker
So the baby can already speak Japanese by the time it arrives. Wouldn't that be fun? Yeah. Well, we're watching a lot of Korean dramas, so we assume he's going to come out as being Korean. We love them. We can't get enough. Yesterday, I sent my husband a YouTube tutorial on how to cut your hair like the K-pop stars. And he did it. He cut my hair. He fixed it. It looks great.
00:08:47
Speaker
I'm, uh, that's the, okay. Yeah. This is, this is the, this is the K-pop men's haircut. It's called the two block. Wow. Yeah. After this last week, we're all fans of the K-pop, you know, I, the teens are so powerful. I'm afraid of them. I'm very, I'm very scared of them. Uh, they're just, you know, they, they, they, they're using the internet to organize.
00:09:16
Speaker
And organized teens are the most frightening force on earth. They have no fear. There's so many of them. Well, someone's got to do something fucking good. So let's hope they will.
00:09:33
Speaker
I mean, they've had a good, they've had a good week. So, you know, I'm all for them this week. I'm all for the teens. It goes in either direction. I think sometimes you're like, Oh, fuck what are they up to now? And then, Oh, what are they up to now?
00:09:48
Speaker
I was walking my dog and I was wearing Uggs, those horrible sheepskin boots because I was sick. I was sick at home walking my dog wearing Uggs and I walked the dog past a middle school while they were outside and all of these teens said, what are those? Like the ugly shoe meme. I was humiliated.
00:10:15
Speaker
just full of fear of these teens for just owning me brutally while I was walking my dog. But then I remembered that they're behind a fence and I can go home and get in a car and drive. So. But you could have become a meme, you know, like that's a super famous thing to believe. Yeah, but for the grace of God.
00:10:44
Speaker
Okay. So anyway, um, so what are you working on these days? Maybe, uh, to, to shift the gears a bit. I mean, maybe we should say, maybe you should say who you are. Yeah, that's true. You know, I know who you are and VJ sort of knows who you are. I think because he's such a super fan of apropos. That's true. I watched like, uh, five minutes of the entire apropos stuff so far on YouTube. Oh, wonderful. It's more than I've watched.
00:11:21
Speaker
So, yeah, maybe, maybe a quick introduction to the people who don't follow up before they should probably on, on YouTube. I mean, you've just given them a great recommendation, Vijay, but, you know, I mean, look, I mean, if I'm into something, that's a disaster, like definitely. So if I'm not into something, that means that's amazing. You know, that's, it's like a,
00:11:46
Speaker
positive thing, like, you know, all the things that I don't recommend are really good stuff. While we've got this, this whole podcast is just self-effacing. It's just going to be all of us just roasting ourselves for an hour. To be honest, I really think I'm great, you know, so it's no problem. Thank God. I'm fucking awesome. At least one of us has some modesty, so that's good.
00:12:19
Speaker
Anyway, so let's go to the introduction first. Yeah. So tell us who you are a bit, Mia. Yeah. Hi, I'm Mia. Closure is my first programming language that I ever had a job in. So I've been working in Closure for about five years now. And, you know, I wasn't prepared for this.
00:12:48
Speaker
That's okay. Um, but you weren't, you weren't a programmer by kind of like birth, were you? You know, I know some people are there like go through school and everything. And they want to be a programmer. Like, you know, people want to be priests or whatever, you know, but that was, you know, it was never even an option for me. Like I had 15 minutes on the computer every day. Right. That was what I was allowed to have.

Cultural Reflections & Programming Happiness

00:13:10
Speaker
Um, so, uh, I, uh, I was a geologist from birth. Uh, I've been collecting rocks.
00:13:17
Speaker
and identifying them since I was 18 months old. That's not a joke. That's actually how my mother knew that there was probably something kind of wrong with me. That's how she knew you rock.
00:13:34
Speaker
Oh, oh, God. Oh, my God. See, that one was funny. Speaking, you know, after four years, I do, I do get some sort of shitty jokes from Ray. You know, there is something after four years. You get some shisty jokes from Ray. I just think it's important not to take any geology jokes from for granted. You know, they're really rare. So.
00:14:00
Speaker
And so I have a master's degree in geochemistry. And while I was studying geochemistry in Wisconsin, I went a little bit not well, had to leave, had to leave Wisconsin, had to go to where sunlight was, and ended up just driving all the way to San Francisco. I got a job in rural Nevada.
00:14:27
Speaker
but I wanted to see San Francisco. So I got here and I was like, Oh, this is the most beautiful place that has the best weather. I will never be depressed here because I will never see a snowflake again. Um, so I decided I was going to learn how to program, uh, and when in Rome, well, you know, I wanted to move here and I didn't,
00:14:52
Speaker
It didn't, you know, the thought occurred to me kind of gradually while I was working this kind of, I was working for a nonprofit in rural Nevada and I was managing their websites and just writing just a really shitty HTML, but looking for ways to automate my job, looking for ways to automate the spreadsheets I was using. And I found that I was starting to like the tweaking of
00:15:19
Speaker
what I was working on more than actually using the tools themselves. So I thought, Oh, like, like I could, I could learn how to program and move to San Francisco and get paid a lot more to do the same thing I'm already doing, but with less shitty tools. So, um, that was back in the early days of programming boot camps. And I did a programming boot camp where, uh,
00:15:44
Speaker
They taught me object-oriented programming. We learned Ruby and JavaScript. At the time, jQuery was still the big thing. Angular was just coming out. It was fine. It was all very easy. I got really bored. I started looking for other things to do. I saw this
00:16:13
Speaker
Someone did a linguistic analysis of all the programming subreddits to see which programming subreddit was the happiest. The one with the happiest people typing in it, according to this linguistic sentiment analysis, was Closure.
00:16:33
Speaker
And I thought, I don't know what closure is, but the JavaScript people look miserable, which I know I'm miserable when I'm writing JavaScript. So, you know, if the misery correlates, the happiness probably does too. I want to be happy. Well, I've never heard that before, actually. It's brilliant. Yeah. So I started learning closure and it was, it was beautiful. You know, right away you, you look at, you look at a list, any list, but there's nothing extra in it.
00:17:03
Speaker
You know, it's like poetry, right? It cuts out a lot of the boilerplate. I hated the copy and pasting. I always had this feeling every time I was making a new class just to hold one object,

Technical Deep Dive: Data in Fintech

00:17:21
Speaker
one method, you know? It was like you want to make tea, and so you build a cottage for the teapot. And it felt,
00:17:32
Speaker
It just felt clunky. And so when I found functional programming, it was like, oh, this is beautiful. This makes sense. I'm really excited about this. And I just kept introducing myself to people as someone who was learning closure until eventually someone hired me.
00:17:48
Speaker
You got the subreddit and you were feeling happy. I guess I've never heard that, but to me, that's a much better reason than a lot of people say things like, oh, I saw this bullshit on Stack Overflow and they said they were the best paid programmers. But being the happiest programmers, that resonates with me much more because I was a miserable fucking programmer. I'm still a miserable person, but I'm a happy programmer now. I agree with you because there's definitely closure.
00:18:17
Speaker
Kept me programming because you know so it's really great the other end of your career you're starting and it's making you happy so that's fantastic. I wonder how you transition from this desire to join the gang you know into actually doing it what what what what path did you take to realize that ambition. How did i teach myself yeah.
00:18:43
Speaker
Yeah, I mean, I could just say it very simply like that, yeah. I mean, I guess there's more than that, right? Like, you know, there is a whole community, especially out here. And that's, you know, and that I was very lucky that I'm here, because at the time, there was this really thriving closure meetup scene. So and, you know, I was unemployed, like, I didn't have anything to do except go to meetups. And the closure meetups were also the only ones I wanted to stick around for. Like, I went to a JavaScript meetup once, and that was horrible.
00:19:13
Speaker
Men talk to me. It was no men talk to me at the closure meetups. It was great Well, you know like they didn't try to pick me up. They like talking about my work, right? Just a just a totally different very respectful experience So, you know and you meet people that way and you get to know people who
00:19:37
Speaker
who know things who are really excited about this language, right? There's a lot of, there's a lot of passion about it and people want to talk about it and they want to help you learn it. So I got a lot of resources. Um, probably the, the resource that helped me the most in actually learning it was a Karen Meyers living closure. I just, I worked my way through that book.
00:20:02
Speaker
And that was very, very helpful. Just the way it was written was really good in teaching pretty idiomatic closure and some of the more
00:20:17
Speaker
Some of the more arcane stuff that I still don't use, right? But it's in there. And it's nice to be able to work through it in a way that makes sense. And the other thing is it teaches you how to make a website right away. So just a really simple hiccup web page. So you can stand up on your website. And then from there, I learned ClosureScript so that I could make things to show people. And that was...
00:20:46
Speaker
It was really, it felt really good to have my pretty web app and the code was pretty too. And it was small, you know, like, I made a web app that, uh, would call the, um, the bar API and just help me. Cause I, I was between two different stations. So it would tell them the station to go to, to get to the train faster and get to the city faster.
00:21:14
Speaker
Is it part of the Californian thing or a San Francisco thing? Oh, it's a train. It's the Bay Area Rapid Transit is what it stands for. Is it really rapid? No. It's rapid for us. I mean, the United States is very train challenged as I'm showing them. So when I first got here, it was like a revelation. I mean, I love trains.
00:21:41
Speaker
So for the first year, I was commuting into the city and just standing on the train platform with this huge grin on my face and watching the trains go past like, oh, this is the life. Like, we're on a train, and everyone's like hunched and miserable and canned with their lunchboxes. They're little wilted umbrellas, right? Because they felt the sprinkle, right? We hate weather here. If we see a raindrop, it's just like, it's disaster. I'm like, wow, on a train, amazing.
00:22:10
Speaker
But you're in the wrong country for trains. Yeah, tell me about it. Oh, man, we went to Japan for our honeymoon. We wanted to move there. We were just like, we're going to just live here. Just for the trains? Just for the trains. Yeah, we're just going to live. I got to ride on the Shinkansen, the bullet train. And when I first saw it, oh, it was so beautiful, sleek and shiny and roaring into the station, the sound they make.
00:22:38
Speaker
It was like meeting a celebrity and then you get on the train and it's like meeting a celebrity that smells like old food. Everyone eats these very fried bento boxes in it. And so it just smells like a stale fryer on the inside, which I wasn't really expecting. It's not nice. But I'm thinking Japan, every station's jingle is composed by somebody apparently.
00:23:07
Speaker
I just knew this recently because I was watching some James May in Japan or something on Amazon Prime. So one episode was about the trains in Japan. And then he actually went to one of the guys who was not the guy who was actually making these tunes for every station. So the jingle for station is done by somebody apparently.
00:23:27
Speaker
Oh, that's charming. I love that. That is cool. Google Maps just works so well in Japan. I love Google Maps. Google Maps is my favorite piece of software of all time. I think it's unequivocally, it's one of the only good things we've ever used a computer for. Yeah. I mean, apart from writing closure. Yeah, apart from writing closure. I guess apart from the fact that it's kind of like tracking you all the time.
00:23:57
Speaker
Well, that is not a fault. The software itself could be separated from the tracker. The idea, the scale of it and the utility of it is crazy. I mean, I don't think because I grew up with no cell phones and then all this shit came up and then suddenly I don't need to ask for directions anywhere.
00:24:22
Speaker
And I was just wondering like, you know, yeah, exactly. And the weird thing is if I, if I want to, uh, you know, rent a place or something, I can actually do like a street view and then see, you know, how the location is, which is unbelievable. The sheer power of, of never being lost again, right? It eliminates a lot of the fear of being on your own fear of traveling, fear of being in cities. Uh, you know, you don't have that fear and, uh,
00:24:52
Speaker
if that's a gift. And in Japan, they tell you which side of the platform and

Challenges in Learning Clojure

00:25:00
Speaker
which bay to get on. So you're like, you want to be on cars six through eight. And you're like, oh, thank you.
00:25:06
Speaker
Yeah. I mean, it's also because of Japan's, you know, maintenance is like that. If you go to India, they'll say train in three days, somewhere in the middle of somewhere, you know, something like that. But actually, Google did really, I'm not sure if it does still yet. Maybe they do because in India we don't have this, you know, like lanes and whatnot because we don't care. You know, so. You mean on the roads, you mean?
00:25:30
Speaker
Yeah, yeah, we don't have lanes. It's like everybody can go everywhere. And also, if you ask for address something, they'll say, you know, go until you find this temple and then turn left on that temple. And then there'll be a tree and then turn right there. And then there is a tea shop. Actually, Google's directions are like that in Google Maps there.
00:25:49
Speaker
Oh, that's so cool. Yeah. They'll actually write down something like go until this, this, you know, T stall or something and then turn right at this tree or whatever, or a movie theater, because we don't have lanes and shit and whatnot in Google maps. I mean, in India. So it's giving directions the way people give directions. That's the way people have directions in a small town. Oh, that's beautiful. The model of direction, right? That the directions data model is completely different. Yeah.
00:26:18
Speaker
wow but it is it is i mean it is it is certainly one of the magical pieces of software i mean and also you know technically as well then all the tiles loading and with javascript when they started like the shit was crazy it's unbelievable i mean back 10 years ago 15 years ago when when gmail was there or you know building all this spas or whatever that you know we we get used to now i mean google did push a lot now they're becoming like a
00:26:46
Speaker
Well, I think it's like the dark night, right? I mean, you live long enough to become the villain. Yeah. Speaking of good software. But let me ask just the key question of the podcast, and then we can just go back to the trends again. So, Emacs or some other shit? I use Face Max. Ah, finally. I was kind of hesitating because you said you start with living closure and all that stuff. Awesome.
00:27:15
Speaker
Yeah. Oh yeah. I started with technology. It's a nightmare. You know, if I were living in a colder climate, I think that the laugh warmer aspect is really appealing. And my shameful secret is I still use it for global code searches. It's just, it's so much better than Helm or Ag. But yeah, I switched to Space Max. I really,
00:27:43
Speaker
The Vim key bindings are just very, very nice. Frankly, I just like the space max default color scheme.
00:27:57
Speaker
It is a pretty decent out-of-the-box experience. Once you add the layer, everything is there, and it's super cool. Maybe you should switch to rip crap. I mean, it's way faster than AG, I think. But that's a different digression. What I like, the global search is really the only thing that I like to have that visual UI for. For the most part, the reason I switched off of IntelliJ was I was so tired of clicking. I never want to touch my mouse again.
00:28:24
Speaker
And, you know, with Emacs, with Space Max, you don't. And, you know, with Vim key bindings, especially, it doesn't hurt to never touch your mouse again. So, yeah, those shortcuts are so much burned into my muscles now. Like, I cannot switch. I keep trying different image distributions just for fun, like Doom or something like that. And I also have my own config from years ago.
00:28:49
Speaker
And every time I switch to some other thing, I keep missing, like, I know what space of RP does. And then, you know, I'm used to that thing. I don't know what it is anymore. I don't know how to spell that thing. No idea what it's called. Yeah, exactly. And then you just get used to those shortcuts so much. It's really difficult to get off that thing. But yeah, nice. Absolutely. I could never open a REPL in vanilla Emacs. I would just not know what to do.
00:29:17
Speaker
Well, the only thing I really like about it is you tap double space, and then the menu appears, and you can search for the command. So if you know that there's a thing that you want to do that you think Emacs probably would do for you, but you don't know what it's called, you can find it. And sometimes you find the wrong thing, and that's terrifying, because you end up in a buffer you've never seen before, and you don't know how to get out, and it's telling you it's a read-only buffer. And... Force quit. Right, and you have to force quit. But for the most part, it's great.
00:29:46
Speaker
Yeah, yeah. I think that that's the whole idea, right? The discoverability of, you know, especially with the software that is that complex, you can't have menus, you can't dig through all this shit. And it's the same when if you're using an IDE, then you're used to this clicking buttons and stuff. But IntelliJ is pretty, pretty good at shortcuts as well. I think they were like really, you know,
00:30:10
Speaker
You can do everything with shortcuts, really. But it's like one of these things, though, where maybe it's one of these things where you have to be disciplined to do it, whereas Emacs forces you to. So I think maybe it's like a lot of things in the world, you know. Probably why we like closure is that the defaults are good. So if you want to go, we could default then, you know. If those are the defaults you want, then it makes sense.
00:30:40
Speaker
Yeah. Like my whole Amax config journey has been turning things on, but there's nothing that I've ever wanted to turn off. Whereas, you know, like when you, when you have a complex piece of software that doesn't have that easy discoverability, it's, it's, it's not a pleasant experience, right? You know, like I think Jira could probably do whatever I wanted it to do, but how would I know?
00:31:08
Speaker
It's probably doing as well. But I was trying this, speaking of software, I think a couple of days ago, because I keep looking at all this no code bullshit these days. Well, everything is bullshit. I'm at that stage now in my life, I think. So, you know, as the hitchhiker says, everything that is coming out now is just, you know, fucking useless and bullshit.
00:31:34
Speaker
So there's this no code crap. And then I started using AWS, Amazon, honey pot, honey code, whatever. Oh my God. It's so horrible experience with the editing shit in that crappy UI. It's, I mean, I, because there is code. I mean, there is something, right? Because it's, it's basically like a spreadsheet and then linked apps. Okay. It's, it's a web-based Microsoft access more or less, I think. I'm looking this up now and I'm so upset.
00:32:05
Speaker
Yeah, this is awful. I actually think this is a fundamental divide between programmers and people who aren't programmers. When I see a spreadsheet, I see someone using a spreadsheet and it's
00:32:21
Speaker
I want to save them. It's like seeing a kitten in a tree. You're like, oh no. Oh honey, how did you get up there? How can I help you never do this again? To my friend, she was a financial analyst, now she's a product manager. She sees a spreadsheet and
00:32:46
Speaker
She's so happy her face lights up. She makes them for everything we go camping. There's there's like five Google sheets for our camping trip. And so for that, I could see this no code thing being very appealing. But I think this is actually like this is this is a fundamental divide between not even types of people, but just
00:33:08
Speaker
there's a preference there. Either you love spreadsheets or you hate them. And if you're a programmer, chances are you started programming to not use a spreadsheet at some point. Yes. But I think if you, just to roll back to Japan again, there is a 77 year old gentleman in Japan who makes paintings in Excel. Oh yeah.
00:33:31
Speaker
Yeah. Whoa. I'll send you the link at some point. Oh, I would love to see that. He's just painting all this shit in Excel, like, because every cell, you know, he's just using graphs and stuff and whatnot. And because he was like, I'm not going to spend a lot of money on colors and shit. You know, I can just use Excel. I would love to see that. So cool.
00:33:49
Speaker
Well, I used to work at Toyota and in Toyota, everything is in Excel. So they have spreadsheets, but they also do proposals and documents. They don't use Word or Access right now. They wouldn't make a document in Word. Everything is in Excel. I mean, literally everything. So they have like, you know, if you want to make a graphic or a presentation or something, you have to do it in Excel.
00:34:15
Speaker
But I think it's like, you can mock it, but the other way of looking at it is to say it's a tool which has got everything and you can master it. It's like the Emacs comment. In the end, you can find a way. Probably Excel has the capability to do something that you want to do, so you can find it.
00:34:35
Speaker
You know, so you can do drawings and you can't do everything. I believe there's even a little game in it as well where you can... Yeah, there used to be a flight simulator. There was like a hysterect or something. I heard something that, you know, it was a Ray joke, so it was a joke, but it wasn't really a joke, which is that spreadsheets are a functional language. They're one of the only pure functional languages.
00:35:05
Speaker
And that makes sense. So if you are a person who's used to working in Excel and who really likes it, I could see how this no code thing is good for you. I can see it bringing, like basically what it's doing is it's getting rid of our jobs. So that's the problem.
00:35:25
Speaker
I mean, they've been trying this since 4GL shit. And it's not there. It's the programmers trying to build something to replace themselves, to avoid building CRUD apps. I think there is no... I was a bit... Yeah, maybe I was a bit too harsh on...
00:35:42
Speaker
on myself, because I'm a programmer, I'm part of the community. So I think it's always like, you know, how can we enable people to do something, you know, by themselves? Right. And there's some things that you don't want to do, like, we, we just started, it's a, it's a closure product, actually, we just started using a called meta base. Yeah, yeah, yeah. And that's been, at my previous position, I was responsible for maintaining our, our report generators. Because in FinTech, you have just
00:36:13
Speaker
so many reports. You have reports going to everyone all the time and you have the same piece of data presented in five different ways to five different people. Metabase allows the people who want through the reports to make their own reports. So not having to generate a report
00:36:34
Speaker
allows me to do the rest of my job. Yeah. And that's really nice. You know, that's like the meta base people have have built a piece of software that replaces me and I'm thrilled. Yeah, and also I think it's it's especially things like meta base or power bi and these things that the advantage is that your your
00:36:53
Speaker
giving the tool to the, to the people who know the domain. Yes. Like, you know, they'll ask me to build something like NDX or whatever, you know, there's something exposure or whatever like, okay, what the fuck is this? And what is it supposed to be in between or something? But they know the implication of that one, right? That they can present it better. So I think that there is some value for, for no code things, but probably it's what I realized that it's not for me.
00:37:18
Speaker
Yeah. I mean, I, you know, I spent like four hours in the night, you know, until three o'clock and then trying to figure the shit out and then trying to figure out how to copy paste things again and again, and then change one value. And, and I couldn't do that in, in notification, whatever, in Amazon Honeycore thing. And I started copying all the shit in DMX and then edit there in one go and then copy paste it back again. Here's the whole editing experience. It's not for you. It's horrible. Yeah. I just realized this shit is not for me. You know, I should just stop worrying about this shit.
00:37:47
Speaker
So maybe ask someone else to build this stuff. Find someone who makes Excel spreadsheets for everything and see if they like it. Exactly. That's your test. So just going back to- Of course, we have so many things to go back to. Going back to rewinding, because we started off with one level of recursion and I think we went- How many levels?
00:38:11
Speaker
Blah, blah, blah. Yeah. So going back to you were saying that you were doing a website, but now you're in fentech. Obviously there's been a bit of a journey between, you know, at the beginning and where you are now. So what kind of like, you've got your first job doing closure script in a website, I guess is what you're saying. So actually my first job was, uh, it was, so I did a website in closure script to present to these people who I was hoping would hire me.
00:38:38
Speaker
And they did even they didn't have the budget for it it was it was almost like it was basically like an internship, but I got to I Got to get into the real work really quickly And that was you know, they weren't they weren't planning on having a junior engineer. So it was me and these three incredibly senior people who were yeah, who were really a dedicated to
00:39:05
Speaker
good coding fundamentals and that was really nice, right? Everything that I turned in got looked over and I got some, I got very valuable mentorship from it. And we were sort of building this, we built a Slack clone in, it was in React Native with Firebase and the whole backend was enclosure. And that was really interesting.
00:39:35
Speaker
Um, cause I, I haven't actually met a lot of, I haven't, I haven't seen a lot of places where you have a react front end with this, uh, these, these dynamic databases. I think that we had talked about switching to the atomic, but at the time we didn't really know that much about it. It was still very new. Um, so I worked on both sides. I worked on the react part and I worked on the, uh, the closure backend.
00:40:05
Speaker
And the React part was really nice because it's still functional. And then we started building internal tools for our non-technical people, and we did those in ClosureScript. So that was great. They were very pretty on the code side and very ugly on the screen. Yeah, because both of us were like...
00:40:30
Speaker
Yeah, both of us were like, Oh, wow. Bootstrap. This is, oh yeah. God sent us bootstrap. Right. Like that. I still feel that way, but bootstrap and my husband, that's what the bootstrapper strap line is, isn't it? You know, it's like beautiful, beautiful views for programmers who know shit. Yeah. Yeah. My husband is like, uh, you know, he, like, he, he trained as an artist and now he, uh, does, um, he, he contracts, he does like.
00:40:59
Speaker
React and Android contracts and he's like, oh bootstrap doesn't let me do anything. I want to do And I'm like, what a how do you know what you want to do? On the screen So they're very ugly but they worked and it was You know the reagent is really such a
00:41:26
Speaker
intuitive way to work with react, you know, closure, closure script is a more intuitive, better react, because with react, you're writing these functional structures, you're writing, you're writing in a functional paradigm, but you're still dealing with the limitations of JavaScript. And you move that closure script, and you don't feel those limitations anymore. It's like you're building with Legos. It's gorgeous, you know, it looks like Legos on the page.
00:41:55
Speaker
So that was a lot of fun. That startup folded while I was on vacation. I checked my email at the top of this place in Amsterdam. Did I text you? Oh, my God. No. No, I checked my email. And it was my birthday, too. Oh, man. And it said Severance Docs. And I thought, oh, shit, I've been fired. And I opened it. And I read the email. And I was like, oh, everyone got fired.
00:42:26
Speaker
Unfortunately, it's still my birthday. And the Dutch, they love birthdays. And plus Donald Trump had just gotten elected president, so everyone was feeling bad for us. We just went from bar to bar like, it's my birthday. I just got fired. Donald Trump's my president and just got completely smashed for free.
00:42:53
Speaker
probably the best closure stories. As far as you start up folding goes a lot. And they gave me severance pay, which was really, really nice, right? Part of the reason they folded when they did was so everyone could have two months severance. And by that point, you know, once you start working in closure,
00:43:18
Speaker
People know you're working in closure. You're gonna have someone who wants you to write closure somewhere else So I yeah, so I came back and there were interviews waiting for me and yeah, and that was like it was the first time that I felt the the business impact I guess like like you said Ray you mentioned that people start writing this because you know, the closure permits are highly paid or whatever like that really
00:43:48
Speaker
I hadn't felt that, I hadn't chosen closure because it was a business decision. I had actually chosen it for emotional and aesthetic reasons. But when I came back and I had these interviews waiting for me, I was like, oh, having a niche could be limiting, but it's also, it's good, right?
00:44:16
Speaker
Uh, this is, this was a solid business decision I made. And when I started it, you know, um, my friends at the bootcamp, they had all gotten Ruby jobs right away and they were like, what are you doing? Like, like, what is this? Um, and I felt, I felt my choice was validated after that. So, and then once you're in FinTech, you're in FinTech forever. Yeah. There's a.
00:44:45
Speaker
I wouldn't say that. I mean, I was in fintech for 15 years and I was happy to leave it. That's forever. Yeah, that's a really, in this industry. If you were in fintech for six months, then yeah, that makes sense. But if you're in fintech for 15 years, that's fucking whatever, yes. Closure makes sense for it. You know, like when closure
00:45:10
Speaker
When you're dealing with money, when you're dealing with people's finances, you have to have a very strong paper trail. Everything has to be auditable. And down to immutability at the code level, it makes sense. Even the data structures in Clojure are good for FinTech.
00:45:38
Speaker
Yeah. And also, I mean, mostly fintech is just shuffling data around, right? I mean, it's just numbers and then, you know, some shit from this end to that end, we just shuffle shit around pretty much that. And then somebody prints money out of it, you know, like the end of the day. That's what I realized, working for fintech for, yeah, long enough now. All the CSVs, all the FTPs, all the crap that is floating around and then weird looking Excel sheets and
00:46:08
Speaker
Yeah, but these are all making money for somebody else. That's good. But what feels better? What feels better than turning just an angry looking slaw of characters that you get from some ancient bank that's using this thing that was written in COBOL, right? And they send you this wreck.
00:46:28
Speaker
And you run it through a parser and it makes beautiful data structures. And then you send those data structures down your tubes and they go to the right places. It's so clean. It's such clean work. That's true.
00:46:46
Speaker
It sounds a bit like, yeah, sort of a financial sewage work, but, you know, I guess given the way the financial system works, that's perfectly apt description, I think. Okay, but the sewers are super clean. That's the whole point. I do consider myself a data plumber, primarily, you know. Yeah. That makes sense. That's basically what we do, right? I mean, at least in mostly infant type, because we're not trying to, you know, move big machines or anything. It's mostly
00:47:14
Speaker
pick up some weird-looking file from here, reconciliation, whatever the fuck that is, some other naming thing, and then filter it out, combine it with a couple of other things, and then throw it into some other account, and then they get money. It's just so cool. Yeah. Well, and we use Kafka, and Kafka is just such a beautiful way to transmit data, and Closure is a great way to interact with Kafka because you have the Java interop. Yeah. Everything is immutable. Yeah.
00:47:40
Speaker
Yeah, yeah, it's, it's pleasant. It's pleasant work. Love Kafka. I think Kafka is really exciting. What's happening over there? I mean, I kind of remember looking at Kafka a couple of years ago and they were doing the Kafka streams and all these kinds of things. Is anything went beyond that now? I mean, they had the Kafka screens and Kafka SQL. Well, that's the last I kind of heard from them, but is there anything else in that world?
00:48:11
Speaker
I don't actually know because we're not really using any of the new stuff. The established stuff just works so well. And Kafka Streams is really well established right now. Stateless topologies, right? Being able to build this. So have you used Kafka at all, Ray? Yeah, yeah, yeah, yeah, yeah, yeah. Okay. Yeah, so- Maybe it's not everyone has though, so maybe it's worth...
00:48:39
Speaker
Right. In Kafka Streams, you have this concept of a topology. You have a series of stateless transforms, and there are some stateful ones too. You can do like a window join or whatever, but it's very functional.
00:49:00
Speaker
It's very clean. So you have a stream of data and stream of data goes into your topology and you perform stateless transforms and it comes out in the other end, you can send it to multiple different streams. So you can have one stream that goes in and you might have it go to an alerting system and you might also have it go to a database and you might also have it go to another place where another set of transforms is performed on it.
00:49:23
Speaker
And closure is just a very clean way to write those topologies. So we use Jackdaw, which is funding circles. Kafka wrapper, it's really nice. They've done a lot of great work on it.
00:49:38
Speaker
I think that the main thing, because the people, both of the folks that built Onyx, they're now working at Confluent. Michael. Michael and, fuck. Wow. Friends of the show. Yeah. I mean, I can see the Twitter image, but I look it up. But I think the main thing there is that
00:50:06
Speaker
changing or at least the idea is that to change Kafka into sort of a database, like a streaming database. I think this has been picking up in multiple places now. The whole idea is to have the ksqlDB and you can just create a SQL query and then it's continuously streaming data and you can just join them.
00:50:26
Speaker
But that was the whole thing, wasn't it? With the intensive data guy, Martin Klepman, who was like turning the database inside out. I think the whole idea of basically saying that really the database these days, if you really look at it, it's based around the log. So rather than sort of pretend that there's a sort of
00:50:54
Speaker
database uh behind the log let's just make a logger first class citizen and then we can do what we want on top of that and that's playing out yeah yeah yeah this is really interesting i hadn't looked at this at all because you know we're using datomic so we're fixed for our database yeah because i think there is um there is also a nice paper and there is a database that i'm following and because i i also work on the data mostly and then uh providing the
00:51:23
Speaker
dimensional model for the people because I run the data team and designing it. I usually follow what is happening around it. There is something called timely data flow. That's a really interesting idea of you can just point the database to some sources and you can eliminate the work of shoveling data into the database. And then you just create
00:51:47
Speaker
views, materialized views on top of it. Okay, I was going to ask how is this materialized view, but it sounds like this is a materialized view.
00:51:54
Speaker
Yeah, actually the product that is called materialize, that's the product and so that's the database. And it has the like a PostgreSQL compatible query system or other things. So you can just connect to it and then just use SQL to say, give me something and then join whatever. And behind the scenes, it's continuously fetching the data. So even the shoveling stuff is moving away actually from
00:52:21
Speaker
Talking of something which is like in the closure world that is to do with immutable data that supports data log and also supports SQL, the alternative to Datomic is this thing called Crux from John. They use Kafka as a front end as well for ingesting transactions. From your perspective, this could be really like a marriage made in heaven. In fact, they built it for financial services.
00:52:59
Speaker
So crux is the database system on top of essentially Kafka, but also other other back ends as well, right? Like crux DB. Yeah. But I think the main, well, the main, the main idea is that you should be able to ingest data in a, in a sort of a transactional way that is repeatable. So I think you can do it locally with rocks DB, but that, but the prediction topologies, prediction systems are best around Kafka. Yeah.
00:53:08
Speaker
Oh, that's really interesting. I didn't, just as a, they're a consulting firm, right? Yeah.
00:53:26
Speaker
Yeah, yeah. Interesting. It was announced on deaf and if I'm rightly VJ, come on. It was one of our scoops.
00:53:39
Speaker
Oh, I remember reading about this because I remember reading about this by temporality concept. Which is really good for fintech because obviously business days and that kind of stuff. That's one of the things we get out of MetaBase is they have this temporal dimension that is really helpful for the business side.
00:54:04
Speaker
That's like, yeah, my favorite part of my job is designing data models. Love data models, can do that for hours. You probably should do it in a spreadsheet, yeah. That's the sacred weapon. Well, you know, like, if this were Victorian times, then if we wanted to, we could be taxonomists.
00:54:32
Speaker
You know, you can't do that anymore because everything already has a name. Uh, yeah. So all you can do is, uh, reorganize and taxonomize new things. Yeah. And, uh, data model design is this kind of, uh, taxonomy of abstractions. Oh, yeah. I mean, you can get into all that stuff. Can't you with the, uh, with the whole like web 3.0 stuff.
00:54:56
Speaker
where everything is like taxonomy and ontology and you know it can get very uh semantic abstracts pretty in some the semantic web yeah indeed yeah yeah yeah but these are the ideas that they don't know nobody nobody you know like you you hear for some time and then just the real world never conforms to these kind of things right that that is that is the challenge
00:55:19
Speaker
Well, the problem is that like, because that's a kind of like top down data model of essentially the semantic web. Whereas I think what ends up happening in practice is that there kind of has to be a fuzzy data model really to match reality. Yeah.
00:55:34
Speaker
I think that that's why maybe that's the difference between static type thinking versus building stuff organically from bottom up. I really think that's true. Anyway, Mia. I'm reading about this. I'm reading about this semantic web. I just forgot about this. I look like I'm zoning out.
00:55:58
Speaker
But I'm also listening to you because we just had enough. So my workbook club just finished Data and Reality, which is probably my favorite programming book, probably one of my favorite nonfiction books. And it was written in the 70s.
00:56:22
Speaker
It's about data and reality. And it's about, you know, the fundamental problem of computing hasn't really changed, which is the world exists.
00:56:39
Speaker
That's the biggest problem. Given 2020, so far. I think that's a scoping issue, Mia. There's two problems. There's two problems that can be solved with things you have to deal with. And the first problem is the world exists. And the second problem is we're using computers.
00:57:09
Speaker
how the fundamental question of how you represent the part of the world that you need to represent in your computing system in order to do what you need to do with it. That hasn't changed. That's always been there. And there's this data and reality is kind of the not really the philosophy thereof, but
00:57:38
Speaker
a deep dive into the considerations of data model design and some advisements on what could be best practices. But really, it's teaching you how to
00:57:55
Speaker
how to think about these problems because we have them, they come up over and over again. Like you said, Ray, reality is fuzzy. Data are not fuzzy. And we got into kind of a little, not an argument, but a discussion about, this became a discussion about whether spec is better than types.
00:58:22
Speaker
or whether spec is types. And with spec, what you're getting out of it is you're getting the ability to make and change fuzzy types, essentially. Yeah, it's predicate logic, isn't it? So it makes it fuzzy. Yeah. Isn't it then just to argue on the other side of it?
00:58:49
Speaker
Isn't it the whole idea of this? It's some sort of a constraint, right? We're putting some constraint on the data. So spec is bringing it into non-compile time, or it's bringing up into your runtime thing.
00:59:09
Speaker
But the type systems are essentially moving them a bit into the compiler level. Because that's what compiler is essentially doing. It's a huge type system thing. This is exactly the discussion. Constrained resolver. That's pretty much always the discussion. But if you're using closure, this isn't a dig. There's a serious question. If you're using closure, how much compile time optimization are you actually interested in?
00:59:38
Speaker
Yeah, I think it's way, way less because given the problems that we try to solve with closure, I think it's a bit less because this is what I see when I switch between say Haskell or Closure or Rust or Closure. There is significant amount of upfront thinking I need to do to
01:00:00
Speaker
have the quote-unquote constraint solver to understand my constraints, which are expressed in types. But in Clojure, well, I don't use PEC that much anyway. I'm like, fuck it. I'm getting this data. I need to transform this into something else and then move on. That's the thinking difference, I guess. I think the problem is that if you want to put things on the wire,
01:00:24
Speaker
You don't care about spec unless you want to put things on the wire. As soon as you're putting things on the wire. With Kafka, everything's on the wire. Yeah, exactly. We have Kafka validation. The fastest way to make your Kafka system not fail is to put data validations on it. Yeah.
01:00:47
Speaker
It makes it a huge quality of life improvement. Maybe we would get those built in with types, but being able to spec out
01:01:02
Speaker
These very complex data types were like, oh, if it has this enum, then the following field can only have a number in it. But if it has this enum, then the field can have a string. And being able to spec that out and to have that check there before the data goes in the wire, it's very useful. But spec is not types because it is not compile time.
01:01:33
Speaker
It's not a replacement. I would still like to see, you know, and this is a sacrilege a little bit, but I've always been interested in the idea of a typed closure. I don't think it's sacrilege. I don't think it's sacrilege. I think it's, you know, people have, you know, Ambrose has tried it. So it's just, it's just tricky, isn't it? You know, I don't think, and I think,
01:02:00
Speaker
The idea of spec is that it's kind of getting there. The question is, if you could take spec and compile it and actually use it with a compiler, how close is that to a kind of...
01:02:15
Speaker
typed closure. The problem with typed closure, if I'm not wrong, maybe as you know, a better VJ, but, or me, you know. There's no fucking way I know better. Why is my opinion? Fucking bullshit. Yeah, of course. Me and me, you probably know better. I do not. Yeah. But as I understand it, the problem with it is that, you know, it's fine, but the libraries are a problem because unless you've got, like,
01:02:41
Speaker
hints and kind of introspection and the ability for the libraries essentially to be able to be typed, then you're kind of broken really. Yeah. I think it is like a virus, right? And it needs to spread in a good way. I don't want to talk about virus or anything. Exactly. It doesn't go high enough r number. That's the problem. Yeah.
01:03:08
Speaker
I think the trouble is where do you draw the boundary between how much of the system is typed and then the types need to be propagated into the core and then that is the reason, at least from my point of view, I was thinking this is why it will never be picked up in a language like Clojure or Lisp or Racket.
01:03:29
Speaker
There could be a small area where you apply all these things, and then same with spec. If you have spec, then you want spec to be everywhere, including all the core stuff as well, which makes sense. Then you have the same constraints or expression of constraints in the entire language and ecosystem. I think that's the challenge.
01:03:53
Speaker
Yeah, it's a good moving away from the philosophy for a little bit me. How do you use spec yourself? I mean, how do because you have it as validated as new like spec. So is it how do you how do you actually use it? So I talked about those topologies, right? So Kafka, you know, there's there's there's messages that are getting passed around the tubes.
01:04:15
Speaker
And when I think about it, when I envision it in my head, I see a series of tubes and there's a little grating at each end and that grating is the spec. And if it's the wrong shape, then you're just not allowed to send the message out because bad data chokes up a Kafka system.
01:04:37
Speaker
You have to restart the offsets, you have to restart the whole thing. It's bad. You never want to feed your Kafka system something it can't eat. It just, it gets very sick. So we use a spec to make sure that everything that we're sending out is the right shape for the downstream stuff.
01:05:03
Speaker
Kafka itself doesn't care, right? Because it's all we feel to see as message bytes. And maybe your consumer is going to choke on the crappy Kafka. It's like, oh, I can't deserialize this. Yeah, exactly. Yeah. Like, oh, I'm so sorry. Like, I hurt you. I think you're anthropomorphizing Kafka too much, maybe.
01:05:32
Speaker
attaching feelings to the system. You can't help mechanical sympathy with these things, can you? Sort of like when my room bed charges, they made the light on it pulse softly like a heartbeat.
01:05:53
Speaker
It's so stupid. It's one of the earliest Roombas and it's just dumb as a rock, which I'm giving it. Yeah, exactly. But it is really stupid. It just bumps into shit. That's how it gets around. The new ones, I guess, can map out a house. Roomba's written in a lisp.
01:06:12
Speaker
There's a Roomba lisp that I figured what it's called. I know it's written in one. So the new ones, you know, they learn your house and they map it out and then they go home to their little chargers and sit down. And like the way our Roomba finds the charger is it
01:06:32
Speaker
bumps into shit closer and closer to the charger until its charge plates accidentally make contact with the charger and then it docks and settles in and sings a little song. And you're so relieved, right? The suspense of watching Roomba try to charge itself is a
01:06:59
Speaker
It's like watching a race or something. Like, oh, I hope you win this time. And obviously, it's not alive. And if my other vacuum were as bad at its job as Roomba, then... You just throw it away. Yeah, get rid of it.
01:07:19
Speaker
Maybe that's that way. That is the reason why it is doing, you know, like if I do some cute shit, you think that it is okay, then I can do my real job shitty. Then you would ignore it. I mean, that's like, you know, that's so many people. Yeah.
01:07:38
Speaker
That's how I've been working for, I don't know, 20 years in the industry. You know, I just do some cute shit and then people think, oh, he's stupid. Let's keep him. And then whatever I'm supposed to do, that's pretty crappy. I don't cook. That's how I don't cook. It's just like every time I try like something is
01:08:03
Speaker
There's like an egg shell in the food and it doesn't even have eggs. It's like, how did this happen? Well, I had to get the beans out of the bin. There's a few carrots in there as well. It's hard to not anthropomorphize the machines that you work with, especially at my previous job, I spent a lot of time dealing with
01:08:34
Speaker
Kafka systems because you know, we didn't have a lot of production problems or only production problems were bad data problems and it really does feel as if You have fed it something it can't eat. There's no There's no other way to describe that feeling like that's it's very it's very intuitive way to think about it You're like, oh like this is a tube. I put something down the tube that didn't go and now it's vomiting and
01:09:02
Speaker
Well, that's what happens when, you know, when you start using an editor that has barf and slurp in it and then you're like, yeah, that makes sense. Like that's pretty much what life is now. Yeah.
01:09:16
Speaker
Um, yeah, I was going to just, just to be a bit more prosaic, stop the fun a little bit, but the, uh, what am I call it? The, uh, so do you actually write all your specs and by hand? I mean, how much of this like tech do you use? Do you use the generative stuff? Do you, how much, how much like, we're moving to generative testing right now. Yeah.
01:09:38
Speaker
But we actually, so our specs and all of our other, we have a lot of records of our data models. We have them in a lot of different shapes. So we have them in spec, we have them in Umlaut. We have graphical representations of them. So we have, it's a templating language. Oh, it's like UML.
01:10:03
Speaker
Yeah, yeah, exactly. Okay. So we, we generate UML from this. And we actually we have a really cool thing. I made it. I didn't, I rehabilitated some weird wear for it. But it, it reads your Kafka topologies and spits out a graph of how they look.
01:10:27
Speaker
Yeah, it's really cool. Um, so we write one mustache file, which mustache is another templating language. And then that generates all of our different, uh, all of our different data. So it generates our spec, it generates or allow to generate the graph as stuff. Um, so we don't actually write a lot of spec, which is good because writing spec is actually hard. I don't like writing it.
01:10:56
Speaker
I like spec, I like using spec, I like the concept of spec. I do not enjoy writing spec. There's never, having something else generate spec is always a better ergonomic experience. I don't know why. Maybe it looks like a different language. Yeah, yeah, yeah. Maybe, I don't know.
01:11:19
Speaker
I mean, it feels so alien in the middle of this closure stuff that you're writing. At least that's what my experience was with Specs1. I haven't moved to Specs2 yet. It still looks the same. Yeah, it doesn't look like closure. You have to be mindful of a lot more syntax, I think. Yeah.
01:11:40
Speaker
Right? Closure, you have this kind of blissful ignorance of a lot of syntax. And that's great. I never want to see or think about a comma for any reason. But with spec, you do have to be more mindful of syntax. So it's, I've actually never, everywhere that I've been that's used spec has eventually come up with a generator solution for it, so we don't have to write it.
01:12:11
Speaker
So we've been talking about how awesome Closure is, which is, I think, on the spot for this podcast. But what are the painful things that you see in Closure or ClosureScript, if any? I mean, it's the usual, right? The docs.
01:12:41
Speaker
They're getting better. Closure script docs are very good. I actually found an error in the closure docs that I don't know how to call attention to or fix. And it's only an error if you're doing what I'm doing, which is copy and pasting something from the docs and then editing it. But I found a missing paren or something.
01:13:11
Speaker
I think Alex will take a bug report over Twitter if necessary. I should write a bug report for it. I don't even remember what it was now. I have to find it again. But I think that the big pain point is people ask me, how do I learn closure? And I don't really know what to tell them. I can give them a lot of
01:13:40
Speaker
I can tell them what works for me, but that's not what works for everyone. And there isn't really someone who's learning. The intended audience for Clojure is not someone who starts off writing Clojure and has only ever had a Clojure job, which I actually think is a huge disadvantage to the language. I think that this Java to Clojure pipeline
01:14:08
Speaker
isn't ideal. Java is not Clojure. And when you getting programmers who are writing Java in Clojure is actually an anti-pattern. And at least Clojure makes it harder to write Java in Clojure. You know, it's not Scala, which will just...
01:14:29
Speaker
A lot of the Java to Scala pipeline is huge. Scala is a bigger language. Scala is a bigger language because people just want to keep writing Java. They don't want to actually learn functional programming. The Java to Closure pipeline actually introduces a lot of anti-patterns into the code. That, I think, is a little bit of a pain point.
01:14:57
Speaker
It's always easier to work on code that was written. Except, oh, then they use things like Juxt, right? Like a Haskell to Closure programmer. It's kind of a side effect, right? Because, well, side effect. It's kind of a side effect because one of the key points, because I was reading the history of Closure by Richiki,
01:15:25
Speaker
And then one of the key points is that it is supposed to be hosted on something else. So it was never a language that is just standing on its own. So that means you have to have the knowledge of the host because you're running Clojure on top of it. But if you see other languages which are not hosted on JVM, for example, the beginner experience is from zero to that language or in some level of expertise in that language. But as you said,
01:15:55
Speaker
The people who are attracted to closure are already having JVM or something, at least some experience. And then they already crossed some sort of a crest or something. And then they don't think about the beginner experience anymore. So that makes it very difficult for people to start as a level zero programmer. I've never programmed. I'm going to get into closure.
01:16:24
Speaker
Yeah, and there's been efforts to change that, right? Like the closure bridge program is happening, but the resources aren't quite there. And there isn't really, you know, it's this kind of self-fulfilling prophecy where it's like, there's no reason to work on those resources because the audience for those resources is so small, but the audience for those resources is so small because there are no resources. Yeah, yeah.
01:16:53
Speaker
But I think you're right. You need a variety of learning paths, and that's what Ruby does really well, and JavaScript as well for that matter. There are all kinds of different ways to approach language. It's definitely gone. JavaScript is just unbelievably complex and difficult to learn. JavaScript, it's so, so, so difficult, and yet it's the most widely adopted
01:17:23
Speaker
the widely used language, and a lot of beginners start in JavaScript. And there's a couple of reasons for that. One of which is when you write JavaScript, you see the results of what you're writing immediately, which I think is very satisfying, especially when you're just starting out programming. You want to have that reward of having made something happen. Yeah, definitely, definitely. And being able to visually see that.
01:17:53
Speaker
Yeah. Yeah. But being able to visually see the results of your labor is appealing in JavaScript. But the other reason is there are so many resources dedicated to teaching JavaScript from the ground up. And you know, Java like closure is
01:18:13
Speaker
It's much easier to learn than JavaScript. It should be. It is better designed. It's more consistent. It's less syntax heavy. Yeah, like you said, there's a smaller surface area. Yeah.
01:18:28
Speaker
Yeah, there's, you know, JavaScript is just full of gotchas and Clojure doesn't really have gotchas. There's a few. Like when you extend a map past nine values and it turns from an ordered map to an unordered map. Yeah.
01:18:50
Speaker
But, you know, there's not a lot. So there's no reason why if, if it had like an argument that I hear is, Oh, closures complex or functional programming is complex or closure isn't for beginners, functional programming isn't for beginners, but it's more intuitive. There's a smaller surface area. If beginners can learn JavaScript, they can learn closure.
01:19:18
Speaker
Yeah. Completely agree. Completely agree. That's on us, right? Have I written anything to help people with enclosure? No. I'm lazy. No, no. We are just here to complain. But I do think that the biggest pain points aren't with the language itself or
01:19:38
Speaker
with the community, which has always been very pleasant and welcoming. I've always really enjoyed all, like, I love Closure Conch. I love the conferences. Strangeloop was fantastic. I want to go to Strangeloop all the time. I want to take my husband to Strangeloop. I want to, like, I was just very impressed by it. You know, the community is great. I've made lifelong friends and mentors here. The language itself is pleasant.
01:20:07
Speaker
The tooling is good. There's a lot of great tooling around Clojure, and we also have access to anything, for better or worse, anything ever written in Java. The ergonomics of using the language themselves are very good.
01:20:26
Speaker
So it's really, for me, the biggest pain point is I am an evangelist by nature. I like to, if I find something I like, I want everyone to have the opportunity to try it. And I don't know how to get this good feeling and this good knowledge into the hands of other beginners. Yeah. Well, I mean, that's, you know, that's definitely a beautiful mission, I think.
01:20:57
Speaker
You know, I think we all kind of want to do that a little bit as well. So, you know, I think there's the people in the community are coming up with these things, I think, but it's but it's a bit of a, you know, maybe it had to get to a certain point at a certain where people were beginning to kind of invest their kind of like career into it. And then they're starting to say, okay, we'll do this. Like we had we had John on recently who's making this big YouTube thing practically practically.
01:21:25
Speaker
which is really amazing. He's doing so much video content for closure these days, and he's writing like five books or six books or something. Like you said, Karen Meyer has done these kinds of things. Obviously, from day one, there was no books and now there's a lot of books. It's getting there, but you're right, there's always more can be done to make it more accessible.
01:21:53
Speaker
Well, I think that the ClosureScript side is pretty far ahead of the Closure site on this, which in part because there is a sacred mission to help people not write JavaScript. Yeah.
01:22:12
Speaker
It's like reducing the pain in the world. One undefined object at a time. My poor husband. He knows Kotlin and Java, and he writes Android programs.
01:22:28
Speaker
And he got a React contract. And first, he started with TypeScript and React. And he was like, oh, I don't know what you're complaining about. This is great. And then he got the actual contract, and it turned out that it was React with vanilla JavaScript. And so he started on it. And he's like, what is Nan? That's 19 songs.
01:22:55
Speaker
Why are there five different ways to say equals? Like, I'm so sorry. What is this? What is this? What is this? To be fair, since I never learned Java, I have serious what is this problems as well. I think in Java, it's actually nothing in Java. It's just people just call it this. Yeah, I hate that. That's very confusing.
01:23:22
Speaker
Because this is nothing, but null is also nothing, but null is not this, but this can be null. Yeah. Anyway, so I think, wow, one and a half hour.
01:23:40
Speaker
to have some closing thoughts. So because you started from geology where things just don't fucking change. Well, at least in your lifetime. That is not true. Hasn't the field of geology changed in the last 20 years, unbelievably?
01:23:59
Speaker
Yes! Yes! No, discoveries and stuff, you know. I'm talking about the timeline, right? It's like the scale of things. And it is mostly- Just because it changes slowly doesn't mean it does. Okay, look, there are- Totally. That's what my question is. That's like saying astronomy works like that, you know? So how do you compare that with JavaScript where every fucking thing changes every 20 seconds versus millennia?
01:24:28
Speaker
Well, you know, I mean, geology paradigms change, right? So as recently as the 1970s, the idea of plate tectonics was just a rumor, right? Now it's our foundational, it's a foundational concept. We're still working on, you know, now that we have all these great tools for like, with fantastic microscopes,
01:24:53
Speaker
We are working on different ways to date rocks. And that changes things, right? It changes our understanding of when things happen in different rock systems. So I think any science is always moving.
01:25:14
Speaker
The thing you have to do is always be able to separate signal from noise. And with geology, it's a lot easier because there's a lot less noise. Partially because it's peer reviewed.
01:25:30
Speaker
Right. With anything where you have new stuff has to go through peer review process. What you get out the other end has at least five other lunatics saying, Oh, this looks correct to me. Um, there's not more GitHub stars are. Whereas, yeah, with, uh, you know, you can say that JavaScript changes. That's where the left part is like 2000 stars or something.
01:25:58
Speaker
Also, maybe more, I don't know. Yeah. You can see JavaScript changes every 20 minutes or whatever, but the actual paradigm shifts occur very rarely, right? The last big one was React. Yeah. And React is very good. And as soon as I saw React, I thought, oh, I have to pay attention to this because this is different. So being able to separate that signal from noise, that's the fundamental problem. And that's the same in every science.
01:26:28
Speaker
But rocks do change. They're beautiful. Beautiful dynamic system. It doesn't geology.

Geology & Earthquake Humor

01:26:42
Speaker
I always think of geology as a dynamic system in the sense that like tectonic plates are moving, the earth is heating up and cooling down. It's a very, you know, dynamic thermal, thermological system. Oh yeah, totally.
01:26:58
Speaker
Yeah, we still don't totally understand how plate tectonics works, like why the plates move. We have some ideas, but sometimes they just stop moving or they just go in a different direction for absolutely no reason. There must be a reason, right? Everything has a reason. Yeah, we don't know what it is.
01:27:19
Speaker
I don't know why, but I'm not going to touch it. I wish we could log out. I just want to stick print lines in every plate boundary. I want to know what it's doing when it... Because faults will change directions. So you want a ripple into earth. That's what you want. Oh man. Oh, wouldn't that just be... I mean, that's why I live here. You know where I can feel an earthquake. It's almost like having a ripple.
01:27:46
Speaker
Yeah, like I'm getting some feedback. Like, oh, you're still here. Thank goodness you're still moving. I'm so glad. On that bombshell. Yes. On that earthquake. We come to the conclusion of episode 62. Thank thanks Mia for for your time. And you know, all the knowledge of this is like the rocking knowledge.
01:28:16
Speaker
to use another rock pun. I'm pretty sure you've heard all of them already now. So there's just going to be a rehash of the same crap again. I always like new ones. Well, I think you've been a rockstar. What? A closure rockstar? I mean, come on, we don't get much better. Rockstar with the Repo.

Wrapping Up & Future Plans

01:28:44
Speaker
Well, thank you for having me on. It was lovely. Thank you. Good luck with, uh, with all the new adventures and, um, Kafka stuff and FinTech things and, and, and the next level of recursion. Yes. Hope it all works out. Oh yeah. What four weeks, four weeks.
01:29:02
Speaker
Ooh, okay. We'll try and get the episode out before you get the recursion out. My Twitter account's not going to be back online until I was planning on putting it back when I go into labor. I'm going to live tweet labor into labor. After that, I'll be able to retweet this. Perfect.
01:29:28
Speaker
Okay, that's it from us for episode number 62. We'll see you again in 63. Thank you for listening to this episode of Deaf Hand. 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:29:54
Speaker
Wow, yeah. 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 you want to interact with us, then do check us out on Slack, Closureion Slack or Closureverse or on Zulep or just at us at Deafened Podcast on Twitter. Enjoy your day.
01:30:24
Speaker
and see you in the next episode.
01:30:51
Speaker
you