Course Content

  • 1

    Level One - Intro to Elixir and How to succeed in this course

    • Resources and Transcripts
    • Course Overview
    • What you need to do well in this course
    • Why elixir is poised for the future
    • What is functional programming and how does it apply to Elixir
    • Comprehension Quiz
  • 2

    Level Two - The Syntax and Fundamentals

    • Resources, Transcripts and Weekly Call
    • Overview and Installation
    • Syntax Basics
    • Basic Syntax Quiz
    • Pattern Matching
    • Advanced Syntax
    • Pattern Matching & Advanced Syntax Quiz
    • Keeping Flow Clean
    • Functional Descriptive Flow
    • Code Fundamentals Assignment
  • 3

    Level Three - REST and GraphQL with Phoenix

    • Resources and Transcripts
    • Overview and Phoenix Installation
    • Introduction to Phoenix and it's Architecture
    • Phoenix Architecture Quiz
    • Phoenix Cheat Sheets
    • Creating a REST API
    • REST API Quiz
    • GraphQL vs REST
    • GraphQL vs REST Quiz
    • Creating a GraphQL API
    • GraphQL Quiz
    • Absinthe GraphQL Resources
    • Creating Web Pages with Phoenix
    • Phoenix Templates Resources
    • Phoenix Channels and GraphQL Subscriptions
    • GraphQL API Assignment
  • 4

    Level Four - Ecto DB and Architecture

    • Resources and Transcripts
    • Overview
    • Creating Schemas and Migrations
    • Schemas and Migrations Quiz
    • Data Integrity Through Changesets
    • Changesets Quiz
    • Writing and Composing Queries
    • Writing and Composing Queries Quiz
    • Managing Schema Relationships
    • Relationship Quiz
    • Integrating Ecto with Phoenix
    • Integrating Ecto with Phoenix Quiz
    • Phoenix Project Ecto Integration
  • 5

    Level Five - OTP & Testing

    • Overview Audio & Transcripts
    • Overview
    • 1 - Audio & Transcripts
    • 1 - What is OTP
    • 1.1 - OTP Supervisors and Workers
    • 1.2 - OTP Process Communication
    • 1.3 - OTP Agent, GenServers & Tasks
    • 1.4 - OTP Application
    • 1.5 - OTP "Let it Crash"
    • 1.6 - OTP Process Limitations
    • OTP Process Quiz
    • 2 - Audio & Transcripts
    • 2 - ExUnit
    • 2.1 - Writing Testable Code
    • 2.2 - Testing OTP
    • 2.3 - Testing Ecto
    • 2.4 - Testing REST
    • 2.5 - Testing GraphQL
    • 2.6 - Testing GraphQL Subscriptions
    • Testing Basics Quiz
    • 3 - Audio and Transcripts
    • 3 - Writing Maintainable Tests
    • 3.1 - Cleaning up Tests with Support
    • 3.2 - Stubbing & Mocking
    • 3.3 - Testing Side Effects
    • 3.4 - Crushing Bugs with IEx, Logger and IO.inspect
    • Testing Maintainability Quiz
    • OTP Process and Testing Assignment
  • 6

    Midterm Project - Mini Boss

    • Audio & Transcripts
    • Midterm Recap
    • Midterm Assignment Prep
    • Midterm Assignment
  • 7

    Level Six - Absinthe Deep Dive & Pre-emptive error Handling

    • Audio & Transcripts
    • Overview
    • 1.0 - Thinking About Errors
    • 1.1 - Erroring Gracefully
    • 1.2 - Writing to Handle Unknown Errors
    • Thinking About Errors Quiz
    • 2.0 - Using IEx to Debug Code
    • 2.1 - Adding Logging to Aid Debugging
    • 2.2 - Creating Error Systems for Debugging
    • Debugging Strategies Quiz
    • 3.0 - Absinthe's Resolution Object
    • 3.1 - Absinthe's Middleware
    • 3.2 - Absinthe's Resolve Function
    • 3.3 - Absinthe Fields and Objects
    • 3.4 - Writing Documentation With Absinthe
    • Absinthe Quiz
    • Absinthe Middleware and Error Handling Assignment
  • 8

    Level Seven - Planning for scalability & How to go distributed

    • Audio & Transcripts
    • Overview
    • 1.0 - Elixir Limitations
    • 1.1 - Phoenix Limitations
    • 1.2 - Side Effects of Scaling
    • 1.3 - Statistics to Measure Scale
    • Scaling Quiz
    • 2.0 - Bottlenecks from Elixir
    • 2.1 - Bottlenecks from Processes
    • 2.3 - How to Architect with Bottlenecks in Mind
    • Bottlenecks Quiz
    • 3.0 - Connecting Elixir Nodes
    • 3.1 - Sending Messages Across Nodes
    • 3.2 - Clustering Nodes with LibCluster
    • 3.3 - Distributing Work with Tasks
    • 3.4 - Distributing Phoenix & Absinthe
    • Distributed Quiz
    • 4.0 - Using GenStage to Process Lots of Data
    • 4.1 - GenStage Dispatchers
    • 4.2 - GenStage Consumer Producers
    • 4.3 - GenStage Consumer Supervisors
    • 4.4 - Using GenStage Across Nodes
    • GenStage Quiz
    • Distributed Application Assignment
  • 9

    Level Eight - Distributed tooling

    • Audio & Transcripts
    • Overview
    • 1.0 - What are Metrics
    • 1.1 - Erlang Telemetry
    • 1.2 - Gathering Metrics with Prometheus
    • 1.3 - Prometheus Counters, Guages & Histograms
    • 1.4 - Setting up Prometheus and Grafana
    • 1.5 - Displaying Prometheus with Grafana
    • 1.6 - Using Watchdog Processes With Prometheus
    • Monitoring Quiz
    • 2.0 - Monitoring with AppSignal
    • 2.1 - Integrating AppSignal into Your Application
    • 2.2 - Adding Custom Errors to AppSignal
    • AppSignal Quiz
    • 3.0 - Creating Distributed Supervisors with Horde
    • 3.1 - Using Horde to Run Singleton Processes in a Cluster
    • Distributed Processes Quiz
    • 4.0 - Replicating State Across Clustered Nodes
    • 4.1 - Using DeltaCDRT to Create a Caching System
    • Distributed State Quiz
    • 5.0 - Distributed Caching Types & Trade-offs
    • 5.1 - Distributed Hash Rings
    • 5.2 - Using Redis as a Cache
    • 5.3 - Using Redex as a Cache
    • Caching Quiz
    • Distributed Application Assignment
  • 10

    Level Nine - How to use Elixir to architect an application

    • Audio & Transcripts
    • Overview
    • 1.0 - Using Elixir in a Polyglot Situation
    • 1.1 - Architecting with NIFs
    • 1.2 - Architecting a Green Field Application
    • Polyglot Quiz
    • 2.0 - Evaluating Development Tradeoffs
    • 2.1 - The Importance of Delaying Architecture Decisions
    • 2.2 - Poncho Project vs Umbrella
    • Tradeoffs and Project Styles Quiz
    • 3.0 - Architecting Data Flow
    • 3.1 - Architecting Clean Applications
    • Application Flow Quiz
    • 4.0 - Accessing Workload
    • 4.1 - Shortening Development Time with Libraries
    • 4.2 - Choosing the Right Libraries
    • Tradeoffs Quiz
    • 5.0 - Setting up Code Coverage with Coveralls
    • 5.1 - Setting up Code Coverage with Mix
    • Code Coverage Quiz
    • Application Architecture Assignment
  • 11

    Final Project - Last Boss

    • Audio & Transcripts
    • Recap
    • Project Instructions
    • Project Resources
  • 12

    Level Ten - How to create and manage releases

    • Audio & Transcripts
    • Overview
    • 1.0 - Knowing the VM's Limits
    • 1.1 - Where the VM Limits Bend
    • 1.2 - When to Tune the VM
    • VM Tuning Quiz
    • 2.0 - Drafting Releases with mix release
    • 2.1 - Drafting Releases with Distillery
    • 2.2 - Writing Custom Release Tools with Distillery
    • Releasing Quiz
    • 3.0 - Deploying Bare Metal Releases Over SSH
    • 3.1 - Deploying Releases with Docker Containers
    • 3.2 - Using Hot-Code Upgrades to Deploy
    • Release Deployment Quiz
    • 4.0 - How to setup CI
    • 4.1 - How to Manage Releases
    • 4.2 - How to Setup a CD Pipeline
    • CI/CD Quiz
    • Distributed Application Assignment
  • 13

    Final Remarks

    • Congratulations
    • Where to go From Here
    • Final Notes

Book Call

Apply now to see if you are prepared to learn Elixir