4-7 SEPTEMBER 2018 BELLEVUE, WASHINGTON

COURSES & TALKS DETAILS

Zachary Berkompas Github: zberkom
Ecto: From the Ground Up

Bio

Previously in love with Ruby/Rails, Zachary had his heart stolen by Elixir/Phoenix shortly after its initial release. Since then he has worked extensively with Elixir and launched multiple large and small applications while working as a senior software engineer for Infinite Red. He has a passion to help teach and share Elixir with others.

Course Description

Ecto is a library for connecting to relational databases in Elixir. It's the default database library that ships with Phoenix, so many developers first encounter it there. But Ecto is a large library with a lot of parts, and it's easy to feel confused about what it can do, and how to use it effectively. If you're new to Ecto, or just want to get a better handle on it, this workshop is for you.

You'll get a guided tour of all the main components of Ecto, and build up your skillset one step at a time. We'll start by looking how Ecto implements the repository pattern for data access, then learn how to write queries using Ecto's elegant but powerful query syntax. We'll then create schemas to convert database records to and from Elixir structs, and learn how to use changesets to help manage updates to those records safely and reliably.

We'll put it all together with a deep dive into associations: Ecto's mechanism for working with relationships between tables. We'll look at detailed examples of all the types of associations Ecto offers, and learn best practices for creating and updating collections of related records.

Along the way, you'll be learning in the most effective way possible: by writing code yourself. At each step, you'll be given exercises to reinforce what you're learning, and get Ecto's APIs into your fingers. You'll walk out with a solid grounding in how Ecto works, and you'll be ready to start working with it effectively and confidently.

Audience

Beginner, Intermediate


Chris Freeze Github: cjfreeze
Phoenix Channels

Bio

Chris Freeze has worked independently developing gaming, web and embedded software and now works at Dockyard.

Course Description

Course outline TBD

Audience

Intermediate, Advanced


Frank Hunleth Github: fhunleth Twitter: @fhunleth
Build smart touchscreen kiosks with Nerves and Phoenix

Bio

Frank Hunleth designs embedded Linux-based software that can be found in products spanning the medical, consumer, telecommunications and defense industries. His work on high density VOIP switches in the 1990s eventually led him to discover Erlang. Since then, he has re-implemented Erlang design elements in everything from a cutting edge diabetic screening device at LKC Technologies to motion controlled UI frameworks at Hillcrest Labs. He started the open-source Nerves project to make it easier to use Erlang in a cross-compiled environment.

Course Description

Touchscreen interfaces are all around us. They are used for digital signage, information kiosks, control surfaces, and more. Devices like these in the field can be difficult to maintain and often are running insecure, out of date code. In this session, we will learn everything we need to build, develop, and deploy devices using Nerves. This includes building a Raspberry Pi-based touchscreen device, learning the ins and outs of Nerves development, creating user interfaces with Phoenix, and interfacing with hardware. After everyone has built a working kiosk, we will go through the steps to maintain these devices in the field and securely update them as needed. This is a hands-on session and you get to take working kiosks back with you to extend, repurpose, and share.

Audience

Intermediate, Advanced


Rob Keefer Github: rbkeefer Twitter: @rbkeefer
Introduction to Concurrent Programming with Elixir

Bio

Rob Keefer is a co-founder and the Chief Scientist at Pomiet, a software development consultancy. Rob works with organizations to envision and develop web and mobile applications that promote peace of mind for users and decision makers alike. His Masters Degree in Human Factors Engineering and PhD in Computer Science give him a great appreciation for interdisciplinary teams working to solve complex problems. When he is not building systems that make people awesome, Rob enjoys distance running and cycling.

Course Description

Whether you have experienced the awesomeness of developing with Elixir and Phoenix, or simply want to learn how to take advantage of modern multi-core CPUs, the concurrency that Elixir provides is a great start to amping up the performance of your applications. In this hands-on workshop you’ll be introduced to concurrent programming concepts and the methods for implementing these concepts in Elixir. At the end of the workshop you will have built a fault-tolerant, multi-process communication application. Topics covered in this workshop include working with multiple processes, including Elixir specifics such as GenServers and Supervisors.

Audience

Intermediate


Andrea Leopardi Github: whatyouhide Twitter: @whatyouhide
Learning Elixir

Bio

Andrea is a programming enthusiast with a soft spot for functional programming and beautiful code. He loves learning new stuff. He strongly believes in accessible culture and education and in open-source software. He's active in the Elixir community and uses almost exclusively Elixir for work purposes.

Course Description

Elixir can be a demanding programming language to learn. People who are coming from object-oriented languages have new concepts to learn such as modelling programs in a functional way and working with processes and message passing. 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 other primitives. We'll move on to core concepts like using recursion, building higher order functions, composing with pipes, processes, 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, and if we have enough time, using Erlang's OTP.

This is a hands-on course, we've learned that best way to teach these new concepts is with tests, and have students make those tests pass. This is a lab-focused workshop so come ready to to do a lot of programming and a lot of learning.

Audience

Beginner


Chris McCord Github: chrismccord Twitter: @chris_mccord
Phoenix 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

Course outline TBD

Audience

Intermediate, Advanced


Brian McElaney Github: McElaney Twitter: @McElaney
Phoenix Basics

Bio

Brian McElaney (or "Mac" as his friends and coworkers know him) cooks competitively, pretends to like parades, and feels that brunch should be protected by law. For over 20 years, has lead user-focused software teams building everything from medical device monitoring systems to foreign exchange trading platforms. With three years experience with the language in production he now works with a number of companies transitioning their existing businesses systems to Elixir and Phoenix.

Course Description

Phoenix Framework provides a powerful toolset for building future-focused web applications. Over a one-day training session we'll build a tool to view and share preferred conference sessions during multi-track events like ElixirConf. We'll use Elixir and Phoenix to authenticate users, generate profiles with avatars, view the conference schedule, pick favorite talks, and share personalized schedules between users.

Attendees will learn Ecto basics, how to add common functionality through hex packages, the role of contexts and how Phoenix fits in to umbrella applications, Phoenix resource routing, creating controller resources, and how to generate HTML views and and JSON apis.

Audience

Beginner


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

Bio

Eric Meadows-Jönsson is a member of the Elixir team and an active member of the Elixir community being the creator of many libraries, including Ecto and the Hex package manager. Eric works as a Software Engineer at Cabify.

Course Description

Elixir can be a demanding programming language to learn. People who are coming from object-oriented languages have new concepts to learn such as modelling programs in a functional way and working with processes and message passing. 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 other primitives. We'll move on to core concepts like using recursion, building higher order functions, composing with pipes, processes, 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, and if we have enough time, using Erlang's OTP.

This is a hands-on course, we've learned that best way to teach these new concepts is with tests, and have students make those tests pass. This is a lab-focused workshop so come ready to to do a lot of programming and a lot of learning.

Audience

Beginner


Tim Mecklem Github: tmecklem Twitter: @tim_mecklem
Less-Pain Embedded Systems with Elixir and Nerves

Bio

Tim works at Gaslight in Cincinnati, OH building software solutions with Elixir and Ruby and is a member of the Nerves Core team. While he spends part of his time as a lead investigator on crimes against Elixir, he also concurrently perpetrates crimes against Elixir. He has yet to catch himself.

Course Description

Developing a custom hardware/software embedded system can seem like a daunting or even impossible task. With Elixir and Nerves, you can quickly get started with a Raspberry Pi-based project and walk away from this one-day session with your own WiFi-enabled, video-streaming webcam and all the skills you need to customize it.

This session is beginner-friendly. That includes those who are new to Nerves, new to Elixir, or even new to working with hardware. Some programming skills will be required, but working code will be provided along with the hardware, so you only need to make changes that you’re comfortable with. It’s very unlikely that you’ll melt, damage, or ruin anything. ;)

Audience

Beginner


Greg Mefford Github: GregMefford Twitter: @ferggo
Less-Pain Embedded Systems with Elixir and Nerves

Bio

Greg is a father of three, husband of one, and member of the Nerves core team. He loves to help new people get involved in the Nerves community, whether by making the tools easier to use, writing documentation, answering questions, or giving presentations.

Course Description

Developing a custom hardware/software embedded system can seem like a daunting or even impossible task. With Elixir and Nerves, you can quickly get started with a Raspberry Pi-based project and walk away from this one-day session with your own WiFi-enabled, video-streaming webcam and all the skills you need to customize it.

This session is beginner-friendly. That includes those who are new to Nerves, new to Elixir, or even new to working with hardware. Some programming skills will be required, but working code will be provided along with the hardware, so you only need to make changes that you’re comfortable with. It’s very unlikely that you’ll melt, damage, or ruin anything. ;)

Audience

Beginner


Nhu Nguyen Github: nhu313 Twitter: @nhu313
Phoenix Basics

Bio

Nhu fell in love with Elixir two years after its first released. She hasn’t stopped thinking about it since then. Along with Elixir, she has also written Ruby, Java, and Clojure code for small startup with less than five employees to multi-million dollar companies with more than thousands of developers. She loves to share her knowledge. Nhu is currently an instructor at Zipcode Wilmington. She loves coding, fresh bake cookies, and puppies (not always in that order).

Course Description

Phoenix Framework provides a powerful toolset for building future-focused web applications. Over a one-day training session we'll build a tool to view and share preferred conference sessions during multi-track events like ElixirConf. We'll use Elixir and Phoenix to authenticate users, generate profiles with avatars, view the conference schedule, pick favorite talks, and share personalized schedules between users.

Attendees will learn Ecto basics, how to add common functionality through hex packages, the role of contexts and how Phoenix fits in to umbrella applications, Phoenix resource routing, creating controller resources, and how to generate HTML views and and JSON apis.

Audience

Beginner


Justin Schneck Github: mobileoverlord Twitter: @mobileoverlord
Build smart touchscreen kiosks with Nerves and Phoenix

Bio

I’m in a constant state of wanting to make the world around me bend to my imagination. At one time I wondered how hard it would be to start my motorcycle from my phone. Rewiring the motorcycle and writing an interface was easy, but connecting it all together proved to be a challenge. A challenge that would define my career. That invisible, often impenetrable layer in the air between all the hardware in the world has become my stomping ground. Hardware is hard, so I’ve been working on nerves to make it easy.

Course Description

Touchscreen interfaces are all around us. They are used for digital signage, information kiosks, control surfaces, and more. Devices like these in the field can be difficult to maintain and often are running insecure, out of date code. In this session, we will learn everything we need to build, develop, and deploy devices using Nerves. This includes building a Raspberry Pi-based touchscreen device, learning the ins and outs of Nerves development, creating user interfaces with Phoenix, and interfacing with hardware. After everyone has built a working kiosk, we will go through the steps to maintain these devices in the field and securely update them as needed. This is a hands-on session and you get to take working kiosks back with you to extend, repurpose, and share.

Audience

Intermediate, Advanced


Paul Spencer Github: spencepd Twitter: @spencepd
Introduction to Concurrent Programming with Elixir

Bio

Paul is the Delivery Director and co-founder of POMIET, a healthcare systems consulting company. He brings sharp focus to defining and leveraging processes for both POMIET and client organizations. He leverages over twenty years of experience towards continuously learning, modifying, and applying to over 40 engagements/projects with software craftsmanship, agile and lean practices.

Course Description

Whether you have experienced the awesomeness of developing with Elixir and Phoenix, or simply want to learn how to take advantage of modern multi-core CPUs, the concurrency that Elixir provides is a great start to amping up the performance of your applications. In this hands-on workshop you’ll be introduced to concurrent programming concepts and the methods for implementing these concepts in Elixir. At the end of the workshop you will have built a fault-tolerant, multi-process communication application. Topics covered in this workshop include working with multiple processes, including Elixir specifics such as GenServers and Supervisors.

Audience

Intermediate


Bruce Williams Github: bruce Twitter: @wbruce
Building Production-ready GraphQL APIs

Bio

Bruce Williams is a polyglot technologist, speaker, and writer interested in everything from learning type systems and writing parsers to designing UX. He is the CTO of CargoSense, a logistics intelligence company committed to the Elixir open source ecosystem, and the co-creator of Absinthe, the GraphQL toolkit for Elixir.

Course Description

Attend this intensive two-day workshop to discover how to add GraphQL's flexible queries, mutations, and live data subscriptions to your own production applications. Elixir's the perfect platform for building robust, declarative GraphQL APIs, and you'll learn directly from the co-creators of Absinthe, the GraphQL toolkit for Elixir (and the co-authors of a recently published Pragmatic Bookshelf title on the topic).

You'll start from GraphQL's core principles, building a GraphQL schema from scratch, learning how to model a domain from the ground-up, and using GraphQL's built-in introspection capabilities to power a host of useful tools. You'll go beyond the basics, learning how to use Absinthe's middleware and phase extensibility to expand its capabilities. You'll focus on key production topics like performance, security, and new service aggregation capabilities that help you provide a common, GraphQL API across databases, your umbrella apps, and external microservices.

Audience

Intermediate, Advanced


Ben Wilson Github: benwilson512 Twitter: @benwilson512
Building Production-ready GraphQL APIs

Bio

Ben Wilson is a full-stack developer and leading member of the Elixir community as an open source maintainer, contributor, and conference speaker. He is a Principal Engineer at CargoSense and the co-creator of Absinthe.

Course Description

Attend this intensive two-day workshop to discover how to add GraphQL's flexible queries, mutations, and live data subscriptions to your own production applications. Elixir's the perfect platform for building robust, declarative GraphQL APIs, and you'll learn directly from the co-creators of Absinthe, the GraphQL toolkit for Elixir (and the co-authors of a recently published Pragmatic Bookshelf title on the topic).

You'll start from GraphQL's core principles, building a GraphQL schema from scratch, learning how to model a domain from the ground-up, and using GraphQL's built-in introspection capabilities to power a host of useful tools. You'll go beyond the basics, learning how to use Absinthe's middleware and phase extensibility to expand its capabilities. You'll focus on key production topics like performance, security, and new service aggregation capabilities that help you provide a common, GraphQL API across databases, your umbrella apps, and external microservices.

Audience

Intermediate, Advanced


Darin Wilson Github: darinwilson Twitter: @darinwilson
Ecto: From the Ground Up

Bio

Darin Wilson has been coding professionally since the days when you got help with coding problems by posting a message to a BBS over a 300-baud modem. Over the years, he's developed apps for banking, education, television, social media, and robotic arms. He is currently a principal software engineer at Infinite Red, a web and mobile application development company, and co-author of the book "Programming Ecto" soon to be published by Pragmatic Bookshelf.

Course Description

Ecto is a library for connecting to relational databases in Elixir. It's the default database library that ships with Phoenix, so many developers first encounter it there. But Ecto is a large library with a lot of parts, and it's easy to feel confused about what it can do, and how to use it effectively. If you're new to Ecto, or just want to get a better handle on it, this workshop is for you.

You'll get a guided tour of all the main components of Ecto, and build up your skillset one step at a time. We'll start by looking how Ecto implements the repository pattern for data access, then learn how to write queries using Ecto's elegant but powerful query syntax. We'll then create schemas to convert database records to and from Elixir structs, and learn how to use changesets to help manage updates to those records safely and reliably.

We'll put it all together with a deep dive into associations: Ecto's mechanism for working with relationships between tables. We'll look at detailed examples of all the types of associations Ecto offers, and learn best practices for creating and updating collections of related records.

Along the way, you'll be learning in the most effective way possible: by writing code yourself. At each step, you'll be given exercises to reinforce what you're learning, and get Ecto's APIs into your fingers. You'll walk out with a solid grounding in how Ecto works, and you'll be ready to start working with it effectively and confidently.

Audience

Beginner, Intermediate