Course info
Feb 2, 2018
2h 18m

Learning to build complex applications in Elm can be challenging because the solutions can look unfamiliar compared to the mainstream frameworks. This course, Building Real World Applications with Elm, will show developers how to solve real world problems in Elm. First, you will learn about the capabilities provided by Elm, functional programming and the Elm tools for managing code, builds and deployment. Next, the course will show how to perform the essential tasks of web development: creating complex UIs, working with servers, parsing JSON, interoperating with JavaScript APIs and libraries. Finally, you will explore the tools and techniques for ensuring their applications are bug free, including Elm’s time-travelling debugger, writing unit and fuzz tests and design approaches for preventing errors. By the end of this course, you will have a solid foundation for building applications in Elm.

About the author
About the author

Alex Korban is an author and consultant with an interest in functional programming, databases and geospatial applications. He co-founded a company to visualize geospatial data and wrote several books.

More from the author
PostgreSQL: Time and Temporal Data
3h 37m
16 Aug 2017
C++11 Language Features
3h 21m
13 Nov 2013
Section Introduction Transcripts
Section Introduction Transcripts

Course Overview
Hi everyone. My name is Alex Korban. Welcome to my course Building Real World Applications with Elm. I'm a web developer and author, and I'm excited about Elm's potential to create error-free code and to increase developer happiness. Elm has a great set of features for writing more reliable and more expressive code: functional programming, a static type system, immutable data, and the Elm architecture, which inspired many other libraries and frameworks. In this course, you will learn about many practical aspects of building Elm applications. First, you will see how to leverage many of the language features and, in particular, its type system for robust software design. Then, you will learn how to work with complex JSON data and how to build user interfaces with the help of Elm libraries. These topics are essential for creating almost any kind of application. Next, you will find out how to interact with servers and how to exchange data with the browser and JavaScript code. After that, you will consider options for organizing your code as it grows, as well as cointegrate an Elm into an existing JavaScript application. Finally, you will be introduced to a number of techniques and tools for preventing and diagnosing bugs. When you are finished, you will have a solid foundation for building applications. Please be aware that this course requires some familiarity with Elm. I hope you will join me on a journey to learn Elm with my course, Building Real World Applications with Elm.

Building a Real World Application
In this module, we are going to dive into building an application. We will start by looking at some of the tools available to make the process of writing code more convenient. Then, we will begin building out the UI of the query execution plan visualizer. We will let some interactivity and use that to learn about handling events. We will look at some of the ways code can be organized into modules. Finally, we will start processing realistic data, which means that we will need to learn how to parse JSON data.

Expanding the Application's Capabilities
In this module, we are going to add a few features to our application. During this process, you will learn about using commands to perform operations with side effects. You will also see how to make requests to a server and then handle the responses. You will find out how to use ports, commands, subscriptions, and flags to exchange data with JavaScript. Finally, we will discuss how the application can be refactored and structured as it grows.

Squashing Bugs in Any Way Possible
This module is all about bugs or rather how you can prevent them and how you can find them. You will see a few techniques for eliminating bugs by leveraging the language features and the type system. We will talk about testing because, of course, testing is a major tool for bug prevention. Finally, we will take a look at Elm's time traveling debugger and a couple more things like login.

Handling More Advanced Scenarios
In this module, we will talk about some of the techniques and tools you may find useful later on in your Elm journey, perhaps in the context of larger projects. You will see a few more features of Elm to do with operators, as well as a few techniques for using types. We will discuss the approaches for integrating Elm into an existing JavaScript application either with the goal of eventually replacing JavaScript or just to implement a certain piece of functionality. Finally, I will show you a couple more tools, which you may find useful when working on larger projects.