Elm Town 68 – Shared joy with Mario Rogic

OCTOBER 31ST, 2023
|
01:11:11
Mario Rogic shares his journeys, both physically around the world and strategically, as he built & rebuilt Lamdera.

Details
/
Transcript

[00:00:00] Mario: I think by far the biggest unexpected joy of going down this whole path has been... Seeing the things that people build with it. I definitely feel some sort of shared joy like I don't feel credit for having made it, but I'm like, yeah, that's a thing now, you know, like there's a, there's a satisfaction to it, which is really cool,

[00:00:17] Jared: Hey folks, welcome back to Elm Town. I'm your host, Jared M. Smith. We'll be visiting with Mario Rogic today,

[00:00:25] Sponsored by Logistically

[00:00:25] Jared: but first, let's talk about our sponsor, Logistically. At Logistically, we make intuitive software to help logistics professionals make better decisions and spend less time on manual tasks. Our transportation management system helps squeeze every drop of efficiency from logistics teams of all sizes.

[00:00:43] Logistically pays me to record Elm Town episodes, as well as pays for our production and hosting costs. 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, elmtown at logisticallyinc. com. I'll put a link in the show notes.

[00:01:00] Introducing Mario

[00:01:00] Jared: Now introducing Mario.

[00:01:03] Mario is a driven technology aficionado with a particular love of open source software and the web. He believes technology should make life simple and joyful, and he enjoys being able to prove so. He works as a CTO at Locomote. is the founder of Lamdera, the host of the Elm Online and London meetups, and is the groundskeeper of Elmcraft.

[00:01:29] Yes, that is a big one. And he helped organize Elm Camp, along with Katja Mordaunt, who was on Elm Town 59, among other organizers. He recently gave the talk, The Unbearable Weight of Glue at Lambda Days 2023 in Krakow. Mario, welcome to Elm Town.

[00:01:46] Mario: Awesome to be here, thanks for having me, Jared.

[00:01:49] Jared: Yeah, yeah, glad to have you back on. So, back in 2017, believe it or not, that's been, uh, what, five years ago, at least? You were on Elm Town 18, Spotlight on Mario Rogic, with Murphy Randle.

[00:02:06] Mario: yeah, I, I had a look at that episode, um, just before the show actually, just because I was like, I have no idea what I talked about. Um, so yeah, that's wild that that time has passed that quickly.

[00:02:20] Jared: Yeah, yeah, it truly is.

[00:02:22] Parallel synchronized travel

[00:02:22] Jared: One of the things that you talked about before we get into kind of the computing and Elm side of things is you talked about your travel. So you talked about being born in Croatia. And then at a young age, um, being, kind of forced to move to Australia or move out of the, uh, the war area. And then you eventually decided to move back to Croatia for a few months to Zagreb.

[00:02:48] And then you moved to London. So that's a lot of kind of different travel and different places on Earth. Uh, have there been any other exciting travel adventures for you?

[00:02:59] Mario: Um, yeah, funnily enough, there have actually. So, um, yeah, I, London. I moved to London in 2013. Um, oh no, sorry. I moved to Melbourne in 2013. I moved to London in 2016. Um, and have mostly been here since then with the exception of COVID, surprisingly. So, um. I know the lockdown kind of, um, sequences were probably different for everybody in every country, but at least the way that it kind of happened here in London is the beginning of 2020.

[00:03:35] I think we went into lockdown quite early. I was actually in Denmark for work, I think in April, or maybe even the very, very end of March. Um, and I remember being at the airport flying home and they announced that, um, Our flight to London was the last flight out of that airport full stop, that there would be no more flights after that flight. Um, and I remember feeling really, like, it felt all really apocalyptic. You know, especially because like no one really knew what was happening at that stage. Yeah, so I remember, like, messaging my partner and being like, Go buy a bag of rice! And,

[00:04:13] like, I'd already known that people were, like, hoarding toilet paper and stuff, and so I was like, I'm not sure that that's gonna be the problem, but, like, it feels like we should have a bag of rice.

[00:04:20] You know, something, some sort of staple thing that we can survive on. Um, and then that summer here, at least in the UK, was kind of very hopeful. It was, like, a really lovely summer. Um, I think kind of, like, everybody was at home. They announced that you could go outside to exercise. So everybody was right.

[00:04:38] If you put on exercise gear, you can go outside and be like, I'm exercising. So like, we, we just went to the park a lot. Um, and yeah, it kind of felt like, oh, okay, this is like it's ending. And so I'd had kind of this plan forming of, of, of doing the remote work thing again and going to Southeast Asia. Um, so. Yeah, we kind of like set that plan in motion and gave up our apartment and then very shortly after like new waves of lockdown started and we kind of got stuck and stranded in the UK. Um, and so yeah, at the beginning of 2021, we were like, okay, well, what do we do? Um, we'd given up our place in London. We were living in Edinburgh at that time just because it, you know, it... When we chose to move there, it wasn't in lockdown. The day we got there, it also went into lockdown. So middle of winter,

[00:05:31] Edinburgh for two months, complete lockdown. Um, you know, no, no exercising in the park because it was freezing. Um, and yeah, the Mexico at that time was, uh, um... It was open and flights were still going there so, um, yeah, we took the punt and that's, that was also when I decided to give up my job, um, and go into Lamdera full time. So I think that's probably like, on the tech side, the big thing that's changed since the last time I was on, um, on Elm Town is that, yeah, the, the idea for Lamdera kind of fleshed out more and more. Um, I did, like, a first version incarnation, um, working, uh, with Filip Haglund. Where we tried to do, like, compilation to Haskell. Um, and then, after that kinda didn't really pan out how I'd wanted to, we ended up parting ways. And I kinda started again, sort of, you know, from scratch ish. Being like, okay, well, like, can, can this still work if we target, if we stay with targeting JavaScript? Um, so yeah, the, the Mexico trip, we, me and my partner, we, we traveled, um, Where we could as things were open, um, it was interesting.

[00:06:47] It was very, very different, uh, culturally there. It was kind of like, everybody wore masks. But otherwise society seemed to be just like normal, so just like everything was just functioning Um, so yeah, we kind of went wherever seemed safe and where things were open and immigration was open And at the same time, yeah, I was just hustling trying to get, um, Lamdera version 1 out, so Yeah, that, that happened I believe at the end of that year. Yeah, around about that same time, around about after 12 months of, of, of living in Um, South America, mostly based out of Mexico. Uh, we then decided to come back towards Europe, feeling a bit homesick. Um, and after another couple of months living in, in Lisbon in Portugal and then in Paris, Um, my partner, who is British and, uh, suffering from the Brexit implications, ran out of visa time. So we thought, okay, tails between our legs, we'll just head back to London. Um, so yeah, back in London now for the last year and a half.

[00:07:46] Jared: All right, right on. Yeah, so you've had some adventures and, um, I kind of wanted to talk before we get into the Lamdera. I'm going to, uh, kind of come back to that because I think, um, there's something interesting there, um, about that timing. But with the travel. You mentioned, of course, Edinburgh, um, that you had went there and kind of immediately went into lockdown.

[00:08:12] But even back to Croatia, these, these were interesting to me because, um, in 2018, we had family who were living in, uh, Sarajevo and in Bosnia, uh, working in an international school there. And so we decided to visit them, bring our two year old, and then so one of the places that we traveled to was Croatia, to Hvar, and to Dubrovnik, of course.

[00:08:36] It's like, you gotta go there, um, if you're a Game of Thrones fan. And then, um, and then kind of, you know, just around in that area. Um, but, you know, of course, the thing that brought us there initially was the family who had lived there. But then you just mentioned Edinburgh and, uh, that same family who were living there.

[00:08:57] Um, had kind of, uh, during COVID, they had been planning to, to make this move and, you know, take some time off from work and go to, you know, Thailand, but Thailand locked down super quick. And we were actually at the same time considering moving to Thailand and,

[00:09:11] Mario: Oh really?

[00:09:12] Jared: doing this whole thing together as one big

[00:09:14] Mario: So were we. Maybe, maybe lots of people. There's this collective plan to move to Thailand that everyone got squashed on.

[00:09:22] Jared: Yeah, so, so those dreams got crushed, but then, um, they ended up in Edinburgh. And during lockdown for like two years, um,

[00:09:31] Mario: Wow.

[00:09:32] Jared: and then, and then came back to the U. S. for a little bit, but I, I just thought that was kind of interesting how those, uh, those kind of common tracks of, um, of areas of the world and, and living, um, matched up, uh, and then what's kind of interesting right now is that same family is in the process of moving back And, Um, Overseas to London now.

[00:09:54] So, um, yeah, I don't know. It's, it's kind of, kind of neat how those, uh, have lined up.

[00:09:59] Mario: Maybe there's like some, some sort of macro reasons why certain kinds of people are doing all these same movements. It'd be interesting, maybe, maybe if we can figure out what we have in common, we'll figure out what uh, What overarching forces, you know, the invisible hand is kind of driving us. That's funny, that's cool.

[00:10:19] Jared: yes, yes. That would be so neat to be able to, uh, take a step back and see that. But okay.

[00:10:25] Out of the blockchain

[00:10:25] Jared: let's get into Lamdera now. Because I think one of the things you said is, um, during that period you were in lockdown, you decided to take time off from Locomote, correct?

[00:10:34] Mario: No, it wasn't Locomote, at time I was working for another company called Concordium. Um, which was, it was an interesting experience. It was a blockchain company. Um, Which I feel somewhat very compelled now to say, in my defense. But at the time, the idea was that this was going to be a layer 1 chain that had identity baked in, but still preserved privacy. Um, and that was like really appealing to me because I'd watched the blockchain space for a long time And I was always kind of like not sure about how it was going to pan out Uh, and obviously, you know, like the price was going crazy. So that causes you to be like well You know, do other people know something I don't know? It's like it

[00:11:23] was all like a very conflicting thing. Um, So yeah, that the there was a yeah, there was a really awesome team compiled around it as well So like if you know the MD5 Um, algorithm, the hashing algorithm, the Merkle–Damgård construction, so Ivan Damgård. So one of the namesakes on that algorithm, a professor at Aarhus University in Denmark. You know, he was billed onto the team and, and, and lots of really other talented people were drawn in. So I was kind of like really excited. I was like, oh, you know, maybe this will be the thing that I don't know, cracks it and finds a use case. So my role there was product, um, for two years. But yeah, long story short, I I, I, as the product kind of. Um, person there really struggled to find like an application, um, and, and struggled to find customers that would want to adopt, um, something kind of end to end, and, and I think walked away from that experience quite cynical and feeling rather jaded about it all, and, and I'm not sure that, yeah, I'm not sure how I feel about that, the whole blockchain crypto world, um, if, if we, if we set to the side all like the speculative stuff. I, yeah, I just kinda, um, you know, went to conferences, met lots of people, like, like, interrelated with lots of things there, but Ultimately left it feeling a bit confused and not really sure what kind of impact I was making on the world, truly. , so yeah, I think that was, that was part of the drive for me, you know, at the same time, like, Lamdera was, like, people, it was picking up interest, like, lots of people were, were kinda playing with it and, and giving me feedback, and I was like, it just really feels like this is a thing I gotta chase, you know, I was just like can I do it?

[00:13:07] Like, can I afford it? Could I do it full time? Could it make money? Like, would it be sustainable? And so yeah, I just thought, you know, after many conversations with my partner, my partner Louise, she was just like, you just have to go for it. Like, you know, you're always gonna kick yourself. Like, what if? Like, could I have done it? So, yeah, I think at some point I was like, okay, let's pull the pin, let's give it a bash

[00:13:32] in Mexico of all places. Um, yeah. So that's kind of how that came to be.

[00:13:38] Jared: All right. Yeah. Wow. Well, that sounds like, a big leap, but I'm, I'm thankful that it worked out the way it did because we have, uh, Lamdera for it now. And, and of course your continued work in the community.

[00:13:52] How Adventure Presenter led to Lamdera

[00:13:52] Jared: One of the things that I wanted to bring up related to Lamdera was how your experience creating Adventure Presenter relates to that.

[00:14:05] Mario: Yeah. Um, so adventure presenter for those, um, maybe didn't see that. So that was basically one of my first talks. I think it was my first talk at Elm Europe, my first Elm conference talk. Yeah, so basically the idea of Adventure Presenter was that, um, there's two, these kind of two extremes in presentations, I feel, which is, um, it's either you're on stage presenting, everybody's sitting there and listening, or you have like, kind of like a workshop where people are all trying to communicate together, but You can't really all talk together at the same time, right?

[00:14:39] So you end up in lots of little groups Or or maybe what you would just call hallway conversations at conferences, right? And there's those two extremes and I was like, what if there was something in the middle? Like something where it wasn't as chaotic and disorganized as lots of conversations But it wasn't as static as me just talking and people just listening, right? Um, so yeah Adventure Presenter was this idea of like what if I had slides that um Had some sort of engagements. Everybody, you know, was connected on their phones and they could participate in some way either by giving me signals, you know, thumbs up, thumbs down, or whatever it might be. Or like making comments as it goes, or even driving the direction of like the presentations, right?

[00:15:19] So I think that first talk was... I had some technical issues because somebody started to... Accidentally, they came afterwards and apologized because they didn't quite realize what they'd done but... They were like, Oh, this is cool. I wonder how well it performs. And they kind of ran some benchmarking or something. And it ended up like overloading things and just like locking up the presentation. To the point where I think the app was still functional, but there was just a big backlog delay. So my responsiveness on my slide changing wasn't prioritized. And so I thought it had gone wrong. I was like, Oh no, like the demo gods have smitten me or something. Um, but yeah, your question was around how that led to Lamdera. And it was, yeah, just, I just had this frustration of. You know, I built the frontend, and I was using Haskell at the time for the backend, and like, I noticed as I was setting up all the types and trying to set up the encoding and decoding and doing everything, I got to this point where it was like, the types on the backend and the types on the frontend looked exactly the same, um, and I realized I just didn't care about the encoding in between.

[00:16:23] Like, I just, I just wanted these values to materialize, um, And it seemed like they should, you know? Like, I had the value, and then I had all this stuff I had to do, and then once I was done with all the stuff, on the Haskell end I would have basically the same value. Um, you know, even though the type systems are a little bit different, they're close enough that if you squint, it was like the same thing. And so I think that was the first point where I had this idea of, of, yeah, maybe like, glue and boundaries? I don't think I had the words for it yet, but... Um, I'd noticed that there was this thing there that adds all this complexity, but I don't actually need it. Um, and I'd, I had experience with like, um, I think what we would call like isomorphic JavaScript, you know, like JavaScript on like the same on both sides. But the thing that you didn't have with that, and you know, it's a little bit more achievable with TypeScript today, I guess, but you didn't just have this confidence, right? Like that, if you change the type. Then you would get like the errors where the rest of it mattered. And so like, by, by trying to, like, I, I kind of had a, like a poor man's version of Lamdera where I had, I decided, okay, Elm's gonna, um, No, sorry, Haskell's going to be the source of truth for the types.

[00:17:38] It's going to generate all the Elm types. And therefore I should have this kind of thing where, you know, if I change a type in the backend, I get breakages on the front end. If I change a type on the front end, sadly, I don't get breakages on the backend. I just lose my changes when I regenerate it. And then I go, oh crap, I forgot that Haskell's the source of truth, so you go, okay, I'll have to change it in Haskell. But you know, even that was an impedance. Like, it didn't feel, it was like, I was almost there, but I'm like, it's not quite right, it doesn't, it doesn't feel right. So, yeah, that's, that's then what got me to thinking, like, okay, well how could this work holistically? Um, I ended up going more down the migrations route, which is why then I talked about Evergreen Elm. And then I think eventually, like, the idea behind how all that could work and boiling it down to, like, Lamdera's primitives emerged and that kind of then led me further and further down into, into the Lamdera philosophy, I guess.

[00:18:29] Jared: Sure. Yeah.

[00:18:31] More about the Haskell version with Filip Haglund

[00:18:31] Jared: And so then I think this makes sense why you would have, uh, originally compiled the backend to Haskell in your attempt with, uh, Filip Haglund, um, and that actually, there's a question from Martin Stewart who was just on the podcast, um, just released that episode, but he asks, he's just basically interested in hearing more about your work on that original version of Lamdera.

[00:18:59] The question in particular that I'm interested in is how, how it failed and how you used those failures to create the version that you did that succeeds.

[00:19:11] Mario: Yeah, right. Oh, that's a good question. Yes, I suppose that the original motivation kind of actually just came, came over like a drink I had with Filip once, I think, in London when he was visiting. And we were just kind of chatting about stuff in Elm and I think the focus was probably more on kind of scalability and Yeah, I think at the time it was very easy to throw out wild ideas, you know, so like, uh, I think the thing that we kind of got onto was like, oh, well, you know, if, if we had Elm on the back end and it was on Like basically like a virtual Compiled Runtime, um, then we, you know, you'd be able to do like, we, uh, we could do all sorts of crazy stuff with, with the runtime and we could kind of scale it and, you know, maybe you could even do like static analysis of like which messages touch which parts of the model so you could have like auto, you know, like build a monolith, but, oh, actually it's microservices, but you didn't have to do anything.

[00:20:11] You know, like we had, it was kind of all these ideas. And so I think I really had it in my head for some reason at the time that having it, like, having it be performant enough and for it to work would require a lot of control and like a lot of low level fiddling. And I think maybe both Filip and I shared this idea, right?

[00:20:33] And so we thought, okay, well, you know, it would be good for performance for us to target a... Um, a compiled language, like a lower level language than JavaScript. Um, and, you know, if you squint, like Haskell looks like Elm or rather Elm looks like Haskell, and so we were like, well, like, that's probably going to be the easiest thing.

[00:20:54] And in my head at the time, I was like, oh, you know, I'll spend a few days. I'll just, you know, take the JavaScript generator from the Lamdera, from the Elm compiler. And we'll just get it to spit out Haskell, because it's like basically the same, you know, like you can, you know, like the functions, the signatures, like it all looks the same. So we just get it to spit it all out, um, and then we'll compile that and then like, we'll see how it goes. So yeah, that few days I think turned into eight months. And... Yeah, as we went along we were like, oh, we started realizing there were certain things which was like, oh no, actually Elm is not a superset, like a subset of Haskell, sorry. Um, it's not like a simpler Haskell, it actually has a few concepts that don't reconcile. So, like Elm's record types, um, or rather like, like the concept of anonymous records, um, That, like, by default, doesn't exist in Haskell, and you can, you can tweak some, um, language extensions to slightly get you closer, um, but, and, and I, and I'm aware, I haven't looked at it for a little while now, but I know that there's like a language proposal for, uh, Improving like the way that Haskell does records so they would become a bit closer a bit more compatible with Elm's ideology, but yeah Long story short, there was no native primitives for us to target the transpilation And I say transpilation because we weren't going from from Elm like Machine code to machine code, we were literally spitting out text of Haskell files, right, that we would then have to compile.

[00:22:21] So we needed to have some sort of valid Haskell equivalent, right? And I think where it got to is we started using some library in Haskell that emulated, like, a data structure similar to Elm's record types. Then compilation of that was extremely slow and it just, it just kind of, yeah. The other big, big thing was, um, There was a type reification issue.

[00:22:45] So in Elm, you can actually be quite flexible with like, um, like reusing polymorphic variables within let closures. So if you have a function that like takes a list of A and then within the let bindings within that function, you do more generic stuff with that list of A. Um, Elm is kind of quite happy to be like, okay, well the A in the function and the A That you're doing stuff with in the layout, like that's the same A, right?

[00:23:13] Like the same generalized A. Whereas there was a whole bunch of situations in Haskell where that same code would be like I don't know that these A's are the same, and also there's no good way for you to convince me. You know, you're just gonna have to refactor your code. So suddenly it wasn't like, oh hey, a few days of transpiling Elm to Haskell.

[00:23:31] It became like, okay, now we need source rewriting. It just, you know, it just, it was the... I think 80 20 was at play, right? Like 80 percent came super quickly and then the 20 percent took the 80 percent of the time. Um, so yeah, I at that point being faced with like And Filip was like really amazing at solving some of these problems, but it was getting so far outside of my understanding zone and I felt like I couldn't keep it all in my head and it just didn't feel right like the whole point of the platform was to make everything simpler and like if I can't even fully understand how it works it's not feeling right and I think you know a simple Elm app would take maybe like 3, 4, 5 minutes to compile on the Haskell side I was like oh that's not the deploy like story I want either you know. Um, so yeah those two things became a bit of a bit of a deal breaker for me and I just Yeah, at that point, I, I kind of didn't, I lost motivation in that project for a little while and, um, yeah, it was, it, it became like a, you know, turning a new leaf to go, okay, let's hit the reset button on that. And, you know, could this be feasible, um, using JavaScript, sticking with JavaScript? So, yeah.

[00:24:47] Jared: Okay, so yeah, so there were a couple of things that you ran into, um, with the, uh, the first attempt where you thought you could do some direct compilation. It was, it was really close, right? And you were able to get almost there, but unlike what you can do with the Pareto principle is you couldn't just stop and say, well, that's close enough.

[00:25:08] We compiled enough of it, you know, you, you need the, the, it to completely compile. Yeah.

[00:25:14] Mario: edge cases were a deal breaker, you know, and that just sucked. But we, we, when, when, Funnily enough, the launch of, well, like the soft launch of Lamdera, the first announcement, the conference talk at Elm Europe, all of the demos and everything that we did was on the Haskell compiled backends. know, so like it was working enough for us to be able to do that and be like, hey, this is the thing and it could be cool. Um, but yeah, the, the story and the experience of, of, of Lamdera now I think is fundamentally different. And I think it's, I think it's for the better. So now the idea is that you have a compilation stage with Elm, but then it's sitting on top of a platform that's kind of like dynamic and fast and, and quick to, to, to launch, which is JavaScript. Um, so yeah, so far, so far, so good.

[00:26:01] Jared: Yeah. Excellent. So I didn't realize this, but. I guess with the timing then, you'd already went public with the announcement of what Lamdera was and then decided to kind of take a step back and then do a complete rewrite.

[00:26:15] Mario: Yeah, that's true. It was also part of the reason why we didn't open source at first. Cause I just, I always, I had this just lingering feeling, even when we were doing the Haskell thing that. You know, maybe someday in the future we would do it in something else, you know, maybe it could even be more optimized.

[00:26:29] Like, I think we had even spitballed, like, you know, what if we went like just hardcore, just like went to C and wrote like a runtime specifically for the Elm paradigm, you know, um, I, you know, I'd had conversations with, with With Richard as well about, um, you know, GC strategies, like, because with Elm, like, you only process a message per message. So I was like, well, could you end up, like, not having, like, not worrying about GC at all, just let all the garbage build up for a message. And then when you finish processing the message, you know, you can just dump everything except for the model. You know, like, could you, could, were there, like, alternative runtimes because of the Elm architecture that people just haven't explored yet that could be a possibility in the future? So yeah, a big part of, of, of... Releasing it initially as closed source was this idea that, well, we really, I really wanted to take focus away from the runtime and how it worked under the hood. And I really wanted to promote this idea of like, what if the paradigm that you thought about and all you cared about was the Elm and the Elm level?

[00:27:33] Like, how would that feel? Um, and yeah, I think, I think so far the feedback for the people that it's resonating with is that like, that feels really nice. It's actually like a, you know, it's very relieving, and the whole world that you care about and interact with is sound, it's type safe, it's type inferred, you know, and it doesn't crash on you surprisingly, so, um, yeah, I think, I think all in all, that's gone.

[00:28:01] That part of it has gone how I had hoped it would, if that makes sense.

[00:28:06] Jared: Yeah, yeah, I think that makes sense. And so, yeah, you've, you've taken a step back

[00:28:13] Communicating the benefits of Lamdera

[00:28:13] Jared: and one of the things I wanted to ask you about was you mentioned the, these different terms that you, um, use and that you hadn't necessarily found those terms like, you know, glue code, um, when you initially, uh, were, were thinking through this, what was your approach to finding a way to communicate that or, um, Or do you have any thoughts on how you, uh, came around to that term and things like the semantic boundaries?

[00:28:42] Mario: Yeah, I'm not sure now. I'd have to go back and hunt it out when I started using those terms. I think glue code I might have used quite early on, but I was using it specifically to refer to, like the encoder decoder stuff. And I think that kind of made sense, and I think that, that part resonated with people, um, because I think, yeah, I think people know, at least in the Elm community, like if you're talking about like the glue code, people kind of know what you might be talking about, it felt.

[00:29:17] Where I struggled then to scale that analogy out is when I tried to point out glue code in other areas that might not be as obvious. You know, so like it's hard to call Postgres queries or SQL queries, Glue code. And yeah, I felt that in, I think where the origin of like the semantic boundary terminology came from is I was kind of looking around and I think I remember asking on like the language implementation channel once and speaking with Haley about this, asking like, you know, was, was there an established term in computer science about this idea of. You know, you have two systems that represent different semantics, right? And have different concepts of behaviors or, or specifically in the code, um, in the code context, like different ways of expressing things, right? Um, and, then bridging that gap, you know, costs code. Like there's, it costs knowledge, um, of what the differences are.

[00:30:18] It costs, um, Yeah. Like either code or tooling that will bridge those differences or map between them properly. And then there's also like domain knowledge, which is like, well, when the things don't map to each other, what do you choose to do? You know, like if you go from a Result type in Elm to JavaScript, you've got to make choices, right?

[00:30:40] Cause there's, there's no native like representation of that. You know, do we

[00:30:44] go all in array with two items or record? Or, yeah, I don't know. You know, like, so. Um, yeah, as I kind of, as Lamdera matured and as I thought more and more about the things that I was no longer having to deal with in a Lamdera app, it became more and more clear to me that actually it wasn't just glue code in the sense of, oh like, we just have to do things to stick these two things together.

[00:31:08] It was more, it was deeper than that. It was any time that we changed semantics between two big areas. So, you know, talking to a database from our language. Like the database has its own language, you know, has its own types. Um, talking to a remote service via HTTP or that's like. There's five things involved, you know, there's, there's our language, there's the HTTP protocol, there's whatever transport we use, which is JSON or whatever, then there's the same on the other side.

[00:31:35] So yeah, I, I've talked about this to death, I suppose, but it, it, it, it now it's all I can see, right? Like this idea of semantic boundaries, I'm like, Oh my, they're everywhere. Like, and we just, the worst thing is I see us just sometimes we just bring them in, you know, you start a new project and we're like, we'll bring that one.

[00:31:52] We'll bring that one, You know, we're buying into so much, um, implicitly. So yeah, I think somewhere along the line, I, I kind of transitioned into semantic boundaries upon kind of digging all that stuff out.

[00:32:07] Jared: Okay. Yeah, I think one of the things that I mentioned in Elm Town 64, the network effect with Martin Stewart, um, was that the diagram that you have on the front page of the documentation, I think, explains that very well. It's, it's easy to just kind of point to that and be like, Oh, okay, now I know what you mean. Um, and I'm sure that wasn't something that just, you know, one day you sketched out and you're like, Oh, that's, that's, you know, that's immediately, um, useful.

[00:32:41] I'm sure that took a lot of work. So, uh, yeah, thank you for, for finding a way to communicate that in such a, uh, a clear way and finding, you know, the terminology around it because it is powerful and, and, uh, and sometimes. Um, to get someone to get past that initial like understanding of like, is this even like, this doesn't even make sense, you know, like, is this even, is this even real?

[00:33:08] Is this possible? Um, and, and it feels like that, you know, it kind of feels like, um, it's, I don't want to say magical because magical sounds like it's something that you wouldn't have confidence in, or you wouldn't be able to understand. But, um, I think once you... Once you get over whatever that blocker is that, that, that, you know, someone might have if they're, um, they're unsure, you know, with, with, with understanding it, um, if you try it out and you just, like, build a small little thing and read through some of the examples, I think, You gain very quickly that, you know, that understanding, um, and, uh, you know, it takes the confidence of Elm and of course, you know, extends it to the backend, but it's, yeah, it's, it's really a lot more than the backend.

[00:33:55] It's like, the whole thing, right? It's, it's, it's everything from, um, the way that the frontend interacts with the backend, which you talked about, and that's something that, you know, I've had to do a lot of, uh, code generation in order to, um, to have some very, Limited level of confidence with a lot of work, you know, to get that from Python to Elm, like, you know, to know, like, okay, this API is going to return this thing or whatever, um, to then, okay, yeah, you're handling all of that, but also, like, you don't have to think about storing that thing.

[00:34:30] You don't have to have some ORM or, you know, you don't have to have, um, a database schema. I mean, it's, it's a lot of things that it covers. And then, You take that and you add in the evergreen migrations, you know, like that's, you put that on top and, um, yeah, I don't know. It's, it kind of gives me, you know, little tingly's, you know, just to think about all of the things that you can do.

[00:34:56] And you take that, those limitations, right? Really you're, you're, you're, uh, creating your own limits. Um, and then extending, like, what if we use these limits? Everywhere. Um, I think that's really cool.

[00:35:11] Mario: Absolutely. That, uh, that, that Lamdera giving you tinglys, that is a quote that is going straight onto the Lamdera homepage.

[00:35:19] Jared: Awesome. Yeah.

[00:35:22] Mario: but

[00:35:23] yeah, absolutely. The, I, I, it's cool that you've mentioned that diagram as something that, that made things clear or that, that you find clear, cause actually that, that diagram is also the source, I think, of a lot of the doubt. Cause I think, yeah, like when you first look at it and you see that those things aren't there, um, there's a bunch of people that go, so the reaction I'm hoping to get from people is they go, Oh, it's removed. Like, the complexity is gone and I don't have to worry about it, but I think a lot of people actually end up reacting like, Oh, where have you hidden it? Like, where is it?

[00:36:02] So people go, you know, people ask, Oh, this looks really, really cool. What database do you use under the hood? I'm like, I don't really like that.

[00:36:11] That's not how they're like, Oh, okay. But where's the data? And it's like, it's like, okay, like I think, um, so my, my next cycle now, so Lamdera version 1.2 was just released. Um, with the kind of like the title feature being preview apps. So, um, you know, we've got a lot more, I'm seeing a lot more companies with teams starting to look at Lamdera and see if this is viable for them. Um, so that was like a big thing for them to make the ergonomics. Whereas before Lamdera was kind of, you know, in my view, I was like, well, who's going to pick this up other than like hobbyist excited Elm developers. And I think that was true for a while, but now people are like, oh, wow, this is, you know, this, maybe we could use this for our business.

[00:36:48] Could this be an advantage? Could this save us a lot of time? Um. And so yeah, the next, uh, kind of cycle for me, I think is, yeah, basically marketing, um, but not marketing in terms of advertising, but more marketing in terms of, I'd like to try and refine and be clearer with the message of Lamdera, like what the benefits are framing them, and also maybe being better at explaining some of those things, like, you know, when people go, Oh, but what happened to the database? You know, I haven't wanted to talk about, up until now, I haven't wanted to talk about the specifics of Oh, well, you know, an event log, you know, the concept of an event log and how that works and actually all modern databases basically use a log and to get persistence. And, you know, this is the definition of ACID and blah, blah, blah. I've been trying to avoid all of that cause I'm like, just enjoy the delightful thing. Like, you know, I just imagined that's what would get people, you know, like if you try it, um, Then you'll be like, whoa, and then the stuff can come later. But yeah, from a business perspective, it seems like, you know, people usually come in more up front to go, Oh, what is this?

[00:37:54] Like, what's, what are you hiding? What am I? Are you trying to trap me? Are you trying to trick me? Like, what's, what's going on? And I think I understand that as well, like, you know, in, in my role as a CTO, like, I'm always looking at upcoming tech and I've always got that skeptical eye, you know, like if I, if I were to pick this and drive the team in this direction, what are we in for? Um, so yeah, I'd like to, I'd like to spend some time on... Figuring our way, a way to market those things and features in a way that, you know, isn't all about like the underlying implementation, because that can change, it can refine, but it is like, you know, about the conceptual parts of being like, okay, well, how do you have persistence in this model? Like, how can you be certain about it? Like, what are the guarantees it gives you? That kind of stuff.

[00:38:40] Jared: Yeah. And I get that too. You know, folks will be skeptical and they will want to know, you know, even if it's not in terms of like, you know, uh, what are you hiding? But in terms of like, this is interesting. I want to know how it works because... It's just, you know, wow, you know, like what makes all of this happen.

[00:39:00] Um, but I think as you,

[00:39:02] Mario: there's also discrepancy there, though, something that's frustrating, um, which is. There are lots of areas in the tech community where we don't do that. Like for example, you know, if I go and add like an Amazon load balancer, I'm like, but everybody does it. So we're like, oh, okay. Amazon just deals with that and nobody knows, you know?

[00:39:24] So it's, it's also been interesting. Like I, some things I had imagined, I could just keep, just be like, don't worry about that. It seems like in my context, people are very, very worried. Um, you know, I suppose because Lamdera is small and it's maybe like unusual and not as big as AWS, but I found it interesting that, you know, people say, Oh, well, you know, I really need to know how my stuff works.

[00:39:47] And then I put it all on Amazon and I'm like, what? I'm like, obviously, obviously you don't up until a point, you know, like

[00:39:53] up until a point you're like, Ah, I don't care how it works anymore. Like Microsoft and Google and everybody's doing it. So it's fine.

[00:39:59] Um,

[00:40:00] Jared: Yeah. And that's, that actually ties into what I was getting ready to say is that I think the thing that, um, that will grow with it is that confidence based on social proof, right? Like as more companies use it, people will be more interested in just trying it because they see, oh, well, they use it over here.

[00:40:19] Maybe I'll just try it. And you know, and then like you said, those, those questions can come, um, as they need, um, but, but to, to just try something, right? Like that, I mean, obviously there's some risk, right, of your time, uh, use for that, but like, To, like, feel like you have a need or, like, are owed some, some explanation of, you know, things behind the scenes that, that, yeah, you don't get in other contexts is, is kind of interesting and it's, I don't know, maybe it's related to the fact that a lot of the software we use is open source and you can look, you know, under the hood yourself and, like, even if you never would, just, like, knowing, oh, you know, it's there.

[00:41:00] If I want to, It's like all these books back here. How many of these books have I read? I don't know, maybe half of them, you know, it's like, but I know they're there. If I, if I want to, you know,

[00:41:09] Mario: could read it.

[00:41:10] Jared: I could read it. Yeah. In fact, the other day I opened up, uh, Data Structures in Java. I was like, why do I have this book?

[00:41:16] I'm going to open it up. And it was interesting because, um, I, I enjoyed it. You know, I was like, wow, this is, this is really good. They started, you know, with this kind of setting the, um, the stage and this context of why. And I was like, Okay. So this is, this is why I keep this around. Um, so yeah, I think that, you know, there is benefit in that, the social proof obviously will, will help people in, in, uh, in gaining that confidence and getting over that hurdle of, you know, just, just try it.

[00:41:49] Okay. Um, so we talked a lot about, you know, those initial challenges we talked about now, um, Lamdera. Uh, we've talked about migrations, which I think was another thing, which was at 1.1.0.

[00:42:02] What's up next with Lamdera?

[00:42:02] Jared: Um, you introduced the ability to generate most of the migrations for you, which was, um, something that I think you had, you had commented that, you know, it felt like it was just missing before, so it wasn't like ta-da.

[00:42:14] Um, but I, I think it is huge and, um, I think it is a great thing and, and very well worth the effort. and then, yeah, you just talked about 1.2.0 with preview apps. And so at that point, you know, now you've been thinking about how folks are using it in production and at businesses and thinking about how to respond to what people need in practice.

[00:42:43] And I think that, you know, that seems like a pragmatic approach. So then are there any things that you are working on now that are kind of in response to the folks who are using Lamdera?

[00:42:57] Mario: the reason for doing the cycle and marketing, you know, is one to be able to, uh, attract more people to Lamdera and better explain things so that the people, you know, I imagine that there's a, there's a subset of people and companies out there who would both really benefit from Lamdera and would actually choose to use Lamdera for those problems, right? And that's, that's not, sadly, I don't think that's an overlapping diagram, right? I think there's people that would benefit from Lamdera that wouldn't choose it, but, um, I thought at least, if at least I improved the posturing for, um, For the way that Lamdera communicates its benefits, that more of the people that could benefit from it and would want to benefit from it, um, would be attracted.

[00:43:41] That would really help solidify, um, Lamdera's sustainability, um, which is already in a good place. Like I, I, I think the thing that I didn't mention is, you know, I, at some point, obviously I stopped working on Lamdera, um, full time and went back to a normal job. The long, the short answer is that it basically just ran outta money. Um, so it was a very pragmatic thing. Um, but with, with the launch of Lamdera, and I think since about maybe two months after that version one launch, Lamdera is profitable. So if I, I mean, obviously excluding my own time as a as a startup founder with Sweat equity, um, You know, Lamdera makes more revenue than it costs to run it each month. So that was really, really important to me as a milestone because I never wanted to be... It always felt wrong in my conceptualization for what Lamdera is specifically. For me to be in a position where I would be like, I have to get VC funding. Or I have to get investment for this to survive. Because I just thought, you know, the incentives, uh, you know, I'd read so many stories about this.

[00:44:48] It's like, okay, well, you know, now you've got VC funding, the VCs want their money back. How are we going to make this appeal to as many people as possible? JavaScript. Let's make more JavaScript stuff, you know? And I was like, that's not, you know, the whole point of, of, um, Lamdera, I think, very much in the spirit of Elm, was like, Well, what if we did things differently?

[00:45:07] Like, what if it didn't have to be popular? What if we could just focus on it being better, for some measures of better? So yeah, my, my goal now with it, um, is for those people that have come along and are really excited about it. There's a subset of those, um, companies that are, they're kind of like third party builders.

[00:45:30] So either they're agencies or they're software companies that build, um, either things directly for other people, or they have their own products that they build and, and resell. And, and for them, um, they've been kind of asking like, okay, one, how can we know? Like, how can we be sure that Lamdera is going to be around?

[00:45:48] Like, how can we trust that, you know, the buses are a big problem in Elm? You know, there's a bus out to kill Evan. There's a bus out now to get me. Like, these killer buses are around the place, right? So they're like, well, how are we going to protect around these buses? You know, so I've been thinking a lot about that.

[00:46:04] Like what that, um, kind of business continuity looks like and, and how you deal with those challenges. Um, and then on the other side, they're like, and also like, how can we get. Like, you know, we've got one job or two jobs, but how can we better sell Lamdera and it's benefits in with customers, you know, cause the customers will come and they'll look at the website and they'll be like, Oh, okay.

[00:46:25] Like it looks kind of interesting, but is, is it this one guy and his partner? Like what's, you know, and what about Elm? Like there hasn't been a release for a little while, like is Elm, you know? And so, uh, I think a lot of my efforts. My soft, uh, I think that's the wrong, wrong word to use actually, but my non technical efforts have been, um, yeah, about like, what can we do to increase that confidence?

[00:46:50] Right. So like Elmcraft is, is an initiative that fell out of me being like, well, I think there should be, we should have a way to better communicate like all the stuff that's happening in Elm. Um, and then for Lamdera, you know, I want to start being able to do the same thing. I'd like to have case studies.

[00:47:04] So, you know, customers that are succeeding with, with Elm and Lamdera can boast about it basically, and then hopefully other customers will see that and be like, oh wow, like that's a great, you know They've solved some problems that we would like to solve and and get like a bit of a flywheel going so that you know then It'd be nice to get Employee 3, you know, or Contractor 3, and then be able to, you know, put more effort into...

[00:47:31] There are so many technical ideas that we could work on, but I think Lamdera is already in a really nice place, right? Like, it fills a need, it solves stuff for people, there are no massive blockers, like no one... No one's like crying out for something that's like really missing. They don't seem to be like desperate, um, desperate deal breakers now. Um, and so, yeah, it feels like it's a nice time to kind of focus on the non technical stuff for, for a bit.

[00:47:57] Jared: The beautiful thing about that is it will benefit the Elm community at large. Um, which actually brings me to, uh, one thing that with the release of Elm Pages v3, it now uses the Lamdera compiler. Um, and I didn't really talk about that with Dillon, but I was wondering if you had any thoughts on that, kind of your, your work there and, and, you know, kind of extending that out.

[00:48:23] Because in a way, I think, you know, obviously there are different trade offs and different use cases in some ways for Elm Pages versus Lamdera, but I think it's pretty incredible that, you know, you, you kind of open that up and make that, um, feasible to Elm Pages. So do you have any thoughts about that?

[00:48:41] Mario: Yeah, for sure. The integration with Elm Pages came because I'm a huge Elm Pages fan, so Elmcraft is built in Elm Pages. Um, and so Dillon and I, we, you know, we would connect and nerd out about all the ideas that we had about all this stuff we were going to do in the future at some point. Um, yes, but the thing with Dillon is he's actually, in my view, better at actually then going and delivering all those things and I'm like, ah damn it Dillon, how are you so productive? Um... But yeah, the, the wire stuff came up, and I don't know who did the proof of concept. I know we talked about it, I don't know whether it was him that gave it a bash or me.

[00:49:21] But basically I was doing stuff with what then was called... It wasn't called BackendTask, what was it? It was called DataSources, I think in ElmPages version 2. And Dillon had this like, optimized, um... Decoder setup, which, which was basically the idea was that, um, So with Elm Pages, again, for those of you that don't know, Elm Pages is like a, uh, a static site generator.

[00:49:49] Well, basically Jamstack more accurately, I think would be, would be right to say like a Jamstack setup, but for Elm, right? So you have this idea that, um, you can generate a whole bunch of, uh, um, web pages. Um, Um, from Elm, but at the trick is that at build time, um, those pages can basically reach out into the world and fetch information back.

[00:50:13] And then, um, Dillon does some nice trickery where, um, the compiled results of all those pages, um, are then kind of like served both statically, uh, as well as like the data. That the pages need gets like dynamically hydrated into them. And so, you know, that, that, that hydration can't fail because you did the queries at build time rather than at runtime.

[00:50:39] So it's kind of nice. You get it like some compile time guarantees, um, on, on your, on the data that your pages need to render stuff. And so, yeah, the downside of that is that, you know, say I want to show a list of blog posts. So I do a query that gets all of the blog posts with their title, their name, the body, the comments, and everything.

[00:50:59] And then all I am actually rendering is the titles. Well, that kind of sucks because... Now what you're baking in is like, you know, a few megabytes of blog posts, but I actually only needed the titles. So he had this, this concept of an optimized decoder, which was only the fields that you decoded from the payload would actually get stored in this, this thing.

[00:51:18] Um, and I think at some point we talked about how he was, yeah, he was serializing that somehow behind the hood and I wanted to know what it was. And I was like, Oh, by the way, like... You know, Lamdera has like these primitives for being able to, um, like serialize any type, like, what if you go a step further and being like, well, rather than like the, like keeping track of that original JSON, what if we, the actual value that you extracted, what if that was the thing that was serialized?

[00:51:44] So then it really is the Elm that you're using, you know, it's not even, not even the JSON in between. And so I think I was like, well, you know, if you could patch, um, If you could patch the Lamdera compiler and somehow there's, you know, this, the, the wire functionality in Lamdera is actually accessible.

[00:51:59] It's undocumented because I don't want people to rely on it. But in this use case, it's pretty good because you don't actually care about the contents of the format. You just want to be able to like restore it. And so, yeah, either I did a proof of concept or Dillon did, or we kind of messed around with it together and it, and it, it became viable.

[00:52:16] And I think Dillon was like... This is great. I can now I can drop all of all this code and and use this thing And I was actually quite nervous about it because I'm like, oh, I don't know like is this weird like because it's a it's you know I'm trying to make Lamdera sustainable and my approach has been to you know try and align it with a commercial offering because I think it kind of has to be, right?

[00:52:38] Like the idea if you're going to encapsulate the backend and you're going to have evergreen migrations where it needs to know about where the runtime is. I'm like, it's just like, there's so many details about it that I'm like, it just makes sense as a service. I was like, but obviously this has value, right?

[00:52:54] Like this wire part in the compiler has value. I was like, I don't know how it will be received for that, um, to be used as a part. And I think Dillon's kind of overall feeling was like, well, I think, I think it's going to be okay. Um, and. Yeah, so Dillon is actually semi officially a custodian, I mean, officially in the sense that, you know, he has access to the Lamdera compiler source code.

[00:53:17] So, you know, if something were to happen to me, I don't think, not everybody's left in the lurch. And he'd be able to, like, pull out that source and do his own builds and stuff like that. But yeah, it was, for me, it was like the first hint of being like, oh, okay, like, this doesn't have to be a thing done in isolation entirely.

[00:53:35] You know, some of these ideas could come back into the Elm community. They could complement the stuff that we're doing. Um, and not in, in what I originally feared, um, would be like, you know, that it would come back in a way that would put pressure on the design direction of Elm or that would put pressure on, um, you know, like how, uh, beginners to Elm would think stuff should be done or whatnot.

[00:53:57] Um, I think, you know, we found nice ways to, to, to leverage like cool things that I'm discovering in Lamdera and other kind of areas. Um, so yeah, that's roughly where it sits with me, but I don't know, maybe Dillon, you'll have to get Dillon back on again. Maybe he's got a different view of things.

[00:54:13] Jared: Yeah, I, uh, I really appreciate that work and, thoughtful consideration there and, and kind of, you know, extending the, the branch there, and I think, you know, working, working together, and of course, you know, now we can call off the killer buses, right?

[00:54:28] Mario: Yeah, that's it. At least for the compiler.

[00:54:32] I'm still working on the runtime and the hosting, but we'll figure it out. Yeah.

[00:54:37] Jared: All right, awesome.

[00:54:39] LEGO Loco Lamdera

[00:54:39] Jared: So I'm going to go back and reference something in Elm Town 18. You talked about loving Legos as a kid and relating it to Elm and type safety, and I really like that. I just published the Elm Town 64 with The Network Effect with Martin Stewart, um, as I mentioned. And we talked about Town Collab, the Lego Loco remake.

[00:55:01] And, um, Of course, you know, I kind of think that that has some, uh, relevance because, , the Legos gave you this kind of, uh, mindset maybe, you know, where you kind of appreciated what Elm provides and its type safety and the trajectory of, of where your, um, affinity for that may have, may have come from.

[00:55:21] And then now, you know, there's something built on Lamdera. You know, that references Lego. Um, I thought that was pretty, pretty interesting, kind of full circle thing. But then as I was looking through and playing with Town Collab, I noticed you have a credit on there as a programmer. So, I don't know if that's related to Lamdera, if there's something more, if you want to kind of give a little, uh...

[00:55:43] Detail on that?

[00:55:44] Mario: Yeah, I think, I think that's just, just Martin perhaps giving me too much credit. I think it was, yeah, perhaps, I, I, off the top of my head, I don't, I don't recall contributing anything directly, but I think definitely we worked, um, we worked on some Lamdera platform stuff together. Um, Martin in just general has, has just, just been, um, I'd call him like a, He's a superfan, or maybe more than a superfan, like an ultra fan.

[00:56:10] He's been around from the beginning. And he's always been very clear. He's like, yep, I never want to deal with server stuff again. I just want to code Lamdera. So I've been like, awesome. But yeah, so I think Martin is very, very good at treading new ground with Lamdera, which for me is just absolutely invaluable. And so yeah, we, we, we've definitely, he's definitely found edge cases that we've worked on together, but I don't remember if there was anything specific on Town Collab. I'll have to ask him. He'll probably correct me and be like, yeah, you did the whole blah, blah, blah. And I've just forgotten. Yeah.

[00:56:47] Jared: Sure, sure. Yeah. But yeah, I mean, just the fact that, you know, um, your reference in five years ago to Lego and then that kind of coming full circle here, I think, uh, is a pretty incredible thing, um, to see and

[00:57:01] Mario: Yeah, I, I,

[00:57:03] Shared joy in things made on Lamdera

[00:57:03] Mario: I think by far the biggest unexpected joy of going down this whole path has been... Seeing the things that people build with it, um, and I don't feel like, I don't feel like that I can take credit for the thing that they've done, um, in any way, but I definitely feel some sort of shared joy, like as if I had made it.

[00:57:27] I don't, like, there's no, I don't feel credit for having made it, but I'm like, yeah, that's a thing now, you know, like there's a, there's a satisfaction to it, which is really cool, like the more people Make apps like, you know, in the early days, I used to, I used to be like, you know, someone would make an app and I would be like, every week I'd refresh the apps list and be like, whoa, like, what are they doing?

[00:57:46] I got to see it. Um, and, and yeah, now I, now there's too many for me to track anymore. So many people building so many cool things. Um, yeah, maybe, maybe that's another cycle. I, I, the last, I think the big, the big releases I would kind of go through and look at cool things and contact people and be like, Hey, your app looks awesome.

[00:58:04] Can I talk about it? So I think maybe, maybe I'm due another cycle of going and spying and peeking on everybody's apps and asking them if they're happy for them to be shared.

[00:58:13] Jared: yeah, there you go. Maybe that can be part of your process of finding case studies to do.

[00:58:17] Mario: Yeah, yeah, absolutely.

[00:58:19] Jared: Awesome. we've talked a lot about Lamdera, we talked some about the Elm community in general, we talked about ElmCraft and what you're doing there to to kind of bring that together.

[00:58:33] Reflections on Elm Camp

[00:58:33] Jared: We haven't talked about ElmCamp,

[00:58:35] Mario: Hmm.

[00:58:35] Jared: uh, there's a paraphrased question from Martin, um, again, and this one's related to Elm Camp.

[00:58:41] He asks, how many times did you crash your quadcopter drone at Elm Camp?

[00:58:48] Mario: How many times? I think it was twice in the end. Twice in the end, the drone suffered, un gentlest of landings, I would say. Um, but no, it was, it was, it was actually quite fun. Um, the event as a whole, I think surprised all of us as organizers. Like, obviously, we put in a lot of effort, um, to make it delightful, but, Yeah, there's only so much you can do with the planning, and also, you know, um, We mostly organized it remotely.

[00:59:23] Katja had the ability to organize to visit the venue earlier on, but It was more, you know, from what I remember at that stage, we were pretty much already set on things and things were in motion, so, I think the funniest thing for me, which just seems, um, a very me thing as far as my friends are concerned, Is, uh, I'm not a particularly concise person, and I can talk quite a lot, And so on the very first day of Elm Camp, I... Was doing the, like, Welcome to Elm Camp, Here's the Information, You Need to Know cycle.

[01:00:03] And after the 4th or 5th cycle of doing that, using my big presenter projecty voice, Um, I was like, Oh, my throat is starting to hurt a little bit. And it just went downhill from there. I think by 6pm that evening, my voice was gone. Like, so the pre, like the pre arrival day, before the first full day of Elm Camp, I was like, okay, I'm gonna drink tea, I'm gonna try, like, soften this. And yeah, it just, it was not better. So, my experience of Elm Camp was mostly quiet, listening to other people. But it was, it was actually nice in hindsight. I tried to, I was very upset at the time, but I tried to make peace with it. And I think by the kind of the end of the second day, I was like, actually, this is, you know, especially given that I can speak so much, I realized, like, you know, Perhaps the point of this really is the universe telling me all right, you can just maybe you shut up for a little bit and like let other people have a voice. And I was like, yeah, I really enjoyed kind of being around, listening to conversations and, and just witnessing. Yeah, like the energy was incredible. Like everybody was just so excited. You know, like we just had this group of people who were just like, man, like we, we... You know, like, yeah, okay, there's Elm, but, like, there's all this stuff that everybody's doing with it, you know, there's all this stuff that people know and that they're exploring and that they're discovering, and so, like, yeah, the community side of things felt, um, yeah, it just felt really lovely, it was just, it was such a nice event, we had, we, we really lucked out and just had such an amazing venue that Katja found, um, yeah, the, the, the way the staff took care of us really, really made it really relaxing, I think, for everybody, and the session format made it very, um organic feeling and yeah, we, we, Katya and I were very, very concerned that people were not going to be happy with stuff and they weren't going to tell us because everybody's lovely, you know, Elm community's nice.

[01:01:56] So we were really like, please tell us what you hate, like, tell us what's wrong, like, give us bad feedback. And yeah, we, like, we, we, we, we struggled to get. Um, to, to get anything that, that was like, oh, you know, that was, uh, we really stuffed that out. We'd really like to do that better next time. So yeah, I feel really lucky and really privileged to have had such a nice, it was my first time organizing a, um, uh, a conference in that way.

[01:02:23] Like I've obviously done Elm meetups for a long time, but, um, yeah, conference is a bit different, you know, with accommodation and food and, and people traveling. And so that was. Yeah, that was really cool. That was a really cool experience. I'm, I'm really excited to hopefully do another one in future.

[01:02:39] Jared: Yeah, well, I appreciate that you found a way to kind of like, uh, find a, an amor fati, uh, love your fate kind of, uh, way of looking at it, you know, and. And being able to listen to what other folks are building Kind of take that, uh, that fate into your own hands, so, good.

[01:02:58] Stoked to see all the cool stuff in the community

[01:02:58] Jared: What are you excited about now?

[01:03:01] Mario: Oof. That's a good question. I think I'm still, I'm still just really stoked by all the stuff that's happening in the community. Like, there's just a lot of cool stuff going on. Uh, I mean, yeah, like we, you know, we talked about Elm Pages, Elm Pages version 3, like, not, not only did, not only, like, okay, the Lamdera stuff, like, made an appearance and it simplified, um, some of the stuff in the backend and maybe some of the, the user interaction with, with, with some things, but yeah, I think just Dillon, Dillon has just such a lovely, um, um, A lovely way of thinking holistically about things, you know, and I think like the primitives that he comes up with and the concepts that he kind of worked through are really nice. Um, so yeah, I've been, uh, something I'm excited about is, uh, Elm Pages scripts. And so I've been, I've actually, the entire, um, Lamdera preview apps feature in Lamdera was built with Elm Preview, like Elm Pages scripts behind the scenes, so I was just, I was getting to my wits end of piecing together like Bash scripts and Haskell. Um, and I thought, you know, I wonder if I could just do this all in Elm. And you can! Like, I, I, like the entire preview apps build pipeline is completely written in Elm and it works beautifully. Um, And it's delightful, and it's type safe, and I have no errors with it, so I'm super excited about that. I'm just going to go all in on Elm for scripts now.

[01:04:20] So yeah, I think that's been really cool. Oh, but off the top of my head, I can't, there's just so many things happening. Yeah,

[01:04:28] Jared: Yeah.

[01:04:29] Mario: I think what I'm excited about, maybe this is a bit meta, is I'm excited for Um, the next few things that I'd like to get going with Elmcraft is more about collating like all the stuff that's happening in the community and making that more easily visible.

[01:04:48] So there's a few ideas flying around about like, you know, what form that could take and what those things could look like. But yeah, I definitely think we have a gap in our community where I think the people that are in it, um, or for some reason, like, are trying hard to like connect. and figure out what's going on, can find out and that kind of hive mind knowledge is there. But I think like from an outsider's perspective, um, not that I don't feel like it's exclusive, like I don't feel like it's, I don't feel like anybody's like, um, Like, doesn't want these things to be accessible, you know, like, I don't think it's like, it's exclusionary to beginners, but I think it's just a little bit harder the way that we've got stuff set up at the moment.

[01:05:27] Like, there's just a smaller amount of passionate people doing lots of cool stuff, and I think it's harder to see that. Um, so I always find it interesting, you know, when I see beginners be like, oh, how do I do... You know, how would I add and manage routing? It feels a bit boilerplate y, and then, you know, someone mentions like Ryan's Elm Land,

[01:05:42] you know, and they're like, this is incredible, and it's like, well, yeah, it is, like, and, and, like, so I, I would love it if it was easier for people to find that kind of stuff more organically. Um, so yeah, that's my answer. I'm excited to be excited about collating all the things that we should be excited about.

[01:05:58] Jared: The community is definitely, it feels like something has been lit, you know, or relit, you know, kind of rekindled this year. Um, and I think it's, yeah, probably a combination of, of several things, you know, kind of coming out of, Um, a couple of years of lockdown, uh, of course, Elm Camp, um, new releases of, of different things, which were, you know, probably in some ways Brought to their, the finish line via Elm Camp and then, um, of course, I'm, I'm very thankful to, uh, have my employer Logistically support me and, and running this podcast, um, and bringing Elm Town back and, and so, yeah, I think there's just so much, um, going on right now.

[01:06:40] Yeah, it'll be really nice if we can kind of, see that all, um, brought together, you know, and, and kind of shared with a wider group and, and I think that would, that would be nice because I feel like maybe as we were talking, maybe one of the reasons I want to talk about Elm so much is because, um, there aren't, uh, there isn't a place I can just like, you know, send a link like, ah, you want to, you want to talk about it and I, you don't have to, you can just go read it yourself, you know?

[01:07:08] Um, so maybe that, uh, Maybe that will make it, uh, make me shut up a little bit.

[01:07:13] Mario: I definitely hope not. I hope it'll just bring more people and more projects and more things to talk about. I think that would be really cool. Um, but yeah, we'll see how it goes.

[01:07:24] Jared: Yeah, that's exciting. Well, Mario, is there anything else you want to talk about before we get to picks?

[01:07:30] Mario: No, I think that's all I had.

[01:07:33] Jared: All right.

[01:07:34] Picks

[01:07:34] Jared: Well, what picks do you have for us today?

[01:07:36] Mario: Picks. I don't think I have any picks at the moment. I think, uh, actually, no, that's a lie. I would, I would definitely put Elm Pages Scripts as a pick. I think. It is a very underrated thing at the moment, and it's really nice. Actually, it's a pick with a condition on myself. I've got like a harness that I built a little bit to help support custom backend tasks with the scripts that I've been using.

[01:08:06] So I should really publish something, or at least half publish something. Because I think, yeah, it's really really nice. Once it's all kind of there, and you've got the primitives, then you can quickly like... Use it for for things that you might reach for bash for otherwise, but Usually you end up reaching for bash, right?

[01:08:24] Because it's just kind of it's just there, right? So it'd be nice to make that like smoother and experience just be like, you know You could just write Elm and it'll just run straight away So that would be a pick for sure And then yeah, Elm Land as well. I think On the other side of the coin, I have this I think I might have said this to both Dillon and Ryan individually, but it's like, I've got this feeling that we are slowly tending towards, like, Elm Land Pages Lamdera. it's going to be like, there's some project that's going to like morph all of those things together eventually. Um, I don't, yeah, I don't know, I don't know who's gonna do the hostile takeover of who, but it just, it feels like it's going in that direction. You know, Elm Pages is a bit of like, um, Elm Pages has a bit of Lamdera in it now.

[01:09:14] Um, Ryan did for, for, so Elm, Elm Spa before, um, Ryan did Elm Land. Uh, had a Lamdera demo and then, uh, Ryan recently did, um, another version of, of the demo in Elm Land, like running Elm Land on Lamdera. Um, so if anyone wants to like, use those two together, they're like, they absolutely go hand in hand. Um, so yeah, definitely check out those projects.

[01:09:39] Check out, um, Elm pages scripts, and yeah, think about a future where they're all coming together. I think that's what's gonna happen. That's my, that's my future pick, I'd say.

[01:09:51] Jared: Nice. Yeah. Um, well, I look forward to that, that future because I think that will be excellent. I, I appreciate, um, what Ryan's doing with Elm Land too. And in fact, yeah, some of Uh, things that, beyond, uh, the initial Elm Guide concepts. Now I've been looking to those guides as, you know, what I send people if they, they ask questions.

[01:10:16] And, you know, maybe I'm, um, don't have the opportunity at the, at the moment to, you know, kind of talk with them. Send them, you know, guides through there. And it really is a, a good place for those resources as well. You know, in addition to the, you know, the amazing tools. So it's like, you know, there's a lot.

[01:10:32] A lot there. So, cool. Great picks. My one pick for this episode is Elm Weekly. It's curated by Wolfgang Schuster and is a way that I get my Elm news and, , so, yeah. That's everything. Thanks, everybody, for listening to the show. Please rate and share if you're enjoying it. And thanks, Mario, for coming to Elm Town.

[01:10:57] Stopping awesome,

[01:10:57] Mario: Thanks for having me. Loved it. Thank you.

[01:11:00]

© 2024 Jared M. Smith