axelson

axelson

Scenic Core Team

7) ElixirConf US 2018 – Architecting Flow in Elixir - From Leveraging Pipes to Designing Token APIs – René Föhring

ElixirConf US 2018 – Architecting Flow in Elixir - From Leveraging Pipes to Designing Token APIs – René Föhring (@rrrene)

This talk is about ‘architecting flow’, which basically means ‘organizing and structuring what is done when, where and by which actor’ during the execution of our programs.

Making this top-level flow of data and responsibility obvious and comprehensible for the major parts of our applications is self-serving: When it’s easy to get the general flow of a program, it is easier to reason about changes, onboard new people into the team and communicate across teams.

In this talk, we’ll look at the spectrum of techniques to Architect Flow in Elixir. The audience will learn to reason about the trade-offs of each approach. We’ll look at the use of pipes and with macros in smaller programs. We’ll learn how to use the Token approach to create binding contracts between different parts of bigger programs. And we’ll discuss how to (and when NOT to) use metaprogramming to build custom DSLs for the most common use-cases in larger domains.

Audience: Intermediate, Advanced
Topics: architecture

All talks are available in the ElixirConf US 2018 Talks List or via the elixirconf2018 tag

Most Liked

rrrene

rrrene

Credo Core Team

I did not come up with the name in general.

Looking at workflow engines, BPMN specifically, the data structure which runs through a business process and gets enriched with information by the activities is called a “Token” (the name also reminded me how a Kerberos token is often used to transport information unrelated to authorization).

This “Token” we’re talking about is often called a “context” in the OOP space - there might be a RequestContext, an ExecutionContext, a SessionContext and so on. But we’re already using “context” for the bounded contexts we generate in Phoenix >= 1.3.

That’s why I decided “Token” was a good name to talk about this very relevant concept in Elixir :+1:

ckhrysze

ckhrysze

This was one of the talks I was able to attend live, and although I was able to tell René in person at one point during the conference, I want to reiterate that I really loved the pacing of this talk. I mean, I quite enjoyed the content as well, but the pacing is what stuck with me.

axelson

axelson

Scenic Core Team

@rrrene This was one of my favorite talks in the conference. It really helps me to organize my thoughts around basic dataflow and transformation in an application. Does the name “token” for the last pattern (used by Plug.Conn, Ecto.Changeset, Absinthe.Resolution) come from somewhere or is that a term that you devised yourself?

Where Next?

Popular in Talks Top

axelson
ElixirConf US 2018 – Architecting Flow in Elixir - From Leveraging Pipes to Designing Token APIs – René Föhring (@rrrene) ...
New
axelson
ElixirConf US 2018 – Take Your Time – Ben Marx (@bgmarx) OTP20 officially introduced dirty schedulers. In t...
New
axelson
ElixirConf 2017 - Dr. Erlang/OTP or: How I Learned to Stop Worrying and Love :disk_log - Eric Entin Even aft...
New
axelson
ElixirConf US 2018 Opening Keynote - The Next Five Years – José Valim (@josevalim) All talks thread:
New
ElixirConf
ElixirConf: ElixirConf 2023 - German Velasco - Using DDD concepts to create better Phoenix Contexts Comments welcome! View the <span cla...
New
AstonJ
Keywords: LiveView autocomplete, LiveView search, focus Startups and web developers take note. Phoenix LiveView is the revolutionary fr...
New
LostKobrakai
After having watched the talk I’m wondering if this would also be a good opportunity to gather examples / tips about how to prevent or mi...
New
AstonJ
#Day 1 ElixirConf 2017 - Day 1 Keynote - Justin Schneck (Discussion thread) ElixirConf 2017 - My Journey from Go to Elixir - Veronica L...
New
axelson
Posting a little bit late today but here you go: ElixirConf 2017 - Elixir + Neo4j - Regina Imhoff Neo4j is ...
New
axelson
Okay, posting this day’s talk by @boydm: ElixirConf 2017 - Elixir Native UI - Boyd Multerer I will be show...
New

Other popular topics Top

aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
senggen
Erlang/OTP 25 [erts-13.2.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] 15:22:35.803 [error] gen_event {lager_file_backend...
New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
ovidiubadita
Hey all, I discovered Elixir and I love it. I always wanted to learn a functional programming and I intended to go for Haskell, but afte...
New
grych
Hi folks, Few months ago I have announced the proof-of-concept of the library to manipulate the browsers DOM objects directly from Elixi...
639 52341 488
New
fayddelight
I tried installing elixir 1.11.2 erlang 23.3.4 via asdf in my zsh shell. Enabled the versions locally and globally. When I list them ...
New
nobody
Hi! In PHP: $_SERVER[‘SERVER_ADDR’] - in Elixir? Searched the docs for ip address and the web, no good results. Thanks!
New
jason.o
In the code below, if the create action is not set to accept “extra_key” as an input, it errors out with a message shown above. Is there ...
New
rms.mrcs
Hi, I need to transform a list of numbers into a map where the keys are the indexes and the values are the original values of the list. ...
New
Brian
What is the proper way to load a module from a file in to IEX? In the python world, doing something like this pretty standard: from ....
New

We're in Beta

About us Mission Statement