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 wizard's apprentice juggling documents while standing on a large book, forest landscape in the background, digital art

Work with Files in Livebook

Learn how to upload, process, and download files to and from Livebook.

a wizard's apprentice opening a drawer at the top of a wizard's tower, forest landscape in the background, digital art

Animate a Side Drawer with LiveView.JS

LiveView.JS is great for client-side animations because no round-trip to the server is needed. Here's how you can use JS to animate a side drawer.

a young wizard apprentice looking at a book with a magnifying glass in an old library, digital art

Unaccented Name Search with Postgres and Ecto

Postgres does not support searching for names with special characters by default. Here is how to fix it.

a wizard stealing a secret book from the lair of a phoenix, digital art

How malicious libraries can steal all your application secrets

Adding libraries is a massive security risk. They gain FULL access to your configuration, database, and file-system. Here's how they could steal them and how to protect yourself.

an old wizard killing a phoenix with a sword, digital art

Kill your Phoenix Context

Phoenix Contexts often become a dumping ground for code that doesn't have an obvious place. Learn how to organize your code using services, finders, and repositories.

an old wizard throwing a big key into the cloudy sky, digital art

Upload Encrypted Files to S3

Encrypting sensitive user files before uploading them to S3 is a must. This post shows how to encrypt and upload them and also how to download and decrypt them again using encryption keys unique per user.

an old wizard holding up a VCR videocassette into the camera standing in his chemical laboratory, digital art

Announcing my new Video Course!

My first video course "Build an MVP with Elixir" helps you to get started with Elixir by building a real-world product together!

an old wizard listening through a door, digital art

Listen to Database Changes with Postgres Triggers and Elixir

Postgres Notifications allow you to subscribe to any changes in your database, even if they weren't made by your Elixir application! Let's learn how to set them up!

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.