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, Founder of Letter to Yourself. 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.

Blog Posts

A futuristic numbat reading a book

Use Neural Networks in Livebook

The latest Livebook version 0.8 comes with a new smart cell type that makes experimenting with neural networks like StableDiffusion, GPT2, and others incredibly easy. Let's learn how to get started.

A phoenix rising from a computer screen

Build a Roles and Permissions System for Phoenix - Part 2

Learn how to prevent PII leaks from your Ecto queries by adding query restrictions to your Roles and Permissions system.

A phoenix rising from a computer screen

Build a Roles and Permissions System for Phoenix - Part 1

Learn how to control access to your system by assigning granular roles and permissions to your users.

A developer holding a mug of coffee with shaky hands staring at a computer

Simulate Latency, Jitter, and Package Loss in Phoenix LiveView

Learn how to make your LiveView app more resilient by simulating bad internet connections.

A librarian frantically searching through a catalog of books

The Complete Guide to Full-text Search with Postgres and Ecto

A detailed deep-dive into efficient full-text search for multiple languages, result ranking, tsvectors and tsqueries, search modifiers, and so much more.

A librarian searching through a thick book

Efficient Name Search with Postgres and Ecto

Search through millions of strings efficiently using indexed ILIKE or SIMILARITY queries.

Two clock with frustrated faces pointing a finger at each other

Prevent overlapping time ranges with Ecto and Postgres

Block overlapping appointments efficiently in your database using exclusion constraints and don't worry about double-bookings ever again!

A panda reserving a sunbed at a pool by laying down a towel

Optimize Ecto's insert_all with Placeholders

Write more efficient bulk insert queries and avoid sending duplicate data by using placeholders.

A panda carrying a pile of books through a dusty library

The complete guide to Upserts with Ecto

Implement insert-or-update functionality for your schemas directly with Ecto's on_conflict option.

A panda packing his suitcase in a hotel room

Organize your tests with context tags

Clean up your test configuration and highlight test specifics with dedicated tags.