Thinking Elixir News 135
Episode 135 of Thinking Elixir. News-only episode covers some overlooked new Livebook features, Mint support added to Elixir GRPC, Phoenix Live Storybook is getting visual comparisons between versions, LiveView Native progress updates, the Circle CI breach and more!
Elixir Dependency Security: Mix, Hex, and Understanding the Ecosystem
The Elixir ecosystem has excellent tooling for securing your project’s dependencies. Learn more about how to use it in this article.
Goodbye IO.inspect/2. Hello dbg/2
I vaguely recall seeing dbg when Elixir 1.14 first came out, but I hadn’t tried it until now. 🤯
No more IO.inspect/2 for me.
dbg/2 is way more powerful. For example, it understands Elixir code so it can print out every step in a pipeline! ⚡️
Why We Chose Elixir Part 2: Elixir and the CELP Stack
Cees de Groot talks about how we decided to use Commanded, Elixir, LiveView and Phoenix (CELP) as a big part of our tech stack
https://metrist.io/blog/why-we-chose-elixir-part-2-elixir-and-the-celp-stack/
Phoenix 1.6 to 1.7 Video Upgrade Guide
The journey to upgrade Phoenix to version 1.6 to 1.7 is a difficult one; especially since the upgrade guide is incomplete. I made a quick tutorial on this upgrade to alleviate some of the short-comings of the official guide.
Stenography and Elixir
From the January 2023 Elixir Sydney meetup, a talk about using stenography to write Elixir code: https://www.youtube.com/watch?v=ZQO-5KfnCi4
PostgreSQL Logical Replication with Docker and Elixir
A step-by-step tutorial.
Start PostgreSQL Logical Replication and wal2json plug-in in Docker, then read the changes with Elixir Postgrex.
https://www.peterlau.xyz/posts/postgresql-logical-replication-with-docker-and-elixir/
Easy Caching in Elixir
We go over an easy technique to introduce a bit of state in Elixir by caching with an Agent.
ThinkingElixir 134: Inside the Security Working Group
Episode 134 of Thinking Elixir. We get a glimpse into the EEF’s Security Working Group with Bram Verburg. We learn about existing resources available to the community and we get hints of work underway for the future. Bram shares some cool security tips and insights as well!
Common Commands to Start New LiveView Project
Common commands to update Elixir, Hex and generators to start a new LiveView project with Authentication and UTC Datetime. Using Phoenix 1.7.
Async Processing in LiveView
When Chris McCord showed off doing image classification in a single-file Phoenix application, he used a really cool way to run an async Task in a LiveView that is linked to the LiveView process. This means if the user leaves the page, it automatically kills the worker process! This can come in really handy! In this post, we dig in deeper to see how it works and how to choose when to use this approach. https://fly.io/phoenix-files/liveview-async-task/
BuildItWithPhoenix.com launched!
I’ve been working on an @ElixirLang @ElixirPhoenix video course over the past couple of months. Today, I’m launching its landing page. Check out https://builditwithphoenix.com and let me know what you think! Sign up for updates while you are there. #MyElixirStatus
What's new in Livebook 0.8?
This post showcases ten of the most noteworthy features released with Livebook 0.8.
GraphQL vs REST for Elixir Devs
Introducing the second part of the “Phoenix LiveView Architecture discussion”:
- Is LiveView a stable ecosystem?
- What is the best approach for GraphQL vs other APIs, like REST, when you have LiveView code?
- What’s the best way to integrate the Ash Framework with Phoenix?
- Is there a way to implement dynamic events with no JS in LiveView?
Dependency inversion on Elixir using Ports and Adapters design pattern
The following post is about implementing dependency inversion principle on Elixir and using it to achieve useful results, such as circuit breakers.
https://dev.to/dcdourado/dependency-inversion-on-elixir-using-ports-and-adapters-design-pattern-4k3f
Naming Phoenix context functions
In a Phoenix context, we frequently need to create and update resources, using changesets.
Each operation requires a function to get the changeset, and a function to perform the operation. If the operation in question is “create”, the standard approach is to name the changeset function “create_changeset”, but that’s just confusing; am I getting a changeset for the “create” operation, or am I creating a generic changeset?
I prefer the following conventions: https://www.stephenlewis.me/blog/naming-phoenix-context-functions
ThinkingElixir 133: Winning the ML Prise
Episode 133 of Thinking Elixir. We talk with Philip Brown who started Prise in Jan 2022 using Elixir, Axon and Nx to apply machine learning to project management. He shares what he’s accomplished as a one-person dev team and how Elixir enabled him to develop more rapidly. He shares how, with no ML academic training, he learned as he went and developed and trained his own models that classify and prioritize people’s tasks spread across multiple systems! A fun and empowering discussion!
Debugging and Tracing in Erlang
In the second and final part of this two-part series, we’ll dive into Erlang tools you can use for debugging: https://blog.appsignal.com/2023/01/10/debugging-and-tracing-in-erlang.html
Validating Phoenix params with Ecto
Implement an easy way for validating request params in Pheonix with Ecto. No extra tools needed!
