Peter Ullrich's Picture

Hey, I’m Peter! Developer & Educator.

I'm a Senior Elixir developer with a Psychology background, PragProg Author, Public Speaker and Blogger, and Founder. I'm passionate about Software Architecture, Product Engineering, and sharing knowledge.

Products

The book cover of the Builting Table Views with Phoenix LiveView book showing three meerkats.

Building Table Views with Phoenix LiveView

Data is at the core of every business, but it is useless if nobody can access it. This book shows you how to generate business value by making your data accessible with advanced table UIs.
The book cover of the Builting Table Views with Phoenix LiveView book showing three meerkats.

Build an MVP with Elixir

New to Elixir? This video course gets you started by developing a real-world product using Phoenix LiveView, deploying it to Fly.io, adding payments to it using LemonSqueezy, and more.
The book cover of the Builting Table Views with Phoenix LiveView book showing three meerkats.

Building Forms with Phoenix LiveView

Creating forms in LiveView is easy - until it's not. This course teaches you how to build forms like a pro and to avoid the pitfalls along the way.

Blog Posts

A wizard in an orange safety vest redirecting a phoenix between ornate boxes, surrounded by playful detour signs.

Request Routing and Sticky Sessions in Phoenix on Fly.io

Learn to efficiently route requests to the right server using Fly.io's fly-replay header and sticky sessions with Phoenix.

A wizard lecturing a phoenix in his laboratory.

Parse a Regex with NimbleOptions

Learn how I discovered that ~r-sigils return Regex structs and how to include regex patterns as valid input in NimbleOptions.

A wizard riding a phoenix into the blue skies.

A Bluesky Starter Guide for Elixir Devs

Join the Elixir community on Bluesky. Learn account setup, find peers, and smoothly transition from X. Key steps for efficient migration.

A phoenix mocking a wizard in his library.

Easy Mocking in Elixir

Quick, dependency-free mocking in Elixir tests. Learn how to configure your mock once and use it everywhere. Simple and effective for all test suites.

A wizard sitting on a comfy couch chair while reading a Saga from a book to a Phoenix.

The Saga Pattern in Elixir

Explore the Saga pattern in Elixir for managing complex, multi-step processes. Learn about choreography and orchestration approaches, with code examples for implementing long-lived transactions.

A phoenix rising from its ashes.

Resurrect your Phoenix Context

A retraction: I changed my mind about Phoenix contexts. Here's how I structure my Elixir code with a simpler, more effective design in the true functional way.

An elderly wizard, looking desperate as he tries to block out the intense singing of the phoenix. The scene captures his overwhelming distress in a vivid and colorful setting.

Handle Phoenix Exceptions gracefully

Silence the noisy Phoenix.NotAcceptableError and Plug.CSRFProtection.InvalidCSRFTokenError exceptions in your Phoenix application by implementing the Plug.Exception protocol for them.

An image of a vibrant phoenix positioned behind the planet Earth, hurling files at different regions on the globe. Each file has a streak behind it, and explosions are shown where the files hit the globe.

Distribute your Files Globally with Tigris and Fly.io

Serve your files quickly to users all around the globe with just a small configuration change using Tigris' globally distributed S3-compatible storage solution.

A wizard sending an image into a cloud, with a rainbow in the background and a phoenix sitting next to the wizard.

Resize User-provided Images with Cloudflare Images

Learn how to upload user-provided images to Cloudflare Images and to resize them into size variants that are optimal for your application.

a wizard sending an owl with a letter through the window.

Sending Emails with Swoosh and Oban

Learn how to send emails from robust Oban workers so that you'll never miss sending an email again.