This video is free to watch - hope you enjoy it! If you like what you see, there's a ton more where that came from...

Buy Now

A Quick Look at OTP

You've seen a lot of Elixir so far and have learned some new concepts, especially if you're new to functional programming. No doubt that along the way you've probably been wondering, however: *how is this all supposed to work together? how can I actually build something?*. I've showed you a few little hints, but it's time to get explicit on this

This is premium content - you can own it in just 30 seconds!

Buy Now

Building applications with Elixir is a huge subject. Learning the syntax rules and idioms is a solid first step, but soon enough you want to actually BUILD SOMETHING! I get it. Believe me. The CTO has been telling the board that I don’t actually do anything - just write tutorials.

She doesn’t like Elixir. I convinced the team to use it as I thought it was a natural fit, then our old CTO left and now we have Sara. She wants to use .NET and the only reason she hasn’t flushed our project yet is because the CEO is a friend of mine and I promised her that you and I could deliver something in two week’s time.

That delivery happens now. Let’s do it.

Formalizing The Functional Patterns

Erlanger’s have had 25+ years to figure out how to make their pattern-matchy, functional code fit into reusable patterns which they can then turn into robust applications. They’ve argued about it, written books, given talks and hugged each other with the thrill of community discovery. The result of all this: OTP. The Open Telecom Protocol.

Erlang was created by Joe Armstrong, Robert Virding and Mike Williams in 1986 for Ericsson (thus the name: Ericsson Language) and was released as open source in 1998. It is currently maintained by a division of Ericsson and is used to power over half of the telecoms around the world.

Erlang is all about fault-tolerance, distribution, and scaling. Put together correctly, you can build a fairly bullet-proof application. But how?

Thinking In Processes

When creating applications in Elixir, you create processes that interact with other processes. Some processes will be devoted to spawning child processes, others will be devoted to keeping certain processes alive.

It’s like a giant bubble machine, with each bubble executing some logic. The machine is the Erlang VM, you’re the bubble maker.

Let’s blow some bubbles.

Download

The Code

Code for this video (and for the entire series) can be found in the production GitHub repo.

  • Welcome to Red:4

    Welcome to Red:4 - Where the Future Starts Yesterday. Blah blah blah we hope you like it here blah blah… We don't have a lot of time so let's just get to it shall we?

  • Letting Elixir Soak In

    Elixir syntax can be familiar and weird at the same time, especially if you're coming from Ruby. To prepare for this section, let's clear our minds - let go of familiar syntax cues and 'the way it's done' in the languages you already know.

  • Functional Programming Primer

    Functional programming has been around forever; it's nothing new. Elixir is a functional language, as is its progenitor, Erlang. If you're coming from an Object-oriented language like Java, Ruby, C#, Python or JavaScript, functional programming will take some getting used to.

  • I need you to setup a project

    You can think of Mix as your Elixir Utility Belt. It builds your projects, runs tasks for you, runs your tests, installs packages - a fascinating tool. That comes later - right now open up your terminal and navigate to a directory where you can save your work.

  • Calculating Escape Velocity

    I hope you're prepared to learn on the job. I'm about to ramp things up on you and it's for the simple reason that I'm under the gun - and to be honest *so are you*. We just got a new CTO, she arrived a few weeks after I got the job. She doesn't like me... which I guess isn't all that surprising.

  • Pattern Matching Basics

    Pattern Matching in Elixir is one of those things that can be vexxing, interesting, or obvious. Ultimately, however, it will be confusing if you have never dealt with it before.

  • Calculating Orbital Distance

    In this part we tidy things up, plugging in Authentication and hooking our download service into Firebase Storage.Nice work so far! The Science Team loves what we're doing and, as you might expect, have given us more work.

  • Debugging

    I'm always amazed when I manage to write Elixir code that compiles correctly the first time. It almost never happens! Let's have a look at a normal sequence you might stumble through, and I'll see if I can save you some time.

  • Solar Flare Project Setup

    We need to get rolling which means we need to setup a project and start cranking out some code! In this video we'll structure our project with tests and get to know the difference between Elixir script files and compilable executables.

  • List and Enumeration Basics

    Functional programming is all about transforming data and if we're going to work with Solar Flares, we need to understand how Lists work - how we query, slice, dice, add and remove. That's what we're going to do now.

  • Recursion and Refactoring Our Solar Flares

    Most developers know about recursion and have used it once or twice in their careers; perhaps more. It can be quite difficult to get right - this is not the case with Elixir. With a combination of pattern matching and the head/tail functionality of Lists, recursively iterating over lists is straightforward.

  • if, unless, and cond

    Here's something weird to think about: in a high-level functional language such as Elixir, writing conditional code is not exactly idiomatic. Using a combination of pattern matching and syntax rules we can write extremely clean code free of if statements and conditionals in general

  • A Quick Look at OTP

    You've seen a lot of Elixir so far and have learned some new concepts, especially if you're new to functional programming. No doubt that along the way you've probably been wondering, however: *how is this all supposed to work together? how can I actually build something?*. I've showed you a few little hints, but it's time to get explicit on this

  • Working With Ecto and PostgreSQL

    You have to store data somewhere and Elixir (and Erlang in general) give you quite a few tools to do so. In this video we'll see how to push data into PostgreSQL using Ecto, the ORM created by the Elixir team.

  • Troubleshooting OTP Errors

    We're in the weeds now! Sorry for the pain, but hey, backing over a cliff is what we do as developers isn't it? You *will find yourself completely stuck* when working with Elixir and I need you to be able to reason your way out of this mess.

  • Bombs Away!

    Developers often confuse *asynchronous* execution with *concurrent* or parallel execution. I do this often! It's something I learn and unlearn, all the time. Let's take a small tangent and discuss the difference.

Watch Again

[[prev.title]]

[[prev.summary]]

Next Up

[[next.title]]

[[next.summary]]