In Lieu of Fun
This repository contains the website for the In Lieu of Fun webcast.
- If you have a question or want to report a problem, please consider filing an issue.
- If you are looking for the webcast itself, please visit https://inlieuof.fun.
- This repository: http://repo.inlieuof.fun
- Site build status: http://build.inlieuof.fun
- The tools repository: http://tools.inlieuof.fun
Episodes are stored in Markdown files in the
_episodes directory, with each
file named like
NNNN is the episode number, padded
with zeroes on the left (e.g.,
0143). Each file has a YAML front
matter section giving episode metadata:
episode: The episode number [number; required]
date: The date when the episode aired [string, "YYYY-MM-DD"; required]
youtube: The URL of the episode stream on YouTube [string]
crowdcast: The URL of the episode stream on Crowdcast [string]
acast: The URL of the episode audio on Acast [string]
summary: A brief summary of the episode [string, optional]. If this is provided, it is shown in the Episode Log.
topics: A comma-separated list of topics [string, optional]. If this is provided and there is not a summary, it is shown in the Episode Log.
links: A list of related hyperlinks [optional]. Shown on the Episode Log.
special: If true, cosmetically flag this episode as interesting in the Episode Log.
The body of the episode is arbitrary markdown text that will be displayed on
the episode detail page. Episode detail pages are rendered using the layout
_layouts/episode.html. The episode log
table is rendered by the Liquid template in
To add a new episode, create a new file in the
_episodes directory following
the format of the existing files, and update the guest list as necessary.
name: Guest name (required)
episodes: List of episode numbers attended (required)
url: Personal website URL (optional)
notes: A brief biographical synopsis (optional)
The site content is generated with Jekyll. To test
changes locally, run
bundle exec jekyll serve and visit the local server in
your browser. You can leave this running while you work, it will detect file
changes and rebuild as needed. The only caveat is that if you edit the root
_config.yml file, you will need to restart it.
After cloning the repository for the first time, you will need to install the toolchain, which is not checked in. This is, roughly:
# One-time setup instructions for a fresh clone. # Install Jekyll and Bundler. On macOS, you may want to include --user-install gem install jekyll bundler # Install vendored gems. git clone https://github.com/inlieuoffun/inlieuoffun.github.io.git ilof cd ilof bundle install
To simplify the process of setting up new episodes, we have written a command-line tool that primes a new episode from its announcement on Twitter. To use it you need to have (or install) Go, then run:
go get github.com/inlieuoffun/tools/epdate
To use the tool, you will need:
A Twitter API v2 bearer token, in the environment variable
A YouTube Data API key, in the environment variable
Once you have these set up, change directory into a clone of this repository and run:
If there are new episodes scheduled, this will create one or more new files in
_episodes directory and update
_data/guests.yaml. Inspect these and
correct any errors or other missing data (the tool is imperfect), then commit
and push them up to GitHub.
- Root: https://inlieuof.fun
- Episode Log (HTML): https://inlieuof.fun/episodes.html
- Guest List (HTML): https://inlieuof.fun/guests.html
- Guest List (JSON): https://inlieuof.fun/guests.json
- Episode N stream redirect (ex. N=25): https://inlieuof.fun/stream/25
- Latest episode stream redirect: https://inlieuof.fun/stream/latest
- These redirects prefer Crowdcast if available, and fall back to YouTube.
- Episode N replay redirect (ex. N=25): https://inlieuof.fun/replay/25
- These redirects go to YouTube unconditionally (if set).
- Episode N detail redirect (ex. N=25): https://inlieuof.fun/episode/25
- Merch store redirects: https://inlieuof.fun/merch, https://inlieuof.fun/store
Because this site is hosted from a github.io repository, the generated site
data must be published from the branch named
master. Thus, this repository
source branch as its default branch.