EMPEX, the Empire City Elixir Conference, is a sophisticated conference series for the Elixir programming language and ecosystem held in New York City. We bring a sense of aesthetic and fun to the growing Elixir community.
The Halloween Lightning Talks are an evening costume party featuring fun and several short technical talks. Costumes strongly encouraged.
We're excited and proud to announce our keynote speakers for the third annual EMPEX!
Brooklyn Zelenka is a polyglot programmer, a founding partner at Robot Overlord Software, and coffee enthusiast. She has been doing production Phoenix work for a few years, mentored teams through their adoption of Elixir, and released several BEAM libraries including Quark, Witchcraft, and Exceptional. She is the founder and organizer of multiple Vancouver meetups and conferences, variously centred around functional programming, culture, and mentorship. Lately she has been thinking a lot about the success and failure modes of different tech disciplines, scaling blockchain VMs, and how dependent types can help save us from ourselves. When not roaming the world as a digital nomad, Brooklyn is based out of Vancouver, Canada.
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.
Higher Level Functions for the Win
One of the key tenets of functional programming is that functions are first-class citizens. Amongst other things, this means that functions can be accepted as parameters to other functions. While this seems like an interesting idea in theory, developers new to functional programming often have a hard time understanding how to apply higher order functions in their day-to-day work. This talk will give an overview of what higher order functions are, and how we may already be using them in our daily programming life using Elixir library functions like map, filter and reduce. With this background, we will show how to create and use our own higher order functions to increase readability, decrease repetition and simplify the testing process.
About Bill: Bill Peregoy is a developer at The Gnar Company, a software consultancy in Boston, MA. Bill has worked in a wide range of technical positions, from sub-micron semiconductor design and test, to systems and web programming. Bill is currently exploring the world of functional programming (and chronicling it at: becoming-functional.com) and is currently consulting in Boston MBTA using Elixir to improve local mass transit.
Lessons Learned Building a Medication Service at Teladoc and How Ecto Saved the Day
Learn how Teladoc built a medication history and pharmacy benefits service as an Elixir umbrella project. Hear about tools used and lessons learned during the project. And find out how Ecto saved the day when databases were radically overhauled.
About James: James wasted 14 years at Harvard, LSE, and Stanford studying Not Programming, wrote "Management Secrets of the N.E. Patriots," then became a Ruby dev, the last 5 yrs at Hedgeye & Teladoc. Spoiled by Elixir, he's now enjoying learning Elm, Haskell, & FP.
Neuroevolution in Elixir
Python has become the dominant language for machine learning, and as an Elixir dev, that’s a real bummer. When building machine learning systems, there’s lots of reasons to want to use tools like metaprogramming, concurrency, supervision, distribution, higher-order functions, and all of the other things that Elixir does well. This talk introduces a library that tries to let Elixir and Python each do what they do best, in collaboration.
Galápagos Nǎo is an Elixir library to evolve deep neural networks. Under the hood it uses the Gluon Python API to Apache MXNet, to take advantage of one of the most flexible and performant deep learning libraries around. The goal of this unholy union of technologies is to do something even harder than building deep learning models: build an ecosystem that evolves deep learning model architectures. Just for fun, the framework also includes shiny features like interactive evolution and optimization of architectures for non-functional requirements.
Other exciting highlights:
- Cyborg tortoises
- Language interop
- Evolutionary theory
- Bleeding edge deep learning
- Snake charming
About Speaker: Jeff Smith is an AI developer, author, and manager. He coined the term reactive machine learning and wrote the definitive text on the topic.
Pattern Matching: The Gateway to Loving Elixir
What is pattern matching in Elixir? For this developer, it's what won me over to the language. This deceptively powerful paradigm is at the heart of what makes Elixir such a compelling language to program in. It's doing so much more than help you write small, declarative, maintainable functions; it's making you a stronger programmer. This talk covers pattern matching basics, then moves into practical, real world examples for a thorough introduction to Elixir's implementation of this crush-worthy construct.
About Kate: Kate is a NYC-based web developer. A graduate of the Flatiron School, Kate spends her days building Learn.co. Outside work, Kate is an active volunteer and tutor through FIS, as well as backup quarterback for her co-ed touch football team.
`mix new beats` -- Recreating The "Amen Break" with Elixir
As part of my day job I write and maintain SchedEx, a Swiss Army knife for job scheduling in Elixir. It's an indispensable library that sits at the core of a product used in manufacturing plants worldwide. An after work discussion led me down the path of applying SchedEx to soft real-time scheduling, and before long the beats project was born. Using the production proven SchedEx library as a foundation, beats is an ncurses-based, file-driven, actually-sort-of-useful drum machine that also happens to be a great lab for exploring scheduling. The talk will provide a tour of several real world patterns for job scheduling within Elixir, demonstrate some strengths and limitations of the Erlang runtime, and also build up a few classic beats & breaks along the way.
About Mat: Mat is a polymath tech consultant from Toronto who loves solving the really gnarly problems. A relentless builder whose natural habitat is the basement workbench, he's a fan of honesty, good design, and golden era hip-hop.
GenStage: Keeping large amounts of data up-to-date with Pipelines
SMS is the dominant communication channel for how business is done in Africa. The healthcare industry, in particular, has taken advantage of targeted messaging to better patient outcomes. Our team had the opportunity to architect a messaging platform that integrates into any number of partner hospitals to leverage SMS. By filtering patients based on their condition, demographics, or location, healthcare workers can effectively communicate with their patient base. To achieve this, medical records need to be up-to-date. How do we effectively manage updates in a way that is fault-tolerant? How can we ensure that we don't overwhelm a partner's API? What solution gives us the tools to support multiple partners in the same system? In this talk, we'll share how we used GenStage to answer all of these questions and share our road to production.
About Robert: Robert loves bouncing around the globe helping companies. You'll find him developing an indie music app one day, then scaling a giant telemedicine platform the next. He's worked gigs in Boston, NYC and Paris but now runs his remote agency, Echobind.
The Best of Both Worlds: High Performance Recommendations with Elixir NIFs
Teachers Pay Teachers needed to build a system to serve our feature-factorization item recommendation model. I go in depth to how we used erlang's process model for managing and sharding the data set, and C's power for fast number crunching to build a system that could serve thousands of users personalized recommendations from over 2 million items.
About Shanti: Shanti is a software engineer at Teachers Pay Teachers, where she helps develop backend systems in Elixir and Erlang.
Phoenix Presence: The Right Way To Track User Involvement in Real-Time Features
You've used Phoenix Channels to build real-time features like collaborative text editors, games and chatting apps. But how can you acheive the common real-time aim of tracking and displaying a user's participation in such features? While we can leverage GenServers to build out features like displaying the users in a chat room and indicating who is typing, that approach leaves us responsible for hand rolling *a lot* of code. Enter Phoenix Presence! The Phoenix Presence module provides an API for you to register information regarding a given topic and expose that information to all of that topic's channels. Phoenix Presence is powerful because it is distributed and resilient––unlike tools like Redis, which rely on a centralized data store, Presence uses a conflict-free replicated data type protocol.You'll learn how to use Phoenix Presence to track user participation in a real-time feature and you'll gain a deeper understanding of the technology behind the awesome power of Phoenix Presence. We'll look at how to include Phoenix Presence in a Phoenix app that already leverages channels to implement a real-time collaborative text editor. If you have some experience with Phoenix Channels, all the better, but we'll cover some high-level Phoenix Channel concepts and spend most of our time on the incorporation of Phoenix Presence on the back-end, with a brief look at some Phoenix Presence client-side code.
About Sophie: Sophie is a software engineer at TuneCore where she helps artists distribute their music to all the online stores. As a former instructor at the Flatiron School, she's passionate about teaching and learning all things code. Historically she is a cat lover but will admit to owning a dog.
Recurrences & Intervals
This talk is retelling my journey down the rabbit hole of dealing with date & time.
We will start the journey with date/time recurrences. Then, we will look at time intervals and operations around them. Finally, we will look at Eric Evans' talk "Exploring Time" which gives a fresh look at date/time in general and intervals in particular (spoiler alert: there might be some relevant research from the 80s around that too!). We will model both recurrences and intervals as streams and we will try to show that Elixir's extensibility makes it a great language for developing business applications.
About Wojtek: Wojtek is a software developer based in Kraków, Poland. He is member of the Hex team and he works at ClubCollect, a Netherlands-based startup.
Doors will open at 6:30pm with talks beginning around 7:15. The party will run until 10pm with light food, beer, and wine served throughout.