David Lucia

Using Elixir to turn every moment of a sporting event into a betting opportunity

Dave is VP, Engineering at Simplebet, a sports technology company whose mission is to power to future of fan engagement. While at Simplebet, Dave has worked with many amazing engineers building services that run on the BEAM. In an early architecture iteration, Dave helped build a Rust Machine Learning framework that was deployed as an Elixir NIF that powered Simplebet's MLB predictions. They have long since moved away from the Rust NIF, in favor of a more standard Python ML stack, orchestrated by Elixir.

While not glued to VIM in Emacs, Dave spends his time in NY with his wife and son, and their two Pomeranians, Pearl and Shy Guy.

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.

José Valim / Randall Thomas / David Lucia / Garrett Smith / Svetlana Levitan
Code BEAM V Europe
20 May 2021
15.40 - 16.30

Panel on Machine Learning on the BEAM

Machine learning is a method of programming where software is generated by other software. It's taught, or "learned" using examples, statistics, and iterative improvements to create useful functions. Nx, Axon, and other projects in Elixir and Erlang are bringing the benefits of machine learning to the BEAM. In this discussion, a panel of machine learning experts consider recent development in ML and BEAM languages and explore future work to help release the promise of machine learning for scalable, fault tolerant systems. If you're new to machine learning or a seasoned expert, this discussion will bring you up to speed on ML and the BEAM and will inspire your work in data-enabled application development.

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.