Recent Posts

Articles authored by Elixir School contributors and members of the community.

announcement

Now With More Elixir!

How Elixir School migrated from Jekyll to a Phoenix powered site

ecto

TIL: Cleaner queries with Ecto `map`

Today I learned how to write cleaner `Ecto` select queries with the help of `Ecto.Query.map`.

announcement

Validating Accessibility and HTML with Rocket Validator

Learn how we're checking and monitoring the new Elixir School site to detect and fix accessibility and HTML issues using Rocket Validator.

announcement

Learning Elixir with others - The Elixir Book Club

Enjoy reading your favorite Elixir books with a group of other Alchemists, introducing the Elixir Book Club.

general

Clean Control Flow in Elixir with Pattern Matching and Immutability

Learn how to use pattern matching instead of guard clauses to implement really clean control flow in Elixir.

liveview libraries

Real-Time SVG Charts with Contex and LiveView

Learn how to use the Contex package to render server-side SVG charts that you can update in real-time with LiveView.

phoenix telemetry instrumenting

Instrumenting Phoenix with Telemetry Part IV: Erlang VM Measurements with `telemetry_poller`

In this series, we're instrumenting a Phoenix app and sending metrics to StatsD with the help of Elixir and Erlang's Telemetry offerings. In Part III we'll incorporate Erlang's `telemetry_poller` library into our Phoenix app so that we can observe and report on Erlang VM Telemetry events.

phoenix telemetry instrumenting

Instrumenting Phoenix with Telemetry Part III: Phoenix + Ecto Telemetry Events

In this series, we're instrumenting a Phoenix app and sending metrics to StatsD with the help of Elixir and Erlang's Telemetry offerings. In Part III we'll examine Phoenix and Ecto's out-of-the-box Telemetry events and use `Telemetry.Metrics` to observe a wide-range of such events.

phoenix telemetry instrumenting

Instrumenting Phoenix with Telemetry Part II: Telemetry Metrics + Reporters

In this series, we're instrumenting a Phoenix app and sending metrics to StatsD with the help of Elixir and Erlang's Telemetry offerings. In Part II we'll use Elixir's `Telemetry.Metrics` and `TelemetryMetricsStatsd` libraries to define and send metrics to StatsD for a given Telemetry event.

phoenix telemetry instrumenting liveview

Instrumenting Phoenix with Telemetry and LiveDashboard

The recent release of the LiveDashboard library allows us to visualize our application metrics, performance and behavior in real-time. In this post, we'll add LiveDashboard to our Phoenix app, examine the out-of-the-box features and take a look under the hood to understand how LiveDashboard hooks into Telemetry events in order to visualize them.

phoenix instrumenting telemetry

Instrumenting Phoenix with Telemetry Part I: Telemetry Under The Hood

In this series, we're instrumenting a Phoenix app and sending metrics to StatsD with the help of Elixir and Erlang's Telemetry offerings. In Part I we'll start out by setting up a basic, DIY Telemetry pipeline and examining how Erlang's Telemetry library works under the hood

liveview software design

LiveView Design Patterns - LiveComponent and the Single Responsibility Principle

It's easy to end up with an overly complex LiveView that houses lots of business rules and responsibilities. We can use `Phoenix.LiveComponent` to build a LiveView feature that is clean, maintainable and adherent to the Single Responsibility Principle.

admissions software design

Building Elixir School's Admissions portal

Follow along as we use build Elixir School's Slack invite portal: Admissions.

liveview

Building a Table Sort UI with Live View's `live_link`

We'll use LiveView's `live_link/2` together with the `handle_params/3` callback to allow users to sort a table in real-time.

docker releases config umbrellas deployment

Releasing an Umbrella App with Docker, Mix Release and Config

The release of Elixir 1.9 gave us `mix release` and the ability to support basic releases, runtime configuration and more, natively in Elixir. Learn how we were able to build a production release of an Elixir umbrella app with Docker, `mix release` and the new `Config` module.

conference

Dispatch From ElixirConf 2019

We had a great time at ElixirConf 2019! Hear about Elixir School's two workshops, along with the highlight talks and activities that we enjoyed this year.

ecto til

TIL How to Select Merge with Ecto.Query

Before you reach for adding another association to your schema, consider using `Ecto.Query#select_merge/3` with a virtual field instead.

review

Reviewing Elixir Conf EU 2019

ElixirSchool was invited to participate in a conference for the first time! Our own @gemantzu was there, and has a lot to say!

liveview

Using Channels with LiveView for Better UX

By pairing a custom Phoenix Channel with our LiveView, with the help of a Registry, we can respond to LiveView events with custom JavaScript on the client-side to provide better UX.

liveview presence

Tracking Users in a Chat App with LiveView, PubSub Presence

Use Phoenix Presence in your LiveView to track user state with just a few lines of code.