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!

About Miriam: 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

About Ashi: 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

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.

About John: John is a problem solver who has spent the majority of his career using his technical skills to have a positive impact on the world around him. A former Code for America fellow and civic tech startup co-founder, he currently uses Elixir to empower social action at Change.org.

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.

About Anna: Anna is a San Francisco native who has done a lot of work in the ruby community in SF and currently sits on the board of RailsBridge. She has taken this community organizing experience and several year go co-founded ElixirBridge in SF - an organization that offers free weekend-long workshops, with the goal of creating an inclusive welcoming space for underrepresented populations in tech to learn elixir. By day she works as a Developer at Carbon Five. When not in front of a keyboard, she is trying to get better at climbing rocks.

About Hannah: Hannah is a senior developer and tech generalist with over 15 years experience in programming and other technical fields. Prior to programming, Hannah worked for 10 years in the non-profit sector in Los Angeles, specializing in LGBT advocacy and community organizing. Hannah returned to coding in 2012 and brings her passion and experience from community organizing to helping new programmers get up to speed on technical topics.

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.

About Kalisa: Kalisa Falzone is a Software Engineer at Versus Systems. She specializes in Javascript and React, but has been working with Elixir and full stack more recently. She has an educational background in Mathematics, loves board games and music.

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?

About Aaron: Originally hailing from the Midwest, Aaron made the trek out to Los Angeles in 2010 to work for one of those exciting internet startups he’d been hearing so much about. Since then, he’s led teams at LA-based startups Fullscreen and Ring, both of which are all grown up now. He currently works at Carbon Five, where he’s been working with such languages as Ruby (his long time favorite) and more recently Elixir (current frontrunner to become new long time favorite). His clicky keyboard collection grows at a rate of about 1 per 1.4 months, but he can stop whenever he wants.

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.

About Michael: Michael builds systems with Elixir and Ruby in Utah. He spends most evenings reading and building legos with his children. He organizes the Nerves Remote Meetup to discuss hardware and software with friends and hopes to one day build a robot that doesn't scare his children.

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.

About Alex: Alex has been developing software for over two decades and has been focused on exploring and using Elixir for the past two years. Most recently he has worked with the rest of his great team at Versus Systems to rebuild the platform in Elixir, paving the way to making many more games more fun. When not crafting code, Alex enjoys playing games of all types.

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.

About Adrian: Adrian is a senior software engineer, runner, and sometimes a speaker. Adrian works on search, product discovery, and growth. He is an Elixir enthusiast and has contributed to Elixir-lang and its ecosystem. Outside of coding, he can be found running the streets of New York.

Libby horacek

Libby Horacek

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

In 2016, a magazine publisher asked Position Development to completely revamp their existing Haskell app. 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

About Libby: Libby is a software developer with an interest building excellent, sustainable technical infrastructure for growing organizations. In 2014, she received a grant to study at the Recurse Center, which allowed her to move from her home state of West Virginia to NYC. After studying functional programming at RC, she joined The Learning Collective, a group of activists teaching each other to create software for power-distant publics. There she met Daniel Patterson, then a worker-owner at Position, who encouraged her to apply to work with Position. Libby has also spoken at conferences and technical meetups including Allied Media Conference, !!Con, AlterConf DC, and Haskell Users Group.

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 Evelyn: Evelyn Masso is a person (all the time), a developer+designer (on weekdays), and a poet (on weekends). She currently works as an Application Engineer on the GitHub Desktop Client and contributes to p5js.

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.

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.

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.

About Ludwik: Ludwik is a functional programming enthusiast who to move with the times has been recently converted from Erlang to Elixir. He works as Software Engineer in Erlang Solutions in Kraków, and likes to travel and play squash.

Trainings

We're pleased to offer two training sessions on Friday, February 1, 2019.

Trainings 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.

We will be providing Raspberry Pi’s and accessories to use during the class. It is unnecessary to buy hardware. We know from past classes that many people want to use hardware that they can take home. If you would like to do this, you can buy class materials beforehand:

  • Adafruit OLED Bonnet Pack for Raspberry Pi Zero - Includes Pi Zero W
  • 4 GB or larger MicroSD card
  • MicroUSB cable to connect the Raspberry Pi to your laptop
  • NervesKey - We will have extra NervesKeys for the class

Note that the Adafruit OLED Bonnet Pack requires you to solder a header onto the Raspberry Pi Zero. The Raspberry Pi Zero WH may be available with a pre-soldered header. Rest assured, if your hardware fails, we will provide a kit for the class.

Bowe desmond

Desmond Bowe

Elixir In Production

Are you interested in building your next production application in Elixir, but don't feel confident that you'll be able to handle the ins and outs of creating and maintaining a live system? After this course, you will. We'll walk through application design patterns, testing strategies, monitoring solutions, and bugfixing strategies so you can feel comfortable taking the leap into the next generation of reliable, scalable applications. There will also be a discussion and Q&A with engineers who have spent years working on production Elixir apps.

About Desmond: Desmond is the founder of EMPEX, a cohost of the popular ElixirTalk podcast, and a member of the Erlang Ecosystem Foundation. During the day, he works as Head of Engineering at Versus Systems. In his free time he grows shaves his mustache and plays pinball.

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