5-8 SEPTEMBER 2017 BELLEVUE, WASHINGTON

SPEAKERS & TRAINERS

Bruce Tate Github: batate Twitter: @redrapids
Learning Elixir

Bio

Bruce Tate is the author of more than ten books, including Programming Phoenix and Seven Languages in Seven Weeks. By day, Bruce is the CTO of icanmakeitbetter.com, the company that builds customer insight communities, where he uses Elixir and Ruby to build beautiful software.

Course Description

Elixir is a demanding programming language to learn. Folks coming from object-oriented languages will need to pick up a new syntax, but also functional programming and concurrency. In this class, new Elixir programmers will get to lay a firm foundation. We'll learn to code with testing from the ground up, presenting all of the core concepts in Elixir.

We'll start with Elixir datatypes, including maps, structs, tuples, and primitives. We'll move on to core concepts like using recursion, building higher order functions, composing with pipes, and organizing that code into modules.

Once we're through those concepts, we'll build a chatroom on the concurrency concepts that you should know, including tasks, agents and if we have enough time, Erlang's OTP.

After teaching five of these workshops, we've learned that the best way to teach these concepts is to have tests, and have students make those tests pass. This is a lab-focused workshop! Come ready to give those fingers a full workout!"

Audience

Beginner, Intermediate


Eric Meadows-Jönsson Github: ericmj Twitter: @emjii
Learning Elixir

Bio

Eric Meadows-Jönsson, the creator of Ecto and Hex, is the second core committer for the Elixir language. Eric works at Football Addicts where he uses his deep Elixir experience to help his team build mobile software to help sports junkies get their daily fix any time, anywhere.

Course Description

Elixir is a demanding programming language to learn. Folks coming from object-oriented languages will need to pick up a new syntax, but also functional programming and concurrency. In this class, new Elixir programmers will get to lay a firm foundation. We'll learn to code with testing from the ground up, presenting all of the core concepts in Elixir.

We'll start with Elixir datatypes, including maps, structs, tuples, and primitives. We'll move on to core concepts like using recursion, building higher order functions, composing with pipes, and organizing that code into modules.

Once we're through those concepts, we'll build a chatroom on the concurrency concepts that you should know, including tasks, agents and if we have enough time, Erlang's OTP.

After teaching five of these workshops, we've learned that the best way to teach these concepts is to have tests, and have students make those tests pass. This is a lab-focused workshop! Come ready to give those fingers a full workout!"

Audience

Beginner, Intermediate


Wojciech Gawroński Github: afronski Twitter: @afronski
Join the Elixir Fire Brigade - Level-up Your Elixir Debugging Skills

Bio

After tackling major scaling and performance challenges in the education, eCommerce, public transport and analytics field, he choose Appliscale and the hyper performant world of real time bidding to sharpen his Erlang skills. He is a frequent speaker throughout Silesia and co-organizer of several meet-ups (Functional Miners, Silessian BEAMers, Nodeschool Silesia). His code helps power a multi billion transaction platform, distributed across the globe. Also, Wojciech strongly believes in DevOps culture and not being afraid to change hats when there is a need for it. In the spare time he is giving talks on various IT-related meetings, blogging at http://afronski.pl and reading a lot of books."

Course Description

Your Elixir app is burning? This is fine. We know how to help you!

Both Erlang and Elixir are praised for their ""debuggability"". It's true - there are a lot of tools and techniques that can be used, even on live, production systems. Not only that - they are easily accessible and freely usable. Together we're going to explore them in depth.

We're going to learn what exactly happens when you call a GenServer, how to "spy" on processes and introspect the VM internals. We're going to work with an example application - a basic key-value store built on top of Phoenix and Plug, prepare a release for it and deploy it to production. Unfortunately, after the deployment we'll discover some errors - obviously those we didn't anticipate. With the knowledge we gained at the workshop, we'll be able to diagnose and fix them - live in production!

Audience

Intermediate, Advanced


Artur Dębski Github: mentero Twitter: @mentero
Join the Elixir Fire Brigade - Level-up Your Elixir Debugging Skills

Bio

Artur Debski is a Ruby programmer who truly believes in a functional approach to programming. Having stumble at Elixir a long time ago Artur helps to spread the word about it and is a co-host of Functional Miners meetup (formerly SilesianBeamers). Can't live without HJKL and enjoys a good craft beer.

Course Description

Your Elixir app is burning? This is fine. We know how to help you!

Both Erlang and Elixir are praised for their ""debuggability"". It's true - there are a lot of tools and techniques that can be used, even on live, production systems. Not only that - they are easily accessible and freely usable. Together we're going to explore them in depth.

We're going to learn what exactly happens when you call a GenServer, how to "spy" on processes and introspect the VM internals. We're going to work with an example application - a basic key-value store built on top of Phoenix and Plug, prepare a release for it and deploy it to production. Unfortunately, after the deployment we'll discover some errors - obviously those we didn't anticipate. With the knowledge we gained at the workshop, we'll be able to diagnose and fix them - live in production!

Audience

Intermediate, Advanced


Michał Muskała Github: michalmuskala Twitter: @michalmuskala
Join the Elixir Fire Brigade - Level-up Your Elixir Debugging Skills

Bio

Student during mornings, developer at afternoons and open source contributor by evenings. Michal is programming languages enthusiast, focusing mostly on the functional side. He is a member of the Ecto core team and maintainer of the MongoDB adapter. He's Google Summer of Code 2015 alumni, where he worked on Ecto and its MongoDB integration supervised by José Valim himself. When not programming he enjoys reading books, travelling, and sailing - no matter if sunny, rainy or stormy - it's even better if all of those are combined!

Course Description

Your Elixir app is burning? This is fine. We know how to help you!

Both Erlang and Elixir are praised for their ""debuggability"". It's true - there are a lot of tools and techniques that can be used, even on live, production systems. Not only that - they are easily accessible and freely usable. Together we're going to explore them in depth.

We're going to learn what exactly happens when you call a GenServer, how to "spy" on processes and introspect the VM internals. We're going to work with an example application - a basic key-value store built on top of Phoenix and Plug, prepare a release for it and deploy it to production. Unfortunately, after the deployment we'll discover some errors - obviously those we didn't anticipate. With the knowledge we gained at the workshop, we'll be able to diagnose and fix them - live in production!

Audience

Intermediate, Advanced


James Fish Github: fishcakez
OTP Supervision Trees

Course Description

Starting from first principles we will investigate how to design reliable OTP applications. We will cover links and monitors, and how and why they are used by OTP to handle process dependencies. Then we will cover Supervisors and go through the guarantees provided by each strategy. Finally we will put this together to build supervision trees that isolate errors and recover systems to a good state with minimal side effects. The session will involve adding fault tolerance to existing applications and implementing our own versions of a few OTP features, including writing a basic supervisor.

An attendee is expected to be familiar with the Elixir language and understand the basics of Tasks, Agents and GenServers. Some knowledge of Supervisors is welcome but not essential. A laptop with Elixir 1.4 (or newer) and Erlang/OTP 19 (or newer) is required. Please feel free to bring questions and problems, time will be set aside to cover some of these.

Audience

Intermediate


Sonny Scroggin Github: scrogson Twitter: @scrogson
Introducing Phoenix

Bio

Sonny Scroggin is a software craftsman with broad interests in the world of computing. He is a core team member of the Phoenix Framework and is working on various libraries within the Elixir ecosystem. You can find him presenting or teaching others about Elixir, Phoenix, and other tools and libraries in the local user groups in Nashville, TN and at conferences around the world.

Course Description

Phoenix is an Elixir framework for building scalable web services with realtime connectivity across all your devices. Together, we’ll take a guided tour of the framework, going from the very basics, to building our own realtime application.

You’ll see the framework’s foundations, core components, and how to use Phoenix to write powerful web services.

We’ll start by exploring the foundations of the framework in Elixir’s Plug library, followed by the core components of Phoenix’s Router and Controller layers.

Next, we’ll review the View layer and build an application together as we learn each concept.

We’ll finish by using the PubSub layer to add realtime functionality to our application.

Along the way, attendees will see how to apply advanced features like router pipelines and plug middelware and receive tips on how to structure a Phoenix application for real-world services.

Audience

Beginner


Chris McCord Github: chrismccord Twitter: @chris_mccord
Getting Realtime with Channels

Bio

Chris McCord is a programmer with a passion for science and building things. He spends his time crafting the Phoenix Framework, working with the fine folks at DockYard, writing books like Metaprogramming Elixir, and teaching others the tools of the trade.

Course Description

Come level-up on Phoenix's most exciting features while gaining insights from its creator! Together, we'll use Phoenix Channels and Presence to build a highly interactive, collaborative application that works seamlessly across a distributed infrastructure. This hands-on tutorial will take you step-by-step from a blank project to a usable application. Along the way, you'll gain insights into Phoenix's distributed Pub-Sub layer and see all the tricks to getting the most out this exciting feature-set.

Tutorial objectives

Audience

Intermediate Elixir programmers with basic Phoenix exposure.


Bruce Williams Github: bruce Twitter: @wbruce
Building GraphQL APIs with Absinthe

Bio

Bruce Williams is a polyglot technologist, speaker, and Pragmatic Bookshelf author. He's the CTO of CargoSense, a logistics intelligence company built on Elixir and committed to its open source community. Away from the computer, he enjoys languages, traveling to new places, cooking, and the singular hobby of artisan gemstone cutting.

Target Audience

If you’ve wanted rock solid parameter validation for Phoenix actions.
If you’ve built REST APIs and have looked for more flexibility, control, and documentation (you may have investigated solutions like JSON API, RAML, Swagger, etc),
If you’d like to support rich, single-page applications (React, Relay, Apollo, Elm, etc)
If you need to aggregate data from other backend services and databases into a single, cohesive API.

Course Description

Build a GraphQL-based API from scratch using Absinthe and Phoenix, starting from a grounding in GraphQL basics and building up to an flexible, scalable, and secure API that will help guide you in meeting your own application's needs. Discover a growing ecosystem of tools and utilities to help you understand, debug, and document your GraphQL API, and how you can make it a first-class citizen in your applications, fully leveraging the advantages in fault tolerance and soft near-real time performance that Elixir offers.

Prerequisites

We assume you have at least a basic grounding in Elixir and Phoenix (you may want to attend one of the tutorials the day before). Please have Elixir >= 1.4, Erlang >= 19, Git, and your favorite code editor pre-installed and ready to go.

Audience

Intermediate, Advanced


Ben Wilson Github: benwilson512 Twitter: @benwilson512
Building GraphQL APIs with Absinthe

Bio

A full time Elixir developer at CargoSense, Ben is a co-author of the Absinthe GraphQL implementation for Elixir, and the author of ExAws. When not telling you about that time he biked across the USA, Ben also sings professionally and cooks sporadically.

Target Audience

If you’ve wanted rock solid parameter validation for Phoenix actions.
If you’ve built REST APIs and have looked for more flexibility, control, and documentation (you may have investigated solutions like JSON API, RAML, Swagger, etc),
If you’d like to support rich, single-page applications (React, Relay, Apollo, Elm, etc)
If you need to aggregate data from other backend services and databases into a single, cohesive API.

Course Description

Build a GraphQL-based API from scratch using Absinthe and Phoenix, starting from a grounding in GraphQL basics and building up to an flexible, scalable, and secure API that will help guide you in meeting your own application's needs. Discover a growing ecosystem of tools and utilities to help you understand, debug, and document your GraphQL API, and how you can make it a first-class citizen in your applications, fully leveraging the advantages in fault tolerance and soft near-real time performance that Elixir offers.

Prerequisites

We assume you have at least a basic grounding in Elixir and Phoenix (you may want to attend one of the tutorials the day before). Please have Elixir >= 1.4, Erlang >= 19, Git, and your favorite code editor pre-installed and ready to go.

Audience

Intermediate, Advanced


Frank Hunleth Github: fhunleth Twitter: @fhunleth
Embedded Elixir Device Development with Nerves

Bio

Frank has built embedded Linux-based software for products in many industries including medical, consumer, telecommunications and defense. He started the Nerves project and has authored several projects used in embedded Elixir-based devices susch as Elixir/ALE, nerves_uart, fwup, and erlinit.

Course Description

This two-day workshop introduces attendees to embedded development with Elixir and Nerves for creating production-quality IoT devices. The workshop includes real hardware so that attendees can apply what they learn and have the satisfaction of experiencing how simple networked embedded device development can be using Elixir. Topics for the first day include getting started with Nerves, networking and device discovery, connecting to hardware and sending sensor data to the cloud, and safely upgrading devices in the field. The second day covers more advanced topics such as how to build kiosk-type devices, streaming video from cameras, handling hard real-time operations, and selecting boards and processors for embedded Elixir-based products. By the end of the workshop, attendees should be comfortable applying their Elixir programming skills to building robust embedded systems at home or for their job.

Parts List

Each participant will receive the following (subject to change) equipment as part of this course.

Audience

Beginner, Intermediate


Parts List
ItemSupplier
Raspberry Pi 0 W Microcenter
GrovePi Zero Amazon, Dexter
Grove – Buzzer or LED, etc (digital output exercise) Seeed
Grove – Light sensor v1.2 (analog input exercise) Seeed
Grove – Barometer Sensor (I2C exercise) Seeed
PiCamera (streaming video exercise) Microcenter
PiCamera adapter cable Microcenter, Adafruit
Display for kiosk exercise Qemu
MicroSD card (8GB+ for Raspbian, Don’t care for Nerves) Microcenter / bulkmemorycards.com
MicroSD card programmer N/A
Battery/Power brick (Not needed for RPi0W) N/A
MicroUSB Cable Monoprice
Case McMaster
40 pin GPIO headers Pololu
11 mm standoffs M2.5 Pololu
18.6 mm standoffs M2.5 (GrovePi Zero has tall header) Pololu
18 mm standoffs M2.5 (GrovePi Zero has tall header) Mouser
M2.5 screws and nuts to hold things together McMaster or Pololu
Mini screwdrivers for assembly Pololu