ElixirConf 2023 Training Courses
Want to be an Elixir expert?
Sign up for a training course (or two) from Elixir experts and learn what you need to succeed.
Below are courses ranging from LiveView, Oban processing, and Broadway streaming to Telemetry and Phoenix Application Security.
Training classes are full-day classes and run for 6-hours. Training classes are optional and are held on Tuesday, September 5. Virtual training classes are held on Friday, September 1.
You may choose from 6 in-person training classes and 3 virtual training classes.
Note: Registration will be open soon. Click the registration link and sign up to get exclusive notification of presale and early bird tickets.
Training Summary
9/5 Orlando
9/5 Orlando
9/5 Orlando
9/5 Orlando
9/1 Online, 9/5 Orlando
9/1 Online
9/1 Online
Training Courses
Ash Framework: The Fast Track to Full Stack
A training aimed at taking users from little-to-zero knowledge of Ash and turning them into power users, ready to build powerful applications with ease!
Are you an Elixir developer looking to build ambitious applications? Have you felt the pain of building large applications with a lack of consistency, tooling and extensibility? Join us on a hands-on journey from beginner to expert using the Ash Framework to build a fully fleshed out Elixir application to help ElixirConf attendees get together for dinner.
Starting with the basics, we model our domain with Ash resources. We cover the structure that Ash provides for your application and the basic building blocks that you will use. From there, we can start leveraging the power of Ash to build more complex parts of our applications.
We then dive into the extensions that give Ash its true power, with emphasis on LiveView and GraphQL. To secure our application, we will add AshAuthentication and authorization policies to allow specific users to perform specific actions. Finally, we will add LiveViews to interact with the application, and effortlessly integrate a GraphQL layer with just a few lines of code. No resolvers necessary!
Taking things further, we will build a custom extension, illustrating the full customizability of Ash. We will teach you practical strategies to incrementally adopt Ash in existing applications, so you can start using Ash in your applications right away. Finally, the app will be deployed to fly.io for ElixirConf attendees to use.
At the end of this course, you’ll have a complete, deployed application, as well as the tools and knowledge to build ambitious full stack applications with ease.
Background Processing with Oban
Concurrency, asynchrony, and reliability are critical for production systems. Elixir offers phenomenal concurrency capabilities, and Oban supplements those with the missing functionality required for mission-critical background tasks. Whether you need to deliver emails on a reliable schedule, or compose a complex video processing pipeline, Oban has the tools you need.
Join our training and learn how to build applications that leverage Oban for concurrent background processing.
Training objectives:
You’ll emerge familiar with a firm grasp on Oban’s fundamentals and best practices for running in production. Along the way you’ll build out the background services of a food delivery service, including tasks such as:
- Installing and configuring Oban for concurrent processing
- Scheduling for the future and running tasks on a periodic basis, e.g. “CRON”
- Preventing duplicate, potentially expensive, operations using unique jobs
- Investigating and handling expected or unexpected errors
- Testing the operation of worker modules and queues
- Preparing for production with good data practices and monitoring
Training prerequisites:
Understanding of basic Elixir concepts and familiarity with SQL
Beyond LiveView: Getting the Javascript you need while keeping the LiveView you love
The productivity boost we get from LiveView as elixir devs is pretty spectacular. Sometimes we need dynamic, in-browser behavior beyond what LiveView gives us, which means we need Javascript. The challenge is integrating that javascript in a way that lets us both create the rich user experience we want while maintaining the simplicity and developer experience that LiveView provides.
This training class will focus on extending LiveView using Javascript in a way that still feels enjoyable and productive. We will cover how to integrate functionality from existing libraries and components, as well as how to go about rolling our own when we need to. We will primarily focus on leveraging custom elements, aka Web Components, as our building blocks, as they offer significant advantages to us when integrating with LiveView. We will start with an introduction to what custom elements are, how they work, and why they are such an excellent fit with LiveView. We will dive into how to find and integrate existing custom elements, and how to use custom elements to neatly abstract and encapsulate nearly any Javascript library.
We’ll also explore the more specialized case of “What if I need just a bit of React in my LiveView?” We’ll talk about how to manage two different sources of truth (the LiveView’s state and the embedded React component’s state) without giving ourselves a headache or triggering thousands of unnecessary re-renders.
Possible topics and labs include: Custom element 101 Lit Phoenix hooks The event reducer pattern Custom Events Phoenix-custom-event-hook Functional phoenix components (in brief, if needed) Live_elements (library map custom elements to functional components) Finding and leveraging existing custom elements Wrapping js libraries as custom elements Integrating React with LiveState Where are the rough edges and what could be better
Break Down - Better LiveView Components
Break down your LiveViews! If you want to design good live views, you need to know the tools. That means building layered software with components. You can make the most of Phoenix LiveView by understanding the tools at your disposal: live components and function components.
Detailed Summary: Break Down - Better LiveView Components
With the emergence of Surface in Phoenix LiveView, components got significantly more complicated, but also more powerful. Learn how to use function components and live components in ways that will supercharge your overall LiveView experience.
With function components, we’ll learn to build better components with slots, use directives like :for and :let, and build cleaner abstractions with better layering. With live components, we’ll learn techniques to extract them and package them for better consumption.
Building Data-Driven Workflows in Broadway
Broadway gives us powerful tools for dealing with large data sets and creating robust data-processing pipelines. It comes packaged with rate-limiting, back-pressure, and real time visualization dashboards. By the end of this course you’ll be able to create and extend your own pipeline backed by a message broker like RabbitMQ, AWS SQS, or Kafka.
In this course we’ll use message brokers, like Rabbit and Kafka, via Docker to set up data pipelines on your local machine to introduce Broadway’s functionality. We’ll show how it’s easy to leverage these tools within Broadway to create data pipelines capable of processing tens of thousands of messages per second.
We’ll start with a simple producer and consumer, and work through extending it using various producer-consumers. From there we’ll experiment with increasing load at various stages, and how the Erlang VM’s fault tolerance combines with Broadway’s back-pressure to solve load issues. Then, we’ll show how you can instrument your pipeline using telemetry to get valuable insights about how it’s performing. Finally, we’ll introduce the batching capabilities that come baked into Broadway.
By the time you’re finished, you’ll have implemented your own ETL pipeline, understand how to integrate it with an existing ETL pipeline, and see how easy it is to switch message brokers without changing the underlying implementation.
Instrumenting Elixir Applications
Come learn about the tools and techniques needed to instrument an Elixir application.
Come learn about the tools and techniques needed to instrument an Elixir application.
This course will be a hands-on dive into the world of instrumenting Elixir applications. We’ll cover the Telemetry library. How it works, drawbacks, and why it’s pervasive in the community. From there we’ll see how we can use Telemetry to generate metrics and trace data for an application. We’ll look at popular libraries and frameworks and how to use their Telemetry events to further enrich our instrumentation. From there, we’ll explore options for visualizing the data we’ve collected.
By the end of the day, you’ll have a solid understanding of the available tools to add an extensible instrumentation framework to any Elixir application.
Topics that will be covered: Why instrumentation is important. How traces, metrics, and logging fit into the observability stack. What is Telemetry and how to use it? What are the different types of instrumentation we can gather for an application. How to use Telemetry.Metrics to collection data from the BEAM. How to generate traces and spans for Phoenix requests, Broadway consumers, and Oban Workers. How to trace across distributed contexts. Different options for visualizing metrics and spans. Where OpenTelemetry fits into the instrumentation stack.
Phoenix Application Security
When deploying your Phoenix application, it seems like there is a never ending list of security problems to worry about. XSS, CSRF, RCE, timing attacks, the list of acronyms and jargon goes on. How should you get started securing your Phoenix app? What is worth focusing on?
This training will be an introduction to the web application security concepts most relevant to Phoenix applications, common vulnerabilities, and recommended best practices.
-
Introduce web application security vulnerabilities, and how they occur in Phoenix applications
-
Show vulnerable code in Elixir/Phoenix, and have students run the code locally to understand how it works
-
Demonstrate tools to prevent and fix these vulnerabilities