Keynote - 23.5 Days with Elixir
In preparation for my talk I've decided to program only in Elixir for the next 23.5 days.
I'll present my experience as a total newby to the language - what do I like, what do I dislike, what did I have difficult understanding? What took me a long time to fix? - What's good what's bad?
This talk discusses the high availability challenge, an important property when building a system that needs to provide the service continuously. Based on my own experience in building an Erlang/Elixir powered system that constantly pushes the fast changing data to a few thousand of connected users, I will provide a high-level overview on how Erlang can help us implement continuously running systems, and back this theory with some real life examples. This is an introductory talk that targets mostly people new to Elixir and Erlang, aiming to explain why and how Elixir/Erlang can be beneficial. The talk is language agnostic with the focus on Erlang virtual machine rather than a particular BEAM oriented language. After the presentation, the audience should have a better insight on how highly available systems can be implemented, and how Elixir/Erlang can help in achieving that goal.
Robots are fun. Programming is fun. Programming Lego robots with the visual environment... well, not so fun. This is the starting point for putting Elixir on the Lego Mindstorms EV3. It ought to be fun to do, but my son and I got lost in the visual environment when trying to do advanced things. After having created a simple EV3 library in Elixir, the fun started coming back. This talk is about how the EV3 Elixir library works and how to use it to make robot control software that is easy to write and understand. Among the key building blocks of Elixir are processes, and we will have a look at how to design things using lots of processes and how that makes things easier to work with. We start from conceptual architecture and end with elegant Elixir programs.
- Show how using lots of processes with asynchronous message passing create super solutions in Elixir.
- Inspire people to hack Elixir on Lego Mindstorms EV33
- Programmers curious about how to apply Elixir's processes in a good way
QuickCheck, our testing tool for automatically generating tests, has a long track record of nailing serious and hard-to-find bugs and boosting quality, in software like dets (part of mnesia), Riak, and the embedded software in cars. QuickCheck is written in Erlang and can be used with Elixir, but... can we instrument Elixir code to find race-conditions with PULSE? Not until recently. Now we have an Elixir native interface to access QuickCheck. In this talk, we present QuickCheck and this interface and show how race-conditions can be nailed down.
Making distributed systems that scale to many machines is easier done with Erlang/OTP than most other technologies. Deploying, managing and monitoring thousands of Erlang nodes prepared for massive load, however, remains a tough (and repetitive) challenge. In the context of the EU funded RELEASE project, the main task of WombatOAM is to provide the scalable infrastructure for deploying thousands of Erlang nodes. It provides a broker layer capable of dynamically scaling heterogeneous cloud clusters based on capability profile matching.
In this talk, I will tell you how the scalability and robustness capabilities of WombatOAM were addressed, allowing us to deploy and monitor 10,000 Erlang nodes running an ant farm simulation in 4 minutes. The talk will cover the journey – focusing on the analysis of WombatOAM (using WombatOAM, as we like dog food), on the applied techniques and on the key decisions taken when advancing WombatOAM.
Learn how to detect bottlenecks in concurrent system.
Explore an approach to scaling Erlang clusters.
Discover how to predict and prevent possible outages.
Developers, Support and Operations staff who believe devops is the way (and do not want to be woken up at night).
Evercam connects to thousands of IP cameras, pulling streams and/or jpegs. We first built the project using .NET and at a certain point we decided to rebuild on OSS. The main project was well suited to Ruby but the camera connections could not scale so we rebuilt that part to Node. Right now we're just about to embark on re-architecting to make use of Elixir and would be happy to share our experiences and learning with the Elixir community.
- People considering Elixir or interested in hearing how it compared in a real project to other languages.
Phoenix is an Elixir framework for building scalable web applications with realtime connectivity across all your devices. Together, we’ll take a guided tour of the framework, going from the very basics, to building our own realtime applications. You’ll see the framework’s foundations, core components, and how to use Phoenix to write powerful web services.
We’ll start by exploring the foundations of the framework in Elixir’s Plug library, followed by the core components of Phoenix’s Router and Controller layers. Next, we’ll review the View layer and build an application together as we learn each concept. We’ll finish by using the PubSub layer to add realtime functionality to our application. Along the way, attendees will see how to apply advanced features like router pipelines and plug middelware and receive tips on how to structure a Phoenix application for real-world services.
The audience for this talk is any Elixir or Erlang programmer looking to dive into Phoenix and learn how to build powerful applications quickly and easily. Attendees should have an introductory level experience with Elixir or Erlang and the ability to run Elixir on their laptops.
Bold Poker is a Phoenix-based web application with a Elixir game server. iOS and Android clients connect to the using WebSockets.
We give a short introduction to OTP releases and talk about what can be done in order to use releases without having to manually write app upgrade files.
We talk about how we use our open-source Erlang and Elixir deployment tool edeliver. Edeliver is a deployment tool that uses OTP releases to deploy both our Elixir Gameserver as well as our Phoenix web app.
Have you ever wondered about why you might use multiple levels of supervisors, or when you might use a strategy other than one_for_one? What about practical examples of how you might do a live code update? Or how to send code down to a node that just joined a cluster? Rudimentary, but effective, failover between cluster nodes? I created an Internet Relay Chat (IRC) bot-OhaiBot-to explore each of these topics. I'll do a walkthrough of the design, running, and update of the bot, focusing not necessarily on OhaiBot, but on why and how I came to certain solutions. No previous knowledge of IRC is necessary. Audience participation, particularly for the clustering aspects, is encouraged.
Bleacher Report is the second largest sport website in the world. At peak times we reach 80 million unique users per month and serve over 100,000 requests per minute to our mobile apps alone. In the past we scaled by adding caching layers, relying heavily on in-memory databases and pre-built content. However as we strive to further individualize the user experience we can no longer rely on caching alone. In elixir and phoenix we found the technology that allowed us to build concurrent api web-servers in an easily approachable language. It complements our existing infrastructure nicely, which is using Ruby on Rails. The performance gains over Ruby allow us to move from a cached-based to a real-time strategy. This talk will give an overview over the caveats we found and how the numbers are showing that we found the right tool for the job.
- Software engineers interested in scaling non-cacheable websites
Hands-on workshop for developers with no prior experience in OTP and Elixir, which aims at building a simple client-server architecture using Elixir/OTP and real tools like telnet or curl.
The workshop has several steps, each one requiring a short introduction followed by a programming exercise for the audience. If one gets lost, but would like to continue to the next step, they can switch to the next git branch. All branches will be published on github.com.
At the end of the workshop attendees will have a fully functional Elixir TCP server that can be tested using telnet or curl.
Participants may want to install Erlang runtime and Elixir before attending the workshop so that they can implement exercise themselves.
This talk will quickly introduce Ecto for unfamiliar audience members. Ecto recently underwent some major changes with improvements from the lessons learnt after it was first created almost two years ago. Eric will talk about some of the design choices made in Ecto and what sets it apart from traditional ORMs.
Rewriting a Ruby application in Elixir
Dragonfly is a fairly popular Ruby library to manage file uploads and it includes a Rack server to serve those files back. This talk is a postmortem of a rewrite of this server component in Elixir, so that it can be used to process Dragonfly-compatible urls with improved performance. The talk will focus on the structure of the application, managing pools of workers, pattern matching to simplify complex Ruby logic, interacting with external tools (like streaming data back and forth from Imagemagick) and deployment considerations.