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.


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, adding payments to it using LemonSqueezy, and more.

Blog Posts

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.

a wizard filling an elixir into a bottle in a dusty laboratory

Import a CSV into Postgres using Elixir

Learn how to dump and analyze large amounts of data from a CSV file into Postgres quickly.

two wizards looking at a whiteboard in a modern laboratory

Simulating Conway's Game of Life with 100.000 Erlang Processes

Learn about how to tweak the performance of 100.000 Erlang processes and why Elixir isn't really that slow.

a numbat writing a book

Set up Livebook on your Raspberry Pi with Nerves

Write and test code directly on your Raspberry Pi with Livebook.

a numbat calling another numbat through an old rotate phone

Sending text messages from a Raspberry Pi with Nerves

Send a text message using the Waveshare GSM/GPS/GNSS Hat on a Raspberry Pi and Nerves.

a phoenix showing his id card to a security person at a club

How to implement U2F Authentication with Phoenix LiveView

Arguably, the strongest multi-factor authentication method is U2F. Here is how to integrate it with your Phoenix LiveView application.