About brennan.fm
The Host
Brennan is a Red River Métis writer, community organizer, and the founder of Fireweed Writing School and Berry House. He founded Write Club at Mount Royal University, and is the author of nine books.
This station is an extension of brennan.day, a public variety radio show to go alongside the writing.
Show Format (planned)
Approximately 60–90 minutes, rough structure:
| Segment | Duration | Description |
|---|---|---|
| Cold open | 3–5 min | Monologue, observation, or poem |
| First music block | 10–15 min | DJ set, themed or freeform |
| Main segment | 15–25 min | Essay, interview, commentary, or call-in |
| Second music block | 10–15 min | DJ set |
| Outro | 3–5 min | Upcoming episodes, Toonie Club, sign-off |
Broadcasts air live, and all episodes are released as podcast episodes within 24 hours.
Technical Stack
Streaming infrastructure
The stream runs on a DigitalOcean droplet (Ubuntu 24.04, 2 GB RAM, 1 vCPU, 50 GB SSD) at radio.brennan.day. AzuraCast (AGPL-3.0) runs in Docker and manages the full broadcast pipeline: Icecast2 serves the audio mount, Liquidsoap handles live input and AutoDJ fallback.
Live broadcast chain
| Step | Tool |
|---|---|
| Mic input | USB condenser → PipeWire |
| Music playback | Mixxx 2.5 |
| Audio routing | qpwgraph (PipeWire patchbay) |
| Stream encoder | BUTT 1.46 → Liquidsoap harbor (port 8005) |
| Guest audio | Cleanfeed (browser-based, mixed into BUTT) |
| Output | Icecast2 mount → radio.brennan.day/listen/brennan_fm/radio.mp3 |
AutoDJ
When no live show is running, a Python cron job refreshes the AutoDJ playlist hourly. It queries the Internet Archive API for public domain 78rpm recordings, Creative Commons music, old-time radio dramas, and spoken word, then inserts them into AzuraCast's playlist via the internal API. Liquidsoap falls through to this playlist automatically when no live source is connected. All automation code is in this site's repository.
This site
Built with Eleventy v3, hosted on Netlify. No JavaScript frameworks, plain HTML, CSS custom properties, and a small vanilla JS file for the now-playing widget and UI toggles. The design is inspired by public access television. Monospace type (Space Mono), a broadcast console player, and a toggleable CRT scanline effect. Source under AGPL-3.0.