Elm Town 59 – Elm Camp with Katja Mordaunt

JUNE 27TH, 2023
|
01:05:51
Katja Mordaunt talks about Elm vibes versus other programming communities and gives us the low-down on Elm Camp (https://elm.camp/).

Details
/
Transcript

[00:00:00] Katja: Probably by the time this airs it will be sold out. I would almost like, if it's not, I might be sad. Right.

[00:00:09] Jared: Hey folks! Welcome back to Elm Town. I'm your host Jared M. Smith. We'll be visiting with Katja Mordaunt today.

[00:00:19] Sponsored by Logistically

[00:00:19] Jared: But first, let's talk about our sponsor. Logistically is the company where I work. At Logistically, we make transportation management software for third party logistics companies and shippers. I'm grateful that Logistically pays me to spend a bit of my time recording Elm Town episodes, as well as pays for our recurring production and hosting costs. We build the front end for all new features in Elm. We have over 100,000 lines of Elm code in production even after running elm-review-no-unused. So if you're interested in logistics, please drop us a line, elmtown@logisticallyinc.com. I'll put a link in the show notes.

[00:01:00] Introducing Katja Mordaunt

[00:01:00] Jared: Now, Katja. Katja uses Web Tech to help improve the reach of charities, artists, activists, and community groups. Katja is an industry advocate for functional and Elm programming. She's a co-founder of Code Reading Club with Felienne Hermans. Some of her Elm contributions include presenting "Growing an Elm Project with the Whole Team" at elm-conf 2019. She talked about Elm in the Functional Geekery episode 140, "Katja Mordaunt and Adam Warski". She is a contributor to elm-units and on the team behind elmcraft.org. She is also an organizer of an exciting new Elm Unconference in Europe this summer, Elm Camp Europe.

[00:01:49] Katja. Welcome to Elm Town.

[00:01:52] Katja: Hello. Thank you for having me. It's very exciting to have it on time back in our lives.

[00:01:57] Jared: I'm excited to talk with you. Thank you.

[00:02:01] Computing in the 80's in SoCal

[00:02:01] Jared: So to get started, I wanted to ask you how you became interested in computing in general.

[00:02:09] Katja: Oh wow. Um, I became interested in computing in general at a very, uh, young age. I think I was probably eight or nine. Um, my father was an aerospace engineer and so he was using computers in his work. Um, this is in the eighties and, my parents, uh, bought us, um, I an Apple two e I think was the second computer that we had.

[00:02:38] The first one was a Texas instrument. And I played basically text adventure games on them, um, and got interested in programming through that. Uh, also, um, because at that time I was living in, um, Southern California. And, computing was actually part of the primary school curriculum at , that time.

[00:02:58] So we did Basic and Logo. Um, and I, yeah, I just, I really loved it and, yeah, joined after school clubs and all sorts of Yeah. Things like that.

[00:03:09] Jared: Oh, that's cool. So you had a computer at home, which I'm guessing that was kind of a privilege, right? Not everyone would have one at that time.

[00:03:21] Katja: Yeah, for sure. It was, um, it was something that, uh, my parents thought was important for us to get involved with. And I, and I think, , being in Southern California and my father using computers at work, I think were some something to do with that. Yeah, I think it was unusual. I didn't realize that at the time, but, um, I'm married to a Brit and he didn't use computers.

[00:03:44] For any of his school, like up through university. Um, so yeah, very different experience.

[00:03:51] Jared: Yeah. Wow. Okay. So you're playing text adventure games. Now, were you sharing this, were your parents, was your dad using this, uh, computer for work as well, or did you kinda get to run amok with it?

[00:04:05] Katja: Basically ran amok, I would say. Um, I, I think, I mean obviously like as I got a little bit older into my early teens, then the computers changed as well, but those very early ones, um, my dad was actually still just using like a slide rule and like binary printouts and things of, he wasn't, he wasn't, uh, fully, um, yeah, fully into using the computer at, at that time.

[00:04:28] So it was, it was just, uh, education, educational games that we had on it. Um, and then I had some friends who were sort of like 10 years older than me who lived nearby, , that were starting to get into, like hacking and things. So I kind of hung out with them and they got me like bootleg games and well, yeah,

[00:04:47] Jared: Nice. No, that's fun. And so then you had some people you could ask questions with and work with when you're trying to learn to code. Right?

[00:05:02] Katja: Yeah, absolutely. They were connected with my school and that kind of group of friends that I mentioned. Yeah,

[00:05:08] Jared: Oh, cool. So were you making your own text adventure games, or what kind of things were you trying to program? Just examples.

[00:05:16] Katja: yeah, yeah. No, I wasn't, I was, um, I was hacking them a little bit, adding mods and also just, yeah, just like writing like. Pretty much was too immature to like, follow anything through properly, I think. It was, it was more just exciting, those kind of standard, like making your name appear on the screen 500 times, those, those kind of things.

[00:05:40] Um, yeah, and, and drawing like, uh, drawing pictures with that Logo turtle and things like that. Yeah.

[00:05:47] Jared: Oh right, yeah. Yeah. That's really cool. And so that's how you got started.

[00:05:53] Switching careers

[00:05:53] Jared: Now. I've heard from the, I think it was the functional geeky episode that you didn't, uh, initially get a career in computing and programming. Um, would you kind of talk about that transition?

[00:06:09] Katja: Yeah, sure. So I carried on, um, being interested in computing sort of as a hobby, all the way up through when I started, um, university. And I started university as an engineering student. I did two years of engineering and then I transferred across to a liberal arts degree, um, and did filmmaking and creative writing.

[00:06:34] The reasons for that was the engineering curriculum was very rigid and I was like a quite creative person and had gone into engineering, like wanting to make stuff, wanting to have like good technical grounding f to be able to like design and make things. And at that time, so when I was at university was the, early nineties, late eighties.

[00:06:58] And, there was com you could study computer science, but it was a very niche subject. Uh, the internet hadn't really started. There were like intranets and like within universities and we did have emails and things, but it was very, um, a very specific demographic of people who were studying computer science and that sort of, and also engineering and maths. And they weren't very welcoming to me, as a young woman. Uh, so that was part of it. And then the other part was just, yeah, that I saw the people who were doing, um, the more creative pursuits, uh, were able to make a lot of different choices.

[00:07:32] Like you could study anthropology alongside painting, alongside, um, literature. And I liked the appeal of that a lot. So I left my engineering behind and I carried on doing computing as a hobby. And then, um, I went into the film industry and I wanted to become an editor of films. And I thought that my computer background would also like merge it seemed at the time, uh, which was like the.

[00:08:02] Um, early two thousands that there was a lot of exciting things happening with, like media in general, where there was like, the internet was gonna merge with everything that you saw on streaming and TV and everything. And so I thought that I would carve out a career of being like a technical person within the film industry.

[00:08:17] But what ended up happening is I started carving out a career as a producer in the film industry, which is essentially like a project manager. And I had three children who were very young and the film industry is a very unfriendly place. And so, and, and very unfriendly in terms of like hours and expectations.

[00:08:37] And it, it just turned out to be really difficult to make that work with a family. So I went back to, um, do a computer science degree with the Open University while, um, while I, while I was at home with one of my young or my youngest child, And that kind of gave me the confidence then to apply for jobs that were about making things on the public internet.

[00:09:02] And I started out doing things that were crossovers for TV channels in the uk. There was always like an education component to a series that they were making. And so I was working on those, um, products and doing things with Facebook apps and MySpace apps and bebo apps and things. Um, and yeah, that's where I, that's that's how I started.

[00:09:27] Jared: Oh, wow. So thank you for sharing that story and persevering through that and continuing and, and starting back a, a career with computer science and, and of course, uh, all the contributions that you have made today with Elm, uh, wouldn't be possible without that. So that, that's great.

[00:09:47] Commonalities in leading teams from film to computing

[00:09:47] Jared: So I guess maybe if we could, I'm just really interested in this, uh, making feature films and, and working in creative writing.

[00:09:57] I can't help but, uh, ask a little more about, um, your work in that area and, and what maybe the, the parts that you know, while it was. Interesting or why you were in that business. What, is there anything you could share with that that, might be a good story?

[00:10:15] Katja: Probably lot. Yeah. Um, so I still do, do, uh, work in the industry. Um, the last thing I worked on was about a year ago and, um, it was a documentary for Disney that never will air because that's the way, that's the way the industry works. Um, but I, I did learn a lot of things from, essentially, it doesn't really matter what industry you're working in, if you are trying to like lead a team through things, um, there's a lot of commonalities and.

[00:10:48] There are a lot of commonalities that I fight against in both the, this, computer industry and also in the film industry where there's a lot of sort of unfriendly hierarchies and, and, people who feel like they have to pretend to know more than they do, and people not valuing input from other people on the team because of their perception of like how experienced they are or how much knowledge they have, how much value they bring.

[00:11:23] And that is, that's, um, the same in the film industry. There's a very much a, like a guarded, um, people sort of guard their titles and their roles in the same way. So, yeah. So I like to think like, one of my main responsibilities in, in both of those industries is coming into a group of people and helping them work together in a better way.

[00:11:44] How Elm has a more accessible vibe than other programming communities

[00:11:44] Katja: And I can relate that very well to Elm, I think because there's so many things about it that make it more accessible to people. And the generally, like the community as well. The people who are devoted to using Elm, and who value all the things about it are a really special set of people, I think, within the tech industry.

[00:12:08] And I'm not sure how much people outside of the Elm community realize that that's the case because I go to other, like functional programming things and other just industry specific programming things. And it's just a very different vibe.

[00:12:23] Jared: Yeah, totally. I a hundred percent agree. I remember the first time I went to elm-conf in 2017, and I just remember being, feeling so welcome and so, um, so invited, you know, to, to join in and, and do things. And I was actually just, uh, messaging Murphy Randall, the original host of Elm Town, uh, some technical things with the podcast, but one of the things that, uh, I mentioned was that at that conference Murphy and Dillon Kearns and Andrey Kuzmin were all kind of working huddled around a computer and doing this mob programming thing.

[00:13:10] Just the vibe was very open where I felt like feeling like a beginner in Elm in the community, not knowing anyone. And, uh, they, they let me join in and, and kind of, um, have that experience of, of doing mob programming, which I had never done before either. So it was a lot of, of newness.

[00:13:31] And so that, That what you're talking about, about the Elm community being different than other, uh, conferences. I, I totally agree. And, and just one last thing is that, uh, going to other conferences in the past that were more, uh, I don't know, oriented around other languages and other technologies, I won't get into specifics, but they just felt much more focused on the, the technology and, and, and less on people.

[00:14:01] Um, but I think striking that balance is really important and, um, Elm does a great job and I'm thankful to be here. So, yeah, that's, uh, that's a great point.

[00:14:12] Katja: Yeah, I'll just, I'll just add a little bit to that because I, I think it's not only that they focus on technology rather than people quite often, but they also focus on the person on the stage being an expert who's gonna teach you all about this like expert thing that they know about and they're gonna pass on that knowledge to you.

[00:14:31] And there's not the same sense of like, of give and take or, um, yeah, that, that sort of equity thing that you're talking about where they're doing mob programming and you are brand new to Elm and they just like, no one even thinks about it, you just join in, you know, so it that Yeah. They don't say stand over there and watch us.

[00:14:51] You know,

[00:14:51] Jared: yeah.

[00:14:52] Katja: which is the mentality. Yeah.

[00:14:54] Jared: That's a good point. Yeah, and I always try to tell myself, uh, in that regard about, who has knowledges that, " All I know is I know nothing" and try to keep my cup empty, you know, so that no matter, um, what, uh, experience I'm in, I'm, I'm trying to learn as much from it.

[00:15:13] And, and yeah. So that, that's definitely something that being in the Elm community fosters and, and so yeah. That's well put.

[00:15:22] How Katja discovered Elm

[00:15:22] Jared: So then we we're talking about Elm here, but as far as your story and your history, we haven't really gotten to the point where you discovered Elm. How did that come about?

[00:15:34] Katja: Um, I was working in, uh, web technologies and mostly doing PHP backend things at that point. And. I had been going to some talks about functional programming. I think like F Sharp maybe was the first, um, introduction to that I had. And it felt very obviously a sensible route to take to me. Uh, so I, I was looking for ways to, to try it in my work.

[00:16:10] And, I think as well, like one of the things that I've come to realize much later on is that when I was in school, like very young, like primary school, I was really good at maths and algebra. Like those kind of logical just functions basically. And I think that some people who have that like, um, natural inclination, functional thinking is much probably easier to get at the start and to understand like the benefits of it.

[00:16:38] But I think anybody, no matter what kind of brain you have, Uh, once you start practicing functional, you will see the benefits. They just might not be obvious at the start like that. So anyway, so I, I saw that it was gonna be a lot less, stressful to work with than the other type of coding than I was doing.

[00:16:58] And when I was at university, uh, when I did the engineering and computer science early on, I did, uh, Pascal was the language that I ended on. And that was obviously before object oriented came into play. Um, it was right at that cusp. And then when I went back to university, I did, uh, Java, which is obviously objects, but I think because my very early, um, experience had nothing to do with objects, I'm not scared about leaving them and a mutation behind basically.

[00:17:30] So yeah, so I was, I was, um, I was working in these web technologies, mostly php. I was a backend lead at my company and. We got in a project that, um, turned out after we did our discovery with them, that they weren't gonna need a backend at all. And I, because of the availability of like tech leads in my company, uh, I just ended up having to be the person to lead it anyway.

[00:17:56] And I was like terrified of JavaScript cuz there was a, basically half the company did JavaScript and half the company did php and the JavaScript people were like, everything was changing so quickly. And I would have to work on their projects sometimes just like add a feature here or fix a bug or something.

[00:18:13] And every time I worked on a new project, they were going from like Angular and then they changed to view and then they changed to react. And every time you were like learning all these new gotchas and at the same time I was trying to get to grips with CSS, which also is very confusing. And like when I learned those early foundations, like in the nineties where it was just like HTML and CSS and it was so simple and little jQuery and yeah.

[00:18:39] So I was terrified basically of front end. And the front end developer is at my company as well. Like probably didn't do it in an unfriendly way necessarily, but they, they were very adamant that it was like, it was hard and it was confusing and you were gonna get caught out. And so, so I then moved to a new town and I, I was looking for people to connect up with, um, professionally.

[00:19:05] And I found that there was a functional programmers group in my town, and it's a really tiny town that I live, well, a small town that I live in, in England. Uh, and I went along to the functional programmers group and it was like four people and they were really nice. And uh, so I kept going and, Uh, they were talking about lots of different, mostly Haskell at the time.

[00:19:28] Um, and some other like Apple, like, uh, I don't know, swift stuff, but one person came along, they would do like a talk, every meetup, somebody would bring a talk about a project and someone came along and showed Elm. And I thought, wow, that's amazing. That's perfect alternative. This is my opportunity to use this at work.

[00:19:47] And it happened to coincide with the time when I was also doing that, um, that project without the backend. And so I basically sold it to the company that we were gonna use Elm and everybody was happy about it and we did. But unfortunately at that company, the people who were already established in the front end teams, um, in my company were settled on React by that time.

[00:20:15] And they have, I've left that company. Um, but I'm still sort of in touch with them. They've moved on and they use like React and TypeScript and Next, and they have, I made I think six Elm projects there, which they still like, maintain, but they don't choose it I, without me, which is sad I think.

[00:20:34] But at the time they felt like they'd invested a lot of time and energy into being really good at React and they trust the bigger ecosystem more and they like CSS and they feel good at it. And you know, there's all sorts of things that mean, um, yeah, that make people stick with it. I think.

[00:20:58] Jared: And around what year was this that you went to this, uh, functional meetup and, and found Elm during this presentation and introduced it to your company? What was the timeframe?

[00:21:10] Katja: I think 2016. Maybe

[00:21:13] Jared: Okay.

[00:21:13] Katja: would have to verify that, but it was around that time. It was very much at the time, like Angular two had come out, which is one of the reasons why they left Angular behind and view and react. They were all like, all around the same time. It was, I think React was on like 15 version, 15 or 16, I'm not sure.

[00:21:36] Yeah. Uh, so it was right, it was right at the release of, um, 19. I think maybe, um, I, my first app was in 18, so when I first started playing with Elm, it was in 17, I think. But I don't know how that corresponds years.

[00:21:56] Jared: yeah, yeah. I don't remember exactly, but I, I get the general timeframe, I think from that. So you said you created about six Elm apps there? Yes. And I think, uh, this gets brought up a lot sometimes, um, I think people can sort of build something with Elm and then forget about it for a while if they're not adding new features.

[00:22:21] Um,

[00:22:23] Katja: this is, this is one of the amazing things about Elm.

[00:22:27] Jared: yeah. And so, um, that can also be to its detriment in a way because I think people aren't thinking about it. You know, they're, they're busy solving other problems and if they're already using whatever tool set and, and you know, maybe haven't, I haven't seen the, the benefits, um, and, and trade offs there, then they, they might not realize, you know, what they have the, the power of, of using Elm there.

[00:22:56] But so you, you moved on, you said from, from that company. And so, um, what, what are you doing now?

[00:23:04] Katja: Um, doing very similar types of work to what I was doing before I, I left them and started my own company and, Uh, carried on. Even when I was working with them, I was freelancing and because I would go off and make films occasionally, they, they were used to me like taking a sabbatical. So I would sometimes have side projects that would take off for a couple of months and then I would sort of come and go a little bit.

[00:23:27] Um, but yeah, so I'm still doing the same thing that I was doing with them, which is building small apps, uh, which are useful tools for people who need them either for, uh, public facing application or it might be an internal tool for the company. And they're all the companies that I work for are, uh, nonprofits or small community groups and like activist artists, things like that.

[00:23:51] Yeah. So mostly what I do is make little tools that they can use that make the whatever they're trying to do a lot easier. Um, which Elm lends itself to brilliantly, I think. And like you said, you can, you can build the app and then leave it and it's stays stable and good for years, and then you can go back to it and, uh, add a feature and not be scared.

[00:24:16] And one, like one of the really joyful experiences that I have is getting a new developer onto a project. And it, it can either be a person who's like never done JavaScript or who's never done any programming professionally or, um, yeah, just someone in coming from a different language who's never done Elm and, and they get very scared and say, oh no, I don't wanna break anything.

[00:24:41] Don't. And I take like, even even clients who aren't programmers who are just interested a little bit, I'm like, don't worry about it. You, you can't break it. Just change the thing that you think you wanna change and it will tell you what's wrong and then you fix it and it, it won't, it won't release if you don't, you know, it won't even compile if you don't.

[00:24:59] Do something right. And yeah. That's so fun to watch where people are like terrified and then they're like, oh, I see what you mean. It's like I can't break it

[00:25:09] Jared: Yeah.

[00:25:11] Katja: and I can understand all these variable names cuz the,

[00:25:13] Code Reading Club

[00:25:13] Katja: that's the other thing that I do a lot of, uh, right now is this, uh, Code Reading Club. Uh, and one of the things that is the most confusing for people when we're reading pieces of code that we've never seen before is variable names that are abbreviated or like very domain specific and everything.

[00:25:34] And sort of within the Elm culture it's like very much encouraged to write out exactly what the name is. And there's, there's a lot of really good conventions about, um, what kind of tents to use and things and, and what kind of, yeah, what kind of names to use. And you don't choose between Camel Case or Snake Case or whether you wanna capitalize the first one.

[00:25:56] You, it's all, it's all decided for you and that makes it much easier to read, like consistently across different code bases as well. And the other thing I think that's really good in the Elm community for, for reading code is, and I guess in functional in general as well, is that you're very much encouraged to like, make small pieces of not reinventing the wheel, but like making small specific pieces that are just for your app and you're not relying on like an external library for like doing whatever, essentially very simple functionality.

[00:26:31] But if it's there in front of you, in the code base, you're looking at not an import that's like hidden off somewhere, then it's like also much easier to, it's much easier to change the way that it works and also just to see how everything fits together.

[00:26:44] Jared: Yeah, there's no magic in it, right? You.

[00:26:46] Katja: Exactly.

[00:26:48] Jared: Yeah, you, I, I love that I, I used to think that I, uh, I really, you know, needed all the, the magical things that I worked with and then more Elm has more and more, uh, you know, kind of brought me back to reality. And that the more that you can see and, and the more that, yeah, like you said, you just, if you have it in front of you, uh, you can figure out how it works and, uh, and like you said, change it.

[00:27:14] Um, you have a, I feel like a lot more power over, over where you want to go with it versus, you know, if you're using a third party library or framework and then, you know, they decide to take a different direction. You're, you're sort of have to make another choice at that point. Um, so there's a couple things that I want to go back to, but I wanted to ask a question about the Code Reading Club. Do you read Elm code ever in that, or what, what is that like?

[00:27:43] Katja: We do read Elm code sometimes, but I try and, be like equally representative of all languages. Uh, and then sometimes if I'm working with a specific company, then they'll want to do the reading within languages that they use in that company rather than as a kind of fun exercise for expanding your ability to read lots of different languages.

[00:28:07] So, yeah, so we do do, we do do Elm, uh, a couple of times. Uh, people have been, or groups have been very, at the start of the session, they're very sort of taken aback by the syntax and everything, which just appears to be so different from any other language that they're used to. But usually by the end of the club, they've kind of come around to understanding the logic behind why it is like that.

[00:28:31] So, yeah.

[00:28:32] Jared: Okay. Yeah, and so. You mentioned this, you do this at companies, are, is there anything that is open to the public for reading code or, you know, becoming involved with that? Or how does that work?

[00:28:46] Katja: Yeah. So we have a, we hold a public club on the first Tuesday of every month where anyone can just come along. At the moment, it's free. Uh, although we're like slightly potentially reevaluating that because a lot of people sign up for a free event, and then only a handful of them actually turn up. And one way that I've been, uh, advised to combat that is to like charge a nominal something to make people take it a little bit more seriously, I guess. Uh, so yeah, so people can join along with that. And, um, the other thing, we have a discord where people can come along and ask for advice and we can help them set up a club with, if they have a group of people who want to do it themselves. All of our resources and things are online in our GitHub and we are working on, we just had like an annual meeting last month.

[00:29:39] Um, we're gonna focus this year on trying to make all of our materials a little bit like easier to pick up and use by yourself because it was always the intention that people should just start their own clubs. But it's not necessarily obvious how to do that at the moment. Yeah.

[00:29:56] Jared: Sure. Okay. And. If you're doing this at a company, are these people who are experienced developers that are are reading code or is this people you're teaching to read?

[00:30:08] Katja: Um, It's both experienced developers and newcomers and oftentimes you'll have like at the very first Code Reading Club, people who are maybe like product owners or like QA people who are just interested in like, what does it mean to read code will come along.

[00:30:27] They do tend to like tail off because although they do get a lot out of the session, you, you have to kind of tailor the session more towards that and then like, It's difficult to keep that momentum going, but with, with people who are, that people who aren't code, like, who aren't writing code essentially with people who are, but it's interesting for them to come along to a couple of sessions.

[00:30:50] And we've discovered that there is probably a lot of really good value in when you first come to a brand new code base, um, onboarding into it with, essentially what we do in the clubs is we teach techniques that you don't, you don't learn otherwise. Mostly people's techniques is like using Google to look stuff up and relying on their syntax highlighters.

[00:31:15] And what we teach is we, we always read code in like plain text with no highlighting. We always take just a single file out of context, so you don't know where it has come from. You don't know what the imports are. You can only see like the text that's in front of you in a single file. And. That takes away a lot of the like, safety crutches that people have.

[00:31:40] So it teaches a different way of, like, it teaches your brain a different way of processing that what's what's on the page. And people are, you learn techniques about how to break things down so that it basically starts from, there's like a few exercises that you can run on a piece of code. If you can literally just like read the, like, uh, like phonetically or whatever, read the language, the p the the symbols and the things that are on the page up through to like the most advanced thing that we do is thinking about what, so you start with looking at what decisions were made by the people who were writing the code.

[00:32:18] And then you think about what consequences of those decisions are, and then you finally can get to a, why do you think they might have made those decisions? Like what could have. What, what situation might they have been in that they decided to go down that road and not go down another road? And all of those things like really enhance your ability to write code that can be easily more easily understood by other people.

[00:32:43] So the number of times where I've had like a very senior developer in a session go listening to somebody who might have just started writing code, talk about like, why, why did you name it that? Or why did you put it here? Because that's very confusing to me and it's such a simple thing to, to change. Um, and it also makes you better at reviewing code like constructively because you feel like you could, you have like actual evidence of if you do it this way, it will be easier for your future self to come back and read it.

[00:33:18] Yeah.

[00:33:19] Jared: Oh wow. That sounds really interesting. And when you started talking about removing the syntax, highlighting and taking it out of context, I started to sweat a little bit thinking, oh, can, can I do that?

[00:33:30] Katja: do. We don't make any rules in the, in the club. So occasionally somebody will come back. So it, it alternates between like sections where you do work individually and then you come back and discuss it as a group, what you found out when you were doing it. And occasionally people will come back and say, while we were doing that exercise, I did some Googling and we, and everyone goes,

[00:33:50] Jared: (Laughter) I,

[00:33:53] Katja: but, um, that it's allowed, you can, you can also do that if you, if you want to. But we, when we started it was all on paper, so we didn't have computers, we were just doing it. But then Covid changed and we've moved to like an online format, which is amazing because now the public clubs have people from all over the world joining every month.

[00:34:12] Jared: Yeah. Yeah, that's great to be able to expand that out. So I'll definitely have to check that out.

[00:34:18] "How has being an Elm advocate helped to connect to the wider development community?"

[00:34:18] Jared: A couple questions that I had asked Nick at Neon Tribe, he came back to me and one of them is "How has being an Elm advocate helped to connect to the wider development community?"

[00:34:37] And this, he says, is, with respect to your 2019 Elm conference talk,

[00:34:44] Katja: By 2019 El uh,

[00:34:47] Jared: the one, uh,

[00:34:48] Katja: yeah, yeah. The growing, growing, "growing an Elm app with the whole team". Yeah, so I mean, definitely it has given me an excuse to go to lots of functional programming conferences, which is amazing, and meet lots of really interesting people and think about how. Uh, I, I think essentially I've always been on a mission to like, make it a nicer industry to work in and to make, um, yeah, teams like perform better in a, in a, like wellbeing, supportive sense, and meeting people all over the world, having, it's a very, like Elm is a very niche topic, I guess, and a very niche community. So yeah, just it, I think that's the biggest thing. It's given me an opportunity to just like, hear other people's ideas about how things can get better. And not just with Elm, but a lot of the conferences that I go to have a crossover between academics and industry professionals.

[00:35:52] And I've found that there's one particular one called It'll Never Work in Theory, which is new. It's been running for three years now, I think. And that one takes, um, academic researchers and they coach them to present, like how to best present their idea to industry. And there are people who are doing research into what it's like to, you know, all sorts of different aspects of being a professional programmer and trying to find out how they can improve things.

[00:36:24] And they come up with some, like really great ideas for new tooling. And, yeah.

[00:36:30] Jared: Yeah. That's,

[00:36:31] Katja: don't know if that's, that's not really the answer to the question you asked me, but

[00:36:35] Jared: no, I, I think it is, it's a, a wider development community because now we're not just talking about people who are trying to, you know, build things with technology. These are people who are also researching how to do that. Right. And, and kind of joining these groups together. Wasn't there something like that at Strange Loop last year?

[00:36:55] The It'll only work in theory.

[00:36:58] Katja: they came, they did a, they, yeah, they presented some of their papers there. They did a, um, collaboration with Strange Loop last year. Yeah. Yeah.

[00:37:07] Jared: Really cool. Yeah, I think that's great.

[00:37:10] Elm apps are not fragile

[00:37:10] Jared: And then the other question from Nick is "how has using Elm helped to make sites for vulnerable users?" And he mentions "we worked on these two sites in Elm a few years ago, uh, surviving economic abuse.org and you matter haven.org.uk".

[00:37:29] Katja: So I think one of the, I guess it's not like specifically around vulnerable people, but one of the benefits of Elm I've found against other frameworks is that the apps are not fragile. So a lot of the groups that we work with will have like a small part of funding to be able to produce a thing, but they don't have any money to maintain it over time.

[00:37:54] And then they, a lot of times will come back like two years later with another small pot of money to add something to it. But that in between time, there's no one funding anyone to look at it or work on it. And amazingly, there's no new bugs being discovered where like all the other apps that I have worked on, which are like much, um, yeah, much larger beasts in terms of their boiler plate and in terms of the wiring between things, um, those like stuff just goes wrong all the time when you, you just, you let it sit and it, and it

[00:38:30] magically goes wrong by itself. Um, and I haven't found that with any of the Elm apps. And they're also, they're just, they feel much more port portable. It's like a weird psychological thing. They just feel very lightweight and portable. Like it feels like you can just hand it from one server to another or one organization to another without, like, without worrying about all this.

[00:38:51] Yeah. I can't really describe it anymore than just wiring because, because I work with these groups, I sometimes do still have to pick up projects that are like a WordPress site or a Drupal site, or a React app. Um, and it's so painful and stressful to work in those environments because things just break all the time.

[00:39:11] And I, and, um, yeah, with Elm, they just don't. And I guess the other like tiny thing, which I, I touched on earlier, which is like bringing new developers into a project or enabling clients to just like edit. So with those two apps that Nick mentioned, the, the clients are able to like update the copy and there's no UI for it.

[00:39:34] It's just that it's used markdown and used like, just like text translation files and they can go in and edit the copy without being worried about breaking anything. Um, so that's also great. And then one last point is that the security features that are kind of built into Elm by default as compared to like a JavaScript a framework means that you also don't have to worry about, don't have to worry as much about like, cross-site scripting and things that might affect people who are using your apps.

[00:40:11] Um, and yes, you don't have to have like, The expert lead technologist developer overseeing all the pull requests on the project from the same InfoSec perspective.

[00:40:24] Jared: Yeah, I think those are great points and I think.

[00:40:27] Elm feels less stressful

[00:40:27] Jared: I want to bring a couple of things to attention. One thing you said earlier is that Elm feels less stressful. And then you mentioned this, this worrying thing, and I think this is something that, uh, I've definitely found to be the case is how Elm, uh, changes for me the, my mental health.

[00:40:48] And, and so, uh, I think about this and kind of what you're describing is, you know, kind of worrying about the quality of, of what I'm building. And I had started at one point with uh, working, I was working in healthcare and, you know, building tools for nurses to use and wanting to ensure that the software that I was building was, uh, was not going to fail.

[00:41:13] But, I was also very heavily, uh, embedded in JavaScript and some other, uh, languages that, um, that were not Elm. And so I guess the, the thing that I kept coming back to and the thing that ultimately sold me on Elm was, uh, was this feeling that I think you're, you're getting to is that I, I, I didn't have the anxiety or the, you know, the kind of overwhelming feeling that I, um, that I needed to do more, uh, because I could write it in Elm, and even if it wasn't perfect, I could rename things, I could refactor things later and make them better, but, I knew that at least there was this baseline of quality that, uh, I can't find anywhere else. So I didn't know if you had any thoughts on that. Any more thoughts on that topic?

[00:42:06] Katja: Yeah, I mean, I definitely have a very similar experience of using Elm to that, and I, I would not class myself as an expert engineer. I. I am a person who likes to make things and I'll make something work. And, you know, by trying it. And, and I've met a lot of people in the Elm community who are that kind of programmer who, like, you try stuff out.

[00:42:27] You don't, like, spec everything and like draw out all the connections and things. You just dive right in and say, I want it to look like this or do this thing. And then you, you start at the core of it like that. And what happens over time is that you do, you do start off probably often with something that is a little bit hacked together, a little bit

[00:42:47] not that sensibly structured, but what happens as you keep working on it is, it is, is Elm just sort of pushes you into a good pattern. So things will like break, or not com not compile or not fit together in the way that you want them to when you suddenly try and add something extra. And it eventually, if you keep, if you're working on a project for long enough, it, it pushes itself into like a, a very well engineered pattern as if by magic, I guess.

[00:43:17] And I do also have that where I don't feel paralyzed. So like right now I'm working on a WordPress site and every decision I make, I'm like, paralyzed by it. I'm like, wait, I need to make sure that I'm doing this in exactly the right way, because it's gonna be really scary or confusing to try and change it later.

[00:43:40] And with Elm, I just do it in the first way that occurs to me. And then, you know, it might be five minutes later, it might be five days later or two years later that I go back and change it and it's just not, yeah, it's no big deal. So, yeah.

[00:43:54] Jared: Yeah, I, I totally get that. And when you mentioned just trying it versus, you know, feeling like you have to get it right the first time, I think that, uh, When I first started with Elm, I, I think I was carrying over this, this feeling like I had to get it right the first time from, you know, other languages and, and tools that I were u was using.

[00:44:18] For example, if there is no compiler, then I don't have, uh, that safety. But then even when I was using other languages that were compiled, I would usually try to avoid the, avoid the compiler errors. So I would maybe not save until I felt like I really had something correct. I didn't, you know, I'D or I'D type really quick to prevent the squigglies because those error messages just were so unhelpful.

[00:44:43] They were just, I don't know, it felt like negative feedback. And so I had to retrain myself that when I came to Elm to actually reach for those error messages. Messages. So now when I'm writing Elm code, I will maybe, Put some code somewhere and then just save it knowing that it's incomplete so the compiler can tell me what I need to do next, because I don't know.

[00:45:11] And I don't feel like it's a big deal though, because I can just, like you said earlier, just put in the thing that you think you want and then go from there and see what, you know, see what it comes back with. And, um, so I think that's maybe something that people who, uh, are, are not already using, other tools may not have that, um, that preconceived notion of, of how, you know, how to interact with the tools and so they don't get that, that fear of, you know, of just trying it.

[00:45:44] So I think that's, that's nice with Elm.

[00:45:47] Katja: Yeah, and I, I, I would add to that as well. Like, it, it really, it helps in, in the way that I, um, in the way I guess that I make things where, because you've got those strong types and the functional, it, those two things together is, is so powerful for creating something from scratch. Like you can use, Domain.

[00:46:10] You know, with, with the custom types, you can, you can write, well, I know I'm gonna need a thing that kind of has these attributes and looks like this. And so you can use like a domain modeling technique. And at the same time you can say, well, I know that like as a user, they're gonna need to see this part of it or interact with it in this way.

[00:46:29] And you can build those two like parts of the system just like off the top of your head. And then use the compiler to tell you, well if you've got, if you've got that type of thing here and you wanna see it like that over there, this is the bit you need to do in between to make that work. And it's just like a really fun Yeah, it's a very fun process rather than like a, yeah,

[00:46:51] stressful process I guess.

[00:46:54] Jared: Yeah. Yeah, that's, that's well put. I think, I think it's a nice developer experience and it's delightful. So, uh, famously delightful.

[00:47:07] Elm Camp

[00:47:07] Jared: And so I guess we should, I. At some point, talk a little bit about this, uh, little thing going on in Europe, this Elm Camp Europe. What's the details with that?

[00:47:19] Katja: Yeah. So, um, I guess it was probably about a year ago that a few people started talking about. So one of the most important things about the Elm community is, is our, like personal relationships with each other, I think, and it's one of the things that we touched on, earlier, about how the community sort of sets it apart.

[00:47:44] So it's not just about the language and the framework and their developer experience, but it's also about how the community supports each other. And with Covid canceling all of the Elm conferences all over the world, all suddenly, um, none of them have been able to get back up and running. And there's a lot of people in the community who are feeling like bereft about that.

[00:48:10] Right. So we've been talking about it and occasionally like, like Strange Loop is a good example of a conference where a bunch of Elm people get together, but there's not, there's not a Elm conference. But then, you know, there's a lot of us there and, uh, it's that. And then on the Slack there's just been conversations.

[00:48:30] So basically, yeah, about a year ago we just thought. Um, that we wanted to have an in-person thing. And also the, the London Elm Meetup, which has kept going and was the first one during Covid, Mario and I just like decided let's just do it online. And, um, I'd been going to online things for work early on in the pandemic and we just said, well, let's just try it like in typical Elm fashion, let's just do it even though we don't really know what we're doing.

[00:49:00] And that turned out to be amazing because then people from all over the world and we had like one joined up Elm community were coming to this meetup and so it turned kind of like international. Uh, and then since we've been able to like go back into meeting in person, we have had a couple of like London meetups again, but it's, everything feels very fractured anyway, so we were talking about like, definitely we just need to do something.

[00:49:27] Uh, and we landed on Europe. Because there's a, there's a group of us here basically who wanted something to happen here. And, um, we found a venue. So I heard about a venue that would maybe be suitable in Denmark, and I proposed that to this group of organizers and then we, uh, costed it up and it's quite expensive.

[00:49:58] And so we were looking for alternatives, but actually running conferences is quite expensive no matter where you do it, it seems. Um, and so then we, we had an alternative venue in Poland that was gonna tag onto the Lambda Days conference, which I'm also a program committee member for there. And they were gonna help us find, like, sensible things.

[00:50:21] But, um, anyway, we, we, we've decided to do it, to go ahead with the one in Denmark, because, uh, there was like a little bit more support from the community for that, a little bit easier to get to. And uh, and also the fact that we've got like the whole venue exclusively, exclusively to ourselves. So we decided to design it as an unconference because we know that there's a lot of people having like siloed conversations about where they want Elm to go and what's what they're working on.

[00:50:52] And, um, it's been amazing already. There have been, I think two of our sponsors are companies that, that we weren't even aware were using Elm. So they've sort of people coming out of the woodwork, like, who've been like quietly working on massive Elm maps without, without being part of the community on Slack very loudly or whatever.

[00:51:14] Yeah. So, um, so we, we decided to do the Unconference format to just give everyone an opportunity to like, come along and talk to each other about what they, what they want to talk about. Um, so we'll see what happens. But we're hoping that it's gonna be the first of many Elm camps because it's, uh, a format that will be easy for people to put together, uh, without, it's not, it's not the same as putting together a conference and, you know, getting all the speakers and things.

[00:51:44] So,

[00:51:46] Jared: Okay. And so for me, because I have never been to an unconference, could you describe how that will work?

[00:51:56] Katja: In broad terms, an Unconference is just a conference where everyone, um, is everyone who's gathering, knows the purpose of the gathering. So we know that everyone who's coming to this is talking about the current state of Elm and what they're working on and what we want to do for the future of Elm.

[00:52:17] Uh, that's like the theme. And then when everyone arrives on the first day, we'll have like a session board open. So anybody who wants to can put down, it's kind of like at conferences often they have a thing where there's like lightning talks slots and you can come along and put up your idea. And so it's not just about putting up an idea for a talk that you might wanna give, although it could be that it's also like workshops or a question you have for the community.

[00:52:43] So you might just propose that we have a session asking a, a question, and then anyone who wants to join in can come along. And it's very much encouraged to like move between sessions as well. So you can be in the middle of a conversation in one room and then stay there for 15 minutes and decide that you wanna get up and go and listen to what's happening in a different session.

[00:53:04] And that's part of the unconference format. So it's very much like joining in a conversation. That you think you're interested in, and then taking part and then finding another one. And it's, it's about like proposing those conversations and facilitating them. And also about, yeah, just listening.

[00:53:26] Listening to what other people are talking about.

[00:53:29] Jared: Oh, cool. Okay. And so this will be sort of like a slightly formal party is what it sounds like to me. So. Where you can kinda get into a, a conversation in a group and then as you kind of want to talk to some other people, you move over to another conversation. But maybe there's something that will indicate what these conversations will be over.

[00:53:57] Katja: Yeah, exactly. That's what I was about to say, is that the big difference is that they're very public. Like, so the topics of conversation are public and in a schedule that you can choose from that you can see what's coming up and you can, you can see who's talking about, um, various things. And it's, so the unconference like will, if it, if it works really well, and then it will appear to be like a, like what you just said, like a party.

[00:54:24] Um, but there's a, there is quite a lot of like organizing and things that have to happen in order to make it function like that. But yeah, the idea is that it's like, it's like an open mic thing, right? So anybody who wants to share something or talk about something can, can propose that and we'll find a space for that to happen.

[00:54:42] Jared: Excellent. Okay, and so you said this will be in Denmark, and what are the dates?

[00:54:49] Katja: Ooh, that's a great question. It is Wednesday, the 28th to Friday the 30th of June, and people will arrive on the Wednesday after lunchtime and leave on the Friday early evening.

[00:55:04] So there's a good amount of time in there. There's, on the website it details more like what our kind of plan is for the schedule, and we probably will have some facility for people to submit sessions before the start of the conference, but only for the people who are attending the sessions. It'll be visible to anyone who wants to, to see what's going on, but you wouldn't be able to submit a session unless you were coming to the event, if that Yeah,

[00:55:30] Jared: Yeah, that makes sense. And so that website is elm.Camp? Correct?

[00:55:36] Katja: That is correct.

[00:55:37] Jared: Okay, I'll put that in the show notes. Excellent. Well, what other things do we need to know about it if we're interested in it?

[00:55:47] Katja: One very important thing that you need to know about it is that it's very small. The venue that we've chosen only has capacity to feed 50 people, so that is a, yeah, that's a hard, hard limit for us. And it also, the venue only has 24 rooms on site and it's in a rural location, so it will be possible for people to come along who are staying somewhere else.

[00:56:18] But it's gonna be the most convenient for the people who are actually, um, staying on site. And we took that. I mean, we, we don't know because we haven't opened the ticket sales yet, but I we're hoping that it's, well, it's a nice problem to have if it gets massively oversubscribed.

[00:56:38] But we decided because it was the first conference since Covid and because it's the first time we've tried to do this format that we wanted to keep it like a really small thing because like you said, it's gonna be like one, one party, one conversation. And it would be really difficult to manage if, if there were a lot more people there.

[00:56:57] If we do get like, obviously too much, then it's gonna be a really good foundation for us to then run these camps in other places as well.

[00:57:04] And we have an opportunity grant specifically for people who can't afford to come, we'll be able to apply for one of those special tickets that, um, will be free and we can also hopefully help them with their travel and things. So yeah, so if you want to come and you don't think you can afford it, definitely get in touch because we might be able to help you there too.

[00:57:28] Jared: All right. Yeah, that sounds exciting. And I'm not sure when this will air. It will probably be after the ticket sales go up.

[00:57:37] Katja: I was gonna say it definitely will, cuz our ticket sales are going up in a couple of days, so, um, probably by the time this airs it will be sold out. I would almost like, if it's not, I might be sad. Right. I don't, I I don't know what the delay, but I would say in that, in, in that case, like, it's, it's really important that you get in touch with us anyway because if we do get massively oversubscribed, then we will make it, we will make another event happen.

[00:58:08] Um, and we will make a bigger event happen because we, you know, we, we know that it's really important for the community.

[00:58:15] Jared: okay. So then if, let's say that the event is sold out, will there be some way for people to enter their email address or something so they can be notified of any future events?

[00:58:28] Katja: Yes, yes. And we'll have, we'll operate a waiting list as well for, to get people to come along. And, we're also talking about trying to give access to the conversations that happen at Elm camp to the whole community. So in the, like, minimal implementation of that is gonna be people like notes from the sessions that will be publicly available. We are thinking about doing some video and or sound recording.

[00:59:05] We're also thinking about doing some kind of streaming of maybe one or two, like of the more controlled sessions, but it's one of the benefits or advantages of having an unconference. Is to not have those formalities and those pressures and for the people who are in the room to feel that they can speak freely without worrying about like anything wider public going outside of the room.

[00:59:31] So it's a balance, but we do definitely wanna make whatever happens, the outcome of it will be available to the public. Yeah.

[00:59:42] Jared: Yeah, I like that. Well, that sounds really cool. And so I guess if there's nothing else we could get to our picks.

[00:59:52] Katja: Yeah. I can't, I, I can't think of anything specific else. Nope.

[00:59:57] Picks

[00:59:57] Jared: Okay. All right. Well, do you wanna share your picks first?

[01:00:03] Katja: So one of them is, uh, Felienne Hermans' book, The Programmer's Brain, which is the, the theory that, uh, Code Reading Club is based on. And she wrote The Programmer's Brain after we developed the Code Reading Club in professional settings.

[01:00:19] So her research and her ideas were happening before, and that's how we designed it. But then she wrote that down in the, in the book after we'd done the experimentation. And yeah, I would recommend that to everybody. It's just a really interesting, easy read about what happens in your brain, the cognitive side of actually physically reading code.

[01:00:43] Because most of our time as professional developers is actually spent reading code, not writing code, but all of our practice is in writing code. So that really needs to change. Um, so that's, yeah, that's one, one top pick. And, uh, my other pick is Eric Norman's podcast and book called Grokking Simplicity, which is around functional programming and making it accessible to everybody because there's a real, like mystique around functional programming that you have to be a mathematician or you have to be super clever.

[01:01:19] And Eric Norman's presentation of functional programming concepts fits really well with the same ideas that Elm programming language and framework was designed on, which is that it's like an incremental understanding where that you build towards being able to to, to feel and see how the concepts fit together.

[01:01:43] You don't start by understanding the concepts and um, yeah. So I highly recommend that if you are thinking of trying to move over to a more functional mindset, there's a lot of really good individual podcast that kind of step you through that. And also, yeah, also that book,

[01:02:00] Jared: My picks start with a couple of non, uh, Elm non programming related things. One of them is an electronic music project called Console or Console, and it's something that was introduced to me by Andrey Kuzmin, uh, elm-conf 2017.

[01:02:23] I mentioned, uh, meeting him there and, and so. I, uh, really have been in listening to that, uh, since then and, uh, enjoy that. So check that out. Another one, it is actually related to programming, but it's a book that I think is at the intersection of creative writing and programming. It's called_ If Hemingway Wrote JavaScript_.

[01:02:46] It's by Angus Kroll, and he does this pretty cool thing where he imagines that different writers wrote, programs in JavaScript, and I know it's not Elm, but I think you might get a kick out of it. Um, there's Hemingway writing Fibonacci, um, there's Jane Austen writing factorial. There's uh Tupac Shakur writing happy numbers.

[01:03:16] There's Lewis Carroll, Douglas Adams doing prime numbers. And so I think it's, it's pretty fun. , it was released in 2014, so there are a few references to, uh, libraries that maybe aren't used today because things move so fast in that world. But, um, I, I just, I thought it was a fun read.

[01:03:38] Katja: Uh, So your pick_ If Hemingway Wrote JavaScript_ is really interesting because one of the things that we talk about a lot in Code Reading Club is how different people's writing styles are. And there's, um, one fact that we open with, which is that if you ask two developers to name a variable, there's only a 7% chance that both of them would choose the same name, which is.

[01:04:03] Tiny, small. And when we think about it, we, we think that the name that we're choosing is like the obvious or the right name, or maybe there's one or two other options that might be, but the reality is that there's almost like infinite different ways that you could do, which is one of the reasons why naming is hard, I guess.

[01:04:21] But also one of the reasons I think why we all as like creative people enjoy writing code because it is, is really your personality in there.

[01:04:31] Jared: Yeah. Yeah. And if, if you do pick this up, it is really wild. Some of the, the tricks you can do with JavaScript that I had no idea were possible about how these different programs are written that are completely unintelligible. Un unreadable, I think, at least, to someone picking up the program. But from a, the perspective of, uh, of this book and the way that, uh, the writer kind of explains how it fits the, the imagined writer's style, um, really makes it pretty.

[01:05:04] Interesting. So yeah, I'm, I'm curious because I definitely wanna read, uh, Felienne Hermans' book, the Programmer's Brain, and see how these different ideas connect.

[01:05:18] Katja: Cool. Great.

[01:05:19] Jared: And then my one Elm related pick is Elm Watch by Simon Lydell.

[01:05:25] I've been using that and introduced it at work and am loving it. So thank you Simon, for building that.

[01:05:32] Thanks Katja for coming to Elm Town. Until next time, bye.

[01:05:38] Katja: Bye. Thanks for having me. Yeah, that was great.

© 2024 Jared M. Smith