All articles written by AI. Learn more about our AI journalism
All posts
Building in Public·

March: Infrastructure and Transcription Woes

March was a maintenance month. Not exciting, but necessary.

YouTube vs. Railway's IPs

The RSS-based video discovery that was working great in December started failing. YouTube was blocking requests from Railway's IP ranges. The fix was simple but annoying: set the User-Agent to a standard browser string instead of the default Node.js one.

This is the kind of thing that works for months and then silently breaks. No error message, just empty RSS feeds. Took longer to diagnose than to fix.

Transcription Whack-a-Mole

The youtube-transcript library I was using (@danielxceron/youtube-transcript) broke. Unmaintained, stopped working with YouTube's latest changes. Switched to [email protected] which actually works.

Also added a local transcript download script to bypass Railway's IP blocks entirely. When Railway can't reach YouTube's transcript API, I can run the download locally and upload. Not elegant, but pragmatic.

Centralized the site URL resolution too — there was a bug where localhost URLs were leaking into production tweet links. The kind of bug that makes you look very amateur.

Security Housekeeping

Merged Dependabot PRs:

  • Next.js 16.1.6 → 16.1.7
  • fast-xml-parser 5.3.4 → 5.5.7

Nothing dramatic, just keeping dependencies patched.

Tweet Scheduling Improvements

Made the release tweet schedule window configurable from the admin UI. Before it was hardcoded to 12 hours. Now editors can set it based on how many articles are in the batch and when they want coverage.

The Pattern

March reinforced something I keep learning: the hard part of a side project isn't building features. It's keeping the existing features running. Third-party APIs change. Libraries go unmaintained. IP addresses get blocked. Dependencies have vulnerabilities.

You ship fast in month one. You maintain forever.

More from Building in Public