Elm Town 85 – Wander: Elm Camp 2025
John: I could feel like the spirit of Elm Camp within me was with me in Ronora at, you know, in Watervliet, Michigan.
Jared: Hey folks. Welcome back to Elm Town. I'm your host Jared m Smith. We'll be visiting with the Elm Camp organizers today.
[00:00:14] Sponsored by Logistically
Jared: But first, let's talk about our sponsor Logistically. At Logistically, we make intuitive software to help logistics teams make better decisions and improve efficiency. We build the front end for all new features in Elm.
If you're interested in our mission and enjoy writing Elm, please drop us a line Elm Town at Logistically inc.com. I'll put a link in the show notes.
[00:00:35] Elm Camp sponsors
Jared: And now I'm going to turn this over to John Pavlick, who is going to introduce the Elm Camp sponsors.
John: Yeah, we'd like to just take a second and, uh, thank our, our sponsors for this year. NoRedInk and Concentric. We put on Elm Camp more or less, you know, we do it at cost and it really, really helps us out a lot to have sponsorship from companies that are benefiting from the work that we all do as a community.
And, uh, really grateful for that. And, uh, thank you very much. Hope to see you next year.
Jared: all right, thank you John.
[00:01:09] Introductions
Jared: And so I'll just go around now and introduce everybody. So, uh, John, who was just speaking, John Pavlick, and then there's Wolfgang Schuster is on with us as well as Tristan Pendergrass. And then John, if you'd just start and introduce yourself a little bit.
John: Yeah, sure. John Pavlick. I've been in and around the Elm community for about eight years now, and, um, I've gotten to do it professionally at a, a few different places, and really enjoy the language and, probably more than that even, I really enjoy the community and the people. Um, I've learned so much from, you know, from being on Elm Slack and the Discords and really enjoy getting to be a part of that and, uh, had a lot of fun helping to organize and, and to execute Elm Camp this year.
Jared: Thank you so much, John. And would you mention a couple of those companies that you've worked at?
John: Oh,
Jared: recognize them.
John: well I did, I did do a shift at Vendr, um, you know, the Vendr. That was, that was a wild time. Also did a little bit of Elm at a auto refi company called Caribou. Big shout out to Jason Fry and David Burkett. And , Tony and the rest of the gang that I worked there worked with there for a little bit.
Tony, @abradley2. The, the person that has done a lot of the really good elm-codegen translation work. Check that package out if you haven't seen Like elm-codegen came out and then the next day Tony posts in like the group chat, like, Hey, I made this, like 24 hours. He's a monster. Um, uh, where else?
There's another place, you know. Oh, I did Elm at Appy AI for a little bit, followed some of my friends over there and worked at Aaron White's current AI venture for a little bit. And now I'm off to, uh, a new adventure at Storage Mart, working with Shahn Hogan and a few others and doing some e-commerce.
Jared: Uh, all right, Wolfgang, you wanna introduce yourself a little bit? I know we've, we've heard you before, but kinda what you've been up to then, an update.
Wolfgang: it's great to be back. Uh, what have I been up to? Still maintaining my open API SDK stuff with Leonardo and, uh, Adam DiCarlo and a few others. Still writing about Elm when I can. I, I, I know I have a few projects that I have Elm Camp kind of, kind of triggered ideas for me, I guess, of things that I, I want, I want to go experiment and play with.
Other than that, not writing Elm currently, I wish I was writing more Elm currently, but busy with life and house stuff. So that's, that's mostly where I've been at lately.
Jared: Maybe we will, uh, be able to talk about the new or your ambition to, uh, work on a few of those. Ideas
Wolfgang: Yeah. Yeah.
Jared: yeah. All right, Tristan, you wanna introduce yourself?
Tristan: Hi everybody. I'm Tristan and I've been in the Elm community since, properly, since 2019. I would say when 0.19 dropped, that's how I remember that year. And so in that time, I've never written it professionally, but I write it in my personal time, uh, pretty much exclusively.
I do a lot of side projects and Elm is always pretty much my choice for that. Uh, 'cause it's just fun to write in. And there's also the whole no runtime errors and all the amazing packages that are in the ecosystem, of course. The Elm community gives back a lot to me, in the form of help, like writing amazing packages, helping me when I get stuck, which is a lot. And of course the community, it's a lot of inspiration to build stuff, seeing what other people built. And Elm Camp, which we're here to talk about today is just like a extremely concentrated dose of that, uh, inspiration, uh, seeing everyone in person and being there, um, and seeing their projects and talking to them.
Uh, I always come home wanting to do a lot more of that. Uh, in my day job, since other people mentioned, uh, I'm a, uh, front end developer at Dropbox. There's no Elm done at Dropbox. It's just a React and Typescript shop. Although I did write a couple of extensions, during their hack week for Dropbox employees to use, and I used Elm there 'cause no one could stop me.
Uh, so there's like a little bit there. It's not properly in their code base, but it was used by like a handful, more than a handful of developers. So
Wolfgang: Nice.
Tristan: it's all pan out a bit that way.
Jared: Nice. Yeah. I wonder if it'll be a little bit of, uh. Elm is not there yet. Is is what? Uh, I'll say. Yeah. Maybe. It sounds like, uh, you're doing your best.
Tristan: yeah. Yeah, I could. Uh if there's ever an opportunity, I, I've noticed, like I've brought it up a couple times in like the web dev coffee chats and people are always like, oh yeah, I've heard of that. But I don't know, such a large, uh, engineering code base, it's a hard ship to change. So I don't really have any plans on that, but maybe
Jared: yeah, yeah. Even internal tools. I find that to be, um, nice because yeah, kind of like with personal projects, right? Like you, you can work on it even if you don't get to come back to it for a while. It's not like you're gonna have to go upgrade a bunch of libraries or pick the new stack or whatever to get it to work.
Okay. Cool. Thanks Tristan.
[00:06:27] Setting the scene
Jared: I'm just going to, uh, go back to John here and ask you. A little bit. So actually to folks before, let me uh, preface this. If you're just listening to this, you are not watching this. Uh, John is currently outside. Uh, maybe you've heard a couple of birds chirping in the background.
That's from John and, uh, there's some trees behind him. And so, um, with that, would you describe a little bit about Elm Camp, where that was and the, the set the scene a bit for us?
John: So I live in Michigan. This will become important soon. Um, a little foreshadowing. I live in Michigan. International travel is not my forte. I have done it twice to go to Elm Camp the first year, and then to go to Elm Camp the second year.
So when I was going to Elm camp the second year, I managed to get myself to England a whole day early with no plan of where I was going to spend Monday evening.
I talked to some of my other friends that I knew were going and they said, Hey, well you can, you can come hang with us for the night.
We got you. It's like, all right, good. Okay. So, uh, international travel tip, have friends there. That's it. That's the only tip. Um, so I, uh, ended up getting to go to the grounds for Elm Camp a day early because my friends were on the organizing board and I helped set up a little bit and I thought, Hey, this is fun.
I'm friends with the people on the organizing committee. I should join. And, uh, I did and it was great. And, I learned right off the jump probably around July or August of last year. The number one, uh, thing when you're trying to schedule Elm Camp is finding a suitable venue. And we were talking about the requirements for a suitable venue.
You know, it needs to accommodate so many people. It needs to be in a fairly remote location where, uh, the attendees can sort of just, you know, not have a lot of outside distractions. And, um, I said, well, I live in the Midwest, there's like 20 places that fit the criteria, and that would come in under budget that are within two hours of my house.
So I pitched this little place called Ronora, uh, it's like a retreat center slash campground in, uh, Southwestern Michigan. So if, you know, if you get the joke down here or so, the Indiana part of Michigan, and, um, to my surprise, it ended up being a good fit for the event and for the, you know, the, our, our budget.
And we were able to find caterers and the, the organizing committee said, Hey, let's go forward with having Elm Camp in Michigan. And, uh, so it was honestly kind of like my house. Well, there's not like a, there wasn't a road immediately there with cars flying by on it, but, um, green, mostly pine trees, birds.
Uh, it was, it was Elm camp at a campground, so it was like Elm Camp, Camp Edition. Um, and, uh, it was kind of different from what we've done in years past. And, I think that everyone that attended, at least I got the impression that everyone had a pretty good time. And, uh, as far as limiting outside distractions, we barely even had internet access.
So
Tristan: A way
John: I think, we think we nailed that one. Oh yeah. Oh yeah. Oh yeah.
Wolfgang: There's an appropriate amount of internet access.
John: There was, there was. But only barely. And uh,
Tristan: If people aren't actively
John: have for next year.
Tristan: then it's too much internet. Yeah.
Wolfgang: But yeah, it was a good, it was a good space. Like there was, there was a small lake there that people went out and swam on. I don't know if anyone took boats out or not. I didn't hear one way or another. Okay. But
John: It was excellent.
Wolfgang: there were some hiking trails. There was some horses, even a tiny horse that people were feeding grass to. So yeah, it was, it was, it was a good setting. Good location. Yeah.
Jared: Yeah.
Tristan: Yeah. My wife got a good picture of that, of that pony. I think, uh, if people, if that's people wanna see it, it'll be in the, uh, pictures we distribute for, for Elm Camp.
Jared: Cool. Yeah, I'll add a, a link to that in the show notes. yeah, so animals, lake, and for me the trails were nice. I like to to hike a lot, um, move my body. And so yeah, just being able to get out and walk around and be in nature and away from distractions, it felt like, uh, this was my first Elm Camp, so my first experience with it, so I don't know how it compared to other years, but as far as for me, uh, and I'm in Indiana, so it's, you know, I guess, not too different as far as the geography there.
So, um, yeah, it's amazing.
Wolfgang: Yeah, I would say the vibe was pretty similar overall. I mean, the, it was different in terms of the two prior years were all in a single building. And this year we had, I mean, most of the sessions were concentrated, most of the hanging out was concentrated in like the main hall building. But having people separated out into separate little like cabins or houses that they were staying in during the, during the camp that was different, made it kind of fun.
I know on the first morning it was raining a little bit when I went to go to the main hall. Um, thankfully not too bad, but I think that, so that experience was slightly different. Having to be out in the weather one way or another versus in the prior two years, like if it rained, we were inside the entire time, it didn't matter.
I don't know. It was kind of a nice little different, and the, I think the campgrounds were a little bit nicer this year for the people who did camp. I know people camped last year. I don't think anyone camped the first year. But it definitely felt like the camping accessibility was a little bit better this year.
Jared: Anything else about the place before we move on to other parts of the camp?
John: We got really lucky, I think, the weather was supposed to be like. Around the time that you could tell what the weather is supposed to be, it started to become apparent that we were in for what seemed to be a rough time. It turned out that like we were forecasted for extremely hot days with like a hundred percent chance of like absolute downpour thunderstorms.
And we only got actively rained on for about three minutes once after I insisted that we all go outside for a session and then, you know, immediately started, immediately started raining. Um, and we didn't get to have our bonfire on the last night because of the rain, but for the most of the rest of the time it was pretty clear and it wasn't, wasn't too bad.
Jared: yeah, yeah. And there was a heat advisory, but it broke I think, like right before it started. So that was, I was worried that it might be a problem, but no, not bad.
[00:13:15] Unconference format
Jared: Uh, and then as far as the conference itself, um, we've talked about this in the past episodes as far as the format of the conference.
Wolfgang, if you want to talk a little bit about that and then, um, Tristan and John, you can kind of fill in other parts.
Wolfgang: Yeah, so Elm Camp, unlike traditional conferences is an unconference, which means that instead of having a person standing up on a stage, speaking out at an audience, it's more of a group of people hanging out together. Could be in a big hall like a lot of the sessions were this year, or it could be in like a living room.
Uh, like a few of the sessions were this year just kind of sitting around in rocking chairs and couches and chatting about whatever it is you want. Uh, we usually try to plan some type of theme for the sessions ahead of time, but it's can very well change. I know that definitely happened in some of them or can run long.
Uh, if you're going to your typical conference, you, your session starts at 10 o'clock and it ends at 10 51 and they try to clear out that room real fast and we don't have to deal with that. We can let people gather, we can have them leave and go take the session elsewhere. I've, I've heard it compared to the hallway track at a normal conference.
I would also say too that, uh, someone from from the camp pointed out to me that it's a lot more relaxing than a traditional conference. They felt like when they go to like AWS conference, uh, that it is very, very scheduled, very busy, lots of people you're not expected to necessarily interact with, but you're expected to interact a lot and this is more casual, a lot more relaxing.
They almost felt like they were on vacation compared to a regular conference.
Tristan: Uh, I would add to that, another advantage besides it being more relaxing is if, uh, yeah, it kind of allows people to bring up topics that they want to, uh, in an organic way. So the, we don't come to Elm Camp with any notion, like there's gonna be a conversation about anything specific. Maybe the attendees come, a lot of them do intent on talking about either a topic or a library or something, and then it happens.
But, I think at like a normal conference, you'd have to like, talk to the organizer ahead of time about that, and that might, that friction might prevent someone from presenting at all and never gets talked about. But it's not really a danger here. We, we invite everyone and I think, uh, to, to talk about it.
And since the, that decision happens at the conference and it's all like very organic, like you said, it, it just brings out more good info and more good talk ideas from everybody.
Jared: Yeah, that's a good point. John, did you have.
John: Yeah, I wanna say around six or 7:00 PM on the first day I cer when people were still arriving, I started to feel like, wow, I can't believe it. But this feels like Elm Camp and most of the attendees here have not been at previous Elm Camps. Most of our attendees were from the US this year, and most of our attendees that were from the US had not been to Elm Camp previously.
And it was crazy to me that we just get all of these Elm developers in one place, or even just Elm enthusiasts together in one place and the same sort of dynamic is just there. It just happened and I felt like I could feel like the spirit of Elm Camp within me was with me in Ronora at, you know, in Watervliet, Michigan. I also felt like it was a little bit more discussion heavy and even a little bit more unstructured than in years past this year. And, uh, I really enjoyed it. It was, it was really cool. Um, I remember on like Tuesday or Thursday morning, like, you know, 9 0 5 and some of us were still eating breakfast and I looked at Tristan and I said, we should probably get session planning going for the day, right?
And he said, probably, but you know, there's a lot of good discussion going on right now, so maybe we just kind of let it sit a mouthful of food. I said, sounds like me. And we didn't start session planning until around 10 o'clock and it was great.
Jared: Uh,
Wolfgang: Yeah. I was gonna say too, like it definitely feels, I think why that kind of happens is at a traditional conference you almost have the speakers are kind of separate from the rest of the crowd. At a certain level, they're set at like, oh, there's a status level to the, the speakers. And at Elm Camp or any unconference, everyone's just there together on everyone's just hanging out.
Jared: Yeah, I'll say from my perspective as my first unconference as well as, uh, Elm Elm Camp, I don't know what another unconference would be like, so I can't compare it to another, but, um, from my experience, it felt like I was an organizer in the best way. Like, and by that I mean like, I didn't have any set responsibility, but I felt like I could easily contribute to, , session ideas. Within a session I felt like, okay, we're gonna talk about this thing and, you know, I don't need to lead the discussion even if I brought up the topic, which I, I did that, I brought up topics and then did not lead to the discussion. Um, and then. Um, if there was a topic that maybe folks were talking, and then suddenly I had something to add, but it wasn't enough where I would go through the process of, you know, submitting the talk and then building all the slides and practicing and, you know, and presenting and, and being, having this, you know, perfect, you know, I know the answer solution here.
Instead. It was just like, oh yeah, this is what I do. And so yeah, it definitely felt more like a conversation. It felt like, uh, a contribution and yeah, it was very laid back, as you said, John. and also something that, uh, you mentioned at the beginning is that it was sort of a, a circle, but an open circle.
I don't remember the exact term you used, but like the idea being that you could leave it open so that other folks could join into that conversation. Or if you're in that conversation and you maybe wanted to see what the other topic was, and there was no like, you know, awkwardness if you decided to just get up and walk off.
So yeah, it felt very much like the, the hallway track. And, uh, from my experience at conferences, I've been to ones and I, you know, when I first started I was just like, all right, I gotta get this and I gotta go to that and gotta do, and then after a couple times I was like, actually, I don't have to go to all the things.
In fact, I'll maybe go to one, meet some people, and then I might not go to very many the rest of the time and, um, have a much better time. So, yeah, that, um, that definitely resonated with me as a conference that sort of organized around the idea that there doesn't have to be this, you know, this one person speaking, everybody listening.
Maybe there'll be time at the end for Q and A, maybe not. Um, and instead more of like, everybody can sort of work together and cooperate and collaborate and yeah, have a good time. So yeah,
Wolfgang: Excellent. We did a good job Then I think.
John: I think so.
Jared: I'm giving a thumbs up to the, those that, um, that can't see. So, yeah. Okay. Anything else about the unconference as a format before we move on to sessions?
John: Yeah. I, I, uh, I had a thought earlier, while we were talking. It gives you a really, really great way to meet and to befriend the people in your community the format is so open and because there's such a, a, such a, I don't know, psychological safety, maybe around speaking up, most everyone has something that they want to say and have heard, and that gives you the opportunity to hear something that someone else says and to be interacting with them without necessarily the having to go through the process of walking up to them and sitting down next to them.
And as my five-year-old said when he was a three-year-old, what's your name, right? It's a lot. It's a lot less, it's like a lot easier to sort of meet people and to develop new relationships. And maybe you heard someone say something interesting and you thought about it and then you thought something later.
It would be cool to just walk up to them. When they're sitting in the main hall at dinner and say, Hey, you said something that kind of sparked my curiosity earlier. Can you tell me more about X, Y, Z? And now you've got a friend. It's just, it's crazy. It's almost like make how friend making friends felt when you were a little kid at the playground.
It's that level of like relaxed , invitingness, I guess. I don't know. But you, y'all get it.
Tristan: I get it. It's at a regular conference you might like, so someone gives a really good presentation or whatever and you just find yourself like, oh, I really want to ask them this thing, but I'll have to track them down after. There's probably like a gaggle of people around them. So like, you gotta like shoehorn your way in there to talk to them.
But here, no one is a VIP really. Uh, if you, if you wanna talk to them, you're going to have ample opportunity. That just, that makes the whole thing great. Uh, 'cause you're gonna get your ans your question answered. You're gonna have the conversation you wanna have.
Jared: Yeah. Yeah, I agree with all that, that, um, yeah, it felt like I was able to have deep conversation with nearly everybody at some point, whether it was during a, dinner or breakfast or, uh, on a hike or, you know, even in sessions, just the ability to, yeah, just be able to have that openness to say something without pressure to like, know all the answers, I guess, or, you know, feel like, yeah, you're kind of on the spot when it's like even Q and A, you think about it, like, you get a microphone and you know, you gotta go up there.
All right. This better be a good question. You know, I could ask a, what I might call, you know, just to, a silly question or maybe not like a high stakes question, just. This is just for me, you know, as opposed to having the sense of like, oh, this better be a question that is worth the five minutes that we have to, to ask questions.
So
Tristan: Yes, that's a good point. It's all the thrill and the pleasure of like getting to ask your question without the, uh, like the stress or the potential you don't get to ask it, which might happen at a non, at a regular conference.
Jared: I think there's probably a limit to how large of a conference you could have in this format. I don't know if y'all have studied other unconferences to see like what's the largest one that people have claimed to be a success. But I'd be curious to see, uh, you know, if you had a hundred people, if they could unconference without, uh, going wild, losing control.
So the riots on the, the streets of.
John: I, I, I wonder what a breakdown would look like if you hit some sort of critical mass. I, I just, I would wonder what it would look like for an unconference not to scale. Like would there be too many cool conversations going
Tristan: oh, you'd lose that element I talked about where it's like you can reliably track down anyone and have a decent conversation with them after the fact. I just looked it up and Dunbar's number is 150. That's like a relatively slightly arbitrary number of social scientists have come up with for how many people can be in your tribe or something and maintain.
I'm not sure how relevant that is to an unconference, but maybe that's an upper bound. I have the feeling, the true answer to my answer to your question, Jared, would be maybe, uh, roughly like twice as large as we were this year. Like 40 to 50 people would be, I would be skeptical it would work exactly the same way or as well above that, but we have plenty of room to grow at our current margin.
Wolfgang: Part of the original idea of Elm Camp was that there could be multiple, so there could be multiple unconferences. Like we could have a Europe Unconference and an America's Unconference and an Asia Pacific Unconference, and that would be fantastic. Um, you're not gonna get to talk to everyone, but you never do.
Having that level of, of breakdown though, and sep like separate conferences, I think would be very nice to have. , And it would give everyone that kind of community vibe and friend vibe I think that you would come to expect from, from Elm Camp.
Tristan: That's a tantalizing idea, Wolfgang, the idea of doing a Europe and an America one each year. If people in Europe this year really missed not having it, then they should let us know. You know, maybe it's something to think about in future years. I.
Wolfgang: Mm-hmm. Definitely.
Jared: we go. And so I believe there's a, an email address to contact the organizers. I'll put that in the show notes
Wolfgang: Yep. Yep.
Jared: with feedback also, and maybe this will segue us into sessions during Elm Camp, Henrikh told us about Feedback.one, which is, um, a tool to provide feedback and during Elm Camp it was put onto the Elm Camp website.
And so assuming it's still up there, I think it, I think it is, um, you could, um, put feedback in there as well. So, um, that's an option if you don't want to have to write a whole
Tristan: To elaborate a tiny bit on that, if you go to the website, elm.camp, there will be a little feedback widget in the right side of the screen in the middle and click on that and you will be seeing Feedback.one, a product built with Elm by Henrikh, as he said.
Wolfgang: Yeah.
[00:26:48] Sessions
Jared: So yeah, with that in mind, Tristan, you wanna talk a little bit about, um, some of the sessions and then we can kind of go around with John and Wolfgang.
Tristan: since we're on the topic, I'll just elaborate a little bit on, on Feedback.one. That was one of my favorite sessions. I think. Uh, one of my favorite things about Elm and one of the things I think will let it keep flourishing and let it flourish as a language, as a community even more is for, uh, real products , that are useful, to be like, it needs two things, right?
Like it needs, um, libraries and such to help us write Elm code better. and let people like me who mainly like make personal projects to write Elm more efficiently and with more fun. But it also needs, I think, uh, commercial endeavors. That, that use Elm to deliver and value to customers. So both of those are like pillars I think of, and I like to see them both represented at Elm Camp and they were this year with Feedback.one being an example.
And there was a, I think there was at least one other too, um, where someone talked about it. But uh, yeah, this, uh, this product where we got a demo of tour of the code base and, and a demo of it, was extremely exciting to me. How do we wanna structure this?
And we wanna like popcorn about our favorite talks. Uh, I think I'll just popcorn it to Wolfgang, uh, to talk about, a talk that you liked.
Wolfgang: Sure. Possibly a weird choice. Uh, there was, uh, someone who came to Elm Camp who doesn't write Elm. Uh, they write Go, and they had a little session talking about Bubble Tea, which is an Elm like framework for building text UIs, in Go.
And I just thought that was really, really exciting to see somebody who was there, not specifically for the language, but for the community, talking about some things still related, but separate somehow. Uh, it was just kind of a, it was a fun little different thing. It was kind of nice to see.
Jared: There's an Elm Town about that "Elm Town 81 – Inspired: Bubble Tea with Christian Rocha", where he shares his experience building that, um, TUI framework. And then, um, yeah, I thought that that was neat then to see, oh, well Wolfgang, of course, you know, with all of your experiments it showed how to, create a TUI, um with Elm, um, and, and how to actually do, which I mean really that idea, and maybe you can elaborate more, goes way beyond just TUIs, but just the idea that, oh, this is possible, um, with Elm was really exciting and made me just want to go, like, write all kinds of weird stuff.
So.
Wolfgang: yeah. Yeah. So that was going into that session. It was kind of interesting. I had been speaking with John I think the morning before and something about like hacking the Elm runtime to do things. Then, uh, there was the session for like building TUIs in Elm and I, I initially thought, oh, this is using Elm specifically, but ended up being about Bubble Tea, which was exciting.
And then I got to kind of show off some other thing experiments that I had done like a year or two ago with using Elm to write TUIs. And it was, to me it was exciting to see the differences of how you're using the same architecture but completely different approaches or different languages with the same architecture to, to arrive at a similar solution.
And I, I hope that inspired people to kind of go out and experiment in fun, different, weird ways. I think that's why the Bubble Tea thing excited me so much is I really like saying, okay, I have Elm. What else can I do with this that isn't normal? What can I do with this is is weird or maybe even taboo in a way, and seeing how far I can take it, which I, to me is kind of what Bubble Tea is, is saying, okay, here's this framework.
Where else can I put this framework? Or how else can I use this framework? And then mine was, I have this language, what else can I do with this language that is unintended? which is kind of where my, my ideas around, like I started thinking about, so, so you can build TUIs and you can render text from Elm into a terminal, in Elm, which is abnormal.
What else could you render into? Could you render it into native desktop stuff? And I don't know, I think it's pretty reasonable to be able to do it in a similar hacky way, but yeah. I don't know, maybe I'll experiment with it. Maybe someone else will get inspired and go experiment with it.
Jared: Yeah, I don't think it's as hacky as it, it sounds like, I mean. But I think maybe, um, for folks who are curious about what we're talking about, um, that blog series that you have may be helpful, which I'll add links to that, as well as the repo for the Elm TUI.
Wolfgang: Yeah. I don't think hacking in a bad way. I, I guess, I mean, hacker like thinking of like old school hacker who, who goes in and says, well, it's just code. What can I do with it? Versus viewing it as like being put in a box in a way. I, I feel a lot of times developers put themselves in a box of, well, it's Elm, so I can only write Elm, or it's JavaScript so I can only write JavaScript.
Um, and just exploring, yeah,
Tristan: When I, when I heard you talking about how, I don't mean this in a, when I heard you talking before about you, you're like, you have Elm and this is a praiseworthy thing, but you were like, and, and then when you get something like Elm, you're like, how can I break this? What rule if I break this rule?
Like what comes out of it and so on. And, uh. I think that's neat and I'm not that way, and that's fine.
Wolfgang: Perfectly fine. Yeah. Yeah. But don't mean to,
Tristan: far I can go. Coloring within the lines. This is my style.
Wolfgang: yeah. Yeah. I, I like to be, I guess, using the coloring within the lines for me, it's like, okay, what if I replace this blue marker with a blue colored pencil? What happens?
Tristan: Hmm, that's a good analogy.
John: getting scissors and cutting the lines out of the paper. Then projecting them into new form.
Tristan: That's another level entirely.
John: I made, I made a comment to Wolfgang, and I'm sure I'm gonna get absolutely murdered for this if it, uh, escapes contain too much. But I said, you know, I'm starting to realize that the optimal amount of JavaScript in an Elm application is non-zero. And, uh, it's code. Write the code, run the code, and you know, there's definitely always gonna be parts of the code that I trust or that I enjoy more than other parts of the code.
But at the end of the day, if I can eventually, you know, go from, you know, Elm Elm init to. Like rendering directly to Swift UI. Like, I'm not gonna not do that because it would require me to copy stuff into my Elm home. I'm gonna copy stuff into my Elm home. You know, last year was, everybody's a compiler engineer now. This year was, everybody's gonna write native JavaScript and Elm again for the first time in like eight years. And also everyone's gonna be a tooling author now too, because we had these awesome sessions about like, what are we gonna do about the LSP situation, everybody. And, uh, it was really cool to see like how an LSP works.
Sorry, I'm, I'm just going way off track here,
Tristan: You should elaborate on the LSP thing if we're, because uh, this was our time to highlight some choice talks.
John: So if you've been using Elm, uh, in anger for any amount of time, you've probably realized that the, our tooling is lagging compared to other languages that you've probably used. And, you know, it's pretty much you've got. The, uh, you're gonna use an IntelliJ based editor, which for some people is just not gonna be the thing. Um, or you're going to use something that's using like the Elm tooling, uh, code that's like right now, it's a Visual studio integration, and I think it's, it's cooked into Zed. Or you're gonna be using the Elm Land plugin, which is not anything really to do with Elm Land, other than the fact that the author of Elm Land called his Language Server esque Syntax highlighter Elm Land.
They're all good tools, but they're, they're lacking a bit. And we had a session about why is the LSP bad, essentially, like why is our LSP integration the main one that people find when they search for Elm in the VS Code, uh, extensions pane? Like, why is it so not great? And, what does it actually take to write an LSP.
And we got to look at some code and learned a little bit about what the LSP format looks like. And these are all things that are well within the grasp of, I would say anyone listening to this podcast to like learn it on your own. But sometimes if there's this thing over here that you don't know anything about and you're over here, you think, well, in order to do that thing I wanna do, I've gotta take all these steps to get to here.
And technically you still do, but sometimes if someone just shows you, Hey, these are the answers to the questions, now all you have to do is work backwards with a knowledge of what you're working towards. You don't feel anxious about it anymore. And maybe it's something that you would take on on your own without having to feel like I have to build this entire knowledge of corpus about how language servers work and what they are.
Well now you've been told what they are now you've been shown how they work. And now if you want, you can go use what you know to implement one on your own. Now, you know, like 15 other people that also know the same thing, so you can bounce ideas off of them. You'll all be speaking the same language and it'll be json, but that's okay.
Jared: I'll just add something that I thought of with that. The, um, the idea that yeah, you, you sort of still have to take all those steps. I think one of the things that came out that was really interesting, and this was across several sessions, was that you can kind of be teleported inside of that without needing to take all those steps simply because you can collaborate with others, right?
Who, yeah. Not only can you see that as an example, you can sort of like, I'm just gonna work on this little bit because maybe this is a, a thing that I can learn from in this little section of the language server and contribute back. And then that'll, you know, ultimately help, um, the, the language server overall and kind of build on that knowledge from there as opposed to needing to know everything up front in order to have a place to start.
You're sort of starting in the middle and then working on a little bit and then going out from there. Um, so yeah, just that idea of, hey, we can actually. Work together and, and, you know, not everybody has to make their own language server in order to, um, to have a great language server. , and one of the things I'll mention is just, uh, Kolja Lampe, uh, or Razze, um, wrote the initial Elm language server and Elm tooling, and I just wanted shout out to, um, to him for having that, uh, available to us for all these years and, um, how great it is.
And I think, you know, the, the things that, that people find are, you know, usually like, oh, well my code base is growing, so now, you know, I use it in this way. And so there's this unexpected thing. Or now yeah, these, these others maybe have been, uh, other language servers have been, um, able to do this or that.
And so I want to be able to do that as well. So it's just sort of like, yeah, just growing and seeing that, oh, well, if we could build upon that, what could we, what could we build? What.
Wolfgang: I, I think it's been nice to see too. So I'm in the Incremental Elm Discord, which is more like a tooling focus Discord, uh, for Elm stuff. And there's, I think within a week-ish of Elm Camp ending, there was discussion in around the Intelli J plugin and trying to merge fixes into that. And get new releases out of that.
And I know there was a lot of talk about, like you were both saying about the the LSP, which is used in VS code and plenty of others. And I know there was work that was done there and people want to release new versions of that and want to contribute to that. I think seeing, seeing conversations happening outside of Elm Camp with the IntelliJ plugin, I has me very hopeful for the LSP as well.
Jared: Yep. Yeah, I think, um, yeah, there was definitely, that created some ambition for me and I was able to reach out to Kolja and, and kind of get that ball rolling. And, um, so yeah, that's, um, really exciting to see, , folks being able to kind of take that into their own, um, own hands and, and work on it as a, as a
Tristan: I really hope that one way for Elm Camp to have an even bigger impact than it's already had. Like we all talked about the things we like about it, but is, is sometimes these initiatives or very informal initiatives come out of it, or, 'cause once we're all gathered around the campfire and someone says, why don't we just improve the LSP?
You know, or like, what's standing in our way? And then people talk about it. But the hope is that, as you mentioned, is already kind of happening. Wolfgang, people who weren't at Elm Camp, maybe people listen to this podcast if they're very interested in it. Just go on the Incremental Elm discord or the Slack and ask where it's happening and then you can be part of it and hopefully this initiative get some good stuff done.
Jared: Yeah, great point. At this point I was wondering should we talk any about the, um, like, because we're saying like Elm Slack and Elm, you know, Incremental Elm, should we mention like the conversation about where does Elm happen?
Wolfgang: Could I
Tristan: I can, I can speak to that. I think I was involved most heavily with it out of, uh, the OR organizers that are here. That conversation of where does Elm happen? We had early on in the conference and I think that wasn't such a successful conversation like it did, participating in it.
It went through several iterations. We had a part two later because we kind of, like, we used up our half hour and then there were other talks people wanted to go to. So everyone drifted off to that before we really got down to it. so I do wanna point out that like it's, that that can happen at an unconference as well.
I think in that one, honestly speaking, it didn't resolve to anything satisfying. We all kind of, uh, people, the like five or six of us that were there, at least in the one that version of it that I'm thinking of, we talked about the different options that exist for Elm, like the Slack, the Discord and discourse and uh, Elm Camp itself and so on.
But nothing concrete about like how to improve it or whether it needs improvement came out of it. Did you have a different impression, Jared?
Jared: Yeah. Well, I think that was kind of the end of that conversation. Then later there was another session, um, like you mentioned, like a, a later part that, um, I felt like it was a little bit clearer, at least for me at the end of it. Like, oh, okay, these different online areas are, are subsets of the larger community.
Like, you know, the, it was this sort of question of where does Elm happen? And you know, of course Elm was happening at that time as we were saying it, right? Like, oh, it's here right now, um, if you're present. Um, but um, outside of that, you know, like we were sort of focused on these online communities, like, you know, there's multiple Discords, um, there's Slack and there's Yeah.
The Discourse, which is a forum and, and yeah, just kind of this idea that, oh, okay, they do sort of serve different purposes. Like the Elm Slack is sort of the, this official but ephemeral way of, of chatting and getting your answers que your informal way to get your questions answered, uh, particularly if you're working with Elm, but maybe you're, you know, you're not.
Super deep into the community. Maybe you just use Elm at work. That's a great place to say, Hey, I have this problem. And people can, can answer questions there, um, and help solve those problems. But then there's like the Elmcraft Discord, which, um, that one I think is, is important to mention because if you're sort of, you know, you, you don't just use Elm at work, you're like invested in Elm, maybe you wanna spend some extra time on it.
I think that is a great place to go where if you want to contribute to documentation, you want to, you know, add links to the Elm craft.org website. Um, that's a great place to talk about those things. And then of course, Incremental Elm, which Wolfgang mentioned. That one, I realized its place is all about the tooling.
So it's about if you want to work on open source, Elm tools or just Elm open source. Elm, whatever, you know, packages, whatever. Um, that's a good place to collaborate on those. So, it just, yeah, it realized like, it, it felt like a lot, but
Tristan: Elm Land discord. As long as we're listing the notable ones, I feel that one's especially inviting and good for beginners, but it's also good for people of all skill levels that are using the Elm Land, framework library.
Jared: Yeah. Yeah. That's a great point. So Elm Land, it's tied to the Elm Land tool. Shout out to Ryan Haskell for making that and making a really inviting community. And Ryan's been on Elm Town before, and we've talked about how the, the thing that is unique to it is it uses the language, it kind of starts where people are, is kind of the, um, the, the phrase that we were using is that folks are maybe coming from React or Vue, and so they have particular terminology in mind.
And so I. I think that being able to read documentation or be able to use a tool that sort of, you know, uses that same terminology, is helpful to sort of get your feet wet and sort of understand that these concepts are pretty well related. It's just sort of like, where do you start and where do you, you know, where do you expand?
How do you, um, expand from there? So yeah, Elm Land as a Discord chat room or chat community
Tristan: And of the website. I think I had never checked out the website until I learned a lot more about it from this year's Elm Camp. So I went and I like read most of the guides that are on there. Like he had, uh, Ryan, I assume is the one who wrote the page about components. And I saw this pattern that he outlines there for how to do components, which all makes sense to me.
And I had never really seen conceived of that way. I think that's a vital part of the Elm community as like, it's like a olive branch to the other fr the other parts of front end. This, uh, yeah, just to reiterate what you said.
Jared: Yeah, that's well put. I agree. Um, and then there's also the Lamdera Discord, which is about the, you know, the Lamdera platform. And so yeah, I think that, that those, um, and actually all of these that we've mentioned, and their breakdown is on the Elmcraft.org website. So if you go there and you go to I think tools, um, you'll see that, um, it sort of breaks down, you know, these are the official, um, the Elm Slack and the Discourse and, you know, and the ephemerality.
All these things we've been saying I think is sort of broken down there. But I had not read that until after Elm Camp. So, um, when I started looking and realizing, oh, okay, that this, it, it confirms what the discussion sort of came around to. Anybody have anything else before we move on to picks?
We've been talking for a bit here.
Tristan: I, I had one more talk. I'm interested to see what you all think of it now in retrospect, John and Wolfgang, which is, I went to Simon's, talk about and learned about how, uh, browser extensions are sort of a, uh a problem for Elm. You don't, and the thing is, you don't have to be doing anything weird in Elm. You don't even have to be like using ports , or doing or breaking the rules at all for your website to not work for a significant portion of people that visited who are just minding their own business and using their web browser in a way that normally works everywhere else on the internet.
But for an Elm website, um, it may have a runtime error and break down completely because of the way that is. I don't know if it's like too technical to get into the, so normally a topic that's way more technical than I would like dive into, but I, but Simon laid it out very, uh, well and had his proposed fix.
So it's not all doom and gloom here. Like he had a fix. And, uh, that's, that was kind of the point of the talk was to pre present his fix.
But anyways, what did you think about that? In retrospect, Wolfgang and John.
John: I was thrilled for one that, it wasn't even like, Hey, you know, this is getting to be a real problem. I mean, I've, I've been bitten by it before I, it was, it was more along the lines of here is how you prepare the antidote and here's how you administer it. For me, it was really cool to get such a deep dive into something that was so like internal facing, I guess.
When, uh, he mentioned that he was, that he had figured it out and that he wanted to talk about it and to demonstrate his, uh, his work, I said, okay, this is the unofficial un key note. We'll have it after lunch. Um, so, uh, I mean, right now for my job, I'm, I'm working on getting it integrated with some of our, uh, some of our Elm applications that are running in production.
So it's like professionally, it's great. And I, I'm looking at this ticket, you know, I started a week ago. It'll be a week tomorrow that I started. And the ticket that I was assigned to fix this thing was opened in February of this year. So it was, it's cool to be able to finally say, Hey, we, we fixed it.
You don't have to worry about that anymore. And it'll be really cool when we get to a point where you don't have to fix it. It's just the fix is part of the, the product. But it, I don't know. For me, it's cool to see how it, how it all works too.
Tristan: we should put a link in the show notes so that someone who wants to follow up, uh, could do. So. I guess it would be to Simon Lydell's, uh, GitHub repo.
Jared: Yeah, I'll, I'll definitely add that. Uh, I think it's elm-safe-virtual-dom.
Uh, his, his, um, repo there. I'll add a link to that. And maybe, um, Wolfgang, if you wouldn't mind, to elaborate a little bit on what, what exactly that this means, like what we're talking about. Because I think it, at least to me from the conversation, it doesn't seem like it's very clear what this solves or like, you know, who it's solving it for.
Wolfgang: Yeah. Yeah. The, the short of it is if you use something like Google Translate or Firefox or Safari Translate in your browser, or you use, uh, browser plugins, extensions like Grammarly or maybe a password auto filler or something else that modifies the browser in some way or what's what you're reading?
It can break Elm or React or many of the UI frameworks and libraries and languages out there for the browser, which I like every, everyone's very excited about that stuff and I, to me I was very excited like that. It was, to me it was another example of like something that's Elm, but it's not really Elm specific.
It's just Elm happens to also need the fix that everyone else needs and Simon that he found a figured out a fix, for it is, is really fantastic. It was also really cool to see, so he gave a talk about the idea last Elm Camp and to see all the progress and that he came up with a solution by this Elm Camp, was was also really cool to see.
Jared: Yeah. Yeah. And so folks are, um, curious about that or wondering like, is this, you know, an Elm specific thing? Yeah, no, it's, it's not. It's specific to, um, you know, any, uh, front end framework that uses, uh, the, a virtual dom at least. And then I think you may be even beyond those. Um, basically, you know, plugins can go and move things around and, you know, where's my cheese?
Like, they just hide things and, yeah, Simon, again, I don't think I completely understood it, but, um, it was neat to hear, you know, like at least get some basic understanding of, of how he solved that. But then to have that, specific to Elm is, is kind of like a, you know, a leap ahead I think.
I don't know if other frameworks have, um, this level of a workaround, , for that, but,
Wolfgang: For
Jared: the other, go ahead.
Wolfgang: for the leap ahead, like. There is is Simon pointed out there is a bug that I want to say is around 10 years old, that the React engineering team, I don't know who specifically filed for Chrome, uh, saying that it was a Chrome problem that needed to be fixed and Chrome came back and the engineers said, no, this is a React problem.
And it's been kind of sitting in limbo and going back and forth now for 10 ish years. And again, not React specific, but that, that Simon managed to figure this out is, is really fantastic. Not just for Elm, but for I think web frameworks and web UI building in general.
Jared: Yeah. Yeah. That's really exciting. And in my mind it kind of like, you could definitely say like, this is a browser thing. Like they're allowing these to come in and, you know, and, and move things around. But to be able to have a solution with the framework, yeah. I mean, to be able to then share that and say, Hey, folks in the React community, or folks in the Vue community, right?
Like extending that olive, olive branch again as, as Tristan so well put it, um, that, um, yeah, it's, you know, it's a way to, to be able to provide overall to everybody that's working in front end web development.
[00:52:27] Picks
Jared: Anybody have anything else before we move on to picks?
Wolfgang: I think I covered everything.
Jared: All right. Well, uh, John, what picks do you have for us today?
John: Picks, left pizza. Left compose. I know, I know. I haven't published any new packages in a minute, but I'm pretty sure the last one I published is, uh, just jmpavlick slash q. I am gonna plug my, I'm gonna plug my favorite thing that I've maybe done that's open source for like two seconds.
I was being asked to do a lot of TypeScript and I realized how nice their, like, their handling is around nullish and undefined values and like null coalescing. And I thought, I want that feeling in Elm. And I wrote a bunch of Combinators, which is how I solve all of my problems in life.
Um, and, uh, the, the Zokka compiler, which I totally forgot about. And now I'm extremely interested in because, uh, it seems like it, it, I haven't, haven't done this on my own project yet. Really direct path to installing all of the, the patches for the vdom stuff, as well as doing anything you want with, uh, native code and native code patching, uh, with its alternate module system.
I, I, I feel like we all sort of just collectively memory hold the fact that it exists and it looks really nice. So I'm gonna play with that a little bit more this week. And, um, I had one other thing and then I forgot it. Those are my picks. Oh. And
Michigan
I'm picking Michigan.
Jared: Nice. All right, Wolfgang. Yeah. What
Wolfgang: Um, my picks, uh, so this week is summer Games Done Quick video games, speed running charity event for Doctors Without Borders. Uh, so definitely, definitely at the top of my picks. Uh, while not recording this podcast, I've had it on the background. We usually have it on in the background of the house the entire week, 24 7.
And then I've been reading a book, uh, on tape called, uh, The Last Phi Hunter. Phi is spelled PHI, uh, about a ghost slash monster hunter in a Eastern setting, which has been really fun. It's been a fun, fun listen. And then, uh, I haven't started it yet, but it is on my list as soon as I can find some free time, like five hours of free time.
Uh, Richard Feldman released a new course on Front end Masters called Write a Compiler that understands types for learning and understanding type checking and compiling. So I really, that is like one or two on my list right now of little coding things I want to go explore.
Jared: Very cool. Okay. Tristan, what do you have?
Tristan: Well, I wish I had a, uh, a, a sweet, a, a sweet game to link now, but I'm still chasing that white whale of, of releasing a, uh, a, uh, not a commercial necessarily, but like an A game in Elm, but I'm always working on them. So maybe next year I'll have something to share on that front. In the world of media generally.
A board game I've been looking forward to for over a year, basically since it's been announced is is coming out on July 9th called Vantage, which is, uh, exciting to me, uh, because it's, as far as I know, the first board game, that's like a first person adventure game. Uh, it's a cooperative, you play with your friends and, um, you view the world in first person through a clever mechanism, uh, with the way that you play cards and stuff.
So that sounds intriguing. Check it out.
Jared: Very cool. Yeah. That actually, uh, spurs, uh, an additional pick from me. Um, so I'll just say that one first. It's called Parks. It's a board game. Um, it's about resource management, but it has some really beautifully designed, um, cards to represent the US National Parks. And it has wooden pieces and it's just, yeah, it's a very nice set.
It's enjoy, it's pleasing to play, um, just, you know, aesthetically as well as, um, a fun game. So, that's my number one. And then number two, uh, my final pick is Elmcraft.org. Um, definitely as I mentioned earlier, as I kind of dig in there more and more. I'm like, oh yeah, this is something that I've had a conversation about.
I can just actually link to this. And this sort of, um, completes that conversation. It makes it unnecessary, if you will. Um, but then also I've realized, you know, after being at Elm Camp and, um, having these conversations about cooperating, it's a great place. If you're interested in being able to contribute something, uh, and you want to do it too, like a shared group, I think that's a great place to do it because, um, there's places where there's links or explanations of things.
And so actually right after Elm Camp, I went and added, I think it was, uh, Simon Lydell's elm-watch to, um, a list of Elm tools because it wasn't on there yet. And I'm like, oh, well that's an obvious one. Um, so yeah, I think there's definitely, um, places to contribute there. And it was like, two days later, maybe it was merged in.
So it's pretty easy to get things, um, through there, small changes like that, or suggestions, links, um, documentation. And yeah. Uh, I wanna say thanks to you all for coming on. John, Wolfgang Tristan, as well as the Elm Camp organizers who are not here today. And, and some of them, which I know they did a lot of work but did not, um, make it to the, the conference, um, itself.
I know I spoke with, uh, Katja Mordaunt and, she was really helpful. Um, I know Hayleigh Thompson is also an organizer. Uh, Jim, Jim Carlson was there. And then, uh, Mario Rogic. Uh, Martin Janiczek, and yeah, I think that's, uh, did I
Tristan: Yeah, I wanna shout out to Katja, who I refer to as our leader. Um, it's tragic that she couldn't make it to the conference itself because, uh, she, it would not have happened without her. She, um, is the one to like to, to, to drive things forward and also got a lot of the important stuff done behind the scenes.
So, yes. Thank you, Katja.
John: I wish that I had mentioned that earlier in the, the session, honestly. I referred to her as Elm Camp Mom. If it weren't for her, then the almost every time that I had to make a decision, it was like, well, um, I'm the grownup now. Uh, I have a lot of people that are depending on me not messing up the catering, for instance, so that they don't starve, for instance.
And the thing that I always came back to every time was, well, what do I remember Katja having done the last time that we talked about this? Or the last time that I saw her doing this thing? Like what was she doing? Generally speaking? And, uh, it worked. It worked. So thank you. Thank you, Katja.
Jared: Awesome. Yeah, big shout out there. And to the folks who attended, thank you all. I really enjoyed conversations with everybody that was there. Um, it made it a, a wonderful event and, uh, hope to be able to go back again next year if there's one, or you know, if there's multiple in different regions, that would be cool too.
Maybe, uh, different times of the year, that would be great. Then Elm Camp every season.
Wolfgang: Yeah. Yeah.
Jared: I'm getting
John: wouldn't hate it.
Tristan: I am already excited for next year. People who wanna keep tabs should, uh, refresh seriously, refresh the Elm Camp website until they see something about 2026 and, uh, or, you know, just like keep an eye on Slack or your email.
Jared: Awesome. Yeah. All right. Well, guess that's it everybody. Um, thanks for listening or watching if you're watching this. And, um, thanks to y'all for coming to Elm Town.
Wolfgang: Thank you.
John: Thank you.
Tristan: Bye.