Transcript from the "Course Overview" Lesson
>> Richard Feldman: Welcome everybody, this is Advanced Elm. So hopefully, you've had a chance to go through the instructions and get all set up. You should already have your local server running and be able to see the you're all set screen. If so, good to go, be all set for the exercises.
[00:00:13] Okay, so, gonna start off with a little introduction to what we're gonna be going over in the course. I'm gonna give a little bit of background about this course, talk about some goals, and then give an outline of sort of everything that we're gonna be going through today.
[00:00:28] Finally I'll wrap up with just the overall structure of the workshop. So some background, basically the way that this workshop sort of came about is I have personally undergone this transition of starting off doing Elm as a hobby, then doing Elm at work and then eventually doing Elm at scale.
[00:00:42] So now I've been doing Elm for about four years, we've got about a quarter million lines of Elm code at work in production, and I use it every day at work. And so over this period of time I've learned a lot about Elm, and I've also started to see other people go through a similar transition.
[00:00:56] Where they started off doing Elm as a hobby, and then started doing Elm at work. And then are sort of looking to grow from maybe introducing it at work, to using it at scale, or maybe just go from Using it as a hobby to using it at work.
[00:01:06] And sort of understanding the challenges that come with going from, sort of, Elm at a small scale to Elm at a large scale. So I observed that with my interactions with the community a lot of frequently ask questions that people have as they sort of go through these things.
[00:01:21] And I've also sort of solicited from people, what are the topics that people want to hear about? So based on all of that, I ended up sort of putting together this course that, or, sort of, the culmination of the things that I think will be the most valuable to talk about for anyone who's going through this transition from sort of Elm as a side thing to Elm as a full scale serious Elm project.
[00:01:40] And the goal is that we will end up with something that will be valuable to you as you're going through this transition. Some more specific goals is to talk about these four things. One is how to rule out more problems at compile time. Obviously we get a lot of benefit from Elm's compiler just giving us a lot of help as we structure our applications.
[00:01:59] But with certain techniques, we can actually give it the ability to help us even more and help it help us. Another is how to organize and scale Elm applications. There's some techniques that you can use that will make that process go better than just sort of like taking what you started with and just doing that more.
[00:02:16] We'll talk about what those techniques are. Talking about how to reuse parts of a user interface, this is something that comes up because I think it's something that Elm does pretty uniquely. There aren't any other virtual DOM systems that do this quite the same way that Elm does.
[00:02:41] So all these sources of external data and how we manage them within our Elm applications. So the outline of the course, we're gonna have eight sections. The first one is going to be Opaque Types. The second one is going to be about Extensible Data. Third is Creating Constraints.
[00:02:54] Fourth is Scaling. Fifth is Reuse then Sources of Truth, Decoding and finally Single-Page applications. So we're gonna go through these over the course of the day. We're gonna have a mix of slides like we have here and looking through code examples. Plenty of opportunities to ask questions. And by the end of it, we should have a much better understanding of each of these topics.
[00:03:15] You might notice there's a theme of these sort of it's a focus on techniques. One of the things that people asked me about when I was first doing this course was they would ask about specific libraries, so things like hey can I learn how to do Elm CSS?
[00:03:26] Or can I learn how to use style elements or can I learn how to use testing libraries more effectively? But I ended up with this set of topics that focuses a lot more on techniques than specific libraries. Basically because I think these are skills that translates no matter what library we are using.
[00:03:42] Even the section of decoding although it's specific to a particular packages it talks about patterns that appear in many other packages and elms. So these are skills that I think are going to be more broadly applicable no matter what your particular use case is, no matter what particular set of packages and libraries you decide to use on application.
[00:03:57] So hopefully, that will give you the best possible value for time together. The structure of the workshop, if you were at my introduction to Elm workshop, or looked at it, this will be familiar. We're going to use the RealWorld example app, which is the Elm SPA example, and it looks like this.
[00:04:14] It's called a conduit, which is cuz it's a medium clone. Medium, conduit, ha ha. So basically the purpose of this project is that they have made a lot of applications, I say they but it's different open source contributors, have made various different example applications all to the same spec.
[00:04:31] So there's a React one, there's the Elm one that I made, there's Angular View, all these different front ends all built to the same specs so you can kind of compare them. And it's got a lot of different features about articles, posting them, editing them, you can follow people, unfollow people, favorite things, sign in, sign out, sign up, all those sort of things that you expect from a single page application.
[00:04:51] So we are gonna use this as sort of foundation for all of our examples, we're gonna be looking through a lot of code with this, and hopefully by the end of it you'll also have a better understanding of that code base and can use it as a reference point if you haven't been already.
[00:05:03] Like we said, there's gonna be eight lessons. There's also going to be eight exercises to go with the lessons. So after each lesson, we're gonna stop and do an exercise based on what we just learned.