Training:

OTP for the seasoned Erlanger

02-04 Mar 2020
09:00 - 17:00
Robert Virding and Francesco Cesarini

You will learn the prevailing Erlang design patterns called OTP behaviours. We will cover Erlang design patterns such as generic behaviours, finite state machines and event handlers. You will also learn how to develop systems using the supervisor and application behaviours patterns, so you can construct maintainable and fault tolerant software. Upon completion of this course, you will be able to extend it all, by devising your very own behaviours.

 

OBJECTIVES

  • Use existing design patterns supported by Erlang and OTP 
  • Apply generic behaviours, finite state machines and event handler patterns
  • Use the supervisor and application behaviours patterns
  • Write your own design patterns.
  • Structure large Erlang based systems

 

PREREQUISITES

Existing experience using sequential and concurrent programming with Erlang on projects.

 

TARGET AUDIENCE

This course is aimed at experienced Erlang software developers and designers who need to understand behaviours.

COURSE OUTLINE

This course introduces the need and advantages of using middleware in the development of massively concurrent, distributed, fault tolerant real time systems in Erlang. It looks at Erlang's evolution, and how it helped form OTP.

Further, this course gives an overview of the components that make up OTP. They are Erlang, a set of behaviours, and rules and design principles to use them. OTP comes with many ready built applications and tools useful for large scale software design.

  • Behaviours
  • Generic servers
  • Finite State Machines
  • Supervisors
  • Event Handlers
  • Applications
  • Special Processes
  • System Principles

OTP behaviours: Behind the scenes

02-04 Mar 2020
09:00 - 17:00

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.

 

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.

 

PREREQUISITES

You should have basic knowledge of Elixir, and whilst not necessary, it would be useful if you have developed a Phoenix application.

 

TARGET AUDIENCE

This is an intermediate level class scheduled to get you up and running with OTP.

COURSE OUTLINE

Topics included:

  • 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)

Introductory Phoenix LiveView: web development without JavaScript

04 Mar 2020
09:00 - 17:00
Bruce Tate

Web development does not have to hurt! In this one-day class, you will learn to build highly interactive web applications using Phoenix LiveView. Instead of coding JavaScript to move data between the client and server, you'll rely on the power of Phoenix and Elixir to do the hard work for you.

 

OBJECTIVES

When you've completed this tutorial, you'll have a deeper understanding of Phoenix LiveView. You'll be able to think about program design, especially building your project in layers so that the LiveView code you create is easy to maintain, letting you deal with one piece of complexity at a time. Most of the class will be live coding together. We'll have plenty of time to work on labs along the way as you hone your skills. About half of the class is either lab work or coding side-by-side with your instructor.

PREREQUISITES

  • Come ready to code with us!
  • Have a working installation of Elixir, git (with a GitHub account), Postgres and Phoenix (1.4 or higher)

 

TARGET AUDIENCE

  • Early intermediate to advanced intermediate Elixir developers 
  • With no to little experience in LiveView
  • Know how to use git or take the free GitHub tutorial
  • Phoenix experience is not required

 

COURSE OUTLINE

This tutorial will cover the following:

  • The LiveView lifecycle
  • Building pages online and in templates
  • Sending Events with HTML
  • Building back-end models
  • Building software in layers

The BEAM VM under the hood

04 Mar 2020
09:00 - 17:00
Dmytro Lytovchenko

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

The highlights of the BEAM Virtual Machine, highlighting the features which make it stand out in comparison to other VMs.

Processes under the hood

Explore at processes, how memory is allocated, managed and garbage collected. We look at some of the bottlenecks in the BEAM caused by concurrency, describe how they manifest themselves, and how to avoid them.

The Process Scheduler

Understand how the schedulers work, how it scales on multi-core architectures and what its limitations are. We cover how the run queues can be monitored and manipulated, and how process priorities can backfire.

Memory Management

In this section, we look at different memory types including system, atom, binary, code and ets tables. We will cover how (and why) you should monitor memory, and how issues can arise. We will also cover how the garbage collector works, focusing if, and when optimizations are necessary.

Tweaking and fine-tuning

How can the BEAM VM be tweaked and what possible areas for fine-tuning are available to you? We'll look 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 virtualized environments.

OTP CERTIFICATION

04-06 Mar 2020
09:00 - 18:00
CERTIFICATION

OVERVIEW

The OTP Certificate provides proof that the holder understands the core concepts of Erlang/OTP, and is ready to apply the knowledge to building systems.

 

TARGET AUDIENCE

The certification is aimed at people who have completed the four-day “Complete OTP” course, preferably with practical experience after that.

WHAT YOU NEED TO KNOW

The exam consists of a 90 minute multiple-choice questionnaire.

Dates to be arranged with certification takers on a 1-2-1 basis. We will work with you to ensure that it is as convenient for everyone as possible.

 

ERLANG CERTIFICATION

04-06 Mar 2020
09:00 - 18:00
CERTIFICATION

OVERVIEW

The Erlang Certificate provides proof that the holder understands the core concepts of the Erlang programming language, and is ready to move on to the more advanced levels of Erlang study and usage.

 

TARGET AUDIENCE

The certification is aimed at people who have completed the five-day “Complete Erlang” course, preferably with practical experience after that.

WHAT YOU NEED TO KNOW

The exam consists of a 90 minute multiple-choice questionnaire.

Dates to be arranged with certification takers on a 1-2-1 basis. We will work with you to ensure that it is as convenient for everyone as possible.