ElixirConf 2022 - Friday
Topics
11:00am to 11:05am
5 minutes
Title: Welcome
11:05am to 11:40am
35 minutes
Track 1
Title: To MVP and beyond, a year in LiveView
Speaker(s): Miki Rezentes
Topic(s): LiveView
Audiences: Advanced | Intermediate | Beginner
TLDR; This talk could save you weeks of time
This talk covers challenges faced and lessons learned while taking a product from mix phx.new to MVP. Why did we use LiveView? What type of paradigm shift did I have to go through? How did I help my team with the paradigm shift? What strategies did I use to conquer some of the challenges? What feedback have we gotten from users? The answer to these and many more questions are found in this talk.
Track 2
Title: A Javascripter’s trip to Phoenix and LiveView
Speaker(s): Roger Roelofs
Topic(s): Phoenix, LiveView
Audiences: Intermediate | Beginner
Web app development over the last two decades has been a pendulum swinging between back-end and front-end. That is because we want as much interactivity as close to the user as we can manage without driving ourselves crazy. The incompatibilities of client execution environments pushed the development of ‘batteries included’ frameworks like Rails which promised “You don’t have to write Javascript”. That was a lie. Today we have LiveView which manages to push in both directions at the same time. Even so, we still need to write some Javascript. The big productivity win is that LiveView takes care of the mundane use cases which frees us to work on the important and interesting bits.
Track 3
Title: Introduction to query debugging and optimization in Postgres
Speaker(s): Justin Wood
Topic(s): Postgres, Elixir
Audiences: Advanced | Intermediate
When it comes to performance, it is better to be proactive and constantly looking for potential issues instead of waiting for them to appear by having our customers complain about them or worse by silently leaving our platforms because of them. This talk will give you some tools and tips to be proactive with Postgres performance in order to debug and optimize queries before they become an actual issue. Some of this knowledge should also be transferable to other database solutions.
11:45am to 12:20pm
35 minutes
Track 1
Title: Flame On: Profiling Elixir and Phoenix apps with Flame Graphs in Live Dashboard
Speaker(s): Mike Binns
Topic(s): Testing
Audiences: Advanced | Intermediate | Beginner
Elixir and Phoenix are a powerhouse combo when it comes to handling extreme volumes of traffic on minimal hardware with ease, but that doesn’t mean it can’t be made faster and more performant. Inefficiencies can creep in a number of ways, from poorly designed database queries, to issues with dependencies, to slow third party APIs. Figuring out where these inefficiencies lie before the wall of production traffic hits is a critical step in initial development, as is keeping up to date with them as changes go live on your running system.
Flame On is a LiveView component and LiveDashboard Page you can add to your application to trace exactly where your application is spending its time on a given request path. In this talk, DockYard Staff Software Engineer Mike Binns will dive into flame graphs, how to use them, and specifically how to use Flame On to identify issues in your Elixir/Phoenix application.
Track 2
Title: Designing Data Intensive Applications in Elixir with Flow
Speaker(s): Angel Martinez
Topic(s):
Audiences: Advanced | Intermediate
Designing Data Intensive Applications in Elixir with Flow. Correctness, data integrity, and good performance in distributed systems is always a game of tradeoffs. But what if we could have it all with Elixir? Batch processing and event streaming in Flow eliminates data integration problems by “flowing” data changes between different systems. It allows us to unbound our distributed databases and maintain correctness across our cluster. It also performs extremely well. In this talk, we’ll explore how to leverage these powers in Flow using practical examples while also drawing from reowned resources in system design, such as “Designing Data Intensive Applications” by Martin Kleppmann, to tie it all together. Audience members will leave with an understanding of when and how to use Flow, and how to start thinking about solving their data intensive problems in new, optimized ways.
Track 3
Title: Understanding common network protocols with Elixir
Speaker(s): Willian Frantz
Topic(s): Network
Audiences: Beginner
Have you ever asked yourself how the common network protocols work? like HTTP(S), SMTP, POP3, FTP?
What if you could understand them and even got a better understanding of networking with Elixir, that would be awesome right?
12:25pm to 1:00pm
35 minutes
Track 1
Title: I was wrong about LiveView
Speaker(s): Jason Stiebs
Topic(s): LiveView
Audiences: Intermediate | Beginner
As a core team member, I tried to talk Chris out of building LiveView. I was wrong. Hype for LiveView grew and I assumed it would only be a back office tool. I was wrong again.
I now believe we can, and should, use it everywhere. Throughout this talk, you’ll find out why.
The past few years I’ve had the chance to use LiveView in production: replacing old SPA’s that nobody wanted to touch, writing green field applications, and even adding some interactivity to mostly static sites.
Through practical examples we’ll take a tour my lessons learned as a contractor using LiveView across this variety of projects. We’ll see how little code it takes to tackle those dynamic features and how LiveView lets you focus on delivering value rather than wrangling layers of client/server tooling. Whether on the fence about LiveView, or all-in but just getting started, you’ll leave this talk with practical insights to use in your own applications, and if we’re lucky, a new appreciation for just what LiveView has to offer.
Track 2
Title: Searching Your Elixir Code
Speaker(s): Onorio Catenacci
Topic(s): Tools
Audiences: Intermediate | Beginner
To paraphrase the old cliche most software isn’t written it’s refactored. A job that comes up over and over again for many of us is searching our code base looking for the definition of some symbol or function. It’s not an accident that over the years developers have figured out so many ways to search code bases.
Onorio will be discussing a couple of methods of searching Elixir code; using ack which is a programmer’s grep and also using the Rosie Pattern Language which offers us even more power to find code constructs that we’re interested in finding.
Track 3
Title: Embedded Web Apps in Elixir with LiveState
Speaker(s): Chris Nelson
Topic(s): Phoenix
Audiences: Advanced | Intermediate | Beginner
For building conventional “SPA” type web apps in Elixir, LiveView is the perfect choice. But if we are writing an embedded web app, or one that is designed to be hosted in a larger web page that we don’t control, LiveView is no longer a viable option.
LiveState is a library designed to give developers a LiveView like experience while building these types of applications. With LiveState, we no longer have to build an API to handle requests and responses. Instead, we get to handle events and state on the server, just like in LiveView, but in an environment where the front end is not served by Phoenix. In this talk, we’ll learn about LiveState by example. We’ll start with a discussion of what LiveState is and how it works. Next, we’ll work through a simple example embedded web application: an element that will add a comments section to a website. Expect to come away with a good understanding of how you can build these types of applications in Elixir and have fun doing it.
1:15pm to 2:15pm
1 hour
Title: Lightning talks
3:30pm to 3:35pm
5 minutes
Title: Welcome - Emcees Sundi and Amos
3:35pm to 3:40pm
5 minutes
Title: Platinum Speaker - Kamana
3:40pm to 3:45pm
5 minutes
Title: Platinum Speaker - SimpleBet
3:45pm to 3:50pm
5 minutes
Title: Platinum Speaker - Tauspace
3:50pm to 4:50pm
1 hour
Title: Keynote: Chris Grainger
4:50pm to 5:30pm
40 minutes
Title: Refreshment Break - Meet Sponsors
5:30pm to 5:35pm
5 minutes
Title: Platinum Speaker - Adobe-Frame.io
5:35pm to 5:40pm
5 minutes
Title: Platinum Speaker - Massdriver
5:45pm to 6:45pm
1 hour
Title: Keynote: Chris McCord
6:45pm to 7:00pm
15 minutes
Title: Closing
Schedule
-
11:00am to 11:05am
- [ ] Track 1 - 8 - To MVP and beyond, a year in LiveView
- [ ] Track 2 - 5 - A Javascripter’s trip to Phoenix and LiveView
- [ ] Track 3 - 13 - *Introduction to query debugging and optimization in Postgres
-
11:45am to 12:20pm
- [ ] Track 1 - 8 - Flame On: Profiling Elixir and Phoenix apps with Flame Graphs in Live Dashboard
- [ ] Track 2 - 13 - *Designing Data Intensive Applications in Elixir with Flow
- [ ] Track 3 - 5 - Understanding common network protocols with Elixir
-
12:25pm to 1:00pm
- [ ] Track 1 - 5 - I was wrong about LiveView
- [ ] Track 2 - 8 - Searching Your Elixir Code
- [ ] Track 3 - 13 - *Embedded Web Apps in Elixir with LiveState
- 1:15pm to 2:15pm - Lightning talks
- 3:30pm to 3:35pm - Welcome - Emcees Sundi and Amos
- 3:35pm to 3:40pm - Platinum Speaker - Kamana
- 3:40pm to 3:45pm - Platinum Speaker - SimpleBet
- 3:45pm to 3:50pm - Platinum Speaker - Tauspace
- 3:50pm to 4:50pm - Keynote: Chris Grainger
- 4:50pm to 5:30pm - Refreshment Break - Meet Sponsors
- 5:30pm to 5:35pm - Platinum Speaker - Adobe-Frame.io
- 5:35pm to 5:40pm - Platinum Speaker - Massdriver
- 5:45pm to 6:45pm - Keynote: Chris McCord
- 6:45pm to 7:00pm - Closing
Understanding the Notes
- Notes attempt to be in sequential order.
- Anything worth calling out falls to the bottom of the section, it may not belong in the stream of consciousness.
-
Using the block quote
>
to show notes taken during rewatching the VODs. - I don’t want to modify the original notes much but this should allow me to somewhat annotate the previous sections.
- Allows us to also add new sections.
Notes
11:00am to 11:05am
- [ ] Track 1 - 8 - To MVP and beyond, a year in LiveView
- [ ] Track 2 - 5 - A Javascripter’s trip to Phoenix and LiveView
- [x] Track 3 - 13 - *Introduction to query debugging and optimization in Postgres
*Firework is hiring (QR code from the VOD). Need to find more information.
I had a terrible sleep so I’m slooooww starting up today. Postgres handles indexes in LTR order I assume. I had a weird pattern emerge in MySQL where I needed multiple compound indexes to deal with user_id
+ null or null + organization_id
. I really should uncover what that problem was in my notes somewhere, I’m sure it’s in Jira. It’d be a great blog post, even if it only highlights what I’m doing wrong. It was also useful to get an understanding of using EXPLAIN ANALYZE
and what each section was. We have similar data models at $dayJob
that’ll likely benefit from this. Pulling the queries from slides or manually via the VOD will be helpful.
From Q&A: Indexes are not free, every write will take longer for every index introduced.
11:45am to 12:20pm
- [ ] Track 1 - 8 - Flame On: Profiling Elixir and Phoenix apps with Flame Graphs in Live Dashboard
- [x] Track 2 - 13 - Designing Data Intensive Applications in Elixir with Flow
- [ ] Track 3 - 5 - Understanding common network protocols with Elixir
Got too busy trying to work out the Teller Bank Job challenge and lunch. All of these tracks should be worth watching on VOD.
12:25pm to 1:00pm
- [ ] Track 1 - 5 - I was wrong about LiveView
- [ ] Track 2 - 8 - Searching Your Elixir Code
- [x] Track 3 - 13 - Embedded Web Apps in Elixir with LiveState
*Launch Scout was formerly Gaslight. They’re hiring
This took place during lunch so I couldn’t be 100% focused.
LiveState would be useful for custom elements. The example was a discord bot form. The elixir dependency follows the GenServer
/LiveView
pattern or I believe he called it Event State Reducers
.
1:15pm to 2:15pm - Lightning talks
3:30pm to 3:35pm - Welcome - Emcees Sundi and Amos
-
3:35pm to 3:40pm - Platinum Speaker - Kamana
-
3:40pm to 3:45pm - Platinum Speaker - SimpleBet
-
3:45pm to 3:50pm - Platinum Speaker - Tauspace
-
Kamana is hiring, they work with DockYard
- Healthcare and a wallet specifically for traveling nurses
- Full sprint handling technical debt next month
- 100% remote
- 100% Elixir
-
Simplebet is hiring
- Micro sports betting
- B2B and B2C
-
Pepsico Ecomm is hiring
- Watch VOD to understand their stack
- Use Elixir, Phoenix, LiveView and Nx
- Started in 2018
- Data loading from 6 hrs to 12 minutes
- Hundreds of millions of products yearly
- NX and LiveView for real time data visualization
- Use Phoenix
3:50pm to 4:50pm - Keynote: Chris Grainger
Watch VOD for his introduction to capture it.
-
Author of
Explorer
andTokenizers
Heavily distracted by chat mining for interesting topics. The gist is Elixir is ready for ML. Huggingface has useful onnx models for something like https://huggingface.co/gpt2
4:50pm to 5:30pm - Refreshment Break - Meet Sponsors
-
5:30pm to 5:35pm - Platinum Speaker - Adobe-Frame.io
-
5:35pm to 5:40pm - Platinum Speaker - Massdriver
-
Adobe Frame.io is hiring