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.

an old map with marked countries and their flags lying on a wooden table, old wizard hunching over the map, digital art

Build dynamic Forms with JSON Schemas

Define custom forms without writing a single line of HTML. JSON Schemas help you define and adjust forms and validate user input all through a single configuration file.

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.