[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.