elm radio
Tune in to the tools and techniques in the Elm ecosystem.
State of Elm 2022
Martin Stewart joins us to share the results from the State of Elm 2022 and look at some of the trends.
Published
May 23, 2022
Episode
#57
Martin Stewart (
github
)
State of Elm 2022 GitHub Repo
Brian Hicks' State of Elm talk from Elm Europe
Brian's
State of Elm 2018 blog post
GitHub issues for state of Elm repo
elm-pages showcase page
Martin's GOTO conference talk -
Hobby Scale: Making Web Apps with Minimal Fuss
Evan's talk
What is Success
What's Working for Elm episode
Martin's
Elm Online talk (including a preview of lamdera-test framework)
Transcript
[00:00:00]
Hello, Jeroen.
[00:00:02]
Hello, Dillon.
[00:00:04]
And today we've got another guest joining us, Martin Stewart. Thanks so much for being on the show, Martin.
[00:00:09]
Hello. I'm so glad to hear you two say that. I love the intro.
[00:00:14]
Yeah. Well, we've been meaning to have you on for a long time, so it's great to finally get you on.
[00:00:20]
There are lots of things we could talk about with you, but today we're talking about the State of Elm 2022.
[00:00:26]
All right. Looking forward to it.
[00:00:28]
Yeah. So, well, first of all, what is the State of Elm and why gather this data?
[00:00:34]
What was your motivation? Why did you care about there being a State of Elm 2022, unlike 2021, 2020, 2019, when there wasn't a State of Elm?
[00:00:46]
Yeah. Yeah. I guess for some real quick background, originally Brian Hicks was the one who ran State of Elm.
[00:00:52]
And I think he did it for 2016, 2017, 2018. And after that, he had had enough of it. It was too time consuming.
[00:01:02]
Yeah. So there wasn't for three years. Why I took over then, I actually had to reread my Discord logs because I remember why did I do this?
[00:01:11]
And I can't quite pinpoint it other than Mario.
[00:01:13]
We were discussing like, hey, wouldn't it be cool if there's a State of Elm for the 10th anniversary of Elm?
[00:01:18]
And we were like, yeah, we should do that. And then at some point that we became just me.
[00:01:24]
Mario was understandably busy, so I don't blame him.
[00:01:28]
Yeah. Yeah. That's what I did.
[00:01:31]
Because you weren't busy. Yeah.
[00:01:33]
I work part time, so I do have a fair bit of free time to do spontaneous projects.
[00:01:41]
Oh, that's nice. And in a sense, Mario did help because you used LimeDare to build it.
[00:01:47]
Yes, exactly. That's why he built LimeDare. He spent many years putting it together so I could make this for the community.
[00:01:54]
So you could have fun building LimeDare apps and he could keep maintaining LimeDare.
[00:01:58]
Yes, exactly. Yeah.
[00:02:00]
Yeah, I actually found a recent tidbit that I guess I had learned and forgotten.
[00:02:04]
I was rewatching Brian's Elm Europe talk where he talks about the 2017 survey results.
[00:02:12]
And he was asking, when is there an Elm conference? I think to Richard.
[00:02:18]
And he said, well, you tell me, like, if you're so interested in it, why don't you organize one?
[00:02:24]
And of course, he then went on to organize ElmConf US.
[00:02:29]
And he did the survey as a data gathering sort of preparation for the conference to see was there enough interest out there
[00:02:37]
and to understand more about potential attendees to the conference.
[00:02:41]
So it's kind of a cool tidbit.
[00:02:43]
So does that mean that Martin, you're going to organize a conference as well?
[00:02:46]
I didn't think this far ahead.
[00:02:50]
LimeDareConf 2023.
[00:02:53]
Yeah, yeah, let's do it.
[00:02:55]
That would actually be amazing.
[00:02:56]
Maybe Mari will help this time, I hope.
[00:02:59]
I mean, I would go to a LimeDareConf. It sounds incredible.
[00:03:02]
Yeah, there you go.
[00:03:04]
So that's a, anyone wants to help organize that so that I don't have to organize that?
[00:03:11]
That's always the tricky part.
[00:03:13]
It definitely crossed my mind with the state of Elm as well.
[00:03:17]
And I was very close several times to just doing one.
[00:03:21]
But you should work at home pages, Dillon.
[00:03:24]
Exactly. See, that's the tricky part. Choices.
[00:03:28]
Yeah, well, let's dive into some of this data here.
[00:03:31]
So there's a lot of information.
[00:03:33]
So first of all, the number of participants in the 2022 survey dipped down compared to the 2018.
[00:03:43]
But it was more than the original 2016 survey.
[00:03:45]
So what do you make of that, Martin?
[00:03:47]
I want to note real quick that in the original release of the state of Elm, I had forgotten to include the 2016 numbers,
[00:03:55]
which made it look worse than it actually was because it looked like it was just a downward trend, not down, then up, or rather starts low, then increases, then goes down.
[00:04:06]
Yeah, I think, well, I guess my conclusion really is I don't know what to think of it because it could be just that the survey didn't reach as many people.
[00:04:14]
Because, I mean, we haven't done the survey in like four years.
[00:04:17]
So people don't know about it.
[00:04:19]
They don't have the habit formed anymore of just checking every year to see if the survey is out.
[00:04:25]
And it could be that I don't have the same kind of reach that Brian does.
[00:04:29]
I actually asked him about that.
[00:04:31]
And he said that he, in addition to Elm Slack and Elm Discourse, he also posted it to external communities and a mailing list as well, which I didn't do.
[00:04:42]
Of course, it is possible that someone else did this for me.
[00:04:46]
Like I noticed that the 2022 state of Elm, they could post to the Reddit because someone else did it for me.
[00:04:53]
I don't know if that's an explanation or not.
[00:04:56]
It was also open for less time, right?
[00:04:59]
It was only open for 20 days compared to 60.
[00:05:01]
Exactly.
[00:05:02]
Yeah.
[00:05:03]
I guess, you know, maybe this is heresy to say, but maybe the Elm community just got smaller.
[00:05:08]
Who knows?
[00:05:09]
No, that is impossible.
[00:05:11]
Yeah.
[00:05:13]
Yeah, I mean, the methodology for any sort of data gathering is always important and you can't read, you know, you never know exactly what the data is saying.
[00:05:25]
All you can do is try to improve the methodology over time.
[00:05:28]
So, yeah, it's interesting.
[00:05:31]
Hopefully we can sort of see where the numbers go next year if sort of having another state of Elm this year gets it back on people's radar.
[00:05:41]
You know, I do wonder also if things like conferences get more engagement out of community members and like how much there is people sort of being less engaged with community the last couple of years.
[00:05:55]
So interesting questions and hopefully we can sort of get more insight over time and see more trends.
[00:06:01]
An exercise to the listener might be to maybe gather like history or like statistics on discourse and Elm Slack to see if those things are trending upward or downward, like user counts and activity and see if it matches what we're seeing here or if this is an outlier.
[00:06:20]
It's a great question.
[00:06:21]
Those industrious users of ours.
[00:06:23]
Yeah, very good question.
[00:06:25]
So there's a question about halfway through the survey, which is how long have you been using Elm?
[00:06:32]
And a lot of people replied between two and five years, like around 15 percent of respondents said they were they've been using Elm for 15, for five years, also 15 for four years, also 15 for three years and also 15 for two years.
[00:06:51]
And then then there's a downward trend for one year and less.
[00:06:57]
So I'm thinking since COVID, since we haven't had any conferences, we have not increased the community much.
[00:07:06]
So I feel like there's my gut feeling or my understanding is that the community didn't grow much in the last few in the last two years.
[00:07:15]
I think you might be misreading that because there's the one year bar, but then there's between three months in a year and three months.
[00:07:22]
And if you add all those three together, so that would be a one year span.
[00:07:26]
That's more than 15 percent.
[00:07:28]
If you include the OK, yes, if you include all that have used Elm for less than two years, then it's about 21 percent or something.
[00:07:38]
Yeah, which would seem to indicate growth now, which is good.
[00:07:42]
I think one thing to keep in mind and again, this is I mean, I think this is going to be a recurring theme in this conversation because first of all, disclaimer,
[00:07:50]
none of us are statisticians. And secondly, you just never know exactly what the data means.
[00:07:57]
It's it's just kind of a data point, but it doesn't tell you exactly what the data means.
[00:08:02]
It's just data. But for a percentage of people using it, percentage of respondents who have used Elm under three months or between three months and a year,
[00:08:11]
that might be an underrepresented group in survey respondents because you might be less likely to do a state of Elm survey if you've been using it under three months.
[00:08:20]
And you may not be using the Elm Slack or follow the Elm discourse or read it.
[00:08:25]
Exactly. Yeah, absolutely.
[00:08:27]
Or you might be more likely to and it's an accurate reflection or more than more than the accurate reflection would be.
[00:08:35]
We don't know, but we can only speculate.
[00:08:38]
Yeah, at least thankfully, none of us are biased. So that is very good.
[00:08:44]
Precisely. So another question almost near the beginning is what is your level of experience with functional programming?
[00:08:53]
And we see a lot of people who are responding that they're good enough to use it professionally, like the majority of people.
[00:09:01]
And then a tiny portion of them are saying that they're experts, less than their beginners.
[00:09:08]
Do you think that it's because people feel like they're good enough with functional programming to use Elm,
[00:09:15]
but just not good enough to use it in other languages like Haskell or PureScript, which have more advanced functional aspects to it?
[00:09:26]
Yeah, you're saying like to be a professional, you need to get paid or if you're good enough to do it professionally, that means you're good enough to get paid doing it.
[00:09:35]
And so if Elm is a language that's or at least I think we all agree that Elm is a language that's pretty easy to get into.
[00:09:42]
So if you're if you can get into it and it's easy and then you can get paid doing it, then that's a criteria that's easy to fulfill.
[00:09:50]
So, yeah, it's not it doesn't seem too surprising to me that like it's a pretty high number that can use it professionally.
[00:09:58]
And then that people don't consider themselves an expert because they know Haskell exists.
[00:10:05]
If I could just go back to the how long have you been using Elm question for a second?
[00:10:11]
I'm looking at the at Brian's blog post about the state of Elm 2018 results where he has the 2016, 2017, 2018 and a few charts comparing the results.
[00:10:25]
I'm noticing that for under three months, about 34 percent of the 2017 responses were under three months.
[00:10:37]
Thirty four percent compared about thirty four percent in 2017 in 2018, it's about 20 percent.
[00:10:45]
And in the 2022 survey, under three months was about four percent of the survey respondents.
[00:10:50]
Now, that could just mean that, you know, I mean, we've got people listing seven years of Elm experience, six years of Elm experience at this point.
[00:11:01]
So it could just mean that we have a bigger tent with more more of a range of Elm experience.
[00:11:09]
Or maybe there's something that we were getting people in those earlier stages more engaged or getting getting the survey out to them.
[00:11:19]
So I just wanted to kind of bring our attention to that a little bit, because that's that is kind of interesting.
[00:11:25]
Yeah, I'm not sure what to make of that. Dang it.
[00:11:28]
I'm not a statistician. Yeah. Time to go back to school.
[00:11:34]
Yeah. Very interesting. So and I do wonder what like, again, the lack of of in person conferences we've had the past few years or just any conferences.
[00:11:44]
Having Elm online has been great. The Elm online meetup that Mario runs, but also like local meetup groups and those sorts of events have not been happening for the last few years.
[00:11:57]
So I wonder what sort of impact that has on engagement for newcomers.
[00:12:02]
That's another exercise to the listener. Start a conference for Elm. Love it.
[00:12:08]
That's a great exercise to do once per month to get good at it.
[00:12:14]
Yeah, in all seriousness, if anyone is listening to this and is really passionate about I wish there was an Elm conference, maybe you're the person who's scratching their itch there.
[00:12:27]
We would love to see it. Absolutely. Yeah.
[00:12:30]
So are you surprised by the other languages that people know about?
[00:12:34]
So it seems like most people like the language that is most known by Elm developers apart from Elm is JavaScript and then TypeScript.
[00:12:45]
That's not surprising at all. Yeah, that's not a surprise. Yeah.
[00:12:49]
So just how to read the charts, because this is a question where multiple answers can be chosen.
[00:12:57]
It reads different from the other charts that we have.
[00:13:00]
Yeah, yeah. I'm glad you brought that up because, again, not being a statistician, this is something where I just threw things together and thought, oh, this is good.
[00:13:09]
And it wasn't until recently that I realized that, no, this is really kind of misleading.
[00:13:15]
Specifically, if you look at the percent of answers filter, that's literally the percentage of total answers.
[00:13:23]
So if someone answered, say this survey was just answered by one person and they picked five things, then those five things would all get 20%.
[00:13:33]
Like maybe to some people or a lot of people, that's really misleading.
[00:13:37]
They would expect 100% for all those five things then.
[00:13:40]
Right. So, yeah, maybe for next survey, I should rethink how that's at least explain it anywhere in the survey that works.
[00:13:49]
Yeah. So, yeah, just the questions that say multiple answers can be chosen, such as this one.
[00:13:55]
Yeah. Got to be a little extra careful if you're looking at percentages.
[00:13:59]
Yeah. So in this case, we have 572 people who said the new JavaScripts out of 821.
[00:14:08]
So that's a big chunk of them.
[00:14:10]
OK, hang on. Sorry.
[00:14:12]
Another thing that is for all these questions, besides the do you use Elm question, people who responded with or rather to the do you use Elm question,
[00:14:24]
if people responded with no and I don't plan to, their responses aren't considered for the remaining questions.
[00:14:32]
Right. Yes. And on top of that, if someone doesn't answer a question, then obviously they're not counted either.
[00:14:38]
Ah. Because like no one's forced to answer questions.
[00:14:43]
So they could like say, yes, I use Elm and then not answer anything else.
[00:14:48]
There really should be like a total like number of people who answered a particular question, like somewhere within the question.
[00:14:57]
Mm hmm. Give you an idea of how many people actually, yeah, actually answered it and not just the number of answers.
[00:15:04]
But the raw numbers still give the raw totals give some sense, I would imagine.
[00:15:11]
So like maybe another exercise for the listener would be I think it would be really interesting to take some of these results
[00:15:20]
and compare them with some of these numbers that Brian has for the 2016 through 18 results.
[00:15:27]
You know, normalize them a little bit for percentages of total for some of the questions that can be compared to just see what we learn.
[00:15:37]
But yeah, like for, you know, I mean, some obvious trends you're going to see like TypeScript in in 2018 had 71 respondents out of 1176.
[00:15:51]
Which is super low. Quite low.
[00:15:54]
Yeah, that's that's trended in a very different direction.
[00:15:57]
And I do wonder, like, what what does that mean for people's interest in Elm with somebody who has more exposure to TypeScript or who's passionate about TypeScript and says like, oh,
[00:16:08]
let's convert these parts of our code to TypeScript because it's a really useful tool.
[00:16:14]
Is that going to make them more inclined to be interested in Elm or less inclined?
[00:16:19]
That would be an interesting thing to understand more because, you know, does it do they say, well, I don't need Elm because I've got a type system or do they say this stuff is really good.
[00:16:30]
What if I had even more of that? What if I had stronger guarantees?
[00:16:34]
The TypeScript is so low that I almost wonder if maybe that wasn't like a choice people could just click on.
[00:16:43]
They had to like type in a type in a free text field because I noticed that with some of the questions in my 2020 survey was sorry, 2022 survey was that like if they weren't an explicit answer,
[00:16:58]
they could get like considerably less chosen, even if they should have been chosen more often.
[00:17:04]
Like, for example, with incremental Elm, one of the questions was like what places you go for news and discussion. Incremental Elm got like five people picked it, but like there's way more than five people there.
[00:17:16]
And I know there's discussions and news there. So like, so like that's like a smoking gun evidence that there's some bias going on.
[00:17:26]
Yeah, there should almost be like a little symbol next to predefined answers that people could select and write ins.
[00:17:35]
Because as you say, the write ins mean that it's probably an underrepresented answer because more people would have reached and clicked for it than would go to the trouble to write it in.
[00:17:45]
Yeah, it's like for the state of JavaScript. There was a question about which podcasts do you listen to and Elm radio was on there, but only because people wrote it in. Otherwise we'd be way higher. We'd be in the top three, I'm sure.
[00:18:02]
Well, we were like the second highest write in podcast, which was cool.
[00:18:07]
Yeah. Yeah.
[00:18:09]
Surprisingly high actually. I think Elm wasn't listed either in the state of JS last time. So that also, think of how high it would have gotten if it was listed.
[00:18:20]
So yeah.
[00:18:22]
So even with the a bit hard to read numbers from this question, we can figure out that most people know JavaScript quite well out of the respondents. A lot of those also know TypeScript well and quite a few come from Python or Java.
[00:18:40]
And then we get Haskell people, but this is for all of the users. So there are additional filters for people who use Elm and those who are considering Elm. And those change how the numbers.
[00:18:57]
Yeah. If you click on considering Elm and then look at percentages, Haskell drops down several places. Which, yeah, I guess that makes sense because if you're using Elm and you're in the ballpark of Haskell, whereas if you're not using Elm, you might not be totally sold on functional programming yet.
[00:19:17]
And so you're less likely to consider Haskell.
[00:19:19]
Yeah, we can see mostly the bigger known languages at the top. Python is also a big one. Do you know if PureScript and TypeScript, if PureScript had a lot of answers?
[00:19:32]
PureScript landed in the other category.
[00:19:35]
Backend, yeah. Interesting.
[00:19:37]
Five people picked it or so.
[00:19:40]
Was it a write in option?
[00:19:42]
Yeah, it was a write in option. So it wasn't a specific choice.
[00:19:47]
Yeah. And also, like the question is, which one are you most familiar with? So if you're more familiar with JavaScript and a bit less than PureScript, then you can understand the question as, well, I should only write in JavaScript.
[00:20:01]
I think I chose that wording because that's, let me double check now. I think that's exactly what was used in the original state of Elm questions.
[00:20:10]
Yeah, it is.
[00:20:12]
So I wanted to keep some consistency so that the data would be somewhat comparable.
[00:20:17]
Yeah.
[00:20:18]
Though it was then unfortunate that I didn't have enough time to actually extract the old data and place it in the new one.
[00:20:24]
So it would be easy to compare instead of all this, like us fumbling around trying to guess, well, this percentage, that's a percentage of what? Can we compare that to the old data?
[00:20:34]
But the data is there now.
[00:20:35]
At least the data is there.
[00:20:37]
So somebody could go and write a blog post comparing those things. It would be very interesting to see.
[00:20:44]
So is the raw data available anywhere?
[00:20:47]
So the raw data is not available. So if someone contacts me, I'll be happy to provide it to them.
[00:20:53]
When people filled out the survey, there was a little checkbox at the bottom that said like, I have not put any information into the survey that I wouldn't want revealed publicly. But even despite that, I want to play it safe and not just expose it to everyone.
[00:21:07]
But yeah, if individuals want to see the data, yeah, I'm happy to provide it. And then they can do statistics more easily.
[00:21:16]
Yeah, that'd be very cool to see.
[00:21:18]
So for where people get their news and where they come to discuss things, we got the known ones, I'd say, which are at the top.
[00:21:28]
Discourse, Slack, blog posts is also in the top three. It's a bit hard to know which blog posts they come from.
[00:21:36]
Yeah, blog posts was so popular that I kind of wish I had split that apart at the individual blog posts.
[00:21:43]
But I'm certain they're all thinking of your blog post when they pick that.
[00:21:48]
Well, I would like to know if that's the case.
[00:21:53]
You know, gut feeling, you know it's true.
[00:21:57]
I have the analytics from my website, but it's not that high as far as I can remember.
[00:22:03]
Well, if it's 292, then there you go.
[00:22:07]
That actually looks like a match.
[00:22:11]
I guess people can't see exactly what we're looking at. So 292 is the number of people who picked blog posts.
[00:22:16]
Yeah. And then there's the Elm Weekly newsletter and then there's Elm Radio where people come to discuss or just to get news.
[00:22:25]
Are we news outlets now?
[00:22:28]
Well, I mean, Steadicom 2022 is news.
[00:22:33]
I mean, if Simon comes on to talk about the Elm tooling CLI, that's news.
[00:22:41]
Yep. Absolutely.
[00:22:43]
I think we're news.
[00:22:44]
I know. We're part of the media. We're part of the problems and the solutions as well.
[00:22:50]
Yeah, I hope so.
[00:22:52]
I mean, yeah, I hope that it gives people a bit of an on ramp to get some Elm material in different mediums.
[00:23:03]
If some people learn better by videos, they can watch front end masters or conference talks.
[00:23:11]
If people learn better through tutorials, they can go through blog posts.
[00:23:15]
If people like to wash dishes and hear discussions and understand how to think bigger picture about things, then podcasts are great.
[00:23:24]
So it's good to have a variety of media options, I think. Multimedia, if you will.
[00:23:30]
One fun piece of trivia for this one is, so I was just mentioning how some of the questions were negatively biased by the fact that they weren't default options.
[00:23:40]
In this case, Facebook groups was one of the default options and exactly one person picked it.
[00:23:46]
So I'm guessing if it wasn't a default option, no one would have picked it.
[00:23:50]
Yeah. Are you showing the ones where zero people responded to it, chose it?
[00:23:57]
I don't think that ever happened that a default option was picked zero times.
[00:24:03]
But if it did happen, then I think it would be filtered away.
[00:24:07]
Okay, actually, sorry, I take that back. So the country question.
[00:24:11]
That's a case where there's lots of default options and we don't have an even spread of people.
[00:24:17]
So some countries don't have own programmers.
[00:24:19]
So in that case, yes, the countries that have zero own programs, own programmers in them were filtered away.
[00:24:27]
Okay.
[00:24:28]
But yeah, I included Facebook groups only because it was a default option in the previous surveys.
[00:24:33]
But I'm thinking going forward, it's not going to be included.
[00:24:36]
Yeah. And you can see a noticeable jump looking between the 2017 and 2018 results for this question
[00:24:44]
and the 2022 results that we're looking at here for where do you go for Elm news and discussion.
[00:24:50]
You can see a noticeable drop in percentage of respondents who say Elm subreddit and an increase in the number of people saying Elm discourse,
[00:25:02]
which makes sense because it's much more active on the Elm discourse nowadays.
[00:25:07]
But of course, again, you know, we don't know if that's because of how those different groups are represented in the survey
[00:25:15]
versus if that represents the actual general percentages out there.
[00:25:21]
But I would imagine there's just more going on in the Elm discourse.
[00:25:24]
But, you know, there are some of these places that how do you find out where to go for these things?
[00:25:30]
It's kind of word of mouth to a certain extent.
[00:25:33]
Does anyone want to touch upon the what initially attracted you to Elm question?
[00:25:38]
I think this one's interesting because there seems to be a noticeable shift between what attracted people who are using or have used Elm
[00:25:48]
in contrast to people who are considering Elm.
[00:25:51]
Oh, yeah.
[00:25:52]
Specifically for people who are considering Elm, the fact that it's a pure functional programming language
[00:25:58]
and that it's an alternative to JavaScript are significantly higher compared to people who have used Elm or are using Elm,
[00:26:06]
where it's still high, but it's not nearly as high.
[00:26:09]
It's like 20 percentage points less if you combine those two answers.
[00:26:15]
OK, hang on, maybe 15 percent.
[00:26:17]
Maybe I'm exaggerating a little bit, but it's noticeable.
[00:26:21]
Yeah, what bothers me is that when you say, oh, I'm interested in Elm because it's pure functional programming.
[00:26:28]
I'm like, yeah, but why?
[00:26:31]
What part of a pure functional language attracts you?
[00:26:36]
Because, for instance, well, maybe I know more about it now,
[00:26:41]
but I was more interested about the ease of maintenance and ease of refactoring.
[00:26:46]
I think that's what I chose as my option, probably the only one.
[00:26:51]
And I didn't choose pure functional programming because for me, yeah, pure functional programming is what attracts me.
[00:26:58]
But it's because I'm able to maintain my codes easier.
[00:27:02]
Right.
[00:27:03]
I think I said something like pure functional programming for this answer, too.
[00:27:09]
And I mean, for me, when I initially found Elm, the ability to write tests for pure functions was super exciting.
[00:27:19]
And the ability to debug and refactor code that's pure was really interesting.
[00:27:25]
So that was what turned me on to it initially.
[00:27:28]
But as you say, it's hard to decide.
[00:27:31]
There could be a lot more behind these answers.
[00:27:34]
I don't remember actually what I picked now when I answered this survey.
[00:27:37]
But if I had to answer right now, it would have definitely been pure functional programming, alternative to JS.
[00:27:43]
But yeah, it's tricky with pure functional programming.
[00:27:47]
But then people did have write in answers where, well, it says 1.9 percent of all users wrote ease of refactoring slash maintenance.
[00:27:57]
So you're not the only one, Jeroen.
[00:27:58]
I say that I wrote that, but I also don't remember.
[00:28:03]
I think that's what I replied, but it would be so nice to know, like, what did I answer?
[00:28:11]
So like next year, I should have an account creation system so like it can highlight what you picked.
[00:28:16]
I would create an account just for that.
[00:28:19]
Wow. This is turning out to be a lot of work.
[00:28:24]
No wonder Brian gave up on this.
[00:28:26]
Yeah. When you announced that you were doing it, I was like, huh, you don't know what you're getting into.
[00:28:33]
Yeah. But I'm happy that you do. But I'm sorry for you.
[00:28:37]
Well, I mean, so in my defense, like I did think, oh, this is going to take some work.
[00:28:42]
And then and also people when they like thank me for putting this together right after I had announced the survey was open.
[00:28:49]
I did say things like you should thank me after the results are out.
[00:28:54]
I knew there'd be more work to do, but I didn't realize how much I still didn't realize is the full amount of work necessary to bring this out.
[00:29:01]
Yeah. And for next time, bring a statistician to the table.
[00:29:06]
Yes. And implement all the GitHub issues people have.
[00:29:10]
Actually, there's only two at the moment. People really should write down things they find and not just write it on Slack because, you know, Slack eats messages.
[00:29:19]
Yeah. And we'll link to the issues of the project.
[00:29:23]
But hopefully next year, I mean, yeah, there'll be work to do, but hopefully not too much because a lot of the effort I spent on putting this together this year was creating an admin panel that like gives me some tools to more quickly group answers.
[00:29:39]
It lets me bring someone else on board. Shout out to Wolfodex, by the way, because he's the person I brought on board who helped me group the answers so that it took like without him, it would have probably taken two more days or something before the answers were released.
[00:29:52]
Yeah, normalizing data is a lot of work. I can say from doing our game show challenges, our family feud style games, it is a massive amount of work to kind of group together similar answers and figure out how to categorize them and normalize all the data.
[00:30:11]
Yeah. Sometimes it just feels like there's no good way to group things. It's like a smooth blend from one possible answer to another. Where do you draw the line?
[00:30:20]
Precisely. I mean, you took the bold step of both creating the data collection tool in Limedera, homegrown, and the data presentation layer, which for previous DataVelm surveys, it's been a sort of out of the box survey tool.
[00:30:44]
And then Brian writing blog posts, showing charts with the data. So that's, I mean, that in itself is a massive amount of work. Forget about scrubbing the data and all that stuff. But you created admin panels to be able to do that sort of data normalization and present the data and all of that.
[00:31:04]
Yeah, I sort of brought this upon myself. A colleague asked me, like, why not use Airtable? I think that's what he suggested. And like, I thanked him for suggestion, but quietly I was thinking like, it's not Elm.
[00:31:19]
Right.
[00:31:21]
Why would I use that? It's not Elm.
[00:31:23]
It's not going to work in Limedera.
[00:31:24]
I mean, I would probably export the data and then import it again. I haven't used Airtable, so I can't really say what exactly I would have done. But I mean, it could have worked. But it's not Elm.
[00:31:37]
I use Airtable for the showcase on the elmpages.com website, elm.pages.com slash showcase. It's presenting individual sites that people submit to the showcase, and there's a button to submit your Elm Pages site.
[00:31:56]
And it's a form created by Airtable. So you hit submit, and Airtable gives you a form with all those columns. And then Elm Pages has a data source to pull down all of the entries.
[00:32:08]
Okay.
[00:32:09]
I just have to click an approve button on one of the columns that's admin only, and then it shows up in the results. Airtable is pretty cool, but it's not Limedera.
[00:32:19]
Exactly. It's not Limedera. I'm not going to claim that what I did was the easiest way or the best way. I really get a lot of enjoyment out of writing my own solutions.
[00:32:30]
And I have a hope that doing it this way in the long run makes it easiest because I've had experiences with third party tools becoming difficult to work with once you need something they're not built for.
[00:32:45]
And then it's difficult to work around them. But again, I can't say if it was really the right call other than I enjoy programming Elm, so why not?
[00:32:55]
And what was the name of that talk you gave recently about like making hobby projects, like changing the calculus for what hobby projects you can build?
[00:33:06]
Okay, so sort of a secret. That's not really a secret. I'm going to be presenting it at GoToAurhus in a month.
[00:33:17]
But yeah, it was a presentation I gave at a meetup practice for that called Hobby Scale, Creating Web Apps with Minimal Fuss.
[00:33:27]
Yeah, yeah. Using Limedera to write web apps with server support.
[00:33:34]
You definitely walk the walk on that one, which is cool. I mean, I love that idea of how can removing glue code with Limedera make it viable to build certain things that wouldn't be worth building a custom solution for because the amount of glue in other paradigms.
[00:33:54]
Yeah, I guess we're at risk now of just having another Limedera episode on the show.
[00:34:00]
Yeah.
[00:34:01]
Because I love talking about Limedera.
[00:34:03]
Really, I think we should have you or any Martin for that matter, but I think we need some Martin Limedera episodes in the future to do a deeper dive on that.
[00:34:16]
Yeah, I'd love to be a repeat guest at the show.
[00:34:20]
We would love that too. Yeah.
[00:34:22]
I don't know how much time we have left on the podcast, but one thing I would like to talk about if there's time is the last two questions, which one is kind of a downer to talk about.
[00:34:33]
What has been the biggest pain point in your use of Elm? And the other one's the nice feel good one. What do you like the most about your use of Elm?
[00:34:43]
Yes, absolutely.
[00:34:45]
Should we take the sad one or the happy one first?
[00:34:47]
Let's take the sad one first. I mean, and is it necessarily sad? I mean, I think that if we're saying that something is a pain point, then I mean, it's also an opportunity to understand what could we work on?
[00:35:04]
What are people having trouble with? But also like, there are also certain things that are going to have certain design decisions are going to have trade offs, right?
[00:35:14]
Engineering is all about trade offs. So I don't necessarily think of it inherently that every time there's a pain point, it means it's sad or there's something bad.
[00:35:24]
Sometimes it's like an easy win. Sometimes it's an inherent design trade off that is part of the part of the package.
[00:35:32]
I can clarify that perhaps part of the reason why I feel like this part is like the sad part. Yeah. Is because I had to read through all the actual things people wrote, like the literal answers before I grouped them into this nice sanitized graph that you see.
[00:35:49]
Yeah. There's absolutely nothing I would say felt hateful. Yeah. Or like, you know, you know, you know, what much what you might read on Twitter or Reddit on a normal day.
[00:36:02]
But yeah, you can really feel for some people like feel their frustration.
[00:36:07]
Can you remind me where these write in or where there's some predefined choices?
[00:36:11]
This one was purely free text. Cool. That's what I thought. It took a lot of time to go through it. So I might rethink that next year.
[00:36:19]
OK, so what were the biggest pain points then?
[00:36:23]
Yeah. So this is another situation where, you know, you could group things in any number of ways.
[00:36:29]
So I like I wouldn't read too much into the percentages, but the top one, like shown on the graph here, lack of PR is being merged, infrequent updates in core team attitude is the way I politely put it.
[00:36:49]
That was one that came up a lot. And like it's one of those things where it doesn't it's not a problem for me.
[00:36:56]
Like there are sometimes issues that have like PR that have existed for a while that haven't emerged.
[00:37:03]
And I can get that that's frustrating for people. But at the same time, like it's in practice, never been a problem for me personally.
[00:37:10]
So I'm not saying these people are wrong. Right. Right. Yeah. There's some I guess I guess a disconnect.
[00:37:17]
I mean, that's the way of putting it between like how I feel and how other people feel.
[00:37:21]
Yeah. Right. Just like you say, there are some issues that say along as say a lot for quite a while.
[00:37:28]
But since there are not that many in practice, like some people will be hits much harder by them than others.
[00:37:36]
And I guess like the people who stay the longest in the community are the ones who haven't been hit by them at all or that much.
[00:37:45]
Yeah. And I mean, I think everybody has a different experience of this.
[00:37:51]
And I mean, it's been coming up for, you know, since since the early days of Elm, you know,
[00:37:59]
Evans given multiple talks about Elm's release cycles and the batching approach and what does success look like?
[00:38:08]
I think was a talk he gave where he talked about some people saying like they really thought that the official Elm Lang site should have more blog post updates and more items in the news section.
[00:38:22]
Somebody somebody was very animated that they thought that was very important.
[00:38:26]
And I think that's not uncommon that like I mean, you see it.
[00:38:33]
You see it all the time that trying to think what it was, but I've been hearing this kind of thing come up in other communities, too, where people people want to say is X dead because of some concept of what it what it means.
[00:38:48]
You know, frequency of the release cycles or amount of news happening.
[00:38:54]
But, you know, Elm has like a stable core.
[00:38:58]
Right. That's that's another side of that coin.
[00:39:00]
And there are benefits to that.
[00:39:03]
And it's not likely to have a massive breaking change anytime soon.
[00:39:08]
And that stability is a good thing.
[00:39:11]
And the core of the language lets you accomplish most of what you need to for building front end web applications.
[00:39:17]
So it's it's a mixed bag.
[00:39:19]
But and I think this can mean different things for different people.
[00:39:21]
But that said, the perception is important for things like blog posts and those sorts of things.
[00:39:27]
And and clearly there's a there's an understandable concern with, you know, pull requests that and and bug, you know, issues that are being tracked for a long time.
[00:39:40]
I would argue that I think that the if you look at something like, you know, TypeScript is TypeScript going to have like how many open issues does TypeScript have?
[00:39:51]
I think that because Elm is this very kind of small language with not a lot of language features and it's trying to become more and more refined as to like this paradigm of expressing code.
[00:40:06]
I think it's easier to see these things as problems because these problems stick out like a sore thumb because the error messages are so clean.
[00:40:14]
The language is so small and there are so, so many thoughtful APIs.
[00:40:20]
I can mention real quick there that you like that hits the nail on the head for like my initial experiences with like I'm using Elm and like ninety nine percent of it feels amazing.
[00:40:31]
But then like a little part just like gets in the way and like unlike a lot of other languages where there might be an escape hatch that lets me feel like I'm smart so I can work around the principled way of doing something.
[00:40:45]
Elm is just like, no, full stop. No, you're doing it the right way. And like that can be so frustrating.
[00:40:51]
Yeah, it's also because it's done so well in general.
[00:40:55]
Like if you have if I make a painting and it's going to be ugly because I don't know how to paint and there's a scratch somewhere in the corner, then no one will notice it.
[00:41:07]
But if you have the Mona Lisa and there's a scratch. Oh, man. Right.
[00:41:13]
People are going to complain about it. So just FYI, because you half asked that it has five thousand two hundred errors.
[00:41:22]
Sorry, issues open and the compiler has 250.
[00:41:27]
Well then, yeah, that invalidates everyone's criticism.
[00:41:31]
Yeah, exactly. No, I mean, we are not biased at all.
[00:41:36]
Yeah. No, I mean, I think we all experience, you know, some amount of frustration with, you know, a particular things that we would love to have in the language or, you know, like, wouldn't it be nice if custom types could be comparable?
[00:41:52]
Things like that. It's like it seems, you know. But but again, yeah, as you guys are saying, if you have I think that Elm in particular really takes responsibility for the user's experience in a remarkable way.
[00:42:05]
In that it says, like, I'm giving you a complete sandbox. So I'm sort of taking responsibility for what you're able to do within that sandbox because I'm not giving you escape patches to break out of that sandbox.
[00:42:17]
So I'm not giving you an any type, not giving you no, I'm not giving you synchronous foreign function interfaces where you can directly call JavaScript and say, trust me, I know what I'm doing.
[00:42:30]
I know what the types are. I know it's going to be well behaved and not cause side effects. These escape patches don't exist. And so you're working in the sandbox.
[00:42:40]
And if you don't have something, suddenly it doesn't feel like a first class thing anymore.
[00:42:45]
Yeah. FFI is actually like almost as mentioned as the lack of PRS being merged.
[00:42:53]
Martin, do you want to explain what FFI entails? Like, is it mostly people who like more direct FFI with JavaScript or is it people just say it's a pain, it's annoying, but it is how it should work? What is it?
[00:43:09]
Yeah. Part of it is people complaining about ports, just dealing with ports, having something becomes asynchronous that they want to be synchronous.
[00:43:19]
They're complaining about that. Yeah. So I think FFI covers mostly two situations. The first being people literally just saying they want to call JS directly.
[00:43:30]
So they don't want to deal with asynchronous, like they can call JS asynchronously through ports.
[00:43:34]
But that's a hassle when you want to do something synchronously instead. And the other one is sort of an overlap with the there being browser APIs missing.
[00:43:43]
So a good example of that is internationalization, where there are existing JavaScript libraries that will do this for you.
[00:43:52]
For formatting time and things like that. Yeah, yeah, exactly. And I guess to some extent you can work around that with custom types. Sorry, not custom types, with custom elements.
[00:44:04]
Yeah, absolutely. Which I've done and it worked pretty well.
[00:44:08]
Okay, cool. I don't have that much experience with it, but it seems like at least some people aren't convinced or not aware, one of those two. And so that's another complaint.
[00:44:18]
Yeah, and it's definitely for sure those things should not just be pulled over wholesale into Elm.
[00:44:26]
A lot of the time we talk about, actually, Yorun and I were having an interesting conversation on Twitter with somebody about the point of FFI.
[00:44:33]
They were saying that, you know, like, it's a shame that Elm doesn't just provide FFI and people are saying it's a pain point. So why don't we just provide it?
[00:44:43]
And we were saying, well, like, there are two sides of that coin. It's you have FFI, but not having FFI is what we love about Elm.
[00:44:52]
And we talked about that on our What's Working for Elm episode.
[00:44:56]
So, like, just because there are pain points doesn't mean that there's not another side to that coin.
[00:45:02]
In my case, I think if there was FFI, I don't think Lamdera would be possible, at least not nearly as well.
[00:45:09]
Precisely. Yep.
[00:45:11]
Another example, I put together a package for simulating multiple front ends and a Lamdera back end communicating and interacting with each other.
[00:45:23]
And this package, in order to make it work, I had to recreate all the effectful packages.
[00:45:32]
So all the browser APIs and such, like I needed to create a custom type that represented everything they could do.
[00:45:39]
And boy, was I glad there aren't many browser APIs. Right.
[00:45:43]
Right. It's an incredible tool and it's incredible.
[00:45:47]
You gave a talk about that at Elm Online, which we'll link to and the demo of it.
[00:45:53]
But to me, that is such a great example of what I in my brain is termed the promise of Elm, which is like, all right, we have this pure language.
[00:46:02]
What do we do with that purity? What guarantees can we leverage?
[00:46:05]
And to me, like Elm review, Lamdera, Lamdera test, the framework you're talking about that you built to show different connected clients and do time traveling unit like program tests.
[00:46:16]
Yeah. These are the things that are really exciting about Elm.
[00:46:19]
And when you don't have just direct FFI, like something like Rescript, you see a different evolution of the ecosystem, which we build these different solutions to these problems.
[00:46:34]
But things like internationalization, where you have, you know, time zone data and data about how numbers are formatted and about how you display dates in different regions.
[00:46:50]
That stuff should not be re implemented in pure Elm packages because it's just a whole bunch of data and a whole bunch of data that you could get wrong and a whole bunch of data that's going to bloat your bundle size that belongs in the browser.
[00:47:04]
That locale related stuff like the internationalization APS really belong in the browser.
[00:47:10]
So, yeah, I mean, could there be some native way to access that?
[00:47:15]
Perhaps. Is there going to be in the near future?
[00:47:18]
Probably not, but we can use Web Components.
[00:47:21]
And for now, that's probably the best solution.
[00:47:24]
So, yes, it is imperfect.
[00:47:26]
But also, like the other side of the coin, all of these libraries that are not just wrappers of JavaScript libraries are something that I don't think we would have if we just had FFI.
[00:47:37]
It changes the evolution of the ecosystem.
[00:47:39]
One question I have for you, too.
[00:47:41]
So maybe this isn't entirely true, but it feels now that we've gone through some of these pain points and basically basically said, like, like this, this is a pain point.
[00:47:52]
But it is what it is. This is the optimal situation.
[00:47:55]
Like you might wish there was FFI, but no, there shouldn't be FFI, even though we acknowledge the pain.
[00:48:01]
But I'm curious then, like to avoid us just coming off as like, this is fine while the room is burning from the opinion of someone who isn't completely enamored by all.
[00:48:11]
Are the things here that we do think could be improved?
[00:48:15]
It's perfect.
[00:48:19]
Yeah, it's a great question.
[00:48:21]
I mean, for sure, like, to be clear, I don't think that I think you're in and I are both on the same page that I don't think FFI could be, quote unquote, improved in the sense that just giving FFI and saying people are saying that they wish they could just directly call JavaScript.
[00:48:40]
And so just giving that feature would make things better.
[00:48:44]
We're both on the same page that that would defeat the whole purpose of the thing we love about Elm most, which is being able to rely on its purity.
[00:48:53]
That's the most exciting thing about Elm to us, because the possibilities that emerge from that.
[00:48:58]
But that doesn't mean that there couldn't be a different state of things where I mean, sure, why?
[00:49:05]
Why couldn't you have a built in API in Elm for that exposes parts of the internationalization API that's built in browsers?
[00:49:14]
That seems like a reasonable thing.
[00:49:18]
And that is something that I think could be an improvement that would not break the things we love about Elm.
[00:49:26]
Yeah, I'm sure there are also some JavaScript or browser functions which are pure.
[00:49:33]
Maybe not browser ones, but the ones that where you would always get the same value, like maybe the user agent, for instance.
[00:49:42]
You can't access that from Elm, but you could.
[00:49:46]
And it would just always be the same value. So we could give access to that.
[00:49:51]
Yeah, it could potentially be accessible through like flags that you could get some initial data when the application starts rather than a global thing or something like that.
[00:50:00]
Yeah, but for instance, the user agent could be a global thing.
[00:50:04]
It could just be always, it could be constant that's assigned before you start Elm.
[00:50:11]
Although I like the idea of it being passed in more as flags, because then you can't have unit tests that depend on some implicit global state that will be different.
[00:50:22]
But if it's passed in through init and you can access it in flags, then it's here's data from outside, but it's deterministic.
[00:50:32]
Okay, then I don't have a good example. But if there are some, then I would be fine.
[00:50:39]
The point is we are getting so many guarantees which lets us build amazing tools and make it super easy to refactor Elm code that we shouldn't throw a pebble into the gears.
[00:50:57]
As small as a pebble it could be, it can break the whole system if it's thrown in the wrong location.
[00:51:09]
Yeah, so yeah, my thinking is like FFI is fine as long as we don't break any of the guarantees and ports is one of those systems where we have that.
[00:51:19]
Doing HTTP requests through tasks is one of those systems. Web components is one of those systems as well. So that might break things more than necessary, but so far so good.
[00:51:31]
Yeah, so could there be a world in which we have the same guarantees that we know and love in Elm and yet there are certain platform APIs which have sort of first class way to access them in Elm exposed.
[00:51:48]
Could there be more of those? Could there be a process for building out more of those perfectly coherent state of things?
[00:51:59]
But is that likely to happen? I think it's probably not likely to happen and my satisfaction using Elm doesn't depend on that.
[00:52:10]
Yeah, so to a certain extent I guess I would advise people that if their happiness using Elm depends on that process changing, maybe Elm isn't a good fit for them.
[00:52:24]
You know, because that might be a continued frustration. If we want to talk about I'm happy with Elm, but let's also explore how things could improve.
[00:52:34]
That is I think a more productive conversation to not expect that, but to explore what could improving things look like.
[00:52:42]
Martin, you had something to say?
[00:52:44]
My question was more covering all the pain points, not specifically the one we talked about with FFI, but I wasn't very clear about that.
[00:52:54]
I'm wondering if maybe we should have a look at the happy question instead though, so we don't spend all our time talking about what's wrong with Elm.
[00:53:05]
So you were wondering if we have any pain points?
[00:53:09]
Okay, so yeah, my question was specifically like there's this whole list of things that people find as pain points and the ones we covered like lack of PRs being merged, FFI, none of the browser APIs.
[00:53:23]
Oh, then there's some fun ones like people wrote none. 6% of people wrote none. Yeah, I love that pain point.
[00:53:31]
But then there's things like better IDE support where it's like that's a pain point.
[00:53:37]
And unlike FFI where like I can understand people would find that as a pain point, but like I disagree with them.
[00:53:45]
Better IDE support is something where I agree that is a pain point. It's a pain point for me too.
[00:53:50]
And more importantly maybe is that it's not something the core team needs to handle.
[00:53:55]
It's like it's something exercise for the listener could improve.
[00:54:02]
So that was my question. I was wondering, like, are there any sorts of things like that you see here where you think that, yeah, this is something that is an issue and it's also something we can improve as a community?
[00:54:16]
The one that comes to mind is the community. There's one that you grouped as the community is small or unresponsive or dismissive.
[00:54:25]
So for unresponsive and dismissive, I disagree and or slash don't understand.
[00:54:32]
Exactly. You're dismissing them now.
[00:54:35]
Exactly.
[00:54:37]
The community is dismissive. Now we dismiss that.
[00:54:40]
Okay. You know what? I'm just not going to respond to it.
[00:54:44]
Okay. Solved.
[00:54:48]
But the part about the community being small, that I feel like we have a lot more grasp on it so we can organize conferences, we can blog more about Elm, we can join JavaScript conferences and talk about Elm over there like Richard did so often.
[00:55:10]
And I think that's how most of us have known about Elm.
[00:55:16]
Yeah, I think that's a big one is it's so easy to get settled in a small, cozy community and become this impermeable bubble.
[00:55:23]
And like we all think Elm is great and we can't fathom why no one else uses it, but like no one else even knows what Elm is because we never leave our bubble to tell them about it.
[00:55:32]
So there's one thing that is maybe a bit of a tangent, but there's a lot of people who criticize the fact that there is not a lot of pull requests being emerged.
[00:55:43]
And so people saying that they're making pull requests to the core packages or the core tools.
[00:55:52]
But I feel like we could have a lot more activity in the community projects.
[00:55:58]
So like Elm UI doesn't have that many people contributing to it. Elm Review doesn't have that many to it either.
[00:56:05]
There's a lot of very cool projects, tools, ideas as mentioned as well, which could absolutely benefit from more contributors.
[00:56:16]
And if people don't join a project at some point, it's likely that the author is going to leave the community because that's what people tend to do.
[00:56:26]
They for different reasons, because they go to other languages or because they have their own life next to the Elm community.
[00:56:36]
Apparently, I haven't been there yet.
[00:56:44]
Or the burnout, which doesn't happen because Elm is a wonderful language and people don't burn out working with us.
[00:56:51]
But yeah, I feel like if you want to improve things, you can contribute to the community either by writing blog posts or by helping out your favorite tool or library.
[00:57:02]
Like Elm doesn't stop at the core packages and the compiler. There is so much more to do and there's so much to be done.
[00:57:11]
And if you want to help out, reach out to your favorite maintainer, which might be Dillon, which might be Martin, which is probably not me.
[00:57:26]
And ask if you can help or if you can do something.
[00:57:30]
I feel like that's something that we don't see all that much in the Elm community, probably in part because we're such a small community.
[00:57:37]
Like in the JavaScript world, you have people knocking at your door all the time because there are so many developers.
[00:57:45]
The community is so big. But I do feel like there is plenty of opportunity to contribute to those tools or to organize conferences.
[00:57:54]
That would be amazing as well.
[00:57:56]
Please organize conferences. I want to go to a conference.
[00:58:00]
Please do.
[00:58:01]
Probably in Sweden.
[00:58:03]
Yeah, and I totally agree with all that.
[00:58:07]
And there's so much you can do too for preventing that open source maintainer burnout too.
[00:58:15]
I know for me, creating small reproducible examples if you find an issue or giving a concrete explanation of if you are requesting a feature, like what problem you're trying to solve, an example of how you're trying to solve it now, things like that.
[00:58:35]
To me, I think people can look at open source as here's a free thing that someone is building and I can ask them to build more things or expect them to build more things or go in a certain direction with it.
[00:58:52]
And to me, I see open source as like, here's this thing that someone is putting out there. And if there's a problem that I need to be solved, the source code is right there.
[00:59:05]
I can go solve that problem for myself and now everybody can have that problem solved.
[00:59:10]
Or there's like an Elm review rule that I wish I had.
[00:59:13]
Well, I don't have to go ask you to build it, because not only is it open source, but it's like a plugin ecosystem so I can write my own Elm review rule and start using it for myself and other people can use it.
[00:59:26]
But, you know, I think, yeah, be the change you want to see in the Elm ecosystem. I think that is super powerful stuff.
[00:59:33]
And then the question of the better IDE support, that is actually my personal, you know, Martin, you were asking like, what is the biggest pain point for us?
[00:59:43]
I wouldn't frame it as a pain point though, personally, because if I look at like my experience using VS code with JavaScript or TypeScript, which is good, but my experience like editing Elm code is better than that.
[00:59:59]
It could be worse.
[01:00:01]
It could be much worse. It just has so much potential because of Elm's guarantees. And there's so much more I want from the IDE experience in Elm.
[01:00:10]
So that's my biggest pet project. And I think that it would have a multiplier effect for everything else we see in the ecosystem if we had world class refactorings and editor tooling.
[01:00:24]
So I would love to see that.
[01:00:26]
I come from like before Elm, I was a C sharp dev. Yeah. And Visual Studio. I know some people prefer Visual Studio code.
[01:00:35]
I don't understand why, because I think Visual Studio with the caveat of it tends to crash a lot. But when it's not crashing, it's amazing.
[01:00:43]
Yeah. And ReSharper?
[01:00:45]
Oh, yeah. And ReSharper on top of that. Yeah. It's like nothing compares to that, at least in my experience.
[01:00:52]
And so that's why I complain about Elm's IDE, because that's the standard I got spoiled with.
[01:01:00]
Yeah. Yeah. I mean, I've done like a decent amount of Java programming and like going through a Java code base with an IDE only and having it like generate all the code you need or like invoking a function as if it exists.
[01:01:18]
And then having the IDE create the correctly typed function placeholder for you and then refactoring things and pulling out code and inlining.
[01:01:28]
It's like you can get by without directly typing any code for hours, just refactoring Java code.
[01:01:37]
And it's amazing. And I want that in Elm so much. And like in Java, you have, you know, something could throw a runtime exception.
[01:01:45]
Something could have an array index out of bounds exception and all these types of things.
[01:01:50]
In Elm, if you're doing that refactoring, you don't have to look back because you're using your IDE to like flow through all those changes.
[01:01:58]
And you can trust them because there aren't as many asterisks as there are that when you do this in Java, it's probably safe.
[01:02:07]
Your code is probably not breaking, but you're not 100 percent sure.
[01:02:10]
This is one of the reasons I'm looking forward so much to Richard Feldman's Rock programming language, because it's promising to have an IDE built alongside the language.
[01:02:21]
And to me, that's like Elm with the promised IDE, like the best possible IDE Elm could have. Rock might fulfill that.
[01:02:34]
But I think he said he would only want syntax out of it and nothing more.
[01:02:39]
I hope you heard wrong.
[01:02:44]
Well, should we should we hit on what what do you like most about your use of Elm?
[01:02:49]
All right. Yeah, I think the top one type system slash safety slash type driven development.
[01:02:56]
Yeah, 100 percent. I guess it's a pretty close call.
[01:03:01]
It's like it's almost tied with compiler error messages, which yeah, also that one's really good.
[01:03:06]
Oh, man, there are so many good things in that list. Ease of refactoring slash maintainability.
[01:03:11]
And then if it compiles, it works. That phrase popped up so many times in its literal form.
[01:03:17]
I mean, these could be Elm Radio episodes.
[01:03:21]
That's true. There you go.
[01:03:25]
I mean, yes, so much of what has been written here is just like what we covered in Elm Radio in so many episodes.
[01:03:33]
I think I think that in the ecosystem, we will more likely be agreeing on what is very good about Elm than in JavaScript, for instance.
[01:03:45]
Like, I'm not sure what people would answer if if we asked that question to JavaScript developers, like, what is the best thing about JavaScript?
[01:03:54]
But I know what it will be for Elm. It's like no runtime exceptions and maintainability through type system.
[01:04:02]
Maybe or through some other means. But yeah, the reliability of Elm and the experience of Elm will be in the top for sure.
[01:04:12]
For JavaScript, I'm not sure what people will reply.
[01:04:16]
Yeah, although I would love to see over time, like because these are things about Elm.
[01:04:22]
I would love to see more things about the ecosystem and the tooling and, you know.
[01:04:31]
Elm, you got three votes.
[01:04:34]
Yeah, which, you know, perhaps people don't think to put that here because it says, what do you like most about your use of Elm?
[01:04:41]
But I would hope that like these, there's so much potential to what you like.
[01:04:48]
Elm has this core that gives us so much we can do with it.
[01:04:53]
And using like code generation tools and these sort of more meta frameworks that we're seeing, you know, Elm SPA and Elm pages.
[01:05:02]
I hope that we see more of that kind of exploration in the coming years and that that becomes more of what stands out to people about Elm.
[01:05:09]
You know, like a lot of people love Elm UI and that's, you know, we've got some some responses in there about that.
[01:05:16]
I would love to see that taking up more and more of people's responses of what they love about Elm.
[01:05:23]
And I think that that is one of the best things we could do for Elm's growth is to like help people understand these things out there more and see more exploration in these areas.
[01:05:35]
Yeah, I agree. It's really cool what the community has come up with so far.
[01:05:38]
I'd love to see what happens in the future.
[01:05:40]
Also, three people picked Elm Review as positive things about Elm.
[01:05:47]
I think one person picked Landera and it wasn't me.
[01:05:52]
It wasn't me for Elm Review either.
[01:05:55]
There you go. So four people. Four people like Elm Review.
[01:06:01]
You also have a few questions about Elm Review.
[01:06:05]
Yeah, that's true.
[01:06:06]
So, yeah, you have a question. Do you use Elm Review and 22% say that they use it regularly, which I find to be surprisingly low, to be honest.
[01:06:18]
Just to compare it with Elm Format, where I think 90% of the people use it.
[01:06:24]
I think that Elm Review is still in the early growth trajectory.
[01:06:29]
I remember in the earlier state of Elm surveys, like at Brian's Elm Europe talk where he was presenting about the 2017 results, Elm Format was like a big new thing.
[01:06:43]
That was probably in a similar point in time relative to its initial release compared to Elm Review now. That was one of the big questions.
[01:07:00]
Would people not want to use Elm Format in some cases and why?
[01:07:05]
So I think this will be a really interesting one to keep an eye on for next year's results.
[01:07:11]
Yeah, I think what surprised me most is that I have this bubble of information where I talk about it all the time and people seem to really like it.
[01:07:22]
So my feeling is like almost everyone is using it around me at least.
[01:07:29]
And then there's this somewhat low number.
[01:07:33]
So I feel like, yeah, the responses that I get from people are not what matches my experience.
[01:07:40]
For next year, maybe I should add an additional filter, which is like you can view all answers or answers in your bubble.
[01:07:47]
Oh, yeah, absolutely. That's why you create an account. So now it's a social network.
[01:07:55]
Exactly. You hear the things you want to hear.
[01:07:58]
What percentage of Elm Review users listen to Elm Radio or what percentage of Elm Radio listeners use Elm Review?
[01:08:05]
I bet there's a bit of a correlation there.
[01:08:08]
Probably. Also, quite interesting that Elm S.P.A., there were around 800 and some total participants, right?
[01:08:19]
And Elm S.P.A. had 145 people who responded that they're using it. It's quite large.
[01:08:26]
So that's a real trend. I'd say that's a notable trend lately.
[01:08:31]
You're looking at the what frameworks do you use question?
[01:08:34]
Yes, I am. Yeah. And 80 people said they use Elm Pages. So that's a cool trend, too.
[01:08:40]
And I'll be really keen to see what happens in the next year or two after I release version three,
[01:08:48]
which is going to be a more general purpose, something for kind of pulling in dynamic data, including user data.
[01:08:56]
That'll be really interesting to see what kind of use cases people use it for.
[01:09:02]
And then there's a humble Lambda with half as many users as Elm Pages, at least according to the question.
[01:09:10]
Yeah. Yeah, it would be interesting to know in what context people use these two.
[01:09:16]
Like, I'd be curious to know how many people are using Elm S.P.A. in production.
[01:09:20]
How many people are using Elm Pages in production? Are they using it for a marketing page, personal blog?
[01:09:27]
How many people are using Lambda for hobby applications?
[01:09:30]
How many people are using Lambda for work? I'd be very curious.
[01:09:35]
Actually, there is a specific question for Lambda, which is surprising now.
[01:09:41]
That is surprising, Martin.
[01:09:44]
Especially coming from you.
[01:09:47]
Sorry, I didn't understand which question are you looking at?
[01:09:51]
No, we were saying it's surprising that you didn't have a specific question for Lambda.
[01:09:57]
Oh, well, yes, I was thinking everyone's going to think I'm so biased if I do that, so I won't include that.
[01:10:05]
I mean, it's state of elm.lambdera.app. It's biased already.
[01:10:13]
Yeah, well, you know what? Maybe what frameworks do you use should just be 100% because you're using this survey.
[01:10:18]
That's true.
[01:10:20]
And on top of that, Elm Pages, what, does it use the Elm, the Lambda compiler now, right?
[01:10:25]
V3 uses lambdera, so that's right.
[01:10:28]
Yeah, exactly.
[01:10:30]
Checkmate.
[01:10:32]
But do those projects use Elm Review?
[01:10:35]
Yeah.
[01:10:37]
Elm Pages does use Elm Review.
[01:10:40]
Okay, and the projects I've made that use lambdera basically all use Elm Review.
[01:10:47]
Does the state of Elm survey code base use Elm Review?
[01:10:50]
It does. It was actually quite useful in detecting, well, not all instances of, but it was quite useful in detecting some instances of me forgetting to include questions.
[01:11:00]
That's good.
[01:11:02]
It couldn't catch everything because the no unused package doesn't detect unused fields.
[01:11:09]
Oh, yeah. Yeah. Yet.
[01:11:11]
But it was at least one level of security against me just totally forgetting to include a question in the survey.
[01:11:20]
The second layer of defense was, I think it was Jeroen, you asking me, hey, where's the test questions?
[01:11:28]
Yeah. In the results.
[01:11:31]
Yeah, exactly.
[01:11:33]
Well, Martin, are there any things on your mind for the survey next year that you might want to gather more information about?
[01:11:42]
If I'm honest, I'm thinking more about what questions can I remove?
[01:11:46]
And that's because, you know, I'm the one who has to categorize all this.
[01:11:50]
Yeah.
[01:11:51]
But part of it also is I think there's a risk of just, you know, everyone wants more information, more data points so they can like get finer and finer like conclusions about the community.
[01:12:05]
And I think there's a risk that as you do that, eventually people go like, I don't feel like answering this question.
[01:12:10]
I'll skip it because there's too many other questions.
[01:12:13]
And so the quality of the data worsens.
[01:12:15]
So I think it's important to always think about when you want to add a question, what question would you want to remove?
[01:12:23]
Because like, I think the survey right now, there's 23 questions that the user answers.
[01:12:30]
And I don't know, maybe 23 is the magic number or maybe it could be more because with State of JS, it felt a lot longer than this one.
[01:12:39]
I don't remember how long it was.
[01:12:40]
Yeah, I agree.
[01:12:42]
Yeah. And then like, I was, I think I answered everything in it, but I was just kind of like, you know, like none or maybe, or, you know, the quickest possible answer on some of them.
[01:12:50]
Because like, I don't care about half these questions.
[01:12:52]
I just want to like say I use Elm.
[01:12:56]
Like part of the State of JS.
[01:12:58]
Yeah, there were also a few questions like, do you know about this new API that has landed in JavaScript recently?
[01:13:06]
Right.
[01:13:07]
Like, there were like maybe 10 questions just for that.
[01:13:10]
Yeah. 90% of the time, my answer is like, no.
[01:13:14]
Yeah.
[01:13:15]
Right. And then people probably bias the data because they want to sound smarter.
[01:13:20]
So more people say they've heard of things.
[01:13:23]
I mean, you could ask a question like, do you use list.map?
[01:13:27]
Do you use maybe? Do you use results?
[01:13:30]
And if you don't have 100% over there, then it feels a bit weird.
[01:13:34]
And then ask a question like, do you use list.scrape, which doesn't exist?
[01:13:42]
And if any answers that say yes to that, you can say, oh, these are, they're not Elm users.
[01:13:48]
I can mention real quick.
[01:13:50]
So some of the multi choice questions, so the ones where you could pick multiple answers, sometimes they had answers like, well, for example, do you use Elm?
[01:14:00]
There's both yes and no in varying forms.
[01:14:03]
Okay, actually, hang on. That's a bad example.
[01:14:05]
Because specifically on that one, if you click no and then click yes, your no answer gets removed.
[01:14:10]
So that's a poor choice.
[01:14:11]
But there were some other ones where you could say, like, for example, what programming language do you use on the back end?
[01:14:17]
And one of the answers is not applicable.
[01:14:20]
And then, of course, there's a list of programming languages as well.
[01:14:22]
And there's nothing stopping people from picking not applicable and the list of programming languages.
[01:14:27]
And I let that slide.
[01:14:28]
One, because I'm lazy, but two, because I figured if I need to go through and figure out who spammed the survey with junk data, that's one of the like canaries is, did they fill in both of those?
[01:14:41]
If they did, okay, that's a junk one. I can get rid of that.
[01:14:43]
Interesting.
[01:14:44]
So, yeah, yeah.
[01:14:47]
A little thought went into that.
[01:14:49]
Yeah. Well, again, I'm very glad that you went to the effort to do this again.
[01:14:55]
It's great to have the results back.
[01:14:57]
Thank you very much.
[01:14:58]
Should we, should we share a few of these warm fuzzy quotes for what do you like most about Elm that you have at the very end here?
[01:15:08]
The one specifically I wrote down in the comments or?
[01:15:12]
Yeah.
[01:15:13]
Okay.
[01:15:14]
And I mean, I could go through the list, but I think, yeah, I think these are the, well, there were so many.
[01:15:21]
It's hard to pick a best.
[01:15:22]
Yeah.
[01:15:23]
Let me try my best narrator voice now.
[01:15:27]
Elm always felt like what Apple wants its products to be actually done right in programming language form.
[01:15:34]
That isn't entirely a positive, but I've never had an experience before or since where everything just worked, trademark.
[01:15:42]
So well, so long as you stick to the type of problems Elm is good at.
[01:15:46]
And then someone else said all of Elm's typically touted strengths recently as I have onboarded new engineers.
[01:15:53]
It's been great to see how quickly they pick up Elm.
[01:15:55]
And the last one, web apps that work reliably.
[01:15:59]
And in my experience, even less experienced software developers generate more stable code when working in Elm than in other languages.
[01:16:06]
I actually really love that last one.
[01:16:08]
That's been my experience too.
[01:16:09]
Like I was coaching a team once that was using AngularJS and they migrated to Elm and they were saying it was very difficult for them to figure out how to, how to approach a problem in AngularJS.
[01:16:26]
And with Elm, they felt like, Hey, like my first thought of how to approach a problem, I might hit a dead end.
[01:16:33]
But I kind of like that because then I know that wasn't a great way to solve the problem and I go a different route.
[01:16:39]
Whereas in AngularJS, they go and they try to use some API and then it's, Oh, you're not supposed to use that API.
[01:16:46]
That's not a good, good practice that's frowned upon.
[01:16:49]
Yes.
[01:16:50]
The pit of success concept.
[01:16:52]
Yeah, absolutely.
[01:16:54]
The Apple one resonates too, because, you know, yeah, yeah.
[01:16:58]
I picked it because like, like, like they literally say, this isn't entirely a positive, but like I picked it anyway because it resonates so well with me too.
[01:17:07]
It feels like an Apple product in some ways where it's like, well, maybe I should let you explain what you think of it and not just talk over you.
[01:17:16]
Well, no, no.
[01:17:17]
Well, I was just going to say it's like, yeah, there are pros and cons.
[01:17:20]
Exactly.
[01:17:21]
And it's, you know, the Elm takes responsibility for the user's experience in a pretty dramatic way.
[01:17:31]
There are pros and cons to that.
[01:17:32]
If you don't take responsibility for the user's experience, they can sort of go anywhere they want and do anything they want any way they want.
[01:17:41]
And there are pros to that.
[01:17:43]
There are cases where that's kind of nice, but, you know, so there are tradeoffs.
[01:17:48]
And I think the Apple analogy captures that pretty well.
[01:17:52]
I remember at my previous job, someone came up to me because I was the resident Elm expert and they asked me, can I do metaprogramming in Elm?
[01:18:02]
And my answer was just no.
[01:18:05]
And I thought, like, if this was another language, you would have probably been, well, maybe you could probably do it in this way, but might not be advisable.
[01:18:13]
And like, there's the risk that they go off and spend a couple hours on it, make something and it works, but not so great and everyone suffers for the rest of time.
[01:18:22]
Your decision to do that.
[01:18:24]
Not to say metaprogramming is like just always bad, but like in Elm, you don't have to consider the tradeoffs.
[01:18:30]
It's just you can do code generation or you there's other ways to work around it that are more stable.
[01:18:36]
And yeah, there's one good way to do things usually.
[01:18:40]
Yeah, there are not a lot of foot guns available in Elm.
[01:18:43]
You have to try pretty hard.
[01:18:44]
Yeah.
[01:18:45]
All right. Well, thanks again, Martin, for doing this survey again and for coming on the podcast.
[01:18:52]
If people want to follow you or find out more about what you're working on, where's a good place to do that?
[01:18:57]
I've been meaning to make a blog in Elm pages, but I just haven't gotten around to it.
[01:19:02]
In the meantime, just I guess you can like watch my GitHub account and when new repos appear, then you know what I'm working on.
[01:19:10]
I don't really have like a social media presence.
[01:19:13]
So that's I guess check Discord. I'll probably announce new things there, too.
[01:19:18]
Yeah. Just put put like a search notifications for Lamdera in the discourse.
[01:19:25]
Oh, and of course, if you find problems with the survey, like in addition to the things we've already found now with like misleading information and what not.
[01:19:36]
Yeah. Please make a GitHub issue for it. It's fine if you tell me slack as well.
[01:19:40]
But there's a risk I'll forget it. So I try to collect all the problems people find there.
[01:19:45]
Fantastic. Great. Well, thanks so much. And Jeroen, until next time.
[01:19:50]
Until next time.