Elixir Streams - Elixir and Phoenix tips and courses

:wave: Hi everyone,

I’ve been posting short Elixir and Phoenix video tips and tricks for a little while on Twitter.

But now, I’ve consolidated them all in a new website called Elixir Streams. I hope to keep publishing them regularly.

If you’re interested in free short video tips, check it out!

:point_right: https://www.elixirstreams.com/


Just published one on comparing Datetime and Dates in Elixir:

:point_right: https://www.elixirstreams.com/tips/comparing-elixir-datetimes-and-dates

1 Like

And last week, I posted one on Elixir’s optional syntax!

:point_right: https://www.elixirstreams.com/tips/elixir-optional-syntax

1 Like

This one explode my mind! Short and interesting, good combination for video material.

Thank you, @germsvel!

1 Like

How to run a function N times using the Stream module:

:point_right: https://www.elixirstreams.com/tips/run-elixir-function-n-times


I’ve started building a tiny website with LiveView, learning it on the go, this tip is going to come in super handy: Elixir Streams |> Anatomy of a LiveView Test

1 Like

So glad to hear that! :muscle:

1 Like

Turning maps (and keyword lists) into structs :boom:

:point_right: Elixir Streams |> Turn maps (and keyword lists) into structs


Generating infinite sequences with Stream.unfold/2 :exploding_head:

:point_right: Elixir Streams |> Creating infinite sequences with Stream.unfold/2

1 Like

A short one on how ExUnit is an Elixir app (not just some script that gets run)

:point_right: Elixir Streams |> ExUnit. It's an app!


How a one line change allowed me to get rid of my InfiniteScroll JS hook (thanks for LiveView 0.19).

Check it out! :point_right: Elixir Streams |> Infinite scroll with LiveView's `phx-viewport-bottom`

1 Like

Recently used the new to_form/2 helper and loved how it can help us decouple the form (UI) from the core of our domain.

Check it out! :point_right: Elixir Streams |> Phoenix forms without changesets!


Hey, I follow you on Twitter, thanks for making these! I think it’s great to have free resources to expand the community!


Thanks for the kind words! :hugs: It’s always good to know people find the videos valuable.


Another way to decouple forms from database schemas. This time, with embedded schemas!

:eyes: :point_right: Elixir Streams |> Phoenix forms backed by embedded schemas


During ElixirConf US, José shared about the types Elixir might get. One part was unclear to me (needing an intersection type for multiple function heads), so I went digging a bit to get a better understanding.

Hope it helps others too!

:point_right: Elixir Streams |> Elixir's intersection types


I have another one based on the Elixir types paper. This time, it’s about operator precedence. Check it out!

:point_right: Elixir Streams |> Elixir Types: Operator Precedence

LiveView 0.20 comes with a nice improvement to debug HEEX templates!

Add config :phoenix_live_view, debug_heex_annotations: true to your dev config, and you’ll see HTML annotations in your browser’s inspector!

Check it out!

:point_right: Elixir Streams |> LiveView 0.20 HEEX Debug Annotations

1 Like

I loved the blog post on strong arrows that José recently shared in the Elixir lang website. It helped clarify what they are and why they’re needed.

I made a short video of my understanding. Hope it helps others understand them too! :partying_face:

:point_right: Elixir Streams |> Strong Arrows

(José’s post for further reference: Strong arrows: a new approach to gradual typing - The Elixir programming language)

1 Like

Everybody is talking about LiveView 0.20’s async assigns. And for good reason!

I tested them out, and they’re awesome. Check it out!

:point_right: Elixir Streams |> LiveView's Async Assigns