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?

blatyo

blatyo

Conduit Core Team

I’d love to know this too. I built a framework that uses the token pattern for messages and didn’t even know it was called that.

4141done

4141done

Totally agree with @ckhrysze. I was struck by the clarity and pacing of the talk. It put into words a lot of things I have been feeling about flow management and showed me areas for improvement. We will be discussing this one at the Seattle meetup bect week.

Where Next?

Popular in Talks Top

axelson
Hey everyone! I hope everyone enjoyed ElixirConf! I know that I did. In order to facilitate and continue the discussion (especially since...
New
axelson
ElixirConf 2017 - Cajoling the Bird: How we squeezed more out of Phoenix PubSub- Simon Zelazny Grindr is a m...
New
AstonJ
File uploads are an essential part of many web applications, but often handling them can be tricky, which explains why they are one of th...
New
axelson
ElixirConf 2017 - Well Behaved Native Implemented Functions for Elixir - @potatosalad Native Implemented Fun...
New
axelson
by @zacky1972 Finally, we’ve succeeded in the implementation of Hastega!!! (Maybe until ElixirConf US 2019 :slight_smile: Hastega (Hyp...
New
axelson
ElixirConf US 2018 – Behavior Trees and Battleship: Tapping into the Power of Advanced Data Structures – Jeff Schomay I ...
New
axelson
ElixirConf US 2018 – Building Video Chat with Elixir & Phoenix – Anil Wadghule (@anildigital) In this talk, I will s...
New
axelson
I really like the idea of discussing one Elixirconf talk each day and since @brightball hasn’t posted the second talk I’ll post it. Elix...
New
axelson
by @jon At PagerDuty, we run our systems across many geographic regions to ensure we’re always available, even when you might not be. E...
New
derpycoder
QUIC protocol support coming to BEAM. As of now, I am using Caddy in front of Phoenix server to experience HTTP/3 goodness.
New

Other popular topics Top

Qqwy
Update: How to use the Blogs & Podcasts section You can post links to your blog posts or podcasts either in one of the Official Blog...
3268 119930 1237
New
JDanielMartinez
Hi! May someone helps me, please! I have two apps into an umbrella project: the first one is Database, which manages queries, and the se...
New
chrisalley
ExUnit now has describe blocks which is a welcome addition coming from RSpec. In the docs, it states that nested hierarchies of describe ...
New
JakeBecker
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
1140 51847 244
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
aalberti333
As the title describes, I’m trying to run Enum.map() over a list of key/value pairs, where the value is a map. My data looks like this: ...
New
malloryerik
Hi, this is for people who, like me, have had some friction using .html.heex templates in VSCode. The solution seems to be, in a hyphena...
New
quazar
How to set Jason to encode all fields in ecto schema, I don’t care about security and implementing only is taking long list of attributes...
New
chrismccord
As promised, the first release candidate of Phoenix 1.3.0 is out! This release focuses on code generators with improved project structure...
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

We're in Beta

About us Mission Statement