Recovering Data from Orphaned Fly.io Volumes

After a hardware failure on Fly.io triggered a migration to new hardware, I encountered an issue where the new machine didn't mount to the old volume but instead created a new one. Despite attempts to mount the old volume, persistent errors

2 min read
New blog

I had to make a new blog because we can't have nice things.

1 min read
Handling classes in Phoenix LiveView components

With Phoenix LiveView you can build components that encapsulate styling. This is especially useful when using a class-based CSS framework like Tailwind CSS.Often you will want to make your component configurable by allowing the users of the

2 min read
Handling Empty Slots in Phoenix LiveView Components

As I was writing a Phoenix LiveView component I determined that I wanted to provide a default "empty state" when a slot provided to the component rendered to a blank value. A good example is a detail list component that may be used as follo

3 min read
Phoenix LiveView External Upload Cancellation

While implementing a LiveView external upload to S3 I noticed that the default cancellation mechanism doesn't properly terminate the upload. The upload is cancelled within the LiveView state, but the browser will continue to upload the file

2 min read