[00:00.000 --> 00:06.040] You're listening to Software Unscripted, I'm your host Richard Feldman.
[00:06.040 --> 00:10.060] On today's episode, I'm talking with Ryan Haskell-Glatz, one of my co-workers at Vendor
[00:10.060 --> 00:14.400] and author of the open source Elm projects, Elm SPA and Elm Land.
[00:14.400 --> 00:18.580] We get into things like new user onboarding experiences, framework churn, and dynamics
[00:18.580 --> 00:21.600] between authors and users in open source communities.
[00:21.600 --> 00:23.800] And now, growing programming communities.
[00:23.800 --> 00:27.040] Ryan, thanks so much for joining me.
[00:27.040 --> 00:28.160] Thanks for having me.
[00:28.160 --> 00:31.560] So a question I've always been interested to ask people who get involved in sort of
[00:31.560 --> 00:35.040] like community building, and you and I have both been involved in, I would say like different
[00:35.040 --> 00:38.980] eras of like Elm's community building, like me kind of more at the like very beginning
[00:38.980 --> 00:42.280] and you kind of like sort of like the current like leading the charge, I would say.
[00:42.280 --> 00:46.560] So one of the tools that you've built that I would say is like pretty important for community
[00:46.560 --> 00:48.960] building is this Elm Land tool.
[00:48.960 --> 00:53.400] And I'm curious, how did you arrive at like, this is the thing that I want to build to
[00:53.400 --> 00:55.720] solve a problem that you see in the world?
[00:55.720 --> 00:56.720] Totally.
[00:56.720 --> 00:57.720] Yeah.
[00:57.720 --> 00:58.720] It's exciting.
[00:58.720 --> 01:02.000] It's exciting that it's like, oh, yeah, this is a cool, cool essential tool.
[01:02.000 --> 01:05.680] Yeah, I so I don't know.
[01:05.680 --> 01:07.320] This might be a crazy tangent.
[01:07.320 --> 01:08.480] We'll see how it goes.
[01:08.480 --> 01:13.440] But when I first heard of Elm, it was it was through the let's be mainstream.
[01:13.440 --> 01:14.440] This is Evans.
[01:14.440 --> 01:15.440] What was it?
[01:15.440 --> 01:16.440] Curry on Prague.
[01:16.440 --> 01:17.440] I want to say.
[01:17.440 --> 01:18.440] Exactly.
[01:18.440 --> 01:19.440] I think it was in 2015.
[01:19.440 --> 01:20.440] He gave the talk.
[01:20.440 --> 01:21.440] And I saw it.
[01:21.440 --> 01:24.200] I think it was like September of 2016.
[01:24.200 --> 01:25.600] I was web developer.
[01:25.600 --> 01:27.160] I was doing a lot of Vue.js.
[01:27.160 --> 01:30.160] I had just sold my you sold my company like, hey, we got to use Vue.js.
[01:30.160 --> 01:31.160] It's this great thing.
[01:31.160 --> 01:32.840] Like everyone should use it.
[01:32.840 --> 01:35.000] I used checkout medium.
[01:35.000 --> 01:36.440] I lived in the suburbs and I'd commute.
[01:36.440 --> 01:40.920] So I used to, you know, pull out the medium app to learn new things or see what's going
[01:40.920 --> 01:41.920] on.
[01:41.920 --> 01:42.920] And I saw this.
[01:42.920 --> 01:45.720] I saw this article that said, so you want to be a functional programmer?
[01:45.720 --> 01:46.720] And I was like, I don't know.
[01:46.720 --> 01:47.720] I don't know what that means.
[01:47.720 --> 01:48.720] Do I?
[01:48.720 --> 01:49.720] Yeah.
[01:49.720 --> 01:51.480] Maybe that's it.
[01:51.480 --> 01:55.840] So I read it and it was interesting and there was a, you know, at the bottom, it said, oh,
[01:55.840 --> 01:56.840] if you like this, check out Elm.
[01:56.840 --> 01:57.840] And I'm like, yeah, yeah, yeah.
[01:57.840 --> 01:58.840] Whatever.
[01:58.840 --> 02:00.760] I went to, you know, part two, there was four parts to it.
[02:00.760 --> 02:04.120] And I kept saying, no, no, no, I don't care about Elm, you know, whatever, just like give
[02:04.120 --> 02:05.280] me the content.
[02:05.280 --> 02:07.840] And then I got to part four and there was, that was it.
[02:07.840 --> 02:09.400] And I was like, I need more.
[02:09.400 --> 02:11.240] So I finally got the Elm link.
[02:11.240 --> 02:16.240] I went to the Elm, I think it was a Facebook page, some Elm Facebook group that shows how
[02:16.240 --> 02:17.240] old it was.
[02:17.240 --> 02:18.240] Yeah.
[02:18.240 --> 02:19.560] I didn't even know there was one of those.
[02:19.560 --> 02:20.560] Yeah.
[02:20.560 --> 02:22.760] And there was a link to let's be mainstream.
[02:22.760 --> 02:26.800] And that talk really connected with me because I had never done functional programming before.
[02:27.760 --> 02:32.680] I just knew the pain points of, you know, getting it wrong in JavaScript every now and
[02:32.680 --> 02:35.880] then and kind of like button my head up against stuff at work.
[02:35.880 --> 02:40.520] And Evan had that, that the rainbow logo, the Elmland rainbow was taken from that talk
[02:40.520 --> 02:41.520] that was like the happy place.
[02:41.520 --> 02:42.520] Oh yeah.
[02:42.520 --> 02:43.520] I remember that.
[02:43.520 --> 02:44.520] Yeah.
[02:44.520 --> 02:45.520] On the graph.
[02:45.520 --> 02:46.520] Yeah.
[02:46.520 --> 02:47.520] Exactly.
[02:47.520 --> 02:48.520] Yeah.
[02:48.520 --> 02:49.520] So it was like the whole, he had a whole setup where he's like, Hey, how do we get, you
[02:49.520 --> 02:54.320] know, Haskell people to a place where it's easier to, you know, do functional programming?
[02:54.320 --> 02:56.040] He's like, that's not what I'm looking for.
[02:56.040 --> 02:59.280] I'm looking for how do we make it more reliable for JavaScript developers?
[02:59.280 --> 03:00.960] And I'm like, Hey, that's me.
[03:00.960 --> 03:03.760] And I think that that really aligned me with the vision.
[03:03.760 --> 03:09.680] So Elmland, I guess this is back in, you know, last year, I was like, I really want to kind
[03:09.680 --> 03:14.680] of return back to that, that feeling of like, this is really designed for, to be really
[03:14.680 --> 03:18.560] easy and approachable for people that are doing front end development.
[03:18.560 --> 03:19.560] And how do we get there?
[03:19.560 --> 03:24.040] So, so yeah, when that project started, it was like, okay, I need to really take a good
[03:24.080 --> 03:26.080] look at how does React do stuff?
[03:26.080 --> 03:27.080] How does Vue do stuff?
[03:27.080 --> 03:28.080] How does Spelt do stuff?
[03:28.080 --> 03:34.280] And can I, can I make that learning curve a little bit more familiar for people?
[03:34.280 --> 03:37.200] But yeah, that's, that's kind of how Elmland started.
[03:37.200 --> 03:38.600] That was the inspiration for it.
[03:38.600 --> 03:43.760] So basically just like kind of wanting to take that feeling that you had back in 2015
[03:43.760 --> 03:48.920] watching Evan's talk and sort of like turn it into a tool and something that's like not
[03:48.920 --> 03:52.240] just inspires people to try Elm, but like just helps them.
[03:52.280 --> 03:56.560] It'll sort of achieve that goal of like, you can get to this, this wonderful land of like
[03:56.560 --> 03:59.720] reliability and stuff, but like get up and running faster and easier.
[04:00.000 --> 04:00.680] Exactly.
[04:00.680 --> 04:01.720] Yeah, that's exactly it.
[04:02.520 --> 04:02.760] Yeah.
[04:02.760 --> 04:06.840] Cause I feel like in that space, there's a lot of, I don't know if maybe dependency is a
[04:06.840 --> 04:10.480] strong word, but if you're doing front end development, there's a lot of tools that just
[04:10.480 --> 04:13.960] you type a few letters in your terminal and like, oops, I have an application.
[04:14.000 --> 04:14.360] Right.
[04:14.360 --> 04:18.560] And so I feel like, you know, before I did Elm, I was, when I was using Vue, there was
[04:18.560 --> 04:22.840] NuxJS and I was like, oh, I can just build an app and it'll tell me how to organize
[04:22.840 --> 04:27.720] things and just kind of seem to streamline the process of like trying something out and
[04:27.720 --> 04:28.640] like getting up and running.
[04:29.040 --> 04:33.200] I think this is a really important point because so like Elm, like I've talked to Evan
[04:33.200 --> 04:36.520] about this in the past and like one of the things that he really likes from like a teaching
[04:36.520 --> 04:42.160] perspective is just to sort of reassure people that, you know, you only need to just
[04:42.160 --> 04:46.560] download the Elm executable and then you can just start with like a main.Elm and just go
[04:46.560 --> 04:48.440] from there and that's all you need to get up and running.
[04:48.440 --> 04:51.640] However, there's a lot of people for whom that's just not what they're used to.
[04:51.720 --> 04:52.960] That's not the workflow.
[04:52.960 --> 04:54.040] That's like normal to them.
[04:54.040 --> 04:56.960] They're used to like, no, I want like a CLI that's going to generate a bunch of stuff for
[04:56.960 --> 04:57.160] me.
[04:57.160 --> 05:02.400] And like, I want to, I don't want to have to start from, you know, hello world and plain
[05:02.400 --> 05:06.760] texts, no style sheets, you know, like just build everything up from scratch.
[05:07.080 --> 05:12.400] Some people like that, but there's always been a bit of mismatch between the only early
[05:12.400 --> 05:16.800] Elm experience that was available and what a lot of, especially JavaScript developers
[05:16.840 --> 05:19.920] are used to and kind of looking for as a way to on-ramp.
[05:19.960 --> 05:24.520] And what I love about your approach is that you still have the same sort of destination,
[05:24.520 --> 05:26.560] like you still end up getting the Elm experience.
[05:26.560 --> 05:30.440] It's not like, you know, took Elm and like made it into something else.
[05:30.800 --> 05:35.320] It's more that you're like, here is, you know, if this is the onboarding experience that
[05:35.320 --> 05:37.560] you're used to and you're looking for, here it is.
[05:37.680 --> 05:42.480] It's the same experience, but you're going to get to a much nicer destination once you
[05:42.480 --> 05:43.560] go through that experience.
[05:43.720 --> 05:45.040] Yeah, yeah, it's funny.
[05:45.360 --> 05:49.960] It reminds me, Evan gave his talk, I think it was on storytelling where he was talking
[05:49.960 --> 05:52.000] about, it's like radio versus television.
[05:52.120 --> 05:56.320] At one point he was talking about like how television just takes away the work from
[05:56.320 --> 05:58.600] having to like, you know, visualize what you're hearing.
[05:59.120 --> 06:02.200] And I feel like Elmlands, it's like just giving you an app and like takes away the
[06:02.200 --> 06:03.800] work of like, Oh, I can like do this.
[06:03.800 --> 06:06.440] Oh, that means I could build, I could build GitHub or something.
[06:06.440 --> 06:07.600] It's like, no, just show them GitHub.
[06:08.920 --> 06:12.800] It's like, now you don't have to do that extra step, but yeah, totally.
[06:13.120 --> 06:15.200] So yeah, I think that's a, that's a great summary of it.
[06:15.200 --> 06:17.880] Just like kind of making that a familiar experience.
[06:18.480 --> 06:18.800] Yeah.
[06:18.880 --> 06:19.640] What they might be used to.
[06:19.840 --> 06:22.760] What was the point, which you were like, this is the missing piece.
[06:22.760 --> 06:27.160] Was there some, cause like oftentimes I found that when I decided to like invest
[06:27.160 --> 06:31.040] as much time into a tool as I'm sure you have into Elmland, there's some moment
[06:31.120 --> 06:34.760] where there's kind of like a trigger where I'm like, okay, this, this, I want
[06:34.760 --> 06:37.240] this to exist badly enough that I'm going to put a bunch of hours into it.
[06:37.560 --> 06:38.920] Was, did you have a moment like that?
[06:38.920 --> 06:42.760] Or, or was it just kind of like, you know, eventually just like an accumulation
[06:42.760 --> 06:46.440] of like hearing stories from people about where's X, but for Elm, you know,
[06:46.440 --> 06:48.280] where's Nux for Elm or something like that.
[06:49.400 --> 06:53.480] Yeah, I think it, I think this, this goes back because before Elmland, I was
[06:53.480 --> 06:57.760] working on LMSPA, which was kind of, it was more focused on like the routing
[06:57.880 --> 07:00.040] and like kind of scaffolding side of things.
[07:00.480 --> 07:04.000] And then I like maybe shelled out isn't the right word, but I kind of shelled
[07:04.000 --> 07:07.720] out the rest of the app building experience to like, Oh, like go look up
[07:07.720 --> 07:10.160] how to do on UI or go look up how to use it out of scope.
[07:10.240 --> 07:10.560] Yeah.
[07:10.680 --> 07:11.000] Yeah.
[07:11.000 --> 07:13.400] It's like, that's not my, it's not my wheelhouse, man.
[07:13.880 --> 07:18.360] But I felt like, I feel like for a long time, and you know, I guess to this
[07:18.360 --> 07:22.720] day, the Elm community is a bunch of kind of independent contributors that build
[07:22.720 --> 07:27.280] really focused libraries that are designed well enough that they can plug in together.
[07:27.760 --> 07:31.960] Um, but the thing that I would see a lot in the Elm Slack or, you know, people
[07:31.960 --> 07:34.040] asking is like, how do I build an app?
[07:34.320 --> 07:34.600] Right.
[07:34.880 --> 07:37.000] And that means like, how do I glue all this stuff together?
[07:37.360 --> 07:40.880] Even in the Elm SPA, you know, users channel in the Slack, they'd be like,
[07:40.880 --> 07:42.240] Hey, can I use Elm UI with this?
[07:42.280 --> 07:44.040] Like the question, can I use it?
[07:44.080 --> 07:48.160] Like not even like how it's like, is this even viable at like a base level?
[07:48.160 --> 07:48.640] Does it work?
[07:48.640 --> 07:48.920] Yeah.
[07:49.000 --> 07:53.520] I feel like, um, there was a moment where I was like, I think I just need to answer
[07:53.520 --> 07:55.880] the, the high level question of how do I do it?
[07:56.320 --> 07:58.760] Like, how do I make something real and how do I build something?
[07:59.400 --> 08:02.160] Cause there's a, there's a lot of, uh, there's not a lot of tools like a lot
[08:02.160 --> 08:06.360] of, in terms of like NPM comparison, but there's a lot of like separate kind
[08:06.360 --> 08:10.320] of projects and it's not clear, um, to a newcomer necessarily, like how they're
[08:10.320 --> 08:12.000] all supposed to kind of work together.
[08:12.160 --> 08:12.400] Right.
[08:12.400 --> 08:15.600] But it wasn't just like an answer in the sense of like an FAQ entry, right?
[08:15.600 --> 08:18.400] Where it's like, oh, the answer is like, yes, you could use Elm UI with that.
[08:18.440 --> 08:19.560] Go forth and do it.
[08:19.560 --> 08:22.440] It's, it's more like, here's an answer to the whole set of questions.
[08:22.440 --> 08:23.560] And like, here's a starting point.
[08:23.680 --> 08:26.040] It reminds me a little bit of, um, and I'm sure you've like, you know, this
[08:26.040 --> 08:29.440] is on your radar, it was like create react app where like that was, seemed
[08:29.440 --> 08:32.520] like there was a similar motivation story there where there was a bunch of people
[08:32.520 --> 08:36.240] saying like, well, reacts only designed to be responsible for rendering, but
[08:36.240 --> 08:37.920] there's all this other stuff that goes into making an app.
[08:38.000 --> 08:39.840] How do I glue all these pieces together?
[08:39.840 --> 08:42.520] And then create react app was like an answer to that.
[08:42.560 --> 08:45.720] And then, you know, you could like, you know, eject and whatever else.
[08:45.720 --> 08:47.560] And I haven't really kept up with the react rule.
[08:47.560 --> 08:50.480] I don't know if that's like still a thing that people do or not, but I know
[08:50.480 --> 08:54.040] that that was like, that was originally like the motivation there, or
[08:54.040 --> 08:54.800] at least that's what I heard.
[08:55.240 --> 08:55.680] Totally.
[08:55.800 --> 08:56.120] Yeah.
[08:56.160 --> 09:00.480] I saw a tweet recently, someone saying like, uh, like junior developers being
[09:00.480 --> 09:04.440] like, what's a CRA people like these days don't know what it is anymore.
[09:04.600 --> 09:06.040] So is it, has it fallen out of favor?
[09:06.040 --> 09:06.680] I don't even know.
[09:06.920 --> 09:07.480] I don't know.
[09:07.480 --> 09:10.960] I mean, I haven't, I haven't really been in the react ecosystem too much, but
[09:11.240 --> 09:14.520] I think people are aware of it and they still kind of reference it as like a thing.
[09:14.720 --> 09:16.600] I mean, the JavaScript ecosystem is blown up.
[09:16.720 --> 09:17.920] There's all these new frameworks.
[09:18.120 --> 09:20.680] There's like solid, there's Astro, there's quick.
[09:20.680 --> 09:22.920] There's like all these new things that kind of look like react,
[09:23.040 --> 09:24.120] but work a little different.
[09:24.440 --> 09:26.080] It's good to know that some things never change.
[09:26.080 --> 09:29.080] It felt like for a minute there, there was going to be a consensus
[09:29.360 --> 09:30.880] in the JavaScript ecosystem.
[09:30.880 --> 09:32.880] So I guess that didn't last long.
[09:33.120 --> 09:33.920] No, yeah.
[09:34.080 --> 09:37.040] It's actually really cool to see like what's going on now because the
[09:37.040 --> 09:38.800] frameworks are getting more nuanced.
[09:39.240 --> 09:42.000] It feels like they're, they're more, I've heard, I've heard you talk about this
[09:42.000 --> 09:45.200] on the podcast before of like things to try to convince you they're good for
[09:45.200 --> 09:48.560] everything and you kind of find out later on, like, that's not really true.
[09:49.000 --> 09:49.240] Yeah.
[09:49.480 --> 09:53.160] If you look at the projects coming out now, it's like the, I've noticed two big
[09:53.160 --> 09:58.000] changes since, you know, 2015 or 2016 when I was like really in the space, which
[09:58.000 --> 10:02.520] is the framework wars seem to have died down or at least the strategy has changed
[10:02.520 --> 10:03.960] where everyone's like polite online.
[10:04.600 --> 10:06.240] Maybe they're like secretly at war.
[10:06.360 --> 10:06.720] Okay.
[10:06.720 --> 10:07.080] Okay.
[10:07.120 --> 10:07.400] Yeah.
[10:07.600 --> 10:12.200] Everyone seems very like reasonable and honest about like trade-offs.
[10:12.280 --> 10:17.160] So like the Ryan, I think carniado is how you pronounce his last name.
[10:17.240 --> 10:19.760] He's the author of solid JS and he's like, it's really fast.
[10:19.760 --> 10:20.440] You're the benchmarks.
[10:20.440 --> 10:21.040] It's for this.
[10:21.080 --> 10:21.320] Yeah.
[10:21.400 --> 10:24.680] And like people, you know, making Astro like, Hey, this is great for making
[10:24.680 --> 10:30.080] websites and I feel like, I feel like there's more nuance now, which it feels
[10:30.080 --> 10:32.360] like there always should have been, for example, Elmland, don't build a
[10:32.360 --> 10:34.720] website with any SSR.
[10:34.720 --> 10:37.640] It doesn't do any SS SEO that that's like, not the focus.
[10:37.640 --> 10:41.320] Like if you're trying to build like an app behind login, like if you're, if
[10:41.320 --> 10:44.720] you're at, you know, if you're working at vendor, for example, if you ever heard
[10:44.720 --> 10:49.120] of that company, if you're working at that, if you're working at vendor,
[10:49.200 --> 10:52.280] your apps behind the login, you don't need, you know, server side rendering
[10:52.280 --> 10:55.640] and every page, you just want a really nice, reliable experience for the
[10:55.640 --> 10:58.240] customer and you want to be able to add features quick, right?
[10:58.280 --> 11:01.080] That's what online sports, you know, it's not for everything, but the web
[11:01.080 --> 11:06.200] platform is so expansive that it can be like a blurry line between those things
[11:06.200 --> 11:08.520] sometimes, and I feel like there's a lot more nuance these days, which
[11:08.520 --> 11:10.080] is just great to see that.
[11:10.080 --> 11:14.680] Um, yeah, that, that, that framework wars comment takes me back to, it was a
[11:14.680 --> 11:18.120] conference, this is like more than five years ago now, I think, and it was
[11:18.120 --> 11:22.040] called framework summit and kind of the theme was like, let's get all the
[11:22.120 --> 11:25.960] like JavaScript frameworks together and like, you know, give people
[11:25.960 --> 11:29.600] presentations about them and let people, you know, understand which one is for
[11:29.600 --> 11:31.240] them and which one isn't for them and so forth.
[11:31.480 --> 11:35.200] So they also had this like creators day that was like the day before the
[11:35.200 --> 11:39.560] presentations, it was like me representing Elm and like Tom Dale from
[11:39.560 --> 11:44.920] Ember and Andrew from react and, um, some people whose names I'm forgetting
[11:45.040 --> 11:47.080] for, uh, from UJS and AngularJS.
[11:47.480 --> 11:50.240] And so basically we, we all got together and just sort of talked about
[11:50.240 --> 11:52.720] stuff that affected all of us, which is pretty interesting discussion.
[11:52.880 --> 11:55.240] And so there was kind of this spirit of like, okay, we're not really like
[11:55.240 --> 11:58.120] competing, we're just kind of, you know, hanging out and like having fun and
[11:58.120 --> 12:01.240] we're all kind of doing our own thing and have our own trade-offs and, you
[12:01.240 --> 12:02.960] know, there's some commonalities and some differences.
[12:03.040 --> 12:06.600] And so the next day, you know, the, the organizers had said like, okay, when
[12:06.600 --> 12:09.880] everybody presents, you're sort of like, I forget how long it was, it was like a
[12:09.880 --> 12:13.800] 15, 20 minute pitch for like, you know, your latest, latest version of your thing.
[12:14.240 --> 12:16.440] Um, so I was talking about like, you know, here's the latest in Elm.
[12:16.920 --> 12:20.640] Uh, and, uh, and he was like, you know, and please, the organized like, please
[12:20.640 --> 12:23.560] don't, don't like, you know, hate on the other frameworks, you know, if you have
[12:23.560 --> 12:25.720] to make comparisons, like be respectful at some point.
[12:25.880 --> 12:28.960] And so everybody pretty much took this to heart, except at the very beginning
[12:28.960 --> 12:33.320] of his Tom Dale from Ember stands up and he's like, all right, so I'd like to
[12:33.320 --> 12:37.240] welcome everybody to the Comedy Central roast of JavaScript frameworks, and then
[12:37.240 --> 12:40.960] proceeds to just like, just roast, like all of the other frameworks.
[12:41.040 --> 12:42.080] Oh my gosh.
[12:42.120 --> 12:43.120] He started it off.
[12:43.280 --> 12:46.440] Yeah, I don't think this was the first presentation, but that was how he started
[12:46.440 --> 12:48.720] off his, you know, comparison of Ember to them.
[12:49.040 --> 12:53.040] Now what's funny though, in retrospect is that the dig that he had on Elm was he
[12:53.040 --> 12:56.480] said, he's like, Elm is here, you know, really, really glad to see Elm represented.
[12:56.480 --> 13:00.360] It's nice to see Elm here because it makes Ember look popular by comparison,
[13:01.400 --> 13:04.920] which maybe at the time was true, but I actually don't think that's true anymore.
[13:04.920 --> 13:06.680] I think it's, it's probably the other way around.
[13:06.800 --> 13:09.320] I think Elm has almost certainly at this point, eclipsed Ember in
[13:09.320 --> 13:11.720] terms of like current, like present day use.
[13:11.880 --> 13:12.480] Interesting.
[13:12.480 --> 13:13.000] Could be wrong.
[13:13.240 --> 13:14.120] I have no idea.
[13:14.160 --> 13:14.480] Yeah.
[13:14.920 --> 13:18.800] Based on like state of JS surveys and like, I don't know if those are, how
[13:18.800 --> 13:22.160] indicative those are, like on the one hand, maybe there's a lot of people using
[13:22.200 --> 13:25.240] Ember apps that have been using them for so long that they just don't care to
[13:25.240 --> 13:26.760] bother to like respond to state of JS.
[13:26.760 --> 13:30.080] Cause they're not interested in like the latest and you know, most cutting edge
[13:30.080 --> 13:34.040] stuff, but then again, I also, you know, know that like a lot of Elm people are
[13:34.040 --> 13:35.400] just don't care about JS anymore.
[13:35.400 --> 13:36.720] So it's just like, I moved on.
[13:36.720 --> 13:39.680] And so who knows what percentage of Elm developers respond to state of JS.
[13:40.080 --> 13:43.160] So yeah, there's a lot of, there's a lot of factors there, but it's interesting.
[13:43.360 --> 13:44.440] I'm one of the crazy ones.
[13:44.440 --> 13:45.600] That's like every state of JS.
[13:45.600 --> 13:46.960] I'm like, get in there, you gotta put Elm in there.
[13:47.280 --> 13:47.680] It's funny.
[13:47.680 --> 13:53.280] If you look at the last state of JS, it was like most writings, Elm people
[13:53.280 --> 13:57.160] just like, please include me on these lists, but it's, it's fun.
[13:57.400 --> 13:58.760] I'm in the same boat in that.
[13:58.760 --> 14:02.120] Like I used to look at state of JS, like before I got into Elm.
[14:02.520 --> 14:06.000] And then like, since I got into Elm, like, yeah, I, I still, I just like, kind
[14:06.000 --> 14:09.160] of always want to make sure it's like, yeah, you know, like just so you know,
[14:10.080 --> 14:12.640] I'm not using JS anymore, but, but FYI Elm.
[14:12.960 --> 14:13.200] Yeah.
[14:13.200 --> 14:14.880] And I'm sure some number of people do that.
[14:14.880 --> 14:18.280] Like I always see on Elm Slack, somebody posts a link to state of JS every year.
[14:18.280 --> 14:22.000] It's like, Hey, you know, don't forget the JavaScript people don't know we exist
[14:22.000 --> 14:27.680] unless we tell what we do, but it's weird because that's, it feels to me like state
[14:27.680 --> 14:31.200] of JS for a lot of Elm programmers who are, who are like using it professionally.
[14:31.440 --> 14:35.040] That's their main interaction with JavaScript anymore or the world of JavaScript.
[14:35.040 --> 14:36.160] And maybe you do some like interop.
[14:36.200 --> 14:39.640] And so that's how you like interact with JavaScript code, but it's like the JS
[14:39.640 --> 14:42.920] community and all the different frameworks and the solid JS and you know,
[00:00.000 --> 00:03.800] good state of JS, like before I got into Elm and then like, since I got into Elm,
[00:03.800 --> 00:07.240] like, yeah, I, I still, I just like kind of always want to make sure it's like,
[00:07.320 --> 00:12.280] yeah, you know, like, just so you know, I'm not using JS anymore, but, but FYI,
[00:12.280 --> 00:14.840] um, yeah, and I'm sure some number of people do that.
[00:14.840 --> 00:18.240] Like I always see on Elm Slack, somebody posts a link to state of JS every year
[00:18.240 --> 00:21.960] to like, Hey, you know, don't forget the JavaScript people don't know we exist
[00:21.960 --> 00:27.040] unless we tell what we do, but it's weird because that's, it feels to me like
[00:27.240 --> 00:30.600] state of JS for a lot of Elm programmers who are, who are like using it
[00:30.600 --> 00:34.120] professionally, that's their main interaction with JavaScript anymore or
[00:34.120 --> 00:34.960] the world of JavaScript.
[00:34.960 --> 00:37.320] I mean, maybe you do some like interop and so that's how you like interact
[00:37.320 --> 00:40.960] with JavaScript code, but it's like the JS community and all the different
[00:40.960 --> 00:44.560] frameworks and the solid JS and you know, whatever the latest thing is, it's
[00:44.560 --> 00:48.240] like, I hear about those things, you know, but it's, it's almost even like,
[00:48.640 --> 00:52.480] as if I'm not plugged into the front end world at all, because so much of the
[00:52.480 --> 00:56.240] front end world is just like JavaScript, you know, I don't want to say drama,
[00:56.240 --> 01:02.120] but like, you know, JavaScript framework churn there's, there's always so much
[01:02.120 --> 01:06.160] like new stuff that seems like it's some tweak on the last thing.
[01:06.160 --> 01:08.720] Whereas in the Elm community, I don't really get that sense.
[01:08.720 --> 01:12.880] It seems like it's, it's much more common that you'll have an existing
[01:12.880 --> 01:14.560] thing that continues to evolve.
[01:14.840 --> 01:19.200] Like for example, Elm CSS, which like I started out and worked on for many years
[01:19.200 --> 01:22.840] and kind of, I've not had time anymore because all of my, well, first of all,
[01:23.200 --> 01:26.800] back when I had free time, before I had a kid, all of that time was going into
[01:26.800 --> 01:30.560] rock and so I've just like, all of my non-rock things just kind of slid to
[01:30.560 --> 01:32.920] the backboard or by default, it's funny.
[01:32.920 --> 01:36.240] I was, I was catching up with Evan, was this last year, two years ago, whatever.
[01:36.240 --> 01:38.680] I, at some point I was in Copenhagen for a conference.
[01:38.680 --> 01:41.720] So I hung out with him and Teresa and we caught up about various things.
[01:41.720 --> 01:45.560] And I was commenting on how like, I don't really like have time to maintain a lot
[01:45.560 --> 01:48.960] of my Elm projects anymore, because I just, every weekend, I'm like this
[01:48.960 --> 01:51.160] weekend, I'm going to like go through PRs on this thing.
[01:51.520 --> 01:54.200] And then by the end of the weekend, I would have done a bunch of rock stuff.
[01:54.240 --> 01:56.480] And I was like, and I still had more rock stuff to do, but I didn't even
[01:56.480 --> 01:57.600] get to any of the Elm stuff.
[01:57.960 --> 01:58.200] All right.
[01:58.200 --> 01:59.120] Next weekend, next weekend.
[01:59.360 --> 02:00.520] And then that would just keep happening.
[02:01.280 --> 02:02.520] How's, I was joking to Evan.
[02:02.520 --> 02:04.920] I was like, yeah, it turns out like making a programming language.
[02:05.160 --> 02:06.560] It's really, really time consuming.
[02:06.880 --> 02:07.640] Is that sounds funny?
[02:07.640 --> 02:08.200] He just laughed.
[02:08.200 --> 02:13.280] It's like, yeah, it turns out, I'm sure that's a universal thing.
[02:13.680 --> 02:16.680] I mean, I guess like if you're making a toy language, that's like just for you
[02:16.680 --> 02:18.640] and like just a hobby thing, then that's, that's one thing.
[02:18.680 --> 02:21.080] But if you're like trying to make something that other people are actually
[02:21.080 --> 02:24.520] going to use like professionally, it's like kind of a, yeah, there's a lot there.
[02:24.920 --> 02:28.640] But I was thinking about this in the context of this sort of like framework
[02:28.640 --> 02:32.000] churn in the JavaScript ecosystem, but never use the word churn to describe
[02:32.000 --> 02:33.920] what happens in the Elm package ecosystem.
[02:33.960 --> 02:37.720] And like in the Elm CSS case, it's like, okay, I'm not working on that actively
[02:37.720 --> 02:42.000] anymore, but there's, there's a longtime contributor who had been working on
[02:42.000 --> 02:46.480] this sort of like big performance oriented under the hood rewrite that I'd gotten
[02:46.520 --> 02:48.400] started and never got all the way through.
[02:48.560 --> 02:52.240] He just was like, Hey, is it cool if I like fork this and like continue that work?
[02:52.240 --> 02:53.400] And I was like, yes, please do that.
[02:53.440 --> 02:56.960] That's awesome because it's not like you're redoing the whole thing.
[02:56.960 --> 02:58.080] Like fingers crossed.
[02:58.080 --> 03:01.920] I would love to see him finish that because, and publish it because if he can
[03:01.920 --> 03:05.680] actually make it across the finish line, it should feel like using the most
[03:05.680 --> 03:09.840] recent release of the Elm CSS that I built up, but it should run way faster.
[03:10.200 --> 03:12.000] Which in my mind is, is just like, awesome.
[03:12.000 --> 03:15.240] If you can get something where it's like, this is already the experience that
[03:15.240 --> 03:17.880] people want and are happy with, but it runs way faster.
[03:17.880 --> 03:20.080] That's an amazing way to like evolve something.
[03:20.640 --> 03:24.520] Whereas the like, well, we redid everything from scratch, but it was, you
[03:24.520 --> 03:27.000] know, you use that description of like, it's kind of like react, but with a
[03:27.000 --> 03:28.520] twist or like a little bit different.
[03:28.920 --> 03:32.000] I'm really glad we don't, we don't see that happening in the Elm community.
[03:32.120 --> 03:32.640] Yeah.
[03:32.680 --> 03:35.800] I feel like every now and then we'll get the Elm Slack and there'll be, there'll
[03:35.800 --> 03:39.160] be something new, new will come out in the react space and I'll see someone like,
[03:39.160 --> 03:43.400] Oh, like how, how can we do like hooks and Elm or like, how do we, as felt
[03:43.400 --> 03:46.880] doesn't do virtual DOM, like how do we do Elm without virtual DOM?
[03:46.880 --> 03:51.000] And like, I see posts like that, but yeah, I don't think they get too much traction,
[03:51.000 --> 03:54.840] but I feel like it kind of, I think there's a, just a general anxiety.
[03:55.320 --> 04:00.520] Just like, if we're not doing the latest thing, like is, is, are we dead or something?
[04:00.520 --> 04:02.680] You know, there's like that kind of energy to it.
[04:02.840 --> 04:06.520] So I'm glad you brought that up because I, the way that I've seen those discussions
[04:06.520 --> 04:10.280] typically go on Elm Slack is someone will post that and then two or three people
[04:10.280 --> 04:12.080] will respond like, no, everything's cool.
[04:12.360 --> 04:12.680] Yeah.
[04:12.760 --> 04:14.120] Do we need to create a problem here?
[04:15.040 --> 04:15.760] Like we're good.
[04:15.800 --> 04:18.480] Like what's, what's the actual problem we're trying to solve here?
[04:18.480 --> 04:19.400] Is it just FOMO?
[04:19.480 --> 04:22.280] Like what's the user experience problem that we have here?
[04:22.280 --> 04:23.840] And then like, let's figure out a solution to that.
[04:24.040 --> 04:25.640] Is there a user experience problem here?
[04:25.640 --> 04:28.280] Or is this just like, someone else is doing X.
[04:28.280 --> 04:29.360] Shouldn't we be doing X?
[04:29.360 --> 04:29.880] It's like, no.
[04:29.880 --> 04:33.960] And I think that's, and maybe I'm being dismissive here, but feels like a
[04:33.960 --> 04:37.960] cultural carryover from JavaScript because that's totally a cultural norm in
[04:37.960 --> 04:41.800] the JavaScript community is just like, Oh man, like X came out, like,
[04:42.240 --> 04:43.400] shouldn't we be doing X?
[04:43.480 --> 04:46.880] And, and there's just like, kind of this, like this constant magnetic pull
[04:46.880 --> 04:48.280] towards the latest shiny thing.
[04:48.640 --> 04:51.160] And there's almost like a, I mean, at least among people who've been around
[04:51.160 --> 04:54.280] the community long enough, like in Elm, it seems like there's a, there's a, an
[04:54.280 --> 04:58.440] instinctive resistance to that, where it's like, anytime, like the X, Y problem
[04:58.440 --> 05:02.240] is the classic example of this, where it's like, and people are always citing that
[05:02.240 --> 05:05.160] and linking, I think it's like, what is X, Y problem dot info or something is the
[05:05.160 --> 05:05.480] link.
[05:05.920 --> 05:06.760] Yeah, something like that.
[05:06.800 --> 05:07.040] Yeah.
[05:07.280 --> 05:08.960] That's where I learned about X, Y problems.
[05:09.000 --> 05:11.120] I think Elm Slack educated me.
[05:11.800 --> 05:12.800] Yeah, it's Elm.
[05:12.800 --> 05:13.440] Yeah, me too.
[05:13.840 --> 05:17.080] I, I'd never heard of it before Elm, but yeah, it's like this for those who
[05:17.080 --> 05:20.840] aren't familiar, it's, it's this idea of like, you know, you say like hooks,
[05:20.840 --> 05:21.840] let's use that as an example.
[05:21.840 --> 05:24.800] You come in saying like, Hey, you know, how does Elm do hooks?
[05:24.880 --> 05:28.200] And you say, well, hang on, let's, let's take a step back and ask like, what's
[05:28.200 --> 05:29.160] the real problem here?
[05:29.160 --> 05:30.480] Like, what's the direct problem?
[05:30.480 --> 05:34.520] Like we're starting to work on a solution and we have a question about the solution,
[05:34.560 --> 05:38.080] but let's step, let's step all the way back and see like, what's the immediate
[05:38.080 --> 05:38.440] problem?
[05:38.440 --> 05:40.360] What's the pain point that we're trying to solve?
[05:40.640 --> 05:44.040] And then we can talk about solutions kind of from scratch and maybe we'll end up
[05:44.040 --> 05:48.240] going down the same road that this solution is like presupposing, but maybe
[05:48.240 --> 05:51.480] not, maybe it'll turn out that there's actually a better category of solution
[05:51.480 --> 05:51.720] here.
[05:53.440 --> 05:58.040] And hooks are an interesting example because I remember when, when hooks and
[05:58.040 --> 06:02.080] suspense were announced, which I think might've been the same talk or it might
[06:02.080 --> 06:02.840] have been different talks.
[06:02.880 --> 06:06.520] I don't remember, but I remember hearing about them.
[06:06.520 --> 06:10.840] And I was at that point, like very into Elm and like has really had not been
[06:10.840 --> 06:14.360] spending any time with react in a while, like months or years.
[06:15.240 --> 06:19.440] And I remember hearing it and I was like, I don't understand what problem this is
[06:19.440 --> 06:19.840] solving.
[06:19.840 --> 06:23.680] If you're not like Facebook, if you're like literally Facebook and you have like
[06:23.680 --> 06:27.200] a gazillion different widgets on the screen and, and no, they're all like, you
[06:27.200 --> 06:28.680] know, customizable in different ways.
[06:28.680 --> 06:32.040] And some of them need to be like real time, like chat, but then others don't
[06:32.040 --> 06:33.240] need to be like the newsfeed.
[06:33.240 --> 06:37.440] And I was like, okay, if you're literally Facebook, I can see how this might be
[06:37.440 --> 06:42.200] solving a practical problem, but if you're not literally Facebook and there's
[06:42.200 --> 06:47.480] like 99.9% of, you know, that's huge underestimate, basically everyone else.
[06:47.760 --> 06:51.120] Like, like what, why, why are people excited about this?
[06:51.160 --> 06:55.720] And it felt to me like an XY problem example where it's like, you know, yeah,
[06:56.000 --> 06:58.800] you can see getting excited about it, you know, for the sake of, oh, it's a new
[06:58.800 --> 07:01.360] shiny thing at that conceptually.
[00:00.000 --> 00:02.040] like kind of scaffolding side of things.
[00:02.480 --> 00:06.000] And then I like maybe shelled out, isn't the right word, but I kind of shelled
[00:06.000 --> 00:09.720] out the rest of the app building experience to like, Oh, like go look up
[00:09.720 --> 00:12.160] how to do on UI or go look up how to use it out of school.
[00:12.240 --> 00:12.560] Yeah.
[00:12.680 --> 00:13.000] Yeah.
[00:13.000 --> 00:17.200] It's like, that's not my, it's not my wheelhouse man, but I felt like, I
[00:17.200 --> 00:21.720] feel like for a long time and you know, I guess to this day, the Elm community is
[00:21.720 --> 00:25.440] a bunch of kind of independent contributors that build really focused
[00:25.440 --> 00:29.280] libraries that are designed well enough that they can plug in together.
[00:29.760 --> 00:33.960] Um, but the thing that I would see a lot in the Elm Slack or, you know, people
[00:33.960 --> 00:36.080] asking is like, how do I build an app?
[00:36.320 --> 00:36.600] Right.
[00:36.880 --> 00:39.040] And that means like, how do I glue all this stuff together?
[00:39.360 --> 00:42.920] Even in the Elm SPA, you know, users channel in the Slack, they'd be like,
[00:42.920 --> 00:44.280] Hey, can I use Elm UI with this?
[00:44.320 --> 00:46.080] Like the question, can I use it?
[00:46.120 --> 00:50.160] Like not even like how it's like, is this even viable at like a base level?
[00:50.160 --> 00:50.680] Does it work?
[00:50.680 --> 00:50.960] Yeah.
[00:51.040 --> 00:55.560] I feel like, um, there was a moment where I was like, I think I just need to answer
[00:55.560 --> 00:57.920] the, the high level question of how do I do it?
[00:58.320 --> 01:00.760] Like, how do I make something real and how do I build something?
[01:01.400 --> 01:04.160] Cause there's a, there's a lot of, uh, there's not a lot of tools, like a lot
[01:04.160 --> 01:08.400] of in terms of like NPM comparison, but there's a lot of like separate kind of
[01:08.400 --> 01:12.280] projects and it's not clear, um, to a newcomer necessarily, like how they're
[01:12.280 --> 01:13.960] all supposed to kind of work together.
[01:14.120 --> 01:14.360] Right.
[01:14.360 --> 01:17.560] But it wasn't just like an answer in the sense of like an FAQ entry, right?
[01:17.560 --> 01:20.360] Where it's like, oh, the answer is like, yes, you could use Elm UI with that.
[01:20.400 --> 01:21.520] Go forth and do it.
[01:21.520 --> 01:24.400] It's, it's more like, here's an answer to the whole set of questions.
[01:24.400 --> 01:25.520] And like, here's a starting point.
[01:25.680 --> 01:28.040] It reminds me a little bit of, um, and I'm sure you've like, you know, this
[01:28.040 --> 01:31.440] is on your radar, it was like create react app where like that was, seemed
[01:31.440 --> 01:34.520] like there was a similar motivation story there where there was a bunch of people
[01:34.520 --> 01:38.240] saying like, well, reacts only designed to be responsible for rendering, but
[01:38.240 --> 01:41.000] there's all this other stuff that goes into making an app, how do I glue all
[01:41.000 --> 01:44.520] these pieces together and then create react app was like an answer to that.
[01:44.560 --> 01:47.720] And then, you know, you could like, you know, eject and whatever else.
[01:47.720 --> 01:49.560] And I haven't really kept up with the react rule.
[01:49.560 --> 01:52.480] I don't know if that's like still a thing that people do or not, but I know
[01:52.480 --> 01:56.280] that that was like, that was originally like the motivation there, or at least
[01:56.280 --> 01:57.680] that's what I heard totally.
[01:57.800 --> 01:58.120] Yeah.
[01:58.160 --> 02:02.480] I saw a tweet recently, someone saying like, uh, like junior developers being
[02:02.480 --> 02:06.480] like, what's a CRA people like these days don't know what it is anymore.
[02:06.600 --> 02:08.080] So is it, has it fallen out of favor?
[02:08.080 --> 02:08.720] I don't even know.
[02:08.960 --> 02:09.520] I don't know.
[02:09.520 --> 02:13.000] I mean, I haven't, I haven't really been in the react ecosystem too much, but
[02:13.280 --> 02:16.560] I think people are aware of it and they still kind of reference it as like a thing.
[02:16.760 --> 02:18.680] I mean, the JavaScript ecosystem is blown up.
[02:18.760 --> 02:20.000] There's all these new frameworks.
[02:20.160 --> 02:22.080] There's like solid, there's Astro.
[02:22.200 --> 02:24.960] There's quick, there's like all these new things that kind of look like react,
[02:25.080 --> 02:26.160] but work a little different.
[02:26.480 --> 02:28.120] It's good to know that some things never change.
[02:28.120 --> 02:31.160] It felt like for a minute there, there was going to be a consensus
[02:31.400 --> 02:32.920] in the JavaScript ecosystem.
[02:32.920 --> 02:34.960] So I guess that didn't last long.
[02:35.160 --> 02:35.640] No.
[02:35.640 --> 02:36.000] Yeah.
[02:36.000 --> 02:39.080] I, it's actually really cool to see like what's going on now because the
[02:39.080 --> 02:40.840] frameworks are getting more nuanced.
[02:41.240 --> 02:44.200] It feels like they're, they're more, I've heard, I've heard you talk about this on
[02:44.200 --> 02:47.240] the podcast before of like things that try to convince you they're good for
[02:47.240 --> 02:50.560] everything and you kind of find out later on, like that's not really true.
[02:51.000 --> 02:51.200] Yeah.
[02:51.480 --> 02:54.960] If you look at the projects coming out now, it's like the, I've noticed two
[02:54.960 --> 02:59.800] big changes since, you know, 2015 or 2016 when I was like really in the space,
[02:59.800 --> 03:04.120] which is the framework wars seem to have died down or at least the strategy has
[03:04.120 --> 03:07.280] changed where everyone's like polite online and maybe they're all like
[03:07.280 --> 03:08.240] secretly at war.
[03:08.320 --> 03:08.680] Okay.
[03:08.680 --> 03:09.040] Okay.
[03:09.120 --> 03:09.400] Yeah.
[03:09.560 --> 03:14.160] Everyone seems very like reasonable and honest about like trade-offs.
[03:14.280 --> 03:19.120] So like the Ryan, I think carniato is how you pronounce his last name.
[03:19.240 --> 03:21.760] He's the author of solid JS and he's like, it's really fast.
[03:21.760 --> 03:22.440] You're the benchmarks.
[03:22.440 --> 03:23.040] It's for this.
[03:23.080 --> 03:23.320] Yeah.
[03:23.400 --> 03:26.680] And like people, you know, making Astro like, Hey, this is great for making
[03:26.680 --> 03:32.080] websites and I feel like, I feel like there's more nuance now, which it feels
[03:32.080 --> 03:34.760] like there always should have been, for example, Elmland don't build a website
[03:34.760 --> 03:36.720] with online, it doesn't do any SSR.
[03:36.720 --> 03:39.640] It doesn't do any SS SEO that that's like not the focus.
[03:39.640 --> 03:43.320] Like if you're trying to build like an app behind login, like if you're, if
[03:43.320 --> 03:46.600] you're at, you know, if you're working at vendor, for example, like if you ever
[03:46.600 --> 03:51.120] heard of that company, if you're working at that, if you're working at vendor,
[03:51.200 --> 03:54.280] your apps behind the login, you don't need, you know, server-side rendering
[03:54.280 --> 03:57.640] on every page, you just want a really nice, reliable experience for the
[03:57.640 --> 04:00.240] customer and you want to be able to add features quick, right?
[04:00.280 --> 04:01.200] That's what Elmland's for.
[04:01.200 --> 04:04.680] It's, you know, it's not for everything, but the web platform is so expansive
[04:04.680 --> 04:08.720] that, uh, it can be like a blurry line between those things sometimes.
[04:08.760 --> 04:11.520] And I feel like there's a lot more nuance these days, which is just great to see.
[04:11.760 --> 04:16.040] That's, um, yeah, that, that, that framework wars comment takes me back
[04:16.040 --> 04:19.560] to, there was a conference, this is like more than five years ago now, I think,
[04:19.760 --> 04:21.280] and it was called framework summit.
[04:21.600 --> 04:25.440] And kind of the theme was like, let's get all the like JavaScript frameworks
[04:25.440 --> 04:29.760] together and like, you know, give people presentations about them and let people,
[04:29.760 --> 04:33.280] you know, understand which one is for them and which one isn't for them and so forth.
[04:33.480 --> 04:37.240] So they also had this like creators day that was like the day before the
[04:37.240 --> 04:41.600] presentations, it was like me representing Elm and like Tom Dale from
[04:41.600 --> 04:44.560] Ember and Andrew from react.
[04:44.560 --> 04:48.560] And, um, some people whose names I'm forgetting for, uh, from UJS and
[04:48.560 --> 04:52.280] AngularJS and so basically we, we all got together and just sort of talked about
[04:52.280 --> 04:54.760] stuff that affected all of us, which is pretty interesting discussion.
[04:54.880 --> 04:57.720] And so there was kind of the spirit of like, okay, we're not really like competing.
[04:57.720 --> 05:00.640] We're just kind of, you know, hanging out and like having fun and we're all kind
[05:00.640 --> 05:03.560] of doing our own thing and have our own trade-offs and, you know, there's some
[05:03.560 --> 05:04.920] commonalities and some differences.
[05:05.000 --> 05:08.600] And so the next day, you know, the, the organizers had said like, okay, when
[05:08.600 --> 05:11.640] everybody presents, you're sort of like, I forget how long it was.
[05:11.640 --> 05:14.440] It was like a 15, 20 minute pitch for like, you know, your latest,
[05:14.440 --> 05:15.800] latest version of your thing.
[05:16.200 --> 05:18.440] Um, so I was talking about like, you know, here's the latest in Elm.
[05:18.880 --> 05:22.640] Uh, and, uh, and he was like, you know, and, and please organize like, please
[05:22.640 --> 05:25.520] don't, don't like, you know, hate on the other frameworks, you know, if you have
[05:25.520 --> 05:29.040] to make comparisons, like be respectful at some point, and so everybody pretty
[05:29.040 --> 05:32.400] much took this to heart, except at the very beginning of his Tom Dale from
[05:32.400 --> 05:36.320] Ember stands up and he's like, all right, so I'd like to welcome everybody to the
[05:36.320 --> 05:40.040] Comedy Central roast of JavaScript frameworks, and then proceeds to just
[05:40.040 --> 05:42.960] like, just roast like all of the other frameworks.
[05:43.040 --> 05:44.080] Oh my gosh.
[05:44.120 --> 05:45.160] He started it off.
[05:45.280 --> 05:45.680] Yeah.
[05:45.880 --> 05:48.440] I don't think this was the first presentation, but that was how he started
[05:48.440 --> 05:50.720] off his, you know, comparison of Ember to them.
[05:51.080 --> 05:54.960] Now what's funny though, in retrospect is that the dig that he had on Elm was
[05:54.960 --> 05:57.960] he said, he's like, Elm is here, you know, really, really glad to see Elm
[05:57.960 --> 06:01.720] represented it's nice to see Elm here because it makes Ember look popular by
[06:01.720 --> 06:06.160] comparison, which maybe at the time was true, but I actually don't think
[06:06.160 --> 06:06.880] that's true anymore.
[06:06.880 --> 06:08.680] I think it's, it's probably the other way around.
[06:08.800 --> 06:11.560] I think Elm has almost certainly at this point, eclipsed Ember in terms
[06:11.560 --> 06:13.680] of like current, like present day use.
[06:13.880 --> 06:14.440] Interesting.
[06:14.480 --> 06:15.000] Could be wrong.
[06:15.200 --> 06:16.080] I have no idea.
[06:16.120 --> 06:16.440] Yeah.
[06:16.920 --> 06:20.320] Based on like state of JS surveys and like, I don't know if those, you
[06:20.320 --> 06:21.520] know, are how indicative those are.
[06:21.520 --> 06:24.880] Like on the one hand, maybe there's a lot of people using Ember apps that
[06:24.880 --> 06:27.800] have been using them for so long that they just don't care to bother to like
[06:27.800 --> 06:31.160] respond to state of JS cause they're not interested in like the latest and
[06:31.200 --> 06:32.440] you know, most cutting edge stuff.
[06:32.560 --> 06:36.040] But then again, I also, you know, know that like a lot of Elm people are
[06:36.040 --> 06:37.400] just don't care about JS anymore.
[06:37.400 --> 06:38.760] So it's just like, I moved on.
[06:38.760 --> 06:41.720] And so who knows what percentage of Elm developers respond to state of JS.
[06:42.080 --> 06:45.200] So yeah, there's a lot of, there's a lot of factors there, but it's interesting.
[06:45.360 --> 06:46.440] I'm one of the crazy ones.
[06:46.440 --> 06:47.600] That's like every state of JS.
[06:47.600 --> 06:48.120] I'm like, get in there.
[06:48.120 --> 06:48.960] I got to put Elm in there.
[06:49.280 --> 06:49.680] It's funny.
[06:49.680 --> 06:55.520] If you look at the last state of JS, it was like most writings, Elm people just
[06:55.520 --> 06:57.920] like, please include me on these lists.
[06:58.280 --> 06:59.160] But it's, it's fun.
[06:59.360 --> 07:00.720] I'm in the same boat in that.
[07:00.720 --> 07:04.080] Like I used to look at state of JS like before I got into Elm.
[07:04.480 --> 07:07.960] And then like, since I got into Elm, like, yeah, I, I still, I just like kind
[07:07.960 --> 07:11.120] of always want to make sure it's like, yeah, you know, like just so you know,
[07:12.040 --> 07:14.600] I'm not using JS anymore, but, but FYI Elm.
[07:14.920 --> 07:15.200] Yeah.
[07:15.200 --> 07:16.840] And I'm sure some number of people do that.
[07:16.840 --> 07:20.240] Like I always see on Elm Slack, somebody posts a link to state of JS every year
[07:20.240 --> 07:23.960] to like, Hey, you know, don't forget the JavaScript people don't know we exist
[07:23.960 --> 07:29.000] unless we tell what we do, but it's weird because that's, it feels to me like.
[07:29.240 --> 07:32.600] State of JS for a lot of Elm programmers who are, who are like using it
[07:32.600 --> 07:36.120] professionally, that's their main interaction with JavaScript anymore or
[07:36.120 --> 07:38.800] the world of JavaScript, and maybe you do some like interop and so that's how you
[07:38.800 --> 07:42.760] like interact with JavaScript code, but it's like the JS community and all the
[07:42.760 --> 07:45.800] different frameworks and the solid JS and you know, whatever the latest thing
[07:45.800 --> 07:50.280] is, it's like, I hear about those things, you know, but it's, it's almost even like
[07:50.640 --> 07:54.480] as if I'm not plugged into the front end world at all, because so much of the
[07:54.480 --> 07:58.440] front end world is just like JavaScript, you know, I don't want to say drama, but
[07:58.440 --> 08:04.120] like, you know, JavaScript framework churn, there's, there's always so much
[08:04.160 --> 08:08.720] like new stuff that seems like it's some tweak on the last thing, whereas in the
[08:08.720 --> 08:10.720] Elm community, I don't really get that sense.
[08:10.720 --> 08:14.920] It seems like it's, it's much more common that you'll have an existing
[08:14.920 --> 08:16.560] thing that continues to evolve.
[08:16.880 --> 08:21.240] Like for example, Elm CSS, which like I started out and worked on for many years
[08:21.240 --> 08:24.880] and kind of, I've not had time anymore because all of my, well, first of all,
[08:25.200 --> 08:28.800] back when I had free time, before I had a kid, all of that time was going into
[08:28.800 --> 08:32.680] rock and so I just like all of my non-rock things just kind of slid to the
[08:32.680 --> 08:33.680] backboard or by default.
[08:34.600 --> 08:34.920] That's funny.
[08:34.920 --> 08:38.240] I was, I was catching up with Evan, was this last year, two years ago, whatever.
[08:38.240 --> 08:40.680] I, at some point I was in Copenhagen for a conference.
[08:40.680 --> 08:43.720] So I hung out with him and Teresa and we caught up about various things.
[08:43.720 --> 08:47.560] And I was commenting on how like, I don't really like have time to maintain a lot
[08:47.560 --> 08:50.960] of my Elm projects anymore, because I just, every weekend, I'm like this
[08:50.960 --> 08:53.200] weekend, I'm going to like go through PRs on this thing.
[08:53.600 --> 08:56.240] And then by the end of the weekend, I would have done a bunch of rock stuff.
[08:56.280 --> 08:58.520] And I was like, and I still had more rock stuff to do, but I didn't even
[08:58.520 --> 08:59.640] get to any of the Elm stuff.
[09:00.000 --> 09:00.240] All right.
[09:00.240 --> 09:01.160] Next weekend, next weekend.
[09:01.400 --> 09:02.560] And then that would just keep happening.
[09:03.280 --> 09:04.560] And how I was, I was joking to Evan.
[09:04.560 --> 09:06.960] I was like, yeah, it turns out like making a programming language.
[09:07.200 --> 09:08.600] It's really, really time consuming.
[09:08.920 --> 09:09.520] Is that South?
[09:09.600 --> 09:10.240] He just laughed.
[09:10.240 --> 09:12.400] It's like, yeah, it turns out.
[09:14.000 --> 09:15.320] I'm sure that's a universal thing.
[09:15.720 --> 09:18.760] I mean, I guess like if you're making a toy language, that's like just for you
[09:18.760 --> 09:20.680] and like just a hobby thing, then that's, that's one thing.
[09:20.680 --> 09:23.080] But if you're like trying to make something that other people are actually
[09:23.080 --> 09:26.520] going to use like professionally, it's like kind of a, yeah, there's a lot there.
[09:26.920 --> 09:30.640] But I was thinking about this in the context of this sort of like framework
[09:30.640 --> 09:34.000] churn in the JavaScript ecosystem, but never use the word churn to describe
[09:34.000 --> 09:35.920] what happens in the Elm package ecosystem.
[09:35.960 --> 09:39.720] And like in the Elm CSS case, it's like, okay, I'm not working on that actively
[09:39.720 --> 09:44.240] anymore, but there's, there's a long time contributor who had been working on this
[09:44.240 --> 09:48.480] sort of like big performance oriented under the hood rewrite that I'd gotten
[09:48.520 --> 09:50.440] started and never got all the way through.
[09:50.560 --> 09:54.240] He just was like, Hey, is it cool if I like fork this and like continue that work?
[09:54.240 --> 09:55.400] And I was like, yes, please do that.
[09:55.440 --> 09:58.960] That's awesome because it's not like you're redoing the whole thing.
[09:58.960 --> 10:00.080] Like fingers crossed.
[10:00.080 --> 10:03.920] I would love to see him finish that because, and publish it because if he can
[10:03.920 --> 10:07.920] actually make it across the finish line, it should feel like using the most recent
[10:07.920 --> 10:12.520] release of the Elm CSS that I built up, but it should run way faster, which in
[10:12.520 --> 10:14.000] my mind is, is just like, awesome.
[10:14.000 --> 10:17.240] If you can get something where it's like, this is already the experience that
[10:17.240 --> 10:19.880] people want and are happy with, but it runs way faster.
[10:19.880 --> 10:22.080] That's an amazing way to like evolve something.
[10:22.640 --> 10:26.520] Whereas the like, well, we redid everything from scratch, but it was, you
[10:26.520 --> 10:29.000] know, you use that description of like, it's kind of like react, but with a
[10:29.000 --> 10:30.520] twist or like a little bit different.
[10:30.920 --> 10:34.000] I'm really glad we don't, we don't see that happening in the Elm community.
[10:34.160 --> 10:34.640] Yeah.
[10:34.680 --> 10:37.600] I feel like every now and then we'll get in the Elm Slack and there'll be,
[10:37.640 --> 10:40.800] there'll be something new, new will come out in the react space and I'll see
[10:40.800 --> 10:43.800] someone like, Oh, like how, how can we do like hooks and Elm there?
[10:43.800 --> 10:46.320] Like, how do we, Svelte doesn't do virtual DOM.
Detected language: English
[00:00.000 --> 00:03.560] again, like if you're, if you're at, you know, if you're working at vendor, for
[00:03.560 --> 00:08.260] example, if you ever heard of that company, if you're working at, if you're
[00:08.260 --> 00:11.480] working at vendor, your apps behind the login, you don't need, you know,
[00:11.480 --> 00:12.880] server-side rendering on every page.
[00:12.880 --> 00:16.080] You just want a really nice, reliable experience for the customer.
[00:16.540 --> 00:18.260] And you want to be able to add features quick, right?
[00:18.300 --> 00:21.540] That's what online sports, you know, it's not for everything, but the web platform
[00:21.540 --> 00:26.220] is so expansive that, uh, it can be like a blurry line between those things
[00:26.220 --> 00:28.540] sometimes, and I feel like there's a lot more nuance these days, which
[00:28.540 --> 00:29.540] is just great to see.
[00:29.780 --> 00:34.360] That's, um, yeah, that, that, that framework wars comment takes me back to,
[00:34.380 --> 00:37.960] there was a conference, this is like more than five years ago now, I think, and it
[00:37.960 --> 00:39.240] was called framework summit.
[00:39.560 --> 00:43.400] And kind of the theme was like, let's get all the like JavaScript frameworks
[00:43.400 --> 00:47.700] together and like, you know, give people presentations about them and let people,
[00:47.700 --> 00:51.240] you know, understand which one is for them and which one isn't for them and so forth.
[00:51.440 --> 00:55.200] So they also had this like creators day that was like the day before the
[00:55.220 --> 00:55.980] presentations.
[00:56.220 --> 01:02.580] It was like me representing Elm and like Tom Dale from Ember and Andrew from react.
[01:02.580 --> 01:06.780] And, um, some people whose names I'm forgetting for, uh, from UJS and Angular
[01:06.780 --> 01:10.260] JS, and so basically we, we all got together and just sort of talked about
[01:10.260 --> 01:12.780] stuff that affected all of us, which is pretty interesting discussion.
[01:12.900 --> 01:15.720] And so there was kind of this spirit of like, okay, we're not really like competing.
[01:15.720 --> 01:18.640] We're just kind of, you know, hanging out and like having fun and we're all kind
[01:18.640 --> 01:21.580] of doing our own thing and have our own trade-offs and, you know, there's some
[01:21.580 --> 01:22.940] commonalities and some differences.
[01:23.020 --> 01:26.600] And so the next day, you know, the, the organizers had said like, okay, when
[01:26.600 --> 01:29.880] everybody presents, you're sort of like, I forget how long it was, it was like a
[01:29.880 --> 01:33.800] 15, 20 minute pitch for like, you know, your latest, latest version of your thing.
[01:34.240 --> 01:36.440] Um, so I was talking about like, you know, here's the latest in Elm.
[01:36.880 --> 01:40.640] Uh, and, uh, and he was like, you know, and, and please organize, like, please
[01:40.640 --> 01:43.540] don't, don't like, you know, hate on the other frameworks, you know, if you have
[01:43.540 --> 01:45.680] to make comparisons, like be respectful and so forth.
[01:45.920 --> 01:49.080] And so everybody pretty much took this to heart, except at the very beginning of
[01:49.080 --> 01:53.300] his, Tom Dale from Ember stands up and he's like, all right, so I'd like to
[01:53.300 --> 01:57.220] welcome everybody to the Comedy Central roast of JavaScript frameworks, and then
[01:57.220 --> 02:00.940] proceeds to just like, just roast, like all of the other frameworks.
[02:01.020 --> 02:02.100] Oh my gosh.
[02:02.120 --> 02:03.100] He started it off.
[02:03.260 --> 02:03.620] Yeah.
[02:03.860 --> 02:06.420] I don't think this was the first presentation, but that was how he started
[02:06.420 --> 02:08.700] off his, you know, comparison of Ember to them.
[02:09.040 --> 02:13.040] Now what's funny though, in retrospect is that the dig that he had on Elm was he
[02:13.040 --> 02:16.460] said, he's like, Elm is here, you know, really, really glad to see Elm represented.
[02:16.480 --> 02:20.360] It's nice to see Elm here because it makes Ember look popular by comparison,
[02:21.400 --> 02:24.920] which maybe at the time was true, but I actually don't think that's true anymore.
[02:24.920 --> 02:26.680] I think it's, it's probably the other way around.
[02:26.800 --> 02:29.920] I think Elm has almost certainly at this point, eclipsed Ember in terms of like
[02:29.960 --> 02:31.680] current, like present day use.
[02:31.880 --> 02:32.480] Interesting.
[02:32.480 --> 02:33.000] Could be wrong.
[02:33.200 --> 02:34.100] I have no idea.
[02:34.120 --> 02:34.440] Yeah.
[02:34.920 --> 02:38.800] Based on like state of JS surveys and like, I don't know if those are, how
[02:38.800 --> 02:42.160] indicative those are, like on the one hand, maybe there's a lot of people using
[02:42.200 --> 02:45.240] Ember apps that have been using them for so long that they just don't care to
[02:45.240 --> 02:46.780] bother to like respond to state of JS.
[02:46.780 --> 02:50.100] Cause they're not interested in like the latest and you know, most cutting edge
[02:50.100 --> 02:54.060] stuff, but then again, I also, you know, know that like a lot of Elm people are
[02:54.060 --> 02:55.420] just don't care about JS anymore.
[02:55.420 --> 02:56.740] So it's just like, I moved on.
[02:56.740 --> 02:59.700] And so who knows what percentage of Elm developers respond to state of JS.
[03:00.100 --> 03:03.180] So yeah, there's a lot of, there's a lot of factors there, but it's interesting.
[03:03.380 --> 03:04.460] I'm one of the crazy ones.
[03:04.460 --> 03:05.620] That's like every state of JS.
[03:05.620 --> 03:06.140] I'm like, get in there.
[03:06.140 --> 03:06.980] You got to put Elm in there.
[03:07.300 --> 03:07.700] It's funny.
[03:07.700 --> 03:13.520] If you look at the last state of JS, it was like most writings, Elm people just
[03:13.520 --> 03:17.180] like, please include me on these lists, but it's, it's fun.
[03:17.420 --> 03:21.580] I'm in the same boat in that, like I used to look at state of JS, like before I got
[03:21.580 --> 03:25.780] into Elm and then like, since I got into Elm, like, yeah, I, I still, I just like
[03:25.780 --> 03:29.140] kind of always want to make sure it's like, yeah, you know, like just so you know,
[03:30.100 --> 03:33.220] I'm not using JS anymore, but, but FYI, yeah.
[03:33.220 --> 03:34.900] And I'm sure some number of people do that.
[03:34.900 --> 03:38.460] Like I always see on Elm Slack, somebody posts a link to state of JS every year to
[03:38.460 --> 03:42.020] like, Hey, you know, don't forget the JavaScript people don't know we exist
[03:42.020 --> 03:47.080] unless we tell what we do, but it's weird because that's, it feels to me like
[03:47.320 --> 03:51.200] state of JS for a lot of Elm programmers who are, who are like using it professionally.
[03:51.440 --> 03:54.640] That's their main interaction with JavaScript anymore or the world of
[03:54.640 --> 03:56.160] JavaScript and maybe you do some like interop.
[03:56.240 --> 03:59.640] And so that's how you like interact with JavaScript code, but it's like the JS
[03:59.640 --> 04:03.240] community and all the different frameworks and the solid JS and you know, whatever
[04:03.240 --> 04:07.400] the latest thing is, it's like, I hear about those things, you know, but it's,
[04:07.400 --> 04:11.440] it's almost even like as if I'm not plugged into the front end world at all
[04:11.580 --> 04:15.540] because so much of the front end world is just like JavaScript, you know, I
[04:15.540 --> 04:19.340] don't want to say drama, but like, you know, JavaScript framework churn.
[04:20.700 --> 04:24.300] There's, there's always so much like new stuff that seems like it's
[04:24.300 --> 04:26.180] some tweak on the last thing.
[04:26.200 --> 04:28.740] Whereas in the Elm community, I don't really get that sense.
[04:28.740 --> 04:32.920] It seems like it's, it's much more common that you'll have an existing
[04:32.920 --> 04:34.580] thing that continues to evolve.
[04:34.880 --> 04:39.220] Like for example, Elm CSS, which like I started out and worked on for many years
[04:39.260 --> 04:42.920] and kind of, I've not had time anymore because all of my, well, first of all,
[04:43.240 --> 04:47.240] back when I had free time, before I had a kid, all of that time was going into rock.
[04:47.240 --> 04:50.720] And so I just like all of my non-rock things just kind of slid to the
[04:50.720 --> 04:51.720] backboard or by default.
[04:52.640 --> 04:52.980] It's funny.
[04:52.980 --> 04:56.860] I was, I was catching up with Evan last year, two years ago, whatever, at some
[04:56.860 --> 04:58.720] point I was in Copenhagen for a conference.
[04:58.720 --> 05:01.760] So I hung out with him and Teresa and we caught up about various things.
[05:01.760 --> 05:05.620] And I was commenting on how like, I don't really like have time to maintain a lot
[05:05.620 --> 05:09.320] of my Elm projects anymore, because I just, every weekend, I'm like this weekend,
[05:09.320 --> 05:11.240] I'm going to like go through PRs on this thing.
[05:11.620 --> 05:14.280] And then by the end of the weekend, I would have done a bunch of rock stuff.
[05:14.320 --> 05:17.040] And I was like, and I still had more rock stuff to do, but I didn't even get to any
[05:17.040 --> 05:17.680] of the Elm stuff.
[05:18.040 --> 05:19.200] All right, next weekend, next weekend.
[05:19.460 --> 05:20.600] And then that would just keep happening.
[05:21.360 --> 05:22.600] How's, I was joking to Evan.
[05:22.600 --> 05:25.000] I was like, yeah, it turns out like making a programming language.
[05:25.240 --> 05:26.640] It's really, really time consuming.
[05:26.960 --> 05:27.720] Is that sounds funny?
[05:27.720 --> 05:28.280] He just laughed.
[05:28.280 --> 05:31.280] It's like, yeah, turns out, tell me about it.
[05:32.000 --> 05:33.360] I'm sure that's a universal thing.
[05:33.740 --> 05:36.860] I mean, I guess like if you're making a toy language, that's like just for you and
[05:36.860 --> 05:38.700] like just a hobby thing, then that's, that's one thing.
[05:38.700 --> 05:41.580] But if you're like trying to make something that other people are actually going to use
[05:41.580 --> 05:45.900] like professionally, it's like kind of a, yeah, there's a lot there, but I was thinking
[05:45.900 --> 05:50.060] about this in the context of this sort of like framework churn in the JavaScript ecosystem,
[05:50.140 --> 05:53.980] but never use the word churn to describe what happens in the Elm package ecosystem.
[05:54.020 --> 05:57.780] And like in the Elm CSS case, it's like, okay, I'm not working on that actively
[05:57.780 --> 06:02.260] anymore, but there's, there's a longtime contributor who had been working on this
[06:02.260 --> 06:06.960] sort of like big performance oriented under the hood rewrite that I'd gotten started
[06:06.960 --> 06:08.440] and never got all the way through.
[06:08.600 --> 06:12.280] He just was like, Hey, is it cool if I like fork this and like continue that work?
[06:12.280 --> 06:13.420] And I was like, yes, please do that.
[06:13.440 --> 06:16.980] That's awesome because it's not like you're redoing the whole thing.
[06:16.980 --> 06:20.880] Like fingers crossed, I would love to see him finish that because, and publish it
[06:20.880 --> 06:25.240] because if he can actually make it across the finish line, it should feel like using
[06:25.360 --> 06:29.880] the most recent release of the Elm CSS that I built up, but it should run way faster,
[06:30.240 --> 06:32.040] which in my mind is, is just like awesome.
[06:32.060 --> 06:35.300] If you can get something where it's like, this is already the experience that
[06:35.300 --> 06:37.940] people want and are happy with, but it runs way faster.
[06:37.940 --> 06:40.140] That's an amazing way to like evolve something.
[06:40.700 --> 06:44.500] Whereas the like, well, we redid everything from scratch, but it was, you
[06:44.500 --> 06:47.040] know, you use that description of like, it's kind of like react, but with a
[06:47.040 --> 06:48.560] twist or like a little bit different.
[06:48.980 --> 06:52.060] I'm really glad we don't, we don't see that happening in the Elm community.
[06:52.200 --> 06:52.700] Yeah.
[06:52.740 --> 06:55.860] I feel like every now and then we'll get in the Elm Slack, there'll be, there'll
[06:55.860 --> 06:59.100] be something new, new will come out in the react space and I'll see someone
[06:59.100 --> 07:02.680] like, oh, like, how, how can we do like hooks and Elm or like, how do we,
[07:03.120 --> 07:06.960] Svelte doesn't do virtual DOM, like, how do we do Elm without virtual DOM?
[07:06.960 --> 07:11.080] And like, I see posts like that, but yeah, I don't think they get too much traction,
[07:11.080 --> 07:15.880] but I feel like it kind of, it's, I think there's just a general anxiety, just like
[07:15.880 --> 07:20.560] if we're not doing the latest thing, like is, is, are we dead or something?
[07:20.560 --> 07:22.760] You know, there's like that kind of energy to it.
[07:22.880 --> 07:26.580] So I'm glad you brought that up because I, the way that I've seen those discussions
[07:26.580 --> 07:30.320] typically go on Elm Slack is someone will post that and then two or three people
[07:30.320 --> 07:32.160] will respond like, no, everything's cool.
[07:32.840 --> 07:34.200] Do we need to create a problem here?
[07:35.080 --> 07:35.820] Like we're good.
[07:35.840 --> 07:38.560] Like what's, what's the actual problem we're trying to solve here?
[07:38.560 --> 07:39.480] Is it just FOMO?
[07:39.520 --> 07:42.360] Like what's the user experience problem that we have here?
[07:42.360 --> 07:43.920] And then like, let's figure out a solution to that.
[07:44.120 --> 07:45.720] Is there a user experience problem here?
[07:45.720 --> 07:48.360] Or is this just like, someone else is doing X.
[07:48.360 --> 07:49.440] Shouldn't we be doing X?
[07:49.440 --> 07:49.980] It's like, no.
[07:49.980 --> 07:54.580] And I think that's, and maybe I'm being dismissive here, but feels like a cultural
[07:54.580 --> 07:58.520] carryover from JavaScript because that's totally a cultural norm in the JavaScript
[07:58.520 --> 08:03.440] community is just like, Oh man, like X came out, like, shouldn't we be doing X?
[08:03.520 --> 08:07.240] And, and there's just like, kind of this, like this constant magnetic pull towards
[08:07.240 --> 08:08.340] the latest shiny thing.
[08:08.720 --> 08:11.200] And there's almost like a, I mean, at least among people who've been around
[08:11.200 --> 08:14.320] the community long enough, like in Elm, it seems like there's a, there's a, an
[08:14.320 --> 08:18.580] instinctive resistance to that, where it's like, anytime, like the X, Y problem is
[08:18.580 --> 08:22.280] the classic example of this, where it's like, and people are always citing that
[08:22.580 --> 08:25.540] I think it's like, what is X, Y problem.info or something is the link.
[08:25.980 --> 08:26.220] Yeah.
[08:26.220 --> 08:26.820] Something like that.
[08:26.860 --> 08:27.100] Yeah.
[08:27.380 --> 08:28.820] That's where I learned about X, Y problem.
[08:28.820 --> 08:31.180] It was, I think Elm Slack educated me.
[08:31.860 --> 08:32.100] Yeah.
[08:32.100 --> 08:32.900] It's Elm.
[08:32.900 --> 08:33.540] Yeah, me too.
[08:33.920 --> 08:37.300] I, I'd never heard of it before Elm, but yeah, it's like this for those who aren't
[08:37.300 --> 08:41.260] familiar, it's, it's this idea of like, you know, you say like hooks, let's use
[08:41.260 --> 08:44.900] that as an example, you come in saying like, Hey, you know, how does Elm do hooks?
[08:44.940 --> 08:48.400] And you say, well, hang on, let's, let's take a step back and ask like, what's the
[08:48.400 --> 08:49.220] real problem here?
[08:49.220 --> 08:50.540] Like, what's the direct problem?
[08:50.540 --> 08:54.600] Like we're starting to work on a solution and we have a question about the solution,
[08:54.600 --> 08:58.120] but let's step, let's step all the way back and see like, what's the immediate
[08:58.120 --> 08:58.520] problem?
[08:58.520 --> 09:00.440] What's the pain point that we're trying to solve?
[09:00.720 --> 09:04.120] And then we can talk about solutions kind of from scratch, and maybe we'll end up
[09:04.120 --> 09:08.320] going down the same road that this solution is like presupposing, but maybe
[09:08.320 --> 09:11.800] not, maybe it'll turn out that there's actually a better category of solution here.
[09:13.520 --> 09:18.140] And hooks are an interesting example because I remember when, when hooks and
[09:18.160 --> 09:22.240] suspense were announced, which I think might've been the same talk or it might've
[09:22.240 --> 09:22.920] been different talks.
[09:22.920 --> 09:23.560] I don't remember.
[09:24.080 --> 09:29.280] Um, but I remember hearing about them and I was at that point, like very into Elm
[09:29.320 --> 09:33.080] and like has really had not been spending any time with react in a while, like
[09:33.440 --> 09:38.440] months or years, um, and I remember hearing it and I was like, I don't understand
[09:38.440 --> 09:39.880] what problem this is solving.
[09:39.880 --> 09:43.800] If you're not like Facebook, if you're like literally Facebook and you have like a
[09:43.800 --> 09:47.320] gazillion different widgets on the screen and, and no, they're all like, you know,
[09:47.320 --> 09:48.700] customizable in different ways.
[09:48.700 --> 09:52.260] And some of them need to be like real time, like chat, but then others don't need
[09:52.260 --> 09:53.260] to be like the newsfeed.
[09:53.260 --> 09:57.460] And I was like, okay, if you're literally Facebook, I can see how this might be
[09:57.460 --> 09:58.860] solving a practical problem.
[09:59.380 --> 10:04.860] But if you're not literally Facebook and there's like 99.9% of, you know, that's
[10:05.540 --> 10:10.260] huge underestimate, basically everyone else, like, like what, why, why are people
[10:10.260 --> 10:11.100] excited about this?
[10:11.180 --> 10:15.700] And it felt to me like an XY problem example where it's like, you know, yeah,
[10:16.000 --> 10:18.800] you can see getting excited about it, you know, for the sake of, oh, it's a new
[10:18.800 --> 10:21.340] shiny thing at that conceptually.
[10:21.340 --> 10:22.920] But I always try to resist that.
[10:23.000 --> 10:26.000] Like I try to, I think of that as like an anti-pattern and not a good reason to get
[10:26.000 --> 10:29.260] excited about something as opposed to like, if folks are like, Hey, we're going
[10:29.260 --> 10:33.520] to solve this, this problem that you have right now, then, okay, cool.
[10:33.560 --> 10:36.440] But I don't even know what that problem would have been in that case.
[10:37.320 --> 10:39.520] If I were a react developer, I mean, which I used to be.
[10:40.480 --> 10:44.440] Um, yeah, yeah, I definitely, I remember, yeah, when hooks came out, you kind of
[10:44.440 --> 10:47.460] trying to do my research and trying to figure out like what problems they solved.
[10:47.620 --> 10:51.580] Cause again, like, like you said, like I was also kind of an element this time.
[10:51.580 --> 10:53.260] So I almost feel silly talking about it.
[10:53.580 --> 10:55.780] I have like no basis.
[10:56.540 --> 10:56.980] Yeah, right.
[10:57.140 --> 10:59.700] We're two people who have never used the feature, don't really know what we're
[10:59.700 --> 11:02.900] talking about, but I mean, Hey, it's, it's not programming unless you're like
[11:02.980 --> 11:05.900] pontificating about something you don't actually have personal experience with.
[11:05.900 --> 11:06.100] Right.
[11:08.620 --> 11:12.640] But, um, I just remember, yeah, I remember looking around cause the announcement, at
[11:12.640 --> 11:14.500] least I didn't wrap my head around it.
[11:14.500 --> 11:18.940] I don't know if it was unclear if it was just me, but, um, yeah, someone reached out
[11:18.940 --> 11:22.940] to me when I was in the early days of Elmland, like, Hey, like maybe Elmland
[11:22.940 --> 11:27.300] could do hooks, um, and you know, I feel like there was that knee reaction,
[11:27.300 --> 11:31.180] the knee jerk reaction being an Elm person be like, Whoa, whoa, whoa.
[11:31.180 --> 11:32.440] Like what, like stop.
[11:32.460 --> 11:34.260] I was like, can you show me what that looks like?
[11:34.300 --> 11:37.860] Like, what do you, I needed like a concrete example, like kind of like what
[11:37.860 --> 11:41.420] you're saying where it's like, all right, show me like, for me, it was like, first
[11:41.420 --> 11:45.360] of all, show me what that even syntactically looks like on a page.
[11:46.080 --> 11:49.520] And then once I saw it, it was a lot easier for me to kind of have like more
[11:49.520 --> 11:53.880] of a concrete conversation and say like, okay, so like, is this, is it like boiler
[11:53.880 --> 11:54.200] plate?
[11:54.200 --> 11:56.680] Is that like, what's the, what's the fear here?
[11:56.800 --> 11:58.820] Um, and it wasn't, it wasn't really clear.
[11:58.880 --> 11:59.320] Yeah.
[11:59.380 --> 12:00.980] The benefit specifically for.
[12:00.980 --> 12:04.740] And I remember like now recalling this a little bit more precisely, and I think
[12:04.740 --> 12:08.100] suspense was the thing that I was like, this is, this is Facebook specific and
[12:08.100 --> 12:09.680] hooks, if I'm remembering this right.
[12:10.340 --> 12:13.260] I guess the pitch for hooks was like, you know, you used to make like class
[12:13.260 --> 12:17.700] components and then class components would have these like life cycle methods
[12:17.700 --> 12:21.820] that would be like, you know, component will mount or like did mount or, you
[12:21.820 --> 12:24.620] know, should potentially theoretically mount or something like that.
[12:24.620 --> 12:27.460] And, you know, they had these like really long names and then you had to, you
[12:27.460 --> 12:32.220] know, sort of be aware of the different like stages of re like how react mounts
[12:32.220 --> 12:33.660] and un mounts components and so forth.
[12:34.200 --> 12:37.940] And then hooks were, I guess part of the pitch was you can write a quote unquote
[12:37.960 --> 12:41.360] functional component where it's just a function instead of a class, and then you
[12:41.360 --> 12:45.000] can call these hook things from inside of it and accomplish the same things.
[12:45.240 --> 12:48.480] What I didn't understand about the pitch was this seemed like a more
[12:48.480 --> 12:50.040] complicated way to solve this.
[12:50.180 --> 12:54.020] Like it seemed like the old way was like more declarative and there was all these
[12:54.020 --> 12:56.440] like rules about like when you could call the hooks things.
[12:56.440 --> 13:00.040] And I guess they ended up evolving like linter rules to help you enforce them.
[13:00.040 --> 13:03.640] Whereas it's like, but before you didn't need any of that, you just wrote a class
[13:03.660 --> 13:07.940] and like, and so I didn't understand like, what's the actual, like compelling
[13:07.940 --> 13:08.660] thing that's being solved.
[13:08.660 --> 13:12.200] I'm sure someone, you know, if we had a somebody on the, you know, in the
[13:12.200 --> 13:16.120] conversation who was like really like, uh, you know, up on react and like, like
[13:16.120 --> 13:18.740] really enjoyed it, maybe somebody could make a really great pitch for hooks.
[13:19.260 --> 13:22.540] So if you know anybody, anyone's listening, who knows someone who can make a great
[13:22.540 --> 13:25.460] pitch for react hooks, I would love to talk to them about it on the podcast.
[13:25.620 --> 13:30.160] However, in the absence of that, I just didn't really understand like why this
[13:30.160 --> 13:33.460] is an upgrade, you know, it's like, I see that it's different and I see that like.
[13:33.820 --> 13:34.040] Okay.
[13:34.040 --> 13:37.840] You want to use these like pure functional component style because, and honestly
[13:37.840 --> 13:41.340] that felt like an element of like classes aren't cool anymore and functions are
[13:41.340 --> 13:41.660] cool.
[13:41.660 --> 13:44.320] So like, let's find a way to package these things up as functions.
[13:44.320 --> 13:48.740] But like reason that I like functions is that they're simpler.
[13:49.100 --> 13:52.180] And so if you're going to like make these secret side effects, which we're
[13:52.180 --> 13:55.780] going to not call side effects, because even though, you know, you call your
[13:55.780 --> 13:59.580] render function and now if you call it multiple times with the same arguments,
[13:59.580 --> 14:01.580] it's not just going to return the same value.
[14:01.880 --> 14:04.880] I mean, it's clearly not a pure function anymore, but apparently they still call
[14:04.880 --> 14:06.480] it like pretend it's a pure function.
[14:06.480 --> 14:06.800] I don't know.
[14:06.800 --> 14:09.160] Like there, there's just so many confusing things about that.
[14:09.200 --> 14:10.520] It's still a JavaScript function.
[14:10.520 --> 14:14.440] We're in an outer space, you and I, like we're in this like different world.
[14:14.680 --> 14:17.440] So when we see stuff like this, it's like, what is going on?
[14:17.480 --> 14:20.840] Like, why, why are they changing things when they call the thing?
[14:20.960 --> 14:25.800] I am a hundred percent convinced that hooks was just like, cause you've seen
[14:25.800 --> 14:28.280] the JavaScript, like the different ways you can declare a function.
[14:28.320 --> 14:30.340] There's like the boring old way.
[14:30.340 --> 14:31.820] And then there's the cool arrow way.
[14:31.940 --> 14:35.500] And like the, this keyword just completely changes how it works.
[14:35.780 --> 14:39.180] I a hundred percent would acknowledge if anyone is like a react
[14:39.180 --> 14:42.540] listener here right now, like they just, I've used the, this keyword
[14:42.540 --> 14:44.500] enough to respect the hooks decision.
[14:44.540 --> 14:46.260] Like never use this again.
[14:46.340 --> 14:50.580] Oh, to say like, never use this as the, as a keyword inside of this keyword.
[14:51.140 --> 14:51.820] I'm like, you win.
[14:51.860 --> 14:53.220] That's a positive.
[14:53.300 --> 14:53.700] Yeah.
[14:53.780 --> 14:54.400] I mean, okay.
[14:54.400 --> 14:55.500] Maybe that's a motivation.
[14:55.540 --> 14:56.420] I could see that.
[14:56.440 --> 15:01.880] Like it's sort of like trying to eliminate a source of known, like
[15:01.920 --> 15:07.120] foot guns from JavaScript by maybe introducing other foot guns, but like,
[15:07.120 --> 15:10.160] maybe, maybe the other foot guns are more linter friendly or something.
[15:10.680 --> 15:11.920] Um, I don't know.
[15:11.920 --> 15:13.480] I mean, but then again, I, I don't know.
[15:13.520 --> 15:16.440] I guess I always, well, okay.
[15:16.720 --> 15:21.680] I guess I had never tried writing a class component with ES six arrow functions.
[15:21.680 --> 15:24.960] Cause I was always either doing vanilla JavaScript with the old school, like
[15:25.460 --> 15:28.700] write out the word function or else coffee script, which was compiling to that
[15:28.700 --> 15:34.300] anyway, and I guess had its own rules around this, just var self equals this
[15:34.300 --> 15:36.700] everywhere as much as humanly possible.
[15:36.700 --> 15:40.740] I'm just trying to remember like, when was the last time I actually, oh, okay.
[15:40.740 --> 15:41.900] I actually know when that was.
[15:41.980 --> 15:46.620] I did write some vanilla JavaScript for, um, I had this, this tiny little, like
[15:46.620 --> 15:52.400] 20 line JavaScript function on the, um, on the docs page for rock, which I was
[15:52.400 --> 15:54.180] like, I could use Elm for this, but that's overkill.
[15:54.180 --> 15:55.080] So I'm not going to do that.
[15:55.960 --> 15:57.120] Uh, and I think there might have been a
[15:58.280 --> 16:00.360] restraint, a restraint on that one.
[16:00.480 --> 16:00.720] Right.
[16:00.720 --> 16:02.160] Well, I mean, well, you know, they're tools, right?
[16:02.160 --> 16:04.920] Like you said, like you wouldn't use Elm, Elm land for like the
[16:04.920 --> 16:06.120] development, like a static website.
[16:06.120 --> 16:07.020] That's not what it's for.
[16:07.080 --> 16:09.640] Like I, you know, I don't feel the need to use Elm for absolutely
[16:09.640 --> 16:10.760] everything just cause I love it.
[16:11.520 --> 16:12.120] A hundred percent.
[16:12.120 --> 16:16.240] I feel like, yeah, like, I'm not like, so I never gotten to react, uh, just
[16:16.240 --> 16:21.040] because, uh, the view JS guide in 2015 was so good.
[16:21.120 --> 16:23.260] It was so inner friendly and so nice.
[16:23.300 --> 16:25.520] Like I got completely hooked into the ecosystem.
[16:26.280 --> 16:26.880] That's awesome.
[16:27.760 --> 16:31.960] If tricked is the right word, but I, uh, persuaded, uh, one of my coworkers.
[16:32.240 --> 16:33.400] We're like, we're good friends now.
[16:33.440 --> 16:40.040] Shout out to Alex out there, but I, I, he was running a project at work and I
[16:40.040 --> 16:41.440] was like, Hey, you want to try out view?
[16:41.840 --> 16:45.640] And we just like hung out after work and he just had such a smooth learning
[16:45.640 --> 16:49.840] experience that like, we just used it on the project and then eventually the
[16:49.840 --> 16:52.840] whole company was like, Hey, this is like really easy to work with.
[16:53.100 --> 16:56.300] Do you, I mean, do you remember back back when, uh, react and
[16:56.300 --> 17:00.100] angular were like the things it was like you had Google versus Facebook
[17:00.180 --> 17:04.100] and the whole idea of like some guy named Evan, you know, coming out
[17:04.100 --> 17:08.340] of nowhere with the view JS, you know, it's like, how is that supposed to compete?
[17:08.980 --> 17:13.960] Yeah, I do remember that because before react, it was like angular and like
[17:13.960 --> 17:19.940] knockout JS and backbone JS and J query were kind of like the, uh, for, I guess
[17:19.940 --> 17:23.320] there was also like, uh, I think sprout core, which later turned into Ember.
[17:23.900 --> 17:27.500] Um, and so, so there were, there were quite a few sort of like contenders
[17:27.500 --> 17:32.340] all used in varying amounts and then at some point, yeah, it felt like it was
[17:32.340 --> 17:36.760] like react versus angular as to the sort of the two, like juggernauts.
[17:36.760 --> 17:37.120] Yeah.
[17:37.540 --> 17:40.660] Um, and then as I recall, I mean, you would know better than I would, but I
[17:40.660 --> 17:46.020] think I was talking to Lindsay Wardell, uh, many episodes ago about view and she
[17:46.020 --> 17:49.560] was saying that if I remember right, it was sort of somewhat of the pitch for
[17:49.560 --> 17:55.440] view was it felt like the old school, like angular one, but kind of like done
[17:55.440 --> 17:58.520] better, whereas like angular two kind of went off in this totally different
[17:58.520 --> 18:02.400] direction and really felt like a different thing view was more like, yeah,
[18:02.400 --> 18:03.680] you know, like two-way data bindings.
[18:03.680 --> 18:04.080] Fine.
[18:04.120 --> 18:07.720] We're going to try to make that as nice and user experience as possible and
[18:07.720 --> 18:10.760] introduce some other quality of life improvements on top of that without
[18:10.760 --> 18:12.720] changing the sort of fundamental idea there.
[18:13.080 --> 18:13.640] Does that sound right?
[18:14.000 --> 18:15.000] No, that's a hundred percent right.
[18:15.080 --> 18:16.640] That was how we got started with it.
[18:16.640 --> 18:19.440] Cause you just drop a script tag on the page and you're, that was it.
[18:19.440 --> 18:20.480] There was no JSX.
[18:20.480 --> 18:21.280] There was no web pack.
[18:21.280 --> 18:24.880] Like these are all scary things to us when we're like coming from a web
[18:24.880 --> 18:28.080] agency that's doing a bunch of jQuery everywhere, mostly, you know, static
[18:28.080 --> 18:29.720] sites, but we need to have an accordion.
[18:29.720 --> 18:32.040] We need to have, you know, a carousel or something.
[18:32.160 --> 18:36.000] So that's interesting that, you know, in, in a similar way to how like you got
[18:36.000 --> 18:39.400] into Elm and then we're inspired to like, try to make a really smooth onboarding
[18:39.400 --> 18:43.080] experience, it sounds like that's the way you got into view as well is like this
[18:43.080 --> 18:45.280] really nice onboarding experience for a beginner.
[18:45.800 --> 18:46.200] Totally.
[18:46.200 --> 18:50.240] And I will always like, there will always be a special place in my heart for the
[18:50.240 --> 18:54.320] view community, because it's a reminder that, but first of all, the Evan
[18:54.360 --> 18:56.080] similarity, it can't be a coincidence.
[18:57.120 --> 18:58.800] Both, both created by a person named Evan.
[18:58.800 --> 18:59.080] Yeah.
[18:59.680 --> 19:01.360] Have we ever seen him in the same room together?
[19:02.720 --> 19:03.720] I've actually met both of them.
[19:03.720 --> 19:07.840] So I haven't no spoilers, Richard.
[19:07.880 --> 19:08.320] I don't know.
[19:09.120 --> 19:13.200] But no, like it was, it was a reminder that like the same kind of, at the time
[19:13.200 --> 19:16.120] they felt silly to me where people were like, Oh, view JS is never going to be
[19:16.120 --> 19:16.640] popular.
[19:16.680 --> 19:17.600] It's just one guy.
[19:17.600 --> 19:18.040] What did we get?
[19:18.120 --> 19:20.920] And this is when people started telling me about getting hit by a bus.
[19:21.080 --> 19:21.440] Oh yeah.
[19:21.440 --> 19:22.600] And I'm like, what are you talking about?
[19:22.600 --> 19:24.880] Like you die, like he gets murdered.
[19:24.920 --> 19:26.360] Like, what are you talking about?
[19:26.360 --> 19:26.680] Yeah.
[19:27.600 --> 19:32.080] Like, I hope not, but yeah, people are like, Oh, you know, like Facebook and
[19:32.080 --> 19:34.080] Google, like that's the, that's the only way.
[19:34.280 --> 19:39.080] And then you see, you know, I've been, you trailblazer goes out and he, he
[19:39.080 --> 19:42.560] makes something that, you know, at one point it was like react versus view.
[19:42.600 --> 19:43.480] That was the thing.
[19:43.480 --> 19:44.960] And everyone's like, Oh, forget angular.
[19:44.960 --> 19:47.840] And like, I mean, I don't want to say it was just having you.
[19:47.840 --> 19:52.000] I know the view community and particularly I blink it on his name.
[19:52.000 --> 19:55.640] The guy that wrote the docs at like, that really championed it for me.
[19:55.760 --> 20:01.280] But yeah, like just the idea that that argument didn't really hold much weight.
[20:01.280 --> 20:04.000] It's like, yeah, if you do a really good job, you make the onboarding
[20:04.000 --> 20:07.560] experience really nice and you help people visualize like, Oh yeah, this
[20:07.560 --> 20:10.200] is how I can use it, like, Oh, I can build a real thing.
[20:11.040 --> 20:15.360] You can, you can make like a, a really nice to use library that a lot of people
[20:15.360 --> 20:15.720] will love.
[20:16.080 --> 20:16.360] Yeah.
[20:16.640 --> 20:16.800] Yeah.
[20:16.800 --> 20:17.320] That's awesome.
[20:17.840 --> 20:20.000] I, um, went back to the bus factory thing.
[20:20.000 --> 20:23.080] I remember, uh, Evan Triplicki talking about this.
[20:23.080 --> 20:25.680] I think this is one of his like Elm conference talks.
[20:26.080 --> 20:27.680] Um, yeah, like Elm Europe or something.
[20:27.680 --> 20:27.840] Yeah.
[20:27.840 --> 20:30.840] Like he was saying something along the lines of like, you know, people will
[20:30.840 --> 20:34.080] come up to me and they'll say like, Evan, what happens if you get hit by a bus?
[20:34.080 --> 20:36.840] And he's like, well, first, I think my mom will be really sad.
[20:37.120 --> 20:38.480] You know, that'll be very upsetting.
[20:38.600 --> 20:41.400] Like, it's like, let's, let's, let's take a step back here.
[20:41.400 --> 20:44.720] Like, who cares about your web app guy.
[20:46.320 --> 20:46.720] Yeah.
[20:46.880 --> 20:49.200] It's like, it's a really weird thing to say to someone.
[20:49.200 --> 20:52.520] Like, I understand why people like, I understand where it comes from.
[20:52.520 --> 20:57.880] And like, I actually was, was, I was giving a presentation.
[20:57.880 --> 20:59.720] I was like pitching some investors on a startup.
[20:59.720 --> 21:01.160] This is many, many years ago.
[21:01.600 --> 21:06.480] Um, and I was the founder of the company and, and someone like who was listening
[21:06.480 --> 21:09.400] to the pitch, one of the questions was, he's like, all right, so imagine
[21:09.480 --> 21:11.000] he just got really vivid with it.
[21:11.000 --> 21:15.280] He was like, imagine you're walking across the tree, the street and a beer
[21:15.280 --> 21:19.160] truck just comes screaming out of left field and just plows into you and you're
[21:19.280 --> 21:21.400] dead, what happens to the company?
[21:21.400 --> 21:21.560] Yeah.
[21:23.880 --> 21:24.080] Sure.
[21:24.080 --> 21:28.120] This is like calculated to just try and, you know, maximally rattle you and just
[21:28.120 --> 21:31.200] see if you see if you could give a good answer under pressure or whatever.
[21:31.560 --> 21:34.720] Like, of course I was prepared for that category of question, but I was not
[21:34.720 --> 21:40.680] prepared for that, that, that, that very, uh, vivid description of my untimely
[21:40.680 --> 21:44.560] demise, but yeah, it's, it's, it's a weird thing that like, you know, it's
[21:44.560 --> 21:47.600] like one thing if you're talking about it as someone else, you know, like behind
[21:47.600 --> 21:50.760] their back, which is not great either, but at least you're not like saying,
[21:50.760 --> 21:54.240] Hey, if you die, like what's, what happens to me?
[21:54.520 --> 21:59.240] You know, like am I, am I going to be okay if you die?
[21:59.640 --> 22:01.320] Like it's a weird thing to say to a person.
[22:02.160 --> 22:02.720] It's silly.
[22:02.880 --> 22:03.680] Yeah, it's yeah.
[22:03.800 --> 22:06.320] That's a part of the, uh, yeah, I don't know.
[22:06.400 --> 22:09.600] I don't know who first started saying that, but it's, it's one of the
[22:09.600 --> 22:10.360] hilarious things to me.
[22:10.560 --> 22:13.960] I feel like if you get hit by a beer truck, it's like, the only right answer is
[22:13.960 --> 22:16.000] like, I guess free beer for the company.
[22:16.040 --> 22:18.000] We're just going to take care of it.
[22:18.080 --> 22:19.440] That'll be in the office.
[22:19.440 --> 22:21.640] It'll be great, you know, unlimited supply.
[22:22.000 --> 22:22.240] Yeah.
[22:22.240 --> 22:25.880] I mean, that does, that does kind of get into this whole, like, you know, sort
[22:25.880 --> 22:29.640] of like the mindset around like, you know, open source stuff, right.
[22:29.640 --> 22:35.040] Is like my favorite talk of Evan chaplikis is actually like the hard parts
[22:35.040 --> 22:36.440] about open source from strange loop.
[22:36.440 --> 22:42.320] Uh, however many years ago that was pre pandemic in the before times, uh, and,
[22:42.560 --> 22:46.960] and what I love about that talk is just that, that, that topic, I mean, oftentimes
[22:46.960 --> 22:49.720] people will talk about like, quote unquote, maintainer burnout, and they'll
[22:49.720 --> 22:53.320] talk about how like, well, you know, sometimes people get too into their
[22:53.320 --> 22:54.880] thing and they spend too much time on it.
[22:54.880 --> 22:56.960] And then they just burn out and they want to go do other stuff.
[22:57.000 --> 23:02.200] But I really wish that people would spend more time talking about the, like
[23:02.200 --> 23:07.080] the causal relationship there and like the, the fact that a lot of times it's
[23:07.080 --> 23:10.720] not so much that people are, you know, burning out because they've spent so
[23:10.720 --> 23:14.520] much time on the code and that they're like, Oh, I spent so, but so many hours
[23:14.520 --> 23:18.480] into this code and now I'm feeling burned out and wish that I'd spent more time
[23:18.480 --> 23:20.080] going on a walk or something like that.
[23:20.440 --> 23:24.880] It's it's usually that's the energizing part is, is the, like, is the building
[23:24.920 --> 23:29.080] thing that people like, and it's, it's really more that like the negative
[23:29.080 --> 23:32.800] interactions, even if they're like, you know, the ratio of negative to positive
[23:32.800 --> 23:37.520] interactions is like one to a hundred, the negative ones just, just really hurt.
[23:37.760 --> 23:40.960] And like, and it's not even just like when people are like, you know, being
[23:40.960 --> 23:45.160] jerks to you online in some cases, it's like, it's not so much that they're being
[23:45.160 --> 23:49.080] a jerk or being mean or like being hurtful or anything, it's just that like,
[23:49.400 --> 23:53.720] they're putting these expectations on you, that it's not really like how you
[23:53.760 --> 23:55.280] want to be spending your life.
[23:55.440 --> 23:58.920] You know, it's like someone's, someone's saying to you like, you know, Hey, if
[23:58.920 --> 24:01.760] you get killed, what happens, you know, am I going to be okay?
[24:02.280 --> 24:05.680] And it's not so much that I'm like, Oh, suddenly I'm pondering my own mortality
[24:05.680 --> 24:09.040] and that's, that's hard for me, but rather it's like, I want to go build a thing.
[24:09.040 --> 24:12.760] I don't want to be thinking about if I die, like what happens to you?
[24:12.880 --> 24:16.120] Person who uses the thing that I built and then gave away to you for free.
[24:17.320 --> 24:20.560] That's just like a, a, a stressful, like, you know, interaction.
[24:20.760 --> 24:22.560] And at the same time, I get where they're coming from.
[24:22.560 --> 24:26.120] Like that is a responsible part of planning is it's like, if I'm going
[24:26.120 --> 24:30.680] to adopt this technology, I do want to think about what happens in the possible
[24:30.680 --> 24:34.400] eventuality that this person not necessarily gets killed, but like, you
[24:34.400 --> 24:38.960] know, stops deciding they want to work on it and decides they want to go, you
[24:38.960 --> 24:43.840] know, live on a farm and not program anymore or, or just work, move on to a
[24:43.840 --> 24:44.880] different programming project.
[24:45.480 --> 24:49.080] So I get where it's coming from, but at the same time, we got to figure out some
[24:49.080 --> 24:53.720] way to like, you know, talk about these things in a way that's like less
[24:53.720 --> 24:57.360] stressful for maintainers, because I think where maintainer stress and
[24:57.360 --> 25:01.200] burnout actually comes from relative to where the popular narrative of where it
[25:01.200 --> 25:03.960] comes from are, are like two totally different things.
[25:04.840 --> 25:05.040] Yeah.
[25:05.040 --> 25:08.680] I think Evan says something about like, free was it, he said something like
[25:08.680 --> 25:11.480] free rice doesn't mean free labor or something along those lines where it's
[25:11.480 --> 25:15.120] like, because I gave you this, that doesn't mean I work for you for right.
[25:15.120 --> 25:15.960] Like exactly.
[25:15.960 --> 25:16.280] Yeah.
[25:16.360 --> 25:17.680] Like I made a free thing.
[25:17.800 --> 25:21.880] Um, you can use it, you know, I'd love it if you did tell me how it goes, but
[25:21.880 --> 25:27.040] like, I'm not, you know, I can't be working at a thousand startups, right?
[25:27.120 --> 25:27.760] Yeah, exactly.
[25:27.760 --> 25:30.360] No, this is the thing I do for free for outline.
[25:30.360 --> 25:32.680] I had the, this initial like, hello world post.
[25:32.680 --> 25:37.000] And I, I, the first draft of it, I guess I'll share that with the internet.
[25:37.320 --> 25:38.400] The first draft of it.
[25:38.440 --> 25:42.760] I had something in there like, Hey, like I had, I had, you know, the hard
[25:42.760 --> 25:46.400] parts of open source in mind where I'm like, Hey, you know, like I'm making
[25:46.400 --> 25:48.000] this for free on nights and weekends.
[25:48.000 --> 25:53.080] Like, please don't like, like harass anyone that works on the project because
[25:53.120 --> 25:55.800] like, I want people to have a good time contributing and I don't want people
[25:55.800 --> 25:58.760] to get harassed and then like the next sentence was like, if you'd like to
[25:58.760 --> 26:02.160] work on the project and I'm like, the editing there made no sense.
[26:02.720 --> 26:03.720] It's miserable.
[26:03.760 --> 26:05.000] People will torture you.
[26:05.040 --> 26:09.640] Hey, do you want to like, and so I edited it to something else, which
[26:09.640 --> 26:12.920] is more along the lines of like, Hey, if you're going to help me on this project,
[26:12.960 --> 26:15.240] like I've got your back, like you're going to come in here.
[26:15.240 --> 26:16.880] People are going to start yelling at you online.
[26:16.920 --> 26:18.160] I have no tolerance for that.
[26:18.360 --> 26:19.320] I'll, I'll, I'll be there.
[26:19.320 --> 26:19.960] I'll defend you.
[26:20.400 --> 26:23.400] So if that sounds like, you know, a project you're interested in.
[26:23.440 --> 26:27.440] There was a, there was a past episode with Andrew Kelly, who this podcast
[26:28.120 --> 26:32.880] who made Zig and, uh, and his, his stance on this was basically like, you know,
[26:32.880 --> 26:37.000] if someone starts being a jerk and like GitHub issues, he's like, I'm, I want
[26:37.000 --> 26:41.560] my issues to be this beautiful garden of things that are helping us make Zig.
[26:41.920 --> 26:46.160] And if someone is going to come in and like, you know, make a mess there,
[26:46.360 --> 26:48.360] that is a weed and I will pluck it out of the garden.
[26:48.360 --> 26:49.040] You are banned.
[26:49.600 --> 26:50.000] That's it.
[26:50.320 --> 26:51.280] Zero tolerance.
[26:51.280 --> 26:53.800] Like, and you know, I mean, I, I get that.
[26:53.800 --> 26:56.280] I, I don't know if I have the guts to adopt that policy.
[26:56.720 --> 27:01.960] I kind of like, you know, it definitely sounds enticing because yeah, like at
[27:01.960 --> 27:06.000] the end of the day, like it's hard enough to make a nice thing and like, you
[27:06.000 --> 27:10.840] know, we really be as maintainers and creators of things that we give away for
[27:10.840 --> 27:14.400] free. Should we really also be in the business of trying to, you know,
[27:14.400 --> 27:17.600] accommodate and like treat with kid gov's people who are just coming in and
[27:17.720 --> 27:21.440] basically just like having a very negative interaction, like right off the
[27:21.440 --> 27:22.600] bat? I don't know.
[27:22.600 --> 27:23.160] Maybe not.
[27:23.200 --> 27:26.560] Like even though that's like kind of goes against my personality, like what,
[27:26.560 --> 27:30.360] what I feel I want to do where I want to try and like help them express
[27:30.360 --> 27:31.560] themselves more constructively.
[27:31.560 --> 27:32.240] It's like, I don't know.
[27:32.240 --> 27:34.280] Should I, should I be spending my time on that or should I be
[27:34.280 --> 27:35.440] spending my time on other things?
[27:36.200 --> 27:36.560] Yeah.
[27:36.640 --> 27:36.800] Yeah.
[27:36.800 --> 27:41.600] I also, I have that share that attention of like wanting to be really nice and
[27:41.600 --> 27:43.440] make sure that everyone, you know, has these heard.
[27:43.560 --> 27:46.240] And then at the same time being like, you're not going to change an
[27:46.240 --> 27:47.240] adult's mind on stuff.
[27:47.280 --> 27:49.960] Like they grew up, they're just, they decided they're going to be like this.
[27:49.960 --> 27:50.680] I'm like, forget it.
[27:50.720 --> 27:52.320] Like I can't be fair.
[27:52.320 --> 27:57.240] I have seen some cases online, like even on like hacker news where, you
[27:57.240 --> 28:00.920] know, someone responds to some, like someone posts something like, you
[28:00.920 --> 28:04.040] know, kind of nasty and, and mean-spirited and whatnot.
[28:04.440 --> 28:07.640] And there is like kind of an underlying question there and the person will
[28:07.640 --> 28:10.200] respond to the question and then also say like, by the way, like you didn't
[28:10.200 --> 28:11.480] need to be so mean about that.
[28:11.840 --> 28:14.880] And, you know, sometimes the person will just keep going on it and being a
[28:14.880 --> 28:18.360] jerk about it, but I have seen some cases where the person will respond
[28:18.360 --> 28:19.400] and say like, ah, sorry.
[28:19.400 --> 28:22.600] I like kind of like a, you know, rough day or a rough week or whatever.
[28:22.600 --> 28:25.480] And like, yeah, I didn't mean it like that.
[28:25.480 --> 28:25.760] I'm sorry.
[28:25.760 --> 28:28.040] I came off that way, but anyway, and then they just like continue the
[28:28.040 --> 28:29.440] conversation like normal people.
[28:30.400 --> 28:34.120] But having said that again, there's this question of like, that's, that's
[28:34.120 --> 28:36.960] kind of the exception rather than the rule and things like that.
[28:36.960 --> 28:39.760] It's, it's usually more like the person keeps being a jerk or
[28:39.760 --> 28:41.040] just like, doesn't engage again.
[28:41.520 --> 28:44.640] And it's like, if you add up all the time that you spend trying to
[28:44.640 --> 28:47.760] accommodate people who, you know, that's the first impression that they make.
[28:47.960 --> 28:48.680] Was it worth it?
[28:48.720 --> 28:51.960] Or should you have spent all that time, like building the thing for the people
[28:51.960 --> 28:55.840] who aren't going to be jerks even once, you know, cause, cause there's, that is
[28:55.840 --> 28:59.120] zero sum, like you have, you got this time, you're going to spend it on one
[28:59.120 --> 29:01.600] or the other it's yeah, it's a tough question.
[29:02.800 --> 29:05.920] Yeah, I definitely, I definitely think like, especially when it was like a
[29:05.920 --> 29:09.720] hostile comment, it's always good to start with just like, Hey, it's kind of
[29:09.720 --> 29:13.040] like reset the tone a little bit being like, Oh, it sounds like your problem is
[29:13.040 --> 29:16.560] this, I love, I love when people reply like that or this like, sounds like you're
[29:16.560 --> 29:20.480] frustrated by this, uh, you know, this hurt my feelings or whatever you say,
[29:20.520 --> 29:23.160] however you say it and then, yeah, they want to keep being like that.
[29:23.200 --> 29:23.440] Great.
[29:23.480 --> 29:25.200] That's a perfect, I did it.
[29:25.200 --> 29:27.840] I tried, sorry, we don't talk like that in this community.
[29:28.280 --> 29:32.560] And like, I, I definitely, I've done that plenty of times in my life, but it
[29:32.560 --> 29:33.640] always takes me a lot longer.
[29:33.640 --> 29:36.280] First of all, I have to like calm down because like, when I read it, it's
[29:36.280 --> 29:40.520] like my, my first reaction is not like, Oh, I know what I will say in response
[29:40.520 --> 29:45.560] to this person, it's like, ah, ah, ah, okay, okay, calm down, calm down, calm
[29:45.560 --> 29:49.000] down, don't write a reply yet, just, just gotta, you know, remember, remember
[29:49.000 --> 29:53.160] that it's going to be better if you, you know, like spawned nicely rather than
[29:53.160 --> 29:56.840] like, you know, saying what's actually on your mind in response to this, but
[29:57.120 --> 29:59.040] I've definitely done the, like, you know, right, right.
[29:59.040 --> 30:02.080] The reply that's in my head and then delete it and then write something
[30:02.080 --> 30:04.760] nicer, cause that's like what I want to see more of in the world.
[30:05.360 --> 30:08.600] Um, but again, yeah, it's like, I don't know, should I, maybe I should just, you
[30:08.600 --> 30:11.360] know, go, go build something for people who are nice the first time.
[30:11.480 --> 30:15.440] There's also an element of like, no, it's, it's one thing if somebody's already
[30:15.440 --> 30:18.960] sort of like a known member, like a known participant, like if someone like
[30:18.960 --> 30:22.480] files a couple of blogs and like one time, you know, they're like, they say
[30:22.480 --> 30:26.440] something mean it's like, okay, I know based on this past experience, I'm
[30:26.520 --> 30:29.600] past pattern of experience that this person is capable of being nice and
[30:29.600 --> 30:32.440] interacting in fact, this seems to be an aberration, like normally they are
[30:32.440 --> 30:35.520] pretty, you know, like a good participant, but I think it's totally reasonable
[30:35.520 --> 30:38.440] in that case to be like, okay, you know, Hey, what are you doing?
[30:38.440 --> 30:41.200] Just like, you're nice in that case.
[30:41.200 --> 30:44.440] I'm like, well, I feel more justified in spending the time on that
[30:44.440 --> 30:46.280] because this person's a known quantity.
[30:46.280 --> 30:47.800] I want them to continue participating.
[30:47.800 --> 30:51.280] And like, you know, it seems like there's a higher chance, higher percentage
[30:51.280 --> 30:54.800] chance that like over the longterm, they're going to be a productive
[30:54.800 --> 30:55.720] and helpful contributor.
[30:56.520 --> 30:59.000] And when I say contribute, I don't necessarily mean contributing
[30:59.000 --> 30:59.960] code or documentation.
[30:59.960 --> 31:01.080] That could just be filing issues.
[31:01.080 --> 31:03.200] Like issues are a valuable way to contribute to a project.
[31:03.680 --> 31:07.720] Um, as long as like Andrew Kelly says, you know, they're like contributing
[31:07.720 --> 31:12.360] to like a beautiful garden and not just being like this stupid thing broke
[31:12.400 --> 31:15.040] and sucks, you know, like that's not a helpful issue.
[31:15.040 --> 31:20.600] Like, um, but yeah, it's tricky to balance these things.
[31:21.480 --> 31:23.760] I feel like the alumni community is still in its early days.
[31:23.760 --> 31:28.880] And like the, one of the things that would really rub me the wrong way.
[31:29.360 --> 31:32.320] And this isn't, this isn't really common in the, the Elm Slack.
[31:32.320 --> 31:35.200] I don't see this very often, but every now and then when I did see it, I'd get
[31:35.200 --> 31:38.800] kind of like, I get frustrated, I guess, cause like I'm someone that wants Elm
[31:38.800 --> 31:43.760] to, you know, be a nice, uh, option for people and I want it to grow in popularity.
[31:43.760 --> 31:44.920] So there's more cool projects.
[31:44.920 --> 31:48.000] People are sharing stuff every now and then there'd be a thread where someone
[31:48.000 --> 31:52.360] was like, Oh, like, look at this, like this react thing, like, LOL, like,
[31:52.360 --> 31:54.800] Oh yeah, it's like, talk down about something.
[31:54.800 --> 31:59.400] And I do not like being in a space where people are comparing things and
[31:59.400 --> 32:02.840] also like, not, not making stuff.
[32:02.880 --> 32:03.360] You know what I mean?
[32:03.360 --> 32:06.840] Like I want, like the, I made an Elmland discord and I'm like, I really want
[32:06.840 --> 32:10.240] to focus on like, share cool stuff you're making, like, don't talk to me
[32:10.240 --> 32:15.000] about, uh, your preferences on like syntax or like how this is dumb.
[32:15.000 --> 32:16.400] And you know, Elm is perfect.
[32:16.440 --> 32:20.760] Like, I don't want to be a part of that, uh, evangelistic kind of club sometimes.
[32:20.760 --> 32:23.440] That's a, that's another great point is that like different spaces
[32:23.440 --> 32:24.560] are four different things.
[32:24.560 --> 32:27.400] Like you might say like, Hey, if you want to go talk about react features,
[32:27.400 --> 32:30.640] you don't like go on a podcast, you know, like there's plenty of ways you can do
[32:30.640 --> 32:32.920] that that aren't like this exact discord.
[32:32.920 --> 32:35.200] Cause what this discord is for is this.
[32:35.440 --> 32:38.080] And similarly, I think there's, you know, there's a difference between
[32:38.080 --> 32:42.320] like GitHub issues as a space and like discord or Reddit or, you know,
[32:42.320 --> 32:46.200] hacker news or whatever else, like on, on GitHub issues, the point of it,
[32:46.200 --> 32:49.480] like the main point of that is to coordinate between people who are
[32:49.480 --> 32:50.520] trying to improve the thing.
[32:50.600 --> 32:53.160] And, you know, if you want to like open an issue that says like, I
[32:53.160 --> 32:56.600] don't like this design decision, that's probably not the right place to do it.
[32:56.720 --> 32:59.960] Like if you want to talk about a design decision, like there's other places
[32:59.960 --> 33:03.640] you can talk about that, but like, this is for like tracking, like, you know,
[33:03.840 --> 33:06.440] issues or, or maybe like, you know, feature requests.
[33:06.440 --> 33:09.560] And I can see, honestly, an argument that like feature requests on GitHub
[33:09.560 --> 33:13.320] issues are, are not a good place for that, you know, in general, or even
[33:13.320 --> 33:16.320] for tracking features that are planned, but not going to be implemented.
[33:16.360 --> 33:19.520] Maybe it's best to just actually only talk about issues there, but yeah,
[33:19.520 --> 33:22.840] like you're, like you're saying, it's, you know, it's different spaces.
[33:23.160 --> 33:25.080] It's okay to have different spaces for different things.
[33:25.840 --> 33:26.240] Totally.
[33:26.320 --> 33:29.840] And like, I think a big thing is like also like not, I'm like, I'm not putting
[33:29.840 --> 33:32.800] a moral judgment on comparing programming language characteristics.
[33:32.800 --> 33:33.960] It's, I don't think it's like bad.
[33:33.960 --> 33:36.160] It's like, I just want a safe space.
[33:36.160 --> 33:38.640] I can go to, or I, I know I'll be there.
[33:38.640 --> 33:43.200] And when people are talking, it's like helping me out beginners and sharing
[33:43.200 --> 33:47.040] projects and I would love a bubble like that, just for, and back to the
[33:47.040 --> 33:50.080] mental health of open source, you know, contributors.
[33:50.080 --> 33:51.480] It's like, that's where I want to hang out.
[33:51.480 --> 33:54.360] I want to, I want to be in that happy rainbow.
[33:56.200 --> 33:56.560] Yeah.
[33:57.280 --> 33:57.720] Nice.
[33:57.840 --> 33:58.120] Yeah.
[33:58.120 --> 34:01.960] I think, uh, I mean, culturally it seems like the usual way that people talk
[34:01.960 --> 34:03.920] about that is just saying like, Hey, this is off topic, right?
[34:03.920 --> 34:07.480] That's like, fortunately that's like a, a pretty straightforward way that you
[34:07.480 --> 34:09.040] can like respond to somebody and say that.
[34:09.040 --> 34:12.560] But unfortunately the culture around like GitHub issues and other things and
[34:12.560 --> 34:18.680] like dynamics between open source authors and open source users is such
[34:18.680 --> 34:21.600] that there isn't like a quick canned response like that, that you can give
[34:21.600 --> 34:24.280] to be like, Hey, like you're, you know, you just said it's out of line.
[34:24.600 --> 34:27.680] Like if you say, Hey, that this is off topic where here's, here's the topics
[34:27.680 --> 34:28.680] that we want to talk about here.
[34:28.960 --> 34:32.080] That's such an easy response to like, get things back on, on track.
[34:32.080 --> 34:35.280] Like you don't have to say like, Hey, I don't want to hear about your,
[34:35.320 --> 34:36.800] you know, react comparisons here.
[34:36.800 --> 34:38.040] Like take that somewhere else.
[34:38.040 --> 34:38.320] Yeah.
[34:38.360 --> 34:41.600] You can just say, Hey, you know, this is like, this is an Elmland discord.
[34:41.600 --> 34:43.280] So like, this is off topic.
[34:43.280 --> 34:46.000] It's it's a, you know, it doesn't take a lot of mental energy to like
[34:46.000 --> 34:50.760] think up a specific response to try and, you know, like, uh, get things back on
[34:50.760 --> 34:54.720] track and I wish there was something like that or like online topics where you
[34:54.720 --> 34:57.200] could just say something concise where everybody knows what it means and
[34:57.200 --> 35:01.400] everybody agrees that this is like how things ought to work to say like, Hey,
[35:01.400 --> 35:05.360] you know, this is out of line in one way or another, maybe it's in terms of, you
[35:05.360 --> 35:08.520] know, you're being a jerk about it, but it could also just be in terms of like,
[35:08.680 --> 35:11.960] Hey, this is like, you know, I understand that you like want to make a feature
[35:11.960 --> 35:14.720] request, but like, this is not the right place to do it, you know?
[35:15.120 --> 35:18.120] Um, and I guess in the case of feature requests, you know, you can have like
[35:18.120 --> 35:21.720] some sort of template or like some copy paste response that's like, Hey, feature
[35:21.720 --> 35:24.960] requests, you know, go on this forum or like, go, you know, start off in, in
[35:24.960 --> 35:27.200] Slack or, or Zulip or whatever it is.
[35:28.240 --> 35:28.720] But yeah,
[35:28.760 --> 35:29.840] yeah, we've got a channel for it.
[35:29.880 --> 35:33.200] There's like a suggest a feature channel and like people will spin up threads
[35:33.200 --> 35:34.800] and, and it's nice way to contain it.
[35:35.240 --> 35:35.480] Yeah.
[35:35.720 --> 35:40.080] One of the things I started on the rock, like we use Zulip for our chat, was
[35:40.080 --> 35:41.640] making a channel called ideas.
[35:41.760 --> 35:45.600] And what I love about ideas is that it's, it's no pressure on anyone.
[35:45.640 --> 35:47.840] It's like, anyone can talk about an idea they have.
[35:47.880 --> 35:49.960] It doesn't mean that you're like requesting a feature.
[35:50.240 --> 35:53.560] It's like, well, you just talk about an idea that you have and like, maybe, you
[35:53.560 --> 35:55.720] know, someone will see it and be like, Oh, that's a good idea.
[35:55.720 --> 35:57.760] And maybe a bunch of people will see it and be like, Oh, this is a really good
[35:57.760 --> 35:57.960] idea.
[35:57.960 --> 35:59.320] We should, we should do this.
[35:59.320 --> 36:02.920] And then maybe, you know, it becomes consensus that this might be a good idea,
[36:03.240 --> 36:04.920] but also maybe not, and that's fine.
[36:05.640 --> 36:09.760] But also it's not like, you know, I don't feel the need as someone in a position to
[36:09.760 --> 36:13.400] potentially, you know, quote unquote, accept or reject your feature requests.
[36:13.760 --> 36:16.400] I don't feel any pressure to do that because it's like, well, this is just an
[36:16.400 --> 36:17.160] idea that you're sharing.
[36:17.200 --> 36:20.800] So like, I don't need to say like, Hey, we're not going to do that.
[36:20.920 --> 36:23.040] Nor do I need to say, Oh yes, we are going to do that.
[36:23.040 --> 36:24.960] I can just let it sit there and like, think about it.
[36:25.080 --> 36:27.000] And then, you know, maybe eventually we do it.
[36:27.000 --> 36:29.120] Maybe eventually we don't, but I don't know.
[36:29.360 --> 36:33.480] Maybe I'm overthinking the name of the channel here, but, but like I did, I did
[36:33.480 --> 36:36.800] spend time thinking about that just because I really kind of wanted to think
[36:36.800 --> 36:39.800] about dynamic of how, of how that stuff happens.
[36:39.800 --> 36:44.360] Cause yeah, I mean, like doing issue triage, like if it's a bug report, I love
[36:44.360 --> 36:45.600] it because it's like, great.
[36:45.640 --> 36:49.080] This is like, you know, maybe it can be improved with like whittling it down,
[36:49.080 --> 36:50.320] like making it easier to reproduce.
[36:50.320 --> 36:53.200] And like, maybe I have questions about like what operating system were you
[36:53.200 --> 36:58.200] running on and stuff, but like, that's, that's a very, there's like no stress in
[36:58.200 --> 37:00.160] that interaction for me as, as an author.
[37:00.200 --> 37:01.080] Like, I'm like, cool.
[37:01.120 --> 37:05.120] So you found something that's, that's, you know, went wrong, which either a,
[37:05.480 --> 37:07.600] maybe it's been reported before, in which case I can be like, cool.
[37:07.600 --> 37:08.960] Now we have another way to reproduce this.
[37:09.000 --> 37:09.400] Awesome.
[37:10.080 --> 37:12.000] Or maybe it hasn't been reported before.
[37:12.000 --> 37:13.880] And now this is like something new that we know about.
[37:13.880 --> 37:16.720] That's like something we can fix and maybe other people won't
[37:16.720 --> 37:17.760] get bitten by it in the future.
[37:17.880 --> 37:18.200] Awesome.
[37:18.320 --> 37:19.240] Like all of those are great.
[37:19.240 --> 37:23.480] Very like positive, like, you know, no stress interactions for me, I guess.
[37:23.600 --> 37:23.840] Okay.
[37:23.840 --> 37:27.600] The one exception to that would be someone posts a bug and it's like
[37:28.000 --> 37:29.640] horrendously difficult to reproduce.
[37:29.640 --> 37:33.760] I'm like, oh no, like this, this is happening, but, or, or actually another
[37:33.760 --> 37:37.880] thing that's that can be very stressful is it's like, this is clearly a bug,
[37:38.520 --> 37:41.720] but I don't know if it's a bug in code that I have any control over.
[37:42.160 --> 37:45.840] It might be a bug in like interactions between code that I have control over
[37:45.840 --> 37:47.080] and code that I have no control over.
[37:47.080 --> 37:51.360] And I may not be able to like fix this problem without going to somebody
[37:51.360 --> 37:55.440] else's issue tracker and being like, Hey, in this very specific situation, this
[37:55.440 --> 37:56.800] thing interacts poorly with this.
[37:56.840 --> 37:57.520] Can you fix it?
[37:58.280 --> 37:59.600] Cause that, that can be a whole thing.
[38:00.160 --> 38:00.520] Yeah.
[38:01.560 --> 38:05.800] But yeah, but like, I would contrast that with, you know, other types of issues
[38:05.800 --> 38:09.400] that are like a lot more stressful and, you know, more burnout causing for me as
[38:09.400 --> 38:13.680] an author are things like, you know, Hey, why don't you add this?
[38:13.720 --> 38:16.640] Like, you know, are you going to add this, you know, kind of like treating
[38:16.640 --> 38:18.280] it like the issue tracker, like an AMA.
[38:19.200 --> 38:21.720] And like, you know, I get, if someone's like, I'm not sure where to ask this.
[38:21.720 --> 38:22.720] So I'm just going to open an issue.
[38:22.720 --> 38:25.440] I understand why people do that, but I kind of wish they wouldn't and just
[38:25.760 --> 38:28.480] like, you know, just try to find another place to ask that.
[38:28.480 --> 38:32.400] Like there's plenty of links to like, you know, do lip scored, whatever,
[38:33.000 --> 38:35.160] for like other places, you can ask those types of questions.
[38:35.760 --> 38:37.160] Oftentimes people don't use them.
[38:37.160 --> 38:40.360] And then it's like, well, I could just respond to your question, but like, I
[38:40.360 --> 38:42.120] don't, I don't really want this issue hanging out there.
[38:42.120 --> 38:44.160] And I also don't really want to set the precedent that this is a good
[38:44.160 --> 38:45.160] place to ask these questions.
[38:45.160 --> 38:49.200] So it would be nice if people would, you know, kind of use the issue tracker for
[38:49.200 --> 38:53.000] the things that it's like purportedly for use that space for what it's good at.
[38:53.680 --> 38:53.960] Yeah.
[38:53.960 --> 38:57.160] I'd like to have a more like firm definition of a GitHub issues.
[38:57.880 --> 38:58.200] Yeah.
[38:58.600 --> 39:01.000] Initially, I just didn't have issues enabled on the project.
[39:02.440 --> 39:05.880] And I'm like, what if I just turn off issues and then say, Hey, we're on a
[39:05.880 --> 39:08.800] report an issue, like come hop in the discord, let me know about it.
[39:08.960 --> 39:09.440] Interesting.
[39:09.440 --> 39:11.840] And I'm like, that adds kind of friction for like the bugs.
[39:13.120 --> 39:15.880] And I was like, I don't know, maybe I want to know about the bugs, but then I
[39:15.880 --> 39:20.720] don't have to spend my energy, you know, with my favorite type of bug is when
[39:20.720 --> 39:22.440] someone thinks that there's a bug.
[39:23.000 --> 39:26.640] But my docs are just really bad, you know?
[39:26.640 --> 39:27.880] And I'm like, Oh, perfect.
[39:27.880 --> 39:28.840] Like that was confusing.
[39:28.840 --> 39:29.720] I can clarify that.
[39:29.840 --> 39:30.200] Yeah.
[39:30.240 --> 39:31.360] I can make that clear.
[39:31.920 --> 39:35.560] And sometimes there's a, there's a mix where it's like, yeah, that was unclear.
[39:35.560 --> 39:38.720] And also I kind of like their expectation of what should have
[39:38.720 --> 39:40.160] happened a little bit better.
[39:40.160 --> 39:43.720] There was a, there was a moment where I thought about like, wouldn't it be
[39:43.720 --> 39:45.080] cool if I disabled issues?
[39:45.080 --> 39:48.240] And I just said, if you have a bug email me, just, just send me an email
[39:48.240 --> 39:51.080] with the bug report and then, you know, and, and where I kind of ended up on
[39:51.080 --> 39:53.840] that as like, I don't really want to like email back and forth with people
[39:53.840 --> 39:59.000] to like do all this, like, I don't want my inbox to become that, but something
[39:59.000 --> 40:03.800] that I did like about that as, as an idea was that there's another category
[40:03.800 --> 40:07.280] of issues that we haven't talked about, which is basically just like, someone
[40:07.280 --> 40:08.760] wants to make a public statement.
[40:08.800 --> 40:12.280] And like, you know, they want to, it's not so much that they're like, like
[40:12.280 --> 40:15.640] they're kind of just venting on your issue tracker, like they're like, this
[40:15.640 --> 40:18.800] thing bothers me and I'm going to phrase it in the form of an issue or a bug.
[40:18.960 --> 40:21.800] That's like definitely a pet peeve of mine is when someone makes a feature
[40:21.800 --> 40:25.640] request and tags it as a bug, like, they're just like, this thing doesn't
[40:25.640 --> 40:27.320] support X, which is a bug.
[40:27.440 --> 40:30.960] It's like, no, like that's either, either we haven't gotten to it yet, or we
[40:30.960 --> 40:33.680] actually don't think it's a good idea, but it's not a bug, like, come on,
[40:33.680 --> 40:34.560] you know, it's not a bug.
[40:34.920 --> 40:37.600] You're just like, you're just trying to like, you know,
[40:38.600 --> 40:39.800] again, a little bit on us.
[40:40.520 --> 40:46.000] And so I feel like there's, there's that sort of category of like, someone
[40:46.360 --> 40:50.640] reminds me of it's like the issue tracker equivalent of when you're in a conference
[40:50.640 --> 40:54.120] talk and call on someone to ask a question, they're like, oh yeah, this is
[40:54.120 --> 40:58.240] more of a comment than a question, but you know, like that, but for issue
[40:58.240 --> 40:58.840] trackers, right.
[41:00.200 --> 41:01.640] That, that definitely happens.
[41:01.680 --> 41:05.840] And my feeling was if I made it this, like, don't have a public issue tracker,
[41:05.840 --> 41:09.520] but just have a private email, then that just wouldn't happen because kind of the
[41:09.520 --> 41:13.120] point of doing something like that on an issue tracker is that people will see it.
[41:13.400 --> 41:14.720] Like that's, that's the whole point of it.
[41:14.720 --> 41:17.760] And if you're just sending an email to someone, then it's like, oh, well, the
[41:17.760 --> 41:20.560] only person who's going to see it is, you know, the person on the other side of this
[41:20.560 --> 41:24.960] email and I could just get that email and, you know, be like, just, just, just,
[41:24.960 --> 41:27.920] just, just make a sort of current response, like, okay, I got it, you know,
[41:27.920 --> 41:28.600] or something like that.
[41:28.640 --> 41:33.040] And, you know, it's, it's like a private correspondence, I guess, I feel like the
[41:33.040 --> 41:36.680] dynamic would change, but at the end of the day, I think the cons of that outweigh
[41:36.680 --> 41:39.800] the pros, but it was tempting for a second to think about.
[41:40.120 --> 41:40.640] Totally.
[41:41.040 --> 41:41.360] Yeah.
[41:41.360 --> 41:42.480] I feel like get email.
[41:42.840 --> 41:43.160] I don't know.
[41:44.040 --> 41:45.680] Yeah, it's tempting.
[41:45.680 --> 41:46.640] I just, I don't know.
[41:46.720 --> 41:52.640] I feel like a good perk of getting rid of the issues is you eliminate upfront kind
[41:52.640 --> 41:57.880] of default assumptions that user of the project might have about how you run the
[41:57.880 --> 42:02.760] community, because if I'm, if I'm, let's say in theory, let's say I'm making a
[42:02.760 --> 42:06.840] framework that's supposed to attract, hypothetically, completely hypothetically
[42:07.080 --> 42:11.320] mango frame for Elm designed to be really nice for people coming from the
[42:11.320 --> 42:15.240] JavaScript ecosystem, I am basically funneling a bunch of people with
[42:15.480 --> 42:18.240] expectations, how JavaScript open source works.
[42:18.240 --> 42:18.760] Yeah, true.
[42:18.760 --> 42:22.280] So I have to be like, really like, not just in like the docs of like, Hey, how
[42:22.280 --> 42:23.360] do I use this coming from react?
[42:23.360 --> 42:27.400] It's like, how do I think about like opening issues and like, you know, all
[42:27.400 --> 42:32.080] that stuff from coming from like reactor or view and that's like, I think that's
[42:32.080 --> 42:36.120] the thing that I think about the most is like, how do I really make that experience
[42:36.120 --> 42:40.920] nice and like, not accidentally become like a JavaScript open source maintainer
[42:40.920 --> 42:46.520] and get all the harassment that I, that I've seen, you know, happen to JavaScript
[42:46.680 --> 42:50.880] open source maintainers and you know, even, even Evan, not doing JavaScript.
[42:50.880 --> 42:54.360] I mean, like, like in Evan's hard parts of open source talk, like, I mean, he,
[42:54.400 --> 42:59.840] he kind of talked about how there's this relationship and like set of expectations
[42:59.840 --> 43:04.160] that's kind of set up by the fact that for a lot of really big companies, the
[43:04.160 --> 43:08.200] reason that they're doing certain things as open source is as a marketing
[43:08.200 --> 43:11.520] opportunity, like they're trying to build their brand.
[43:11.520 --> 43:15.920] And so they will intentionally have people who are, you know, first of all,
[43:16.040 --> 43:17.800] paid full time to do this type of stuff.
[43:18.080 --> 43:22.040] And while they paid full time to do it, part of what they're paid to do is to be
[43:22.040 --> 43:25.760] nice to people on issue trackers, to continue building that brand, no matter
[43:25.760 --> 43:30.520] how much of a jerk they are, that's, you know, that's part of the expectation.
[43:30.520 --> 43:33.880] And like, you know, your manager might give you lower evaluations.
[43:33.880 --> 43:36.720] If you, you know, sort of snap at someone on an issue track and be like, Hey,
[43:36.720 --> 43:40.640] you're not representing the company very well when you said this, even if that's,
[43:40.640 --> 43:46.840] you know, like felt and like wanted to do, um, that definitely, you know, makes
[43:46.840 --> 43:48.280] sense from the company's perspective.
[43:48.280 --> 43:52.240] I get why that would happen, but what that creates in terms of a community
[43:52.240 --> 43:56.480] dynamic is one in which, you know, people learn that like, if they can just hurl
[43:56.480 --> 44:01.240] abuse at maintainers and like, yeah, it seems like the average comment on a
[44:01.240 --> 44:05.320] JavaScript, big JavaScript project issue tracker is just like way meaner.
[44:05.320 --> 44:09.440] And like, just unacceptable in my eyes than like what I see on like Elm or
[44:09.440 --> 44:13.000] Zig, or, you know, a lot of smaller languages.
[44:14.200 --> 44:16.680] And it's not just like, because they get a lot more, I'm talking about
[44:16.680 --> 44:21.040] like the average, like the median, you know, like a meanness, jerkiness
[44:21.040 --> 44:25.840] scale, whatever, like right in the middle, regardless of much more hostile.
[44:26.080 --> 44:26.440] Yeah.
[44:26.520 --> 44:30.440] And, and, and it's, and it seems like, like Kevin was saying that, you know,
[44:30.440 --> 44:33.000] this is something that's perhaps unintentionally, but it is kind of
[44:33.000 --> 44:33.560] cultivated.
[44:33.560 --> 44:35.360] It's not just an accident.
[44:35.400 --> 44:36.760] It's not just a coincidence.
[44:36.800 --> 44:40.800] You know, it's something about the, the dynamics of how a lot of these big
[44:40.800 --> 44:46.080] projects are done that just sort of leads the incentives to, to incentivize
[44:46.080 --> 44:48.200] that behavior, or at least not to disincentivize it.
[44:48.960 --> 44:49.160] Yeah.
[44:49.160 --> 44:49.560] It's just nice.
[44:49.560 --> 44:52.760] Like in terms of motivation for this project, it's like, I just want to
[44:52.760 --> 44:56.880] build Elm, Elm apps, you know, like I'm making a thing that makes it so I can do
[44:56.880 --> 44:57.480] it faster.
[44:57.520 --> 45:01.200] It's like the constant thing where it's like, instead of building the, the app,
[45:01.240 --> 45:05.120] make the framework to build the app, you know, to make the whatever, but there's
[45:05.120 --> 45:07.160] no like financial alignment there.
[45:07.160 --> 45:08.800] So it's, it's kind of refreshing.
[45:09.560 --> 45:12.640] When I, I do that, you know, weird tension, that weird conflict.
[45:12.640 --> 45:13.800] It's like, that's not a big deal.
[45:13.800 --> 45:17.200] Like if you don't want to use it, like I don't, as great as I don't want
[45:17.280 --> 45:19.840] react to be less popular, I don't want you.
[45:20.080 --> 45:23.960] So there's like no reason for me to be rude to anyone.
[45:24.000 --> 45:26.720] There's no reason for me to compete, you know, in air quotes.
[45:26.720 --> 45:28.280] It's like, I'm not competing with anyone.
[45:28.280 --> 45:29.520] Everyone can use anything.
[45:29.640 --> 45:30.600] Here's another option.
[45:30.640 --> 45:32.080] Here's why you might like it.
[45:32.360 --> 45:33.200] I want to kind of share.
[45:33.920 --> 45:34.320] Love that.
[45:34.320 --> 45:37.480] And I think that's like, that's the community, like sort of vibe.
[45:37.480 --> 45:38.360] I want to see in the world.
[45:38.400 --> 45:40.760] It's just people like, Hey, here's a cool thing.
[45:40.800 --> 45:41.760] I like this cool thing.
[45:42.240 --> 45:42.920] I want to use it.
[45:42.960 --> 45:45.000] And if you want to use a different thing, that's cool.
[45:45.240 --> 45:46.160] Enjoy your other thing.
[45:46.200 --> 45:48.520] You know, like these are not mutually exclusive.
[45:48.520 --> 45:49.600] They're all, it's all good.
[45:49.600 --> 45:51.600] If as long as people are happy with what they're using.
[45:52.520 --> 45:53.280] Yeah, very nice.
[45:54.000 --> 45:54.120] Wow.
[45:54.120 --> 45:55.040] We covered a lot of ground.
[45:55.680 --> 45:57.440] Anything else we should talk about before we wrap up?
[45:58.960 --> 46:00.560] No, I think that's pretty much it.
[46:00.720 --> 46:03.560] If you, yeah, if you want to check out Elm land, join.Elm land.
[46:03.680 --> 46:04.560] I mean, look at that.
[46:04.560 --> 46:04.840] There you go.
[46:04.840 --> 46:05.080] Yeah.
[46:05.360 --> 46:06.760] We joined that Elm.land.
[46:07.160 --> 46:07.280] Yeah.
[46:07.280 --> 46:09.040] Elm.land is the URL.
[46:10.160 --> 46:10.640] Very simple.
[46:10.640 --> 46:11.320] It's pretty sick.
[46:11.840 --> 46:12.160] Yeah.
[46:12.160 --> 46:14.080] I do enjoy how easy it is to take.
[46:15.600 --> 46:15.880] Yeah.
[46:15.960 --> 46:16.280] Awesome.
[46:16.280 --> 46:18.280] Um, that's been a lot of fun, Richard.
[46:18.280 --> 46:19.000] Thanks for hanging out.
[46:19.000 --> 46:19.240] Yeah.
[46:19.600 --> 46:19.840] Thanks.
[46:19.840 --> 46:20.600] Thanks for joining Ryan.
[46:20.600 --> 46:21.160] Really appreciate it.