Events

Feed icon 28x28
Elixir logo original

Elixir Conf 2016 Schedule

August 31 - September 2, 2016

( 34 available presentations )
Screen shot 2016 09 27 at 7.24.39 pm thumb
Rating: Everyone
Viewed 1,257 times
Recorded at: August 4, 2016
Date Posted: September 27, 2016

Refactoring is an important aspect of writing software, it makes reading and understanding your code easier for the rest of the team. How many times have you read some code, thought ""who wrote this code?!"" only to have `git blame` display you as the author 6 months ago?
Functional programming makes moving code around very easy, however there is more to refactoring than relocating code. In this talk, we will go over some of the features offered by Elixir, Phoenix and Ecto that can be used to make reading and understanding your code much easier and as a result of this, more maintainable for future you and your team. From getting rid of those nested case statements, to restructuring your entire application.

Screen shot 2016 09 27 at 3.51.59 pm thumb
Rating: Everyone
Viewed 1,901 times
Recorded at: August 4, 2016
Date Posted: September 27, 2016

My analysis of the state of software, the trends affecting us, and why I've chosen Elixir & friends as my stack for the next 10 years.

Capture thumb
Rating: Everyone
Viewed 4,126 times
Recorded at: September 1, 2016
Date Posted: October 13, 2016

Screen shot 2016 09 26 at 9.26.52 pm thumb
Rating: Everyone
Viewed 251 times
Recorded at: September 1, 2016
Date Posted: September 26, 2016

Binary protocols are all around us, HTTP/2, HPACK, or DNS are only a few examples. Pretty efficient on the transport layer they reduce size dramatically and enable a set of great features. But they are often more complex to implement and reason about.
In this talk you will learn how you could implement a given binary protocol with Elixir. We will take a look at binary pattern matching, de- and encoding of strings and integers, binary data frames and extracting tests from RFC specs. And, we will take a look at how to implement the HPACK protocol as part of the HTTP/2 protocol so you will learn some of that along the way as well.

Capture thumb
Rating: Everyone
Viewed 305 times
Recorded at: September 1, 2016
Date Posted: October 13, 2016

As programmers, we know that the right abstraction unlocks new ways of thinking about the problems we solve. But can they do more? Can an abstraction exemplify our values? What might that look like? How would it feel to use? Do these words I'm typing right now even make any sense?
I'd like to share a recent experience with Elixir and Phoenix that convinced me, more than ever, of the power a well-chosen abstraction can have to create a truly joyful development experience.

Screen shot 2016 09 26 at 9.11.55 pm thumb
Rating: Everyone
Viewed 744 times
Recorded at: September 1, 2016
Date Posted: September 26, 2016

Erlang's pg2 module provides distributed process groups and is a key technology underlying Phoenix's default PubSub adapter, which powers the Channels API that we know and love. Together, we'll take a guided tour of pg2's capabilities and see how easy it is to add distributed features to your own applications. Along the way, we'll dissect pg2's internals to see how the surprisingly short Erlang implementation can be accomplished in Elixir, while uncovering other primitives that make distributed Erlang so powerful. It's time to learn just how easy it is to tap into everything distributed Elixir has to offer!

Screen shot 2016 09 26 at 9.33.16 pm thumb
Rating: Everyone
Viewed 1,003 times
Recorded at: September 1, 2016
Date Posted: September 26, 2016

The best way to get better at code is by reading other's code. It just so happens that Elixir is the best language for reading other people's code. We'll dive into some examples of popular libraries to see how the experts do it.

Capture thumb
Rating: Everyone
Viewed 380 times
Recorded at: September 1, 2016
Date Posted: October 13, 2016

This talk will cover the current state of releases in Elixir, where things are headed with exrm, and how releases are making their way into Elixir itself. We will also see how releases fit into the current deployment landscape with the proliferation of containerized infrastructure; and approaches to deploying clusters of nodes with releases. I'll cover the approaches I've taken at work, lessons learned, and tools that can help.

Capture thumb
Rating: Everyone
Viewed 711 times
Recorded at: September 1, 2016
Date Posted: October 31, 2016

In this talk, we will explore how developers new to functional languages tend to gravitate towards old patterns, and the new patterns they can learn to replace these with. To give this context, we will review how one functional newbie converted an existing Rails application to Phoenix. The goal of this talk is to give a perspective of a newcomer to the Elixir of today.

Capture thumb
Rating: Everyone
Viewed 372 times
Recorded at: September 1, 2016
Date Posted: September 22, 2016

Nerves defines an entirely new way to build embedded systems with Elixir that is ready to revolutionize the industry. Embedded systems have never been easier to create using familiar tools and frameworks, and now we are making it even more connected.
Together, we will explore new features in Nerves which make debugging your target even easier. Learn how to create stunning user interfaces for touchscreen displays using Phoenix. Perform ExUnit on your target device, and more
Join us to learn more about the exciting new features which makes Nerves a powerful and productive tool for creating amazing new products.

Screen shot 2016 09 27 at 8.46.45 am thumb
Rating: Everyone
Viewed 772 times
Recorded at: September 1, 2016
Date Posted: September 27, 2016

Show some results in the standard output is the first experience in how to debug your code. What is the next step? Probably, the first answer that you found was: start the observer. After some minutes with an awesome feeling, you asked yourself: What I should look here?
In this talk, you will meet some tools, learn how to debug and profile your system, check crash dump and how to find and deal with the most common cause of failure. More than that, you will understand the concepts behind the reports and the observer tool.

Screen shot 2016 09 26 at 9.38.26 pm thumb
Rating: Everyone
Viewed 585 times
Recorded at: September 1, 2016
Date Posted: September 26, 2016

"For the past 6 months we’ve been working with a client to build a Phoenix powered API for processing online food orders and delivering them to restaurants. Along the way we’ve built a series of services, written with OTP, that are resilient in the face of unpredictable third party APIs and store outages, able to handle failure in isolation, and scale to the demands of an expanding restaurant chain.
This talk will walk through some of the services outlined above as well as covering:
The overall architecture of the project and the OTP applications it’s composed of.
Thinking outside of the database; using ETS and process state to power our real-time restaurant availability service.
Batched processing without job queues; using plain OTP concepts to build a service that’s designed for failure.
Some gotchas we learned on the way to production."

Screen shot 2016 09 26 at 10.00.07 pm thumb
Rating: Everyone
Viewed 325 times
Recorded at: September 1, 2016
Date Posted: September 26, 2016

Knowledge share about building "touch typing glove" with Arduino and Elixir.This talk is about my journey from research, choosing tools, making flexible tiny pressure sensors, plugging them into Arduino, reading information from Arduino to the server running Elixir, rendering result in the browser.

Screen shot 2016 09 26 at 9.20.19 pm thumb
Rating: Everyone
Viewed 297 times
Recorded at: September 1, 2016
Date Posted: September 26, 2016

Elixir and Phoenix are built on a foundation of concurrency, speed and reliability. Thinking beyond the browser, these features are ideal for the backbone to any successful mobile application. Together we will explore leveraging the powers of Phoenix and WebSockets to get started building realtime mobile applications in Swift. Along with a basic introduction to Apple's (relatively) new language Swift, we will explore how to setup a mobile application to communicate with a Phoenix application in realtime using Phoenix Channels. We will also discuss the impacts of some of the newer Phoenix features, like Presence, and how these can be used to enhance your applications. Attendees will get a brief introduction to the basics of iOS development, explore how to easily connect Phoenix and iOS applications through WebSockets, and discover how to use the power of Elixir and Phoenix to create complex realtime applications and games.

Capture thumb
Rating: Everyone
Viewed 543 times
Recorded at: September 1, 2016
Date Posted: October 13, 2016

Electronic invoices are a critical part for trade in Mexico. If invoices are not created and delivered in time, we can generate serious problems such as complete loss of cargo ships, representing millions of Mexican pesos in losses.
We had a legacy system developed in Java from 8 years ago. It had a lot of problems including:
Big memory footprint (24 GB per server)
A lot of servers in order to distribute load and isolate errors (15 servers)
Frequently downtimes
No proper error handling and messages for troubleshooting
No statistics (they produced more load in the system)
We built a new system that resolve all these problems and provide a better foundation for future services. This is the backend that will be used in all the retail and online Apple Stores in Mexico. We wrote the backend in Erlang and Elixir, with additional micro-services in Python, C++ and Java for XML validation and PDF generation.
In this presentation I will talk about:
How we trained the team of java/ruby in Elixir/Erlang
Metrics about the new system (from 15 to 4 servers, etc.)
Problems we face
How to introduce Elixir/Erlang in a company with a lot of investment in Java

Screen shot 2016 09 26 at 10.08.10 pm thumb
Rating: Everyone
Viewed 372 times
Recorded at: September 1, 2016
Date Posted: September 26, 2016

You can't optimize what you don't measure"". Collecting metrics is fundamental to any application, and in the {Elixir,Erlang} ecosystem we have already a lot of options to do so.
In this talk, I will show we built our metrics dashboard at Xerpa using InfluxDB for storage and Grafana for visualization.
I will show how metrics collection can be made simple and non-intrusive in the code, and how Elixir's meta-programming superpowers make this both simple and easy.
I will also show what are the benefits of having such setup and how we can leverage InfluxDB's powerful query language (and some crazy tricks too) to analyze the evolution of our application over time and generate business value ultimately.
At the end of this talk, I expect to have convinced you that collecting metrics is easy and very valuable to both business and development. I also expect to show that you can live without `New Relic` without much hassle.

Screen shot 2016 09 26 at 9.54.20 pm thumb
Rating: Everyone
Viewed 252 times
Recorded at: September 1, 2016
Date Posted: September 26, 2016

Distributed graph processing systems are an important part of the modern data toolkit. Graph structures are a great way to solve a lot of problems, and distributed systems let us scale our problem size. This talk walks through how some of Elixir's features (including OTP, macros, and functional programming itself) can come together to simplify writing a distributed graph system. The result is Edgelixir; an early, work-in-progress, Pregel-based graph framework.

Capture thumb
Rating: Everyone
Viewed 221 times
Recorded at: September 1, 2016
Date Posted: October 13, 2016

Lightning Talks

00:24:00 - It's all about Elixir! by Rene @rrrene

04:47:21 - GenRetry by Pete Gamache

09:46:16 - ???

13:35:14 - Mr. Schrock

18:30:24 - My Elixir App is Crashing more than my Ruby App! by ???

21:51:18 - Ratchet by ???

26:49:28 - The Tension Between Expendience and Correctness by Josh Adams

31:39:25 - Let me tell you a story by Ian Warshak

35:04:00 - Casey Rosenthal

38:50:26 - Elixir, Elm, Games and Cats by P. Krowinski

43:35:18 - You, Mix and Kube! by Fernand Galiana

48:32:22 - Mocks, Adapters and Microservices by ???

53:38:23 - This is my first... by ???

Screen shot 2016 09 27 at 3.56.03 pm thumb
Rating: Everyone
Viewed 2,518 times
Recorded at: September 2, 2016
Date Posted: September 23, 2016

Screen shot 2016 09 27 at 8.08.54 pm thumb
Rating: Everyone
Viewed 466 times
Recorded at: September 2, 2016
Date Posted: September 27, 2016

One of the many goals that both Elixir & Phoenix share is developer’s productivity. There can be two aspects of productivity: short-term and long-term.
In this talk we’ll explore how using Elixir’s umbrella project feature can help with long-term productivity when working with potentially large codebases. As a example we’ll walk through building an imaginary system: Acme Bank. We will see how we can break up this system into a collection of smaller applications, each of which has a well defined boundary, domain model, set of responsibilities, and can be worked on independently. We’ll compare this approach to microservices-based architecture which is being adopted by many organizations and we’ll see if we can achieve some of the benefits without incurring some of the drawbacks.

Screen shot 2016 09 27 at 4.00.18 pm thumb
Rating: Everyone
Viewed 1,383 times
Recorded at: September 2, 2016
Date Posted: September 23, 2016

Elixir's strings and iolists enable great features, but do you understand them? Why is a string a binary, and what do the numbers in the binary have to do with Elixir's great Unicode support? What are iolists, and how do they enable efficient template rendering?
In this talk, you'll learn how to:
Understand the relationship between bitstrings, binaries, and strings
Properly compare and dissect UTF8 strings
Efficiently build string output to write to a file or socket
Come along for a magical journey 🌈🌠 into the bits and bytes that make these structures so powerful.

Screen shot 2016 09 27 at 9.54.09 am thumb
Rating: Everyone
Viewed 633 times
Recorded at: September 2, 2016
Date Posted: September 27, 2016

In this talk, we'll walk through the design of a collaborative music composition environment using Elm for a frontend that interacts with a Phoenix-channels based backend. We'll see how we can use the building blocks that Phoenix provides to allow us to build collaboration and persistence features to an Elm-based frontend and represent the frontend application's data structures and actions nicely in Elixir for persistence and transfer.

Screen shot 2016 09 27 at 7.35.07 pm thumb
Rating: Everyone
Viewed 625 times
Recorded at: September 2, 2016
Date Posted: September 27, 2016

So, you've played around with Ecto, and maybe even shipped an app or two that uses it. But you still have this sneaking suspicion that you might not be using it as effectively as you could, or maybe you just find yourself Googling for examples a little more often than you'd like.
Let's get you levelled up.
In this hands-on, practical talk, you'll learn about some of the foundational principles behind Ecto, and walk through a series of examples, starting from the very simple and ending with the truly gnarly, to help you understand how Ecto works and how to use it more effectively. You'll come away with a better understanding of Ecto, and a cookbook of examples you can refer back to when you need a refresher. Feel free to bring a laptop and code along!

Capture thumb
Rating: Everyone
Viewed 498 times
Recorded at: September 2, 2016
Date Posted: October 13, 2016

GraphQL is a query language created by Facebook in 2012 to provide a common interface between clients and servers by defining their data capabilities and requirements. In our work at CargoSense, we’ve both found it to be a transformative technology choice for building general purpose APIs to support devices in the field and third-party developers.
Elixir forms the core of our backend infrastructure, so we knew from the beginning that we’d need to build a GraphQL implementation for the language. The Absinthe package, available on Hex, is the product of these efforts. Its goal is full implementation of the specification--in as idiomatic, flexible, and comfortable way possible to Elixir developers.
In this talk, we’ll walk you through how to build a GraphQL API on top of Phoenix and Absinthe from the bottom-up. We’ll give you the background you need to know about GraphQL’s underlying concepts and provide some of the real world, production insights we’ve gained. Finally we’ll look at Phoenix channels with GraphQL subscriptions, demoing how GraphQL’s concepts extend beyond the traditional request response cycle.

Screen shot 2016 09 27 at 8.17.48 pm thumb
Rating: Everyone
Viewed 386 times
Recorded at: September 2, 2016
Date Posted: September 27, 2016

VoiceLayer is a real-time voice messaging platform developed using the Phoenix Framework. Its media router core service must be resilient to a wide variety of adverse conditions, including software, hardware and even network failures.
According to the CAP theorem, a system can only meet two of the following three guarantees: Consistency, Availability or Partition Tolerance. We will characterize Available and Partition Tolerant (aka AP) systems and describe different implementation approaches.
One such approach is based on Riak-Core, which is the distributed systems framework that forms the basis of how Riak distributes data and scales. Despite Riak-Core being an impressive framework, at VoiceLayer, we took a different route and relied on Phoenix Tracker (a core component of Phoenix Pubsub) to meet our requirements. We will describe this approach details, contrast it to other solutions and discuss its tradeoffs.

Screen shot 2016 09 27 at 8.27.07 pm thumb
Rating: Everyone
Viewed 138 times
Recorded at: September 2, 2016
Date Posted: September 27, 2016

Feature tests are one of the best ways to ensure reliability and consistency for web applications. But, as your test suite grows feature tests can become a performance bottleneck. This leads to developers running their tests less often or only on the continuos integration server. In some cases it means avoiding feature tests altogether.
Luckily, the release of Ecto 2.0 means that its now possible to run concurrent browser tests. Wallaby is a tool designed to take full advantage of that.
In this talk we'll look at how to configure a Phoenix application for concurrent testing, give a brief overview of Wallaby, and showcase how we can use data transformation and composition to quickly build a highly concurrent test suite.

Screen shot 2016 09 27 at 11.43.43 am thumb
Rating: Everyone
Viewed 724 times
Recorded at: September 2, 2016
Date Posted: September 27, 2016

Starting out as a self-taught designer, learning front end development was a challenging climb – but going from front end to full stack with Elixir and Phoenix was easier than many would expect. Having built a well-tested Phoenix API from the ground up, I'll narrate the adventure of learning to think the ""Elixir Way"", and reflect on lessons learned.
In this beginner-friendly talk, we'll talk about overcoming the temptation of bringing over OOP practices into Elixir, harnessing the power of Plugs, techniques for testing, and more!

Screen shot 2016 09 27 at 7.39.34 pm thumb
Rating: Everyone
Viewed 258 times
Recorded at: September 2, 2016
Date Posted: September 27, 2016

Recently I've been able to encourage my children to do their chores and not fight about it. Its been made possible with the help of Elixir and an Umbrella project which combines the use of Phoenix and Nerves (and some prototyping hardware) to build a chore system which rewards each kid with their own internet access after they've done their work for the day. It also makes it really easy to revoke access when they misbehave. In this talk I'll take you with me back through the journey, and I'll talk about why it was needed, what I learned, and how the the final outcome has saved my sanity.

Screen shot 2016 09 27 at 7.43.57 pm thumb
Rating: Everyone
Viewed 454 times
Recorded at: September 2, 2016
Date Posted: September 27, 2016

Test driven development is a core part of our process at Gaslight, and for our first couple of Elixir applications, we struggled adjusting to writing tests in our Phoenix application after years of working with RSpec and Rails. Luckily, we’ve come up with several conventions, tips, and tricks to help developers write simple, easy to understand unit and feature tests. In this talk I’ll describe how we structure tests, test setup, and helper objects to make TDD as painless as possible. Specific topics I’ll cover are:
Naming conventions for organizing tests
Using factories and helpers to clean up your setup
Splitting tests into files to group them by context
Keeping your feature in order with page modules and Hound
Writing assertions to generate useful failure messages

Screen shot 2016 09 27 at 8.32.12 pm thumb
Rating: Everyone
Viewed 357 times
Recorded at: September 2, 2016
Date Posted: September 27, 2016

Static typing versus dynamic typing is an age-old debate amongst computer scientists and programmers, and the fact that we still argue about it suggests that there is no single right answer for all circumstances. But what if we could have the best of both worlds by combining the safety guarantees of static type systems and the freedom and flexibility of dynamic type systems? In this talk, I will present an introduction to an optimistic, gradual type system as implemented by the Dialyzer tool for Erlang and Elixir. I will highlight the differences and trade-offs between static and dynamic typing, and present optimistic, gradual typing as a good compromise.

Screen shot 2016 09 27 at 2.03.15 pm thumb
Rating: Everyone
Viewed 320 times
Recorded at: September 2, 2016
Date Posted: September 27, 2016

Elixir 1.3 adds new built-in types for date and time.
Hear about the considerations behind them and how they can improve the quality of your data and software.
When should you use a NaiveDateTime instead of a DateTime? Find out the what best practices are for all the new types. Be it with Ecto, with Phoenix or in Elixir in general.

Screen shot 2016 09 27 at 7.51.08 pm thumb
Rating: Everyone
Viewed 452 times
Recorded at: September 2, 2016
Date Posted: September 27, 2016

"Programs that write programs are called metaprograms. They occupy the space between your problem and its solution. When used haphazardly the results can be confusing and cryptic. But when used wisely, they simplify that space and make it possible to solve hard problems in elegant ways.
Elixir embraces metaprogramming. In fact, it's fundamental to the implementation of the language itself.
This talk will answer questions for you such as:
When should I write a macro?
What is quote and unquote and when do I use them?
When and where does this macro code execute?
Macro.prewalk? What does this have to do with macros?
Along with some practical examples.
What's more astonishing is how approachable (and safe!) Elixir makes this complex subject. With this solid foundation, your code will be writing itself in no time!"

Screen shot 2016 09 27 at 8.37.01 pm thumb
Rating: Everyone
Viewed 550 times
Recorded at: September 2, 2016
Date Posted: September 27, 2016

WebRTC brings peer-to-peer communication to the browser in a way that could revolutionize the modern web. Phoenix Channels are great for real-time client server apps, but sometimes parts of your application need lower latency that only P2P can offer. From telephony to video conferencing, P2P communication will drive the next generation of web applications. We'll review WebRTC from the ground up, and what you can expect when using it. Along the way, we'll see code from a real-world application and the lessons learned integrating WebRTC with Phoenix channels.

Screen shot 2016 09 27 at 3.47.25 pm thumb
Rating: Everyone
Viewed 374 times
Recorded at: September 2, 2016
Date Posted: September 27, 2016

With all of the Python, Node.js and C++ libraries for connecting to sensors, actuators, and other devices, it's easy to dismiss Elixir as a language for physical computing. Nothing could be farther from the truth. Between binary pattern matching, a functional approach to transforming low level data, and natural support for recovering from the hiccups of real world hardware, Elixir is an ideal language. The main parts missing have been low level library support.
This talk starts with a discussion of the options for connecting to hardware devices, challenges and pitfalls of each technique, and tips for minimizing frustration. It will provide an in depth view of using the nerves_uart library, your laptop, and an inexpensive FTDI cable to interact with sensors, motors, smart phones via Bluetooth LE, and more. Each example will show how Elixir can beautify some really ugly hardware interfaces. Finally, the talk will end with how to remove the tether to your laptop by creating standalone embedded devices with Nerves.