Taking Elixir to production involves navigating a variety of both technical and interpersonal challenges. This talk covers common challenges that would be encountered and how to approach them. The most important aspect of this talk is understanding the human side of Elixir in production.
Coming out of Atlanta, Georgia, Steve is a software engineer and leader looking to help people become more productive. Throughout his time at different SaaS companies, Steve has come to realize the power of software in creating a lever to amplify customers' abilities. Steve enjoys helping others learn new topics to better their experience as engineers, and to better the experiences of their customers.
Why should your company choose Elixir? Whether your company is deciding on a technology for a new product or looking to migrate an existing product, Elixir is consistently coming out on top. Let's look at some of the use cases from real companies on why they decided to go with Elixir and what benefits they've seen from that decision.
Brian is the CEO of DockYard
The BEAM provides us with some unique and amazing tools for storing state and for addressing distributed computing problems. But discerning the best way to solve problems that require state which must also be distributed, is far from obvious. In this talk, we'll discuss the questions we should be asking ourselves when dealing with distributed state problems on the BEAM. Questions like: when does it make sense to keep our state in a distributed BEAM cluster as opposed to some external data store. And, if we do want to keep the state in-cluster, should we favor availability or consistency?
After building a repertoire of questions, we'll apply this type of Socratic analysis to some real world examples and explore the tooling available to solve these problems.
Before beginning his career as a software developer, Dan practiced law as a corporate attorney. Feeling largely unfulfilled with a career as an attorney, he left the practice of law to begin developing software. He now thoroughly enjoys the challenges of building software products and recently began working for SalesLoft in Atlanta, where he gets to write Elixir and work on distributed systems problems.
If you're only using Ecto for schema modules, changeset functions, inserts, and updates, you're missing out on some great features.
Without a database: Ecto.Types can be used to convert stringly-typed data from any source to native Elixir; Ecto.Changeset can be used as a convenient way to accumulate errors when going between layers with richer support for nested and translatable errors than error tuples with a String or a list of Strings.
Ecto migrations can represent primary keys that aren't integers and more closely reflect unique identifiers in your domain; join tables that use composite primary keys that represent what’s unique about the join instead of an arbitrary id column; accurately represent the difference between time keeping in the database and in your Ecto schemas using different timestamp configs.
The full power of Postgres is available through Ecto constraints: unique constraints can be tuned to specific conditions; exclusion constraints make ranges and scheduling easy; and check constraints are even more general and allow modeling complete validation logic in the database. Constraints ensure that different code paths can't corrupt your data and violate business rules. Leaning on the database constraints is crucial when doing bulk operations in concurrent ETL pipelines, but Luke will show how you don't need to abandon changeset and validations just because insert_all doesn't support inserting changesets.
Luke Imhoff has been writing Elixir since June 2014 and started writing IntelliJ Elixir in July 2014 after he couldn't find pre-existing support for Elixir for JetBrains IDEs he loved like Rubymine. While developing the plugin, he's found bugs in the native Elixir lexer and parser. He has 3 hex packages for JSONAPI: Alembic (validate format of JSONAPI), Calcinator (transport neutral JSONAPI, so you can use them for APIs and RPCs), and Retort (JSONAPI over JSONRPC over RabbitMQ for RPC). He hosts the Austin Elixir meetup on the 3rd Monday of each month.
Fast Radius' new flag ship factory in Chicago was recently named one of the 9 best in the world by the World Economic Forum. One of the main drivers of this award was its advanced software platform built with both Phoenix and Nerves.
In this talk, I will give an overview of the main components of the system including the Nerves based real time data capture system that pulls data from both our fleet of 3D printers as well as physical sensors all over the factory. Additionally, I'll cover our Phoenix based design feedback and order management portal. Finally, I will discuss how Elixir has uniquely enabled our platform as well as some of the challenges we've run into working with it as a small team trying to move quickly.
Clark Kampfe works at Fast Radius in Chicago, where he builds factory management and 3D model analysis software in Elixir and Rust. In his spare time he loves reading, teaching, and making generative art using his CNC pen plotter.
Get under the hood of your application, with metrics! What is your slowest external call? What are your total daily interactions? Find out with Prometheus!
We’ll use Prometheus and Grafana to give us insights into your application. Prometheus will gather time series metrics, and Grafana will give a powerful display of them.
We’ll cover how to add instrumentation through the lens of a real-world application.
Finally, we'll get alerted about key metrics via the Prometheus AlertManager.
Eric Oestrich works at SmartLogic building applications with Elixir. In his spare time he works on ExVenture, a text based MMORPG engine. He also helps run the REST Fest Midwest unconference.
Smart sprinklers controllers can cost $200 or more and there is no way to customize them. For around $50 you can build your own sprinkler controller with Nerves and have the freedom to customize it in any way you want. I will walk you through the software and hardware you need to get going, including sensors that can make your controller smarter than any available off-the-shelf today.
I am a reformed graphic designer that got my start in web development 15 years ago. I have made a career in front-end development, PHP, Rails, and for the last year or so, in Elixir. I am a contributor to hex and hex.pm and in my spare time I tinker with hardware projects.
Distribution is one of Elixir's greatest strengths, but taking advantage of it properly is a non-trivial problem. This talk brings you up to speed on how distributed state gets introduced into a system; common problems which can result when assumptions are made about system behavior; how to reason about the protocols you choose to keep distributed state safe; and how a new tool I've built, Cadre, aims to make your life much easier by providing tooling and a common abstraction for building, modeling, and verifying implementations of consistency protocols and the services you build on top of them.
Architectural Engineer at DockYard; creator of Timex, Distillery, Swarm, libcluster, and a bunch of other libraries and tools.
The Elixir programming language is rapidly reaching maturity. In this talk, we're going to look at what is next, in terms of technology, adoption, and community.
Those attending this talk will have a better sense of where Elixir is on the adoption curve, as well as challenges and opportunities we'll face together as a community.
Bruce Tate is a mountain biker, climber and father of two from Chattanooga, Tennessee. He is the author of more than ten books including Programming Phoenix and Seven Languages in Seven Weeks. He is the founder of Groxio, a company focused on programming language training and education.
At a high level Ecto is about 3 main concepts: 1) managing connections to a database, 2) generating SQL, 3) defining and validating schema structs. This talk ignores the first two and focuses on the last part. Ecto 3.0 was refactored to separate core ecto from ecto_sql, but even Ecto 2.0 can be used without a database.
Changesets are remarkably general and can be used to abstract an HTML form from an underlying data storage layout, or to manage advanced search criteria, or even as an anti-corruption layer for not-completely-trusted data coming into your system. We'll explore these use cases with practical code you could start using in your projects tomorrow.
Greg has spent a circuitous career to finally find a happy place with Elixir. After 20 years working as a software developer, he can now fully embrace concurrency not as a necessary evil, but as a great design tool. He's a 7th generation Texan and resides in the Dallas area with his wife and two children. He's Chief Architect at Seat Scouts where he advances the ticketing industry with the amazing near realtime features Elixir makes easy.
We've succeeded in implementing a demonstration program in which an Elixir code invokes directly a GPGPU benchmark by Rustler. We propose a Hastega (Hyper Accelerator of Spreading Tasks for Elixir with GPU Activation) method that converts an Elixir code using Enum/Flow to an executable code for GPU or multi-core CPU with SIMD.
We've conducted a performance evaluation using the Logistic Maps of the experimental implementation of GPGPU using the Hastega method. We've got the following results:
Now, we implement Linear Regression and Neural Network in Elixir, and will accelerate it with Hastega. Our main future work is to implement a compiler from Elixir code with Enum/Flow to native code for GPU and/or multi-core CPU with SIMD.
Susumu Yamazaki (ZACKY) is currently an Associate Professor at the University of Kitakyushu. His current research projects focus on programming language processors, software engineering, programming education and social implementation of software systems.