David Lucia

Using Elixir to make every discrete, in-game occurrence a betting opportunity

Dave is the VP of Engineering at SimpleBet, a Sports-Betting company that aims to make every discrete occurence in sporting event a betting opportunity. While at SimpleBet, he was the architect of the Rust-based approach to delivering machine learning models to production. Previously, Dave was a founding engineer at The Outline, an online magazine built from the ground up in Elixir.

While not Elixiring, Dave loves challenging his tolerance for spicy food, listening to pop-punk/hardcore music, and spending time with his wife and 6lb pomeranian named Pearl.

Past Activities

David Lucia
05 Mar 2020
13.45 - 14.30

Rustling up predictive sporting betting models on the BEAM

Rustler is a library that makes easy to bind Rust code to the BEAM as a NIF. At SimpleBet, David and his team took that to the next level by implementing our machine learning models in Rust as an application-level NIF. Affectionately referred to as the Dream Stack, they've used this approach to build a system that generates the odds of every plate appearance outcome at a baseball game. While it worked well to start, they are now migrating to a service-based approach instead.






  • Teach the audience how/why to write NIFs using Rustler
  • Demonstrate SimpleBet's approach to using NIFs and how we took it too far
  • Explain why that approach will no longer work well for SimpleBet and why moving to a service-based approach, while slower, aligns much better with our company goals


The audience for this talk are those who are interested in Rust and machine-learning, but most importantly, those who want to learn from about an architecture that worked really well until it didn't, and how to migrate away from that type of situation.

David Lucia
Code BEAM SF 2019
28 Feb 2019
17.15 - 17.40

Refactoring Elixir for maintainability

Elixir is a very expressive language that offers syntactic features that are new and exciting when coming from other languages. Beginners tend to overuse features such as pattern matching and multiple function heads because of their novelty, while missing opportunities to make their code more generic and workable. Additionally, powerful language features such as protocols and behaviours are often overlooked due to their relative complexity.

This talk will highlight many of the common beginner mistakes, and often alternative patterns to writing code that tend to be more maintainable over time.


This talk aims to identify common beginner mistakes when coming from other languages such as Javascript, Ruby or Go, that do not have the ergonomic features of Elixir, and offers insight into how to fix these mistakes to make your code more maintainable over time.


This talk appeals to beginners and intermediate developers who are newer to Elixir and haven't written enough code to identify structural patterns that can lead to future headaches.