Training:

ELIXIR BOOTCAMP: from apprentice to alchemist

08-10 Oct 2019
09:00 - 17:00
Manuel Rubio

OBJECTIVES

  • Basic/Sequential/Concurrent Elixir
  • Parallel programming
  • Building, Documenting and Testing Systems using Mix

 

PREREQUISITES

  • Good programming skills in another language such as Java, Perl, Python, node.js, or Ruby
  • Familiarity with server-side software development helpful

 

TARGET AUDIENCE

Software Developers and Engineers without prior experience in Elixir/Erlang/LFE.

COURSE OUTLINE

Students will start by learning the basics of the Elixir language. Following that, the course turns to concurrency and students will learn the details of writing parallel and concurrent Elixir applications and the underlying concurrency capabilities provided by BEAM (the Erlang virtual machine).

The course contains the following topics:

  • Background Erlang/Elixir
  • Elixir Shell
  • Sequential Elixir
  • Concurrent Elixir
  • Basic Mix
  • Process Design Patterns
  • Process Error Handling
  • System introspection
  • Funs and High-order functions
  • Data structures (Maps, Structs, Binaries, Protocols)
  • List comprehensions
  • Language features 
  • Erlang Term Storage (ETS)
  • Distributed programming

Hands on Embedded-Systems with GRiSP - Sensors, Actuators and Robots!

10 Oct 2019
09:00 - 17:00
Peer Stritzinger and Adam Lindberg

Includes a GRiSP board to take home! GRiSP is a software stack that allows to run the Erlang VM both with Elixir and Erlang directly on the hardware without the ballast of a operating system. We make boards that help getting started quickly with the stack and plug in a multitude of sensors and actuators with ready made Erlang and Elixir level drivers. More information at https://www.grisp.org/

 

AUDIENCE

  • Elixir and Erlang developers who want to learn about the platform and embedded systems development
  • Embedded systems engineers who want to try out Erlang or Elixir for systems

 

OBJECTIVES

  • Learn how to use our rebar3 and mix based advanced development tools to develop embedded or IoT systems for the GRiSP board
  • Interact and work with real hardware
  • Develop example embedded applications together

 

PREREQUISITES

Programming skills in Erlang or Elixir.

Please bring your laptop. Micro USB cables and Micro SD-card readers are helpful but not necessary (we will bring some).

 

COURSE OUTLINE

The one day GRiSP tutorial will get you familiar with the GRiSP hardware boards and its capabilities running embedded Erlang and Elixir applications. We'll learn how to set up an Elixir or Erlang application for the GRiSP board, deploy it and interact with different hardware components directly from Erlang. After the tutorial, there will be a workshop where you can develop prototype embedded applications together with the group, having access to the GRiSP hardware and many sensors and actuators and we’ll also bring some robotics hardware to work with! We have tasks for every level.

Embedded Hardware will be provided and the tutorial price includes a GRiSP board to take with you.

The BEAM VM Under The Hood

10 Oct 2019
09:00 - 17:00
Michał Ślaski

A guide for operations and development teams.

Everything you wanted to know about the BEAM but were afraid to ask. Through examples and hands on exercises, we will showcase how to manage the BEAM VM in operational environments, optimizing for memory utilisation and performance when using Erlang or Elixir.

 

OBJECTIVES

Understand how the BEAM works under the hood Fine-tune it and optimize its settings for throughput and memory use.

 

PREREQUISITES

Experience in developing and supporting languages running on the Beam, including Erlang and Elixir.

TARGET AUDIENCE

The course is aimed at experienced developers and devops engineers, helping them pre-empt and address behaviour which arise as the result of VM specific settings, be it disruption of soft real time properties as a result of garbage collection or bottlenecks in the scheduler.

 

COURSE OUTLINE

  • Intro to the BEAM - highlights of the BEAM Virtual Machine, the features which make it stand out in comparison to other VMs.
  • Processes under the hood - how memory is allocated, managed and garbage collected.
  • The Process Scheduler - how the schedulers works, how it scales on multi-core architectures and what its limitations are.
  • Memory Management - different memory types including system, atom, binary, code and ets tables.
  • Tweaking and fine-tuning - tweaks and possible fine-tuning of the VM, looking at some of the most obscure flags which can come in hand, allowing for specific optimisations on a VM level, be it to increase I/O or throughput in virtualised environments.

OTP Behaviours: Behind the scenes for Phoenix users

14-16 Oct 2019
09:00 - 17:00
Manuel Rubio

So you've built and deployed a Phoenix application backed by Ecto and Postgres, and come to the conclusion that you love it. If you are looking at progressing to the next level, this hands on training will help you get to the next level. In it, we will focus on building applications using OTP behaviours and architecture guidelines. Learn about the battle-tested abstractions needed to build back-end, fault tolerant systems that will run for years and scale to billions of users.

 

AUDIENCE

People who have built a Phoenix Application and would like to know the underlying OTP behaviours.

 

PREREQUISITES

This is an intermediate level class scheduled to get you up and running with OTP. You should have basic knowledge of Elixir, and whilst not necessary, it would be useful if you have developed a Phoenix application.

 

OBJECTIVES

When you've completed this class, you'll have a deeper understanding of how to architect back-end systems and micro-services that you can access and use from Phoenix. Learn why we need behaviours such as Generic Servers, Generic Finite State Machines and others, when to use them, and how to integrate them into supervision trees.

 

COURSE OUTLINE

We'll have plenty of time to work on labs along the way as you hone your skills and put the theory into practice.

About half of the class is either lab work or coding side-by-side with your instructor.

Topics include:

  • Life before OTP
  • OTP architecture
  • Behaviours
  • Supervision
  • GenServer
  • GenStateMachine
  • Other behaviours (GenStage, GenFlow, Event Handlers, etc)
  • Optimizing for performance
  • ETS (a Redis in your beam)
  • Load regulation and back-pressure (fuse, safety valve)