Peter Ullrich's Picture

Hey, I’m Peter! Developer & Educator.

I'm an Elixir developer with a Psychology background, Founder of Letter to Yourself, Ex-YouTuber at PeterAndCode, Ex-Host of ExplainBlockchain, and ConsenSys-certified Blockchain developer. Passionate about sharing knowledge, sports, Africa, and bicycle activism.

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.

Simulate Latency, Jitter, and Package Loss in Phoenix LiveView

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

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.

Efficient Name Search with Postgres and Ecto

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

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!

Optimize Ecto's insert_all with Placeholders

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

The complete guide to Upserts with Ecto

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

Organize your tests with context tags

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

Import a CSV into Postgres using Elixir

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

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.

Set up Livebook on your Raspberry Pi with Nerves

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

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.

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.

How to deploy a Phoenix project with Fly.io

Fly.io allows you to quickly deploy a Phoenix application in different regions in the world. Here is how to get started.

Your product is not only your "product"

What comes to mind if you think about "Your product"? You probably think about features built for your customers. However, your "product" also includes something else. Your software.

How to set up reoccurring jobs with GitHub Actions

How to automate a reoccurring job using GitHub Actions in order to fetch and upload latest data to a GitHub repository.

How to set up a Reverse Proxy with CloudFront, Lambda@Edge and Phoenix

Route traffic based on the path of a URL using AWS CloudFront and Lambda functions. A complete how-to using Phoenix servers.

From Business Requirements to Production Code

How to build what your stakeholder actually wants by extracting and testing good software requirements.

Bridge the Gap - Bring your Software to life with Elixir and Nerves

Writing code is fun, but nothing tops seeing your code moving things in the real world. That’s why I tested out the Nerves library.

State Management with Phoenix LiveView and LiveEx

Writing code is fun, but nothing tops seeing your code moving things in the real world. That’s why I tested out the Nerves library.