EMPEX, the Empire City Elixir Conference, is a sophisticated conference series for the Elixir programming language and ecosystem held in New York City. We present a single track of technical talks in a jazz club. Our goal is to bring a sense of aesthetic and fun to the growing Elixir community. We'd love for you to join us!
We're excited and proud to announce our keynote speakers for the fourth annual EMPEX!
Dave Thomas has written code just about every day in the last 45 years. One day he’ll get it right.
He’s an author: The Pragmatic Programmer, The Manifesto for Agile Software Development, Programming Ruby, Agile Web Development with Rails, and recently Programming Elixir. He speaks at conferences around the world, and runs training for folks who want to enjoy themselves while learning (kind of like a Comedy Defensive Driving class).
But mostly he writes code; sometimes to solve problems, sometimes to understand problems, and often to create them.
He has strong and controversial views on how Elixir should be written; prepare to be both entertained and annoyed.
LiveView: Rich Client Side Experience Delivered From the Server
About Andrew: Andrew Forward is happiest during biking season. Otherwise reserved, he has a passion for software engineering, finance and fitness; often intermixing all three. Andrew works remotely as a developer for CrossFit HQ, but also dabbles as a part-time professor at the University of Ottawa. Andrew came to Elixir for the syntax, but stayed for the OTP.
Is Elixir Just Lisp? Demystifying Metaprogramming in Elixir and Beyond
Metaprogramming is a powerful tool that many Elixir developers use every day. Via macros, we can write concise, reusable code, and even extend the language itself. But, metaprogramming in Elixir can be hard to grok, especially for newcomers. So in this talk, we’re going to review the inner workings of Elixir’s metaprogramming environment. We’ll start with a quick syntax review, and discuss in plain terms what the core components do for you. Then, we’ll talk about the essence of macros: modifying Elixir’s Abstract Syntax Tree to reshape your code at compile time. And finally, we’ll compare Elixir’s macros to metaprogramming approaches taken in other languages. Whether you’re new to Elixir or a seasoned developer, you should leave this talk with a clearer understanding of how this powerful set of Elixir abstractions works and how you can use it all confidently in your next project.
Introducing Mint, a process-less HTTP client
In this talk we will present Mint, a new HTTP client for Elixir supporting HTTP/1 and HTTP/2. Mint has a process-less architecture using pure data structures, we will show why this architecture gives the developer more flexibility in how they can use the library but also the possible downsides of this approach. We will look at different use cases for Mint and finally go into some of the details of how to implement a HTTP library and how to build libraries using pure data structures.
About Eric: 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 is a co-author of the book "Programming Ecto" published by Pragmatic Bookshelf.
Dadgineering with Elixir+Nerves
Are you a parent of children, pets, or just really immature roommates? Do you wish you could use Elixir to help solve household issues and annoyances? Do you frequently over-engineer side projects? Then you might be a dadgineer (or momgineer).
This talk is compilation of fun projects using Elixir & Nerves to solve silly problems around my home. Projects such as a "Picture Board Turn Selector" to programmatically answer the age old question of "Whose turn is it!?", complete with LED light show. Or hardening the security of the toy storage room with electromagnetic latching and biometric unlocking procedure.
The projects are overly complex for the problems they are solving, but my hope is that it helps inspire others to break into the world of hardware. To provide yet another set of wild examples to show how fun and sometimes surprisingly easy it is to create your own customizations in the physical world.
About Jon: Happily married father of four young kids. Wannabe woodworker. Avid bike rider. Hardware fanatic. Lover of good BBQ, chocolate chip cookies, and swimming.
Process Potential: Multitasking and fault tolerance in Elixir
Much of Elixir's hype has flowed around OTP: the concurrency and parallelism that promises multitasking at lightning speeds. However for newcomers to the language, the tools that enable this can be hard to visualize and intimidating to implement.
We'll start with processes and work up to GenServers. We'll take a look at a truly practical example of GenServers: an app that deploys hundreds of repos to Github Enterprise at once for students to use as lessons while maintaining global state. We'll delve into how it orchestrates the process with parallelism and fault tolerance. Both developers from OO backgrounds and those currently working in Elixir will gain a new comfort with the building blocks of multitasking and how to use them to their potential.
About Meryl: Meryl Dakin is a full stack web developer living in Brooklyn. She is a former instructor for the Flatiron School and volunteers with Code Nation. She has written several blog posts and made a small number of cartoons on various programming topics.
Functional DevOps in a Dysfunctional World
What happens after you cut a release? Getting your finished software in the hands of your users can be quite an ordeal, especially if you use tools that make things harder than they need to be. It turns out that a functional approach has benefits even after the development team has written their last line of code.
I will motivate and demonstrate using the Nix suite of tools to package and deploy a web service, showing how this helps us reconcile the sometimes conflicting priorities of development and operations teams and allows us to respond nimbly to change as it occurs.
About Vaibhav: Vaibhav used to write web applications for a living. He still does, but he used to, too. When he's not doing that he yells about Nix on Twitter, reracks his bumper plates, and listens to a lot of really good disco.
Demystifying Purely Functional Data Structures in Elixir
Reasoning about data structures and run times in functional languages like Elixir is a far cry from classic analysis of data structures in imperative languages. While working with immutable data structures helps us reason about the flow of state in our programs, it has implications on the data structures we choose to work with and the efficiency of operations on those data structures. We will start by briefly laying some groundwork for analyzing functional data structures and discuss some optimizations used to prevent unnecessary copying while maintaining immutability. We'll move on to take a look at some basic data structures implemented with examples in Elixir and then discuss their characteristics. Starting from naive implementations of these basic data structures and related operations on them, we will consider how to further optimize operations to draw out more efficient run times. The talk will wrap up with a discussion of how to build an intuition for creating more efficient data structures in Elixir.
About Zack: Zack is a software engineer at Gaslight in Cincinnati, Ohio, and has spent the last couple of years working on a wide variety of projects -- ranging from server-side applications, to iOS and web frontend enterprise applications, to one-day hackathon projects, all the way to game development for personal enjoyment (and pain :-D). Ever since being introduced to Elixir, Erlang, and OTP in 2016, he has been a huge proponent of functional programming and an evangelist for a movement towards more immutability and no shared state wherever possible. Prior to entering the software industry, he was a professional translator specializing in English to Japanese translation. Outside of work, Zack is an avid traveler and a long distance runner (but only when it is not winter in Ohio because cold is NOT cool).
Doors open / Registration
Breakfast & Chat
Higher Level Functions for the Win
The Best of Both Worlds: High Performance Recommendations with Elixir NIFs
Recurrences & Intervals
Neuroevolution in Elixir
`mix new beats` — Recreating The "Amen Break" with Elixir
Phoenix Presence: The Right Way To Track User Involvement in Real-Time Features
Lessons Learned Building a Medication Service at Teladoc and How Ecto Saved the Day
Pattern Matching: The Gateway to Loving Elixir
GenStage: Keeping large amounts of data up-to-date with Pipelines
Nearby location to be announced.