List of videos

Simon Thompson - Making It Lazy Never Evaluate Anything More Than Once - Code BEAM SF 2018

Put some more advanced features of Erlang to work by implementing lazy evaluation. First we find a way of being non-strict, so we only evaluate things by need, and then we find a way of memoising the results. We show how to build infinite, graphical and indeed cyclic data structures, using higher-order functions, macros and ETS tables. More details here: https://codesync.global/speaker/simon-thompson/

Watch
Adrian Cruz - Mixing in Elixir to Build Search - Code BEAM SF 2018

Search is one of the toughest problems in computer science. This talk will discuss the challenges we've gone through at Teachers Pay Teachers while adopting Elixir as our new go-to language. Adrian will discuss some problems they discovered while building out search and more specifically how they are now using Elixir to build out tools to power search analytics. OBJECTIVES This talk will point out some of the discoveries they've made while porting the search page from their old stack (PHP). He will also exemplify Elixir, as their go-to language for building out tools on the Search team and how these tools help them move faster with choosing the right decisions when it comes to search algorithm tweaks. More details here: https://codesync.global/speaker/adrian-cruz/

Watch
Mike Watters - Quaff that potion saving $millions - Code BEAM SF 2018

We slashed our Amazon DynamoDB costs by over 75% using Kinesis, DynamoDB streams, and Erlang/OTP to implement a global cache warming system for advertising profile data. Using Elixir and the Flow framework, we subsequently doubled the performance of that system with only minor modifications. This talk will describe our motivation, some pitfalls we encountered, and how Erlang and now Elixir ultimately led to the success of this project. More details here: https://codesync.global/speaker/mike-watters/

Watch
Boshan Sun - Understanding Erlang Term - Code BEAM SF 2018

There's an Erlang/Elixir myth that tail-recursive functions are much faster than body-recursive functions. In this talk we will first explore how Erlang terms are represented in bit level, and then take a closer look at this myth to understand what really happens with tail-recursive functions vs body-recursive functions. You will understand more about BEAM internals and Erlang's Efficiency Guide. More details here: https://codesync.global/speaker/boshan-sun/

Watch
Brett Cameron - Getting to Know Your Rabbit - Code BEAM SF 2018

RabbitMQ is a popular 100% Erlang-based Open Source message queuing system that implements the Advanced Message Queuing Protocol (AMQP). It was been estimated that there are 50,000+ production deployments of RabbitMQ across the globe, and this number is continuing to grow. Most of these deployments are business-critical, underpinning everything from internet-based pizza ordering systems through to providing the central nervous system for large scale cloud-based application deployments. One of the reasons for RabbitMQ's popularity is that it is easy to install and to start doing something useful with it; however despite this apparent ease of use, RabbitMQ is a complex software product that is highly flexible in terms of the use-cases that it can support and highly configurable, with a large number of tuneable parameters (many courtesy of Erlang). Accordingly, specialist skills and knowledge are often required in order to obtain best results in terms of scalability, reliability, security, application design, and performance. In this short talk, Brett will provide a brief overview of RabbitMQ in terms of its history and general capabilities, and will discuss options available to RabbitMQ users (or prospective users) requiring assistance in terms of product support, training, and consulting services. More details here: https://codesync.global/speaker/brett-cameron/

Watch
Tian Chen - Release, Deploy, Monitor and Upgrade Elixir Services in Real World - Code BEAM SF 2018

Although Elixir has been rapidly adopted in the past few years, it still lacks a general guide and practices on releasing, deploying and upgrading (maintaining) the elixir services in a production environment. Issues around this subject include: How can Elixir release be integrated with github release? How can Elixir service deployment and upgrade be integrated with devOps tools (like ansible)? How can we quickly respond to failures and anomaly behavior of running Elixir services? This talk shares the discoveries we have made at Tubi TV for the whole process. Including: Using distillery to generate the release and hot upgrade release. Building our own tool to make the artifacts once a github release is created. Building ansible script to do rolling upgrade or hot upgrade, enabling engineers to run one command to deploy a release without disrupting the production service. Using sentry logger for error logging and integrating datadog for monitoring and alerting. OBJECTIVES Share our experience and discoveries on how to release, deploy and upgrade Elixir services. More details here: https://codesync.global/speaker/tian-chen/

Watch
Kostis Sagonas - Testing Tools for the Erlang Ecosystem - Code BEAM SF 2018

In this talk we will present two testing tools for Erlang, focusing on recent additions to their features and capabilities that were developed and motivated by industrial case studies and applications. The first tool, Proper (http://proper.softlab.ntua.gr/), has been extended to support targeted property-based testing, a powerful extension of property-based testing (PBT) that adds a search-based component to input generation. We will present how targeted PBT can be made automatic and how it can be applied to application areas such as sensor networks and security. The second tool, Concuerror (http://concuerror.com/), has recently seen significant improvements to its underlying technology that allowed it to test and verify protocols for chain repair for CORFU, a distributed shared log which aims to be scalable and reliable in the presence of failures and asynchrony.

Watch
Geoffrey Lessel - Gently Down the Stream - Code BEAM SF 2018

Elixir provides the concept of enumerables, allowing you to transform, sort, group, filter and retrieve items using functions in the enum module. As an alternative to Enum, Elixir provides the Stream module which supports lazy operations. This talk will give an overview of the Stream module. We'll go into depth with some examples of when to and when not to use Stream over Enum. This talk may go into some code diving to explore how Stream does it's thing. Elixir provides the concept of enumerables, allowing you to transform, sort, group, filter and retrieve items using functions in the enum module. As an alternative to Enum, Elixir provides the Stream module which supports lazy operations. This talk will give an overview of the Stream module. We'll go into depth with some examples of when to and when not to use Stream over Enum. This talk may go into some code diving to explore how Stream does it's thing. More details here: https://codesync.global/speaker/geoffrey-lessel/

Watch
Jeff Ching - Designing Rich API Clients at Scale - Code BEAM SF 2018

Many APIs are defined as RESTful resources, represented in JSON, and accessed via HTTP. While it's possible to make raw HTTP calls from your program, an API client library can provide significant benefits in safety, security, and readability. This session discusses how Google designs client libraries, covering common design challenges and best practices. You’ll also learn how Google uses code generation to produce clients for hundreds of APIs, across numerous programming languages—including, most recently, Elixir. This talk will also cover OpenAPI, which is how we've chosen to scale to languages not normally associated with Google. Target audience: Developers interested in producing or consuming APIs. More details here: https://codesync.global/speaker/jeff-ching/

Watch