A one-day conference for curious
elixir programmers.

Saturday, February 2, 2019

Los Angeles

Saturday, February 2, 2019

EMPEX is a sophisticated conference series for the Elixir programming language and ecosystem held in Los Angeles. We present a single track of technical talks in a fun space in downtown LA. Our goal is to bring a sense of aesthetic and fun to the growing Elixir community.

We'd love for you to join us. Put your email address in so we can keep you up to date.

The Hungarian Social Club
in Downtown Los Angeles

La location
Find it on Google Maps 1827 South Hope Street, Los Angeles, CA 90015
Bus icon Walking distance to Metro Blue line

Keynotes

We're excited and proud to announce our keynote speakers for EMPEX LA!

Miriam pena

Miriam Pena

Opening Keynote - War Stories: Scaling Distributed Systems

Architecting a highly concurrent distributed system in the BEAM ecosystem is not an easy thing to do even on a perfect world of homogeneous traffic, reliable, secure and low latency networks. But real life internet applications may have millions of users and bizarre faulty scenarios that can arise hidden scaling issues.

In this talk, I'll describe how the distribution model works in Erlang, and when/how you should take advantage of it –or not! Spiced up with real-life war stories from architectures running in production. Hopefully, you can learn from our mistakes!

Miriam loves to architect distributed, scalable, high performance, high concurrency, and high availability systems. Bonus point if they are written in Erlang/Elixir. She is a Staff Engineer at AdRoll, designing critical parts of their AdServers/RTB infrastructure and organizer of the Erlang and Elixir meetup in San Francisco. Prior to AdRoll, she provided Erlang specialized consultancy and studied Computer Science Engineering from La Coruña University in Spain. Voted one of the women to watch in 2018 by Women 2.0 here. She published some open source libraries such as mero, a scalable and lightweight client for Memcached and Spillway for load shedding.

Ashi krishnan

Ashi Krishnan

Closing Keynote

Ashi is a visual poet who has been telling stories with code and words since she was a child—perhaps before. She has worked at seven-person startups, fought fires in the trenches of SRE at Google, and spent the last three years teaching at coding bootcamps. She now works as a senior software engineer at GitHub, where she hopes to dissolve the walls between us and our tools. She is learning to regard every moment, and the creatures within them, with love.

Presentations

We're proud to announce the following presentations for EMPEX LA!

John Mertens

Lessons From Our First Trillion Messages with Flow

For many of us recent Elixir converts, our initial attraction to Elixir was rooted in the promise of access to the BEAM concurrency model.

While this has been possible in Elixir from day one, Flow has made it incredibly easy to build highly concurrent and parallel data pipelines utilizing the BEAM. The problem is that while the docs are great, there aren't many resources about running Flow-based systems in production.

In this talk I'll share some of the lessons my team has learned from processing our first trillion messages through Flow. You'll leave with practical knowledge you can directly apply to your applications.

For the last year, my team & I have been using Flow to power a reactive, high volume and mission-critical data processing pipeline. In that time we've recognized some patterns and techniques to keep our system easy to reason about while also being flexible to handle a variety of requirements.

Anna neyzberg

Anna Neyzberg

Hannah

Hannah Howard

Go vs Elixir: A concurrency comparison

As software engineers we often are looking for the best tool for the job. Yet what about when languages appear similar? What then?

In this talk we will compare Go and Elixir. These languages have similar principles but make core tradeoffs that affect when one might use them. We will specifically compare their concurrency paradigms to see what tool we might use when.

Kalisa falzone

Kalisa Falzone

Making your Elixir API Accessible to non-Elixir developers

This talk will describe tools, application best practices, and team collaboration tips that make consuming and working with an Elixir API easier for those not familiar with Elixir. I will talk about how I went from programing in only Javascript to working full stack at Versus Systems, what things we did to inspire engineers to work full stack. Some topics I will explore are useful testing, documentation, and scripts, as well as application organization, and effective teamwork.

Aaron harpole

Aaron Harpole

You might say I have 🕶 mix feelings

Yes, Elixir’s great, it’s based on Erlang, making it fault tolerant and scalable. But a few months with it day-to day, am I still singing its praises?

Michael ries

Michael Ries

Five Easy Ways To Start With Nerves

Writing code that touches the real world is a magical experience. Nerves makes the software more approachable and much more powerful. Come see five fun projects that you can build from beginning to end without reading spec sheets or thinking about capacitors. From a garage controller, to LEDs and sprinkler controllers there are a lot of cool things you can build from scratch.

Alex peachey

Alex Peachey

Where did I put my data?

A look at how Amnesia's Elixir wrapper over Erlang's Mnesia distributed DBMS can be used to keep your application state in a scalable resilient manner. We will start by looking at Agents and GenServers as they are primarily the first thing people reach for when storing state. From there we will show how we can gain performance, remove bottlenecks, and increase stability by using ETS. Finally we examine how a more robust Amnesia solution can help systems scale beyond a single node, allowing the system to not only support higher loads but increase resiliency.

Adrian cruz

Adrian Cruz

Elixir Code is Elixir! Metaprogramming and Elixir

Elixir is a programming language that has become dear to me as it has become my go-to choice for most of the things at work and personal projects. One thing that people notice when getting started with Elixir is that, in fact, a good chunk of it is written in Elixir. Now you might be thinking, "Wait. What? How can that be?". Well, the short answer is: metaprogramming.

Metaprogramming doesn’t have to be too scary to think about and it’s not so bad at all. I’ll show examples of the standard library where functionality is written in Elixir and I will also dive into extending Elixir by writing our own macros. But by also diving into the Elixir-lang code base we can explore the bootstrap process and see how you can start implementing Elixir in Elixir.

Libby horacek

Libby Horacek

Fake It 'Til You Make It (where it = Haskell expertise)

In 2016, Magazine X asked Position Development to expand their existing Haskell app. Instead of only serving ecommerce forms via iframes in their WordPress website, their Haskell app would serve everything, including every article from the magazine and blog. Magazine X editors would continue to use WordPress to write and edit articles, but the Haskell server would request content through the WordPress JSON API and render templates. The magazine also wanted several new subscription, mailing list, and donation features. Early into the project, the original creator of the app left Position to begin a career in research. I was suddenly the most experienced Haskell developer on my team, while I still had less than a year of professional experience in tech. In this talk, I'll discuss both a) the technical aspects of the work and b) what it was like to try to make it all happen as part of a very small team of non-expert Haskellers. Some of the topics I'll touch on include:

  • Larceny, our HTML templating language
  • Offset, our library for rendering content from JSON APIs
  • Position's workflow for developing, testing, and deploying Haskell apps
  • Feeling disconnected from the larger language community, struggling with imposter syndrome, and continuing to learn and grow as a functional programmer
In 2017, Magazine X relaunched with a bold new website. Getting to launch was a bit rocky, but for the past year we've been able to continue integrating more new features and designs into a fast, secure, and mobile-friendly Haskell app.

Evelyn masso

Evelyn Masso

Handling Null in Functional Programming

Nulls are a fact of life—sometimes a value can be absent, which is important information to have However if a variable can be null, we often have to write extra code to handle that possibility. How can we utilize functional, typed languages to only allow null where it communicates important information and eliminate it everywhere else? This talk will identify patterns to do just that and discuss how they can help shape your application’s architecture.

About Bruce: Bruce currently works as a developer at a company called Versus Systems based in Los Angeles, California. He occasionally contributes to Elixir open source libraries such as ESpec, a popular testing framework. In his spare time, he likes reading Tom Clancy novels and swimming along with a cup of coffee.

Bruce

Bruce Park

Rebuilding a BDD Testing Framework (ESpec):
Foundations in Metaprogramming

You're a Test-Driven Development disciple, but you're a little iffy on this whole metaprogramming thing and it's something you don't feel comfortable using in your day to day programming.

If you've looked through the ExUnit codebase, or its RSpec-inspired cousin, ESpec (RSpec is a Ruby on Rails testing framework), you've probably noticed the defmacro keyword. That's because these test frameworks make use of metaprogramming to give you those lovely DSL's.

Don't know what the defmacro keyword does? Don't worry.

Even if you've never used Elixir's metaprogramming features before, come learn how to do it by seeing a real-life application of them. During this talk, we will rebuild a small part of our own version of ESpec. We'll duck and weave through Elixir's basic metaprogramming features all while building out test assertions and error messages, and you'll gain a whole new appreciation for metaprogramming.

Ludwik bukowski

Ludwik Bukowski

Elixir and Datadog

Having an Elixir application deployed it's crucial to have good insight into your architecture for multiple reasons. High level of observability helps you scale, improve your system's performance, optimise, debug and decide how to develop your product further.Good understanding of what your system is doing is even more important when it grows in time and uses more and more third party components that you don't have much influence over.

In my presentation I'm going to share my experience with integrating a significantly large Elixir system, with a state of the art monitoring service - Datadog. I'm going to explain how various features it offers, like metrics, live tracing, logging and analysis tools helped find number of non-obvious bottlenecks in the code.

Trainings

We're pleased to offer a training session on Friday, February 1, 2019.

Training will begin at 9am and run until roughly 4pm at a location TBA. Catered lunch is included.
Frank hunleth

Frank Hunleth

Justin schneck

Justin Schneck

Device to the Cloud with Nerves and NervesHub

The Elixir language and Erlang runtime provide a uniquely robust and productive environment that runs well from embedded to server. This class extends on previous Nerves training to the cloud for device/server communications and device management with NervesHub. Attendees will assemble real devices and build out the software step-by-step for a simple multi-user game with the help of the authors of Nerves.

We’ll spend the first half of the day building the device and getting comfortable with developing and debugging on Nerves. If you’ve attended previous Nerves courses, this one will have greater emphasis on networking and device provisioning. The second half transitions to managing devices with NervesHub and developing a simple companion Phoenix application.

The workshop is appropriate for beginners and expert Elixir programmers alike since it focuses more on embedded development than pure coding. Since the Nerves development is rapidly improving, even veteran embedded Elixir programmers will learn new ways of making their development cycle better. Beginners to Elixir are highly encouraged to create a couple toy projects and learn about GenServers and OTP releases beforehand.

Schedule

Doors open / Registration
Show up and hang out. Mingle!
9:00AM
Opening Remarks
9:30AM
Morning Keynote
Miriam Pena
9:35AM
Lessons From Our First Trillion Messages with Flow
John Mertens
10:20AM
Break
10:40AM
Go vs Elixir: A concurrency comparison
Anna Neyzberg & Hannah Howard
10:50AM
Making your Elixir API Accessible to non-Elixir developers
Kalisa Falzone
11:35AM
Lunch
Yum yums.
11:55PM
You might say I have 🕶 mix feelings
Aaron Harpole
12:40PM
Five Easy Ways To Start With Nerves
Michael Ries
1:05PM
Break
1:25PM
Where did I put my data?
Alex Peachey
1:35PM
Elixir Code is Elixir! Metaprogramming and Elixir
Adrian Cruz
2:10PM
Break
2:30PM
Fake It 'Til You Make It (where it = Haskell expertise)
Libby Horacek
2:40PM
Handling Null in Functional Programming
Evelyn Masso
3:15PM
Big Break
3:35PM
Rebuilding a BDD Testing Framework (ESpec): Foundations in Metaprogramming
Bruce Park
3:55PM
Elixir and Datadog
Ludwik Bukowski
4:20PM
Closing Keynote
Ashi Krishnan
4:45PM
Closing Remarks
5:25PM
Dismiss
Let's wrap it up!
5:30PM
After Party (location TBD)
6:00PM

Organizers

Bowe desmond

Desmond Bowe

@desmondmonster
Hannah

Hannah Howard

@techgirlwonder
Rosemary

Rosemary Ledesma

@rosemledesma
Will

Will Ockelmann-Wagner

@WowItsWillWow
Bruce

Bruce Park

@bpark0