This week is like one of those daily stand-ups where a developer gives a long-winded technical explanation about something they got hung up on instead of saying “no progress”.
That’s not entirely true, I made a lot of progress on video quality and demo code, but made zero progress on producing actual videos and improving content.
Video quality & playback issues
Last week I was stoked to give the update that I recorded my first few videos, but it wasn’t long before people started reporting issues on playback quality.
Problems on mobile devices
It wasn’t just one of those, “Oh, well it’s just because bandwidth is limited outside of São Paulo” issues either, others with plenty of bandwidth reported seeking and quality issues.
The HLS gem is born
Publishing a video to the web shouldn’t require a third-party service or a week of vibe coding with Claude. Ideally it’s as easy as running a command like hls encode ./my/video.mp4
, sync it to an S3 private bucket, then slap a controller into Rails that parses m3u8 files and rewrites the segment URIs to pre-signed S3 URLs if they’re authorized.
It will be simpler than that when it’s done, but for now I’m focusing on doing what needs to get done so I can get back to video production.
For now checkout the HLS gem on Github and give it a ⭐️ or two.
The videos can play
After all that I was pleased to hear playback from São Paulo was resolved!
There are still some issues people are reporting where the video starts off grainy, which I suspect is either an encoding issue or bitrate setting in an m3u8 file.
Demo app Rails 8 upgrade
I dove deeper into the Thingybase.com project since I haven’t really touched it in a few years. It was running Rails 7.1 and Phlex 1.0, so I spent a day upgrading everything.
Before I make the source available to you, I have to figure out how to separate the source code from the content, legally speaking. My goal is to make the application source available under a Business Source License while I retain copyright to the marketing & support content. I’ll probably end up keeping them in the same repo, but I do need to paper that out with my lawyer, ChatGPT.
Course content updates
I had a moment of clarity that I think you’re going to love for the Turbo & Phlex section of the course.
Turbo & Phlex
Since I was busy with HLS video encoding and distribution this week, I didn’t get around to rewriting the script, but you can get a taste of what Turbo will look like in Phlex.
The thing I love about Phlex is that views are objects, which means you can make instances of them do things like broadcast over Turbo.
I’ll likely roll this into Turbo helpers in the Superview gem.
Next week
Now that I have most of the unknowns of HLS encoding and distribution out of the way, I’m hoping to get back into video production next week and ship more content.