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 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.

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.