open source

How to download an MP4 from YouTube, every time

I use yt-dlp to download videos off YouTube quite frequently. I'll use the videos as reference, and I often use it to grab the VOD for one of my livestreams, since there's no simpler way (I'm not going to dig through the bowel's of YouTube's UI to try to download one of my own videos...).

But I also can't handle the default .webm videos in all my video editing tools natively, and transcoding is annoying. So I've settled on the following yt-dlp command to first try to pull a native MP4 version off YouTube, and failing that, transcode to MP4 immediately after downloading:

yt-dlp -S res,ext:mp4:m4a --recode mp4 https://www.youtube.com/watch?v=dQw4w9WgXcQ

And if you weren't aware, yt-dlp does an excellent job pulling video files from other sites as well, should the need arise.

Installing the Asahi Linux Alpha on my M1 Mac mini

After upgrading my main workstation to a Mac Studio, I decided to break tradition.

Usually, I sell off my old workstation to offset the cost of the new one. But just last week, Asahi Linux announced their first alpha release.

Asahi Linux MacBook Pro

If you haven't heard of Asahi, it's a Linux distribution based on Arch Linux that aims to bring a polished Linux experience on Apple Silicon Macs (all the current M1 Macs, and any new Apple Silicon Macs that come in the future).

The burden of an Open Source maintainer

Or: Why can't you just merge my ten-line PR already?

I maintain over 200 open source projects. Apparently (this is news to me) I am ranked in the top 200 GitHub users by followers, and there are 18,000 forks and 42,000 stars across my repos.

On an average day, I see between 50-100 emails across my repositories for issues and pull requests, and I filter those down to about 5-10 that I deem worthy of a personal follow-up.

I merge between 5-10 Pull Requests per month, and commit new code or fixes around 166 times per month.

I'm one maintainer, in a tiny corner of the Internet, maintaining a small but broad set of projects from Ansible roles for infrastructure automation to a few small but still-used PHP and Node.js libraries.

Dealing with burnout

There have been a few times I've burned out. That's typical for many maintainers. You either learn coping strategies or burn out completely, and in the best case end up a woodworker or farmer. At least that's what I see most of the time.

My Backup Plan

I've had a number of people ask about my backup strategy—how I ensure the 6 TB of video project files and a few TB of other files stays intact over time.

3-2-1 backup plan

Over the past year, since I got more serious about my growing YouTube channel's success, I decided to document and automate as much of my backups as possible, following a 3-2-1 backup plan:

  • 3 Copies of all my data
  • 2 Copies on different storage media
  • 1 Offsite copy

The culmination of that work is this GitHub repository: my-backup-plan.

The first thing I needed to do was take a data inventory—all the files important enough for me to worry about fell into six main categories:

6 backup categories

2021 Open Source Pay-it-Forward Pi Giveaway

This year, I wanted to solve two problems:

  1. Open source projects and maintainers often get no reward (even a simple word of thanks!) for their efforts maintaining the tools we rely on every day.
  2. I have a box full of really awesome Raspberry Pi Compute Module 4 boards and products like the CutiePi, a PiBox mini 2, and a MirkoPC!

To solve both problems, I'm doing a giveaway—to enter to win one of any of the pictured items below (and maybe a few others I can find lurking in my office), just donate or say thank you to any open source project or maintainer, then submit your entry.

OSSThanks Giveaway items

The drawing will be at random and should be held next Friday, so please make sure to fill out the entry form by then!

Time Card and PTP on a Raspberry Pi Compute Module 4

Ahmad Byagowi, the project lead for Open Compute Project's Time Appliance, reached out to me a couple weeks ago and asked if I'd be willing to test the new Time Card Facebook had announced in mid-August on a Raspberry Pi Compute Module 4. Since I have a sort of obsession with plugging anything and everything into a Pi to see what works and what doesn't, I took him up on the offer.

The official specs had PCI Express Gen 3 on a x4 slot as a requirement, but it seems the Gen 3 designation is a little loose—the card and its driver should work fine on an older Gen 2 bus—like the one the Raspberry Pi Compute Module 4 exposes if you use the official IO Board:

Raspberry Pi Compute Module 4 IO Board PCI Express Slot

The slot is x1, but you can plug in any width card using an adapter like this one or by hacking an open end into it with a razor saw or dremel tool.

Raspberry Pi OS now has SATA support built-in

After months of testing various SATA cards on the Raspberry Pi Compute Module 4, the default Raspberry Pi OS kernel now includes SATA support out of the box.

SATA card and Samsung SSD with Raspberry Pi Compute Module 4 IO Board

In the past, if you wanted to use SATA hard drives or SSDs and get native SATA speeds, and be able to RAID them together for redundancy or performance, you'd have to recompile the Linux kernel with SATA and AHCI.

Sure you could always use hard drives and SSDs with SATA to USB adapters, but you sacrifice 10-20% of the performance, and can't RAID them together, at least not without some hacks.

There's a video version of this post: SATA support is now built into Raspberry Pi OS!

Freenode is dead. Long live IRC?

This is the text version; I have a video version of this post on YouTube: Freenode is dead. Long live IRC? [video].

I've been on IRC since I started participating in the Drupal community in the mid 2000s. For over three decades, countless programming and open source communities have centralized their real-time discussions on IRC servers. While overall IRC usage has declined in the past twenty years, Freenode became the most influential hub for IRC users, with the majority of users and channels, especially for open source discussion.

But all things must come to an end, and it seems like Freenode's new leadership—who took over the network over the past few years—are doing everything they can to drive it into the ground, fast.

When I first heard about a bunch of Freenode staff and volunteers forming a bit of a suicide pact, I knew something was up, and immediately many open source communities started discussing what they'd do if their main discussion platform went belly-up.

OBS Task List Overlay for livestream TODO / Checklist

For a few of my task-oriented livestreams, I wanted to be able to have an easy-to-follow list of tasks present in an OBS scene, with an indication of which task was currently in-progress.

I had seen a similar overlay on NASASpaceflight's livestreams (example), and liked the simplicity:

NASASpaceflight Live stream overlay task list for Flight Test

I started searching for an OBS plugin I could use to replicate that overlay, but was coming up with nothing. There was some plugin that seemed like it fit the bill, but it had been abandoned a while back. Most of the other overlays were a lot more specific to gaming, had few options for customization, or only worked with services other than OBS.