Skip to content

Latest 🗞️

Wednesday, July 8

Git Commits

dev commits 3 ohnsh/dev
  • 1:00 pm — John Sherrell <dev@ohn.sh>

    stream-utils: relay for routing thingino stream to YouTube.

  • 10:42 am — John Sherrell <dev@ohn.sh>

    stream-utils: mkff.sh: new function to create summary videos from a sequence of input videos.

  • 1:00 am — John Sherrell <dev@ohn.sh>

    bug: switched to sox_ng for recording because `ffmpeg -f avfoundation` produced poor output with crackling artifacts (apparently others have the same issue). Currently handling process management by running inside tmux, which is incompatible with launchd (as far as I can tell). For now, `tmux-bug.sh` is installed as a login item, but I may remove tmux from the equation and convert it to a standard launchd service.

YouTube

Monday, July 6

Git Commits

dev commits 5 ohnsh/dev
  • 9:11 pm — John Sherrell <dev@ohn.sh>

    bug: tweaking ffmpeg parameters to eliminate crackling artifact. Seems a little better when matching the hardware sample rate (48 kHz as reported by 'Audio MIDI Setup.app'). I still suspect I could get much better output with the right options.

  • 8:11 pm — John Sherrell <dev@ohn.sh>

    stream-utils: fixed a couple of minor bugs in mkmanifest.

  • 8:10 pm — John Sherrell <dev@ohn.sh>

    bug: renamed from soundstage. Saving files to a sane location.

  • 4:30 pm — John Sherrell <dev@ohn.sh>

    stream-utils: organizing a bit. About to split off a separate branch to hold all the scratch material (generally scripts that I didn't write but might use as a starting place for new features.)

  • 4:25 pm — John Sherrell <dev@ohn.sh>

    soundstage: initialize project. Using `ffmpeg -f avfoundation`, parsing `-list_devices` output to find index number of Samson mic.

YouTube

Thursday, July 2

Git Commits

days commits 5 ohnsh/days
  • 10:05 pm — John Sherrell <dev@ohn.sh>

    LatestVids: Added `include` prop to specify whether list should include only non-live videos, only live videos, or all videos. Now rendering both live and non-live versions on the latest route.

  • 10:04 pm — John Sherrell <dev@ohn.sh>

    Moved prettier config out of package.json, set up formatting support for .astro files in helix.

  • 7:40 pm — John Sherrell <dev@ohn.sh>

    DayContent and LatestPosts: Fixed bug where computing slugs to link to the main route for a day or post resulted in relative paths instead of absolute paths.

  • 7:35 pm — John Sherrell <dev@ohn.sh>

    Fixed date bug that caused the incorrect month to render in the sidebar when the day used to query it happened to be the first of the month.

  • 7:34 pm — John Sherrell <dev@ohn.sh>

    Added helix configuration to ensure use of prettier instead of Biome.

dev commits 6 ohnsh/dev
  • 6:42 pm — John Sherrell <dev@ohn.sh>

    Added custom font (DejaVu Sans for no particular reason) to mktitle with logic to find the .ttf on Alpine or MacOS.

  • 4:10 pm — John Sherrell <dev@ohn.sh>

    stream-utils: clean up new mkff.sh utility.

  • 7:09 am — John Sherrell <dev@ohn.sh>

    stream-utils: dramatically optimized strobe filter by dropping unused frames *before* the filter instead of after. As simple as adding an `fps` filter immediately after `setpts`. Squashed commit of the following: commit 98a78df0946facd2135c357cb494a9ab0d936cac Author: John Sherrell <dev@ohn.sh> Date: Thu Jul 2 07:01:38 2026 -0500 Optimization breakthrough. commit 82c30edbfd31392bb63d1a6e0afdece7a3672c67 Author: John Sherrell <dev@ohn.sh> Date: Thu Jul 2 06:48:30 2026 -0500 Optimizing strobe.

  • 5:31 am — John Sherrell <dev@ohn.sh>

    stream-utils: Some ffmpeg commands that utilize libavfilter to generate title cards.

  • 5:12 am — John Sherrell <dev@ohn.sh>

    stream-utils: Added vaapi hardware versions of timelapse/summary functions.

  • 3:04 am — John Sherrell <dev@ohn.sh>

    stream-utils: added utilities for creating summary videos from long videos by stitching together short segments at regular intervals.

Wednesday, July 1

Git Commits

dev commits 8 ohnsh/dev
  • 6:27 pm — John Sherrell <dev@ohn.sh>

    stream-utils: added package.json to bring in youtube-client executable and define package scripts. Still feeling out how this should work.

  • 4:24 pm — John Sherrell <dev@ohn.sh>

    youtube-client: Added `broadcast ensure` command that returns an existing ready broadcast (one with `lifeCycleStatus: 'ready'` and `enableAutoStart: true`) or creates one if none exist. This is the core operation needed by the stream automation.

  • 2:53 am — John Sherrell <dev@ohn.sh>

    youtube-client: stream key in api sample has been refreshed. (This project is now on GitHub.)

  • 2:37 am — John Sherrell <dev@ohn.sh>

    stream-utils: Comments

  • 2:19 am — John Sherrell <dev@ohn.sh>

    youtube-client: an actual CLI is forming. Creating broadcasts and streaming without touching the web interface is now working (enableAutoStart and enableAutoStop properties are critical).

  • 2:17 am — John Sherrell <dev@ohn.sh>

    stream-utils: installed @aws-sdk/client-s3, consolidated some ffmpeg commands.

  • 2:16 am — John Sherrell <dev@ohn.sh>

    scripts: not sure about this package.

  • 2:15 am — John Sherrell <dev@ohn.sh>

    sh: Cleaning up ancient shell scripts.

Tuesday, June 30

Git Commits

dev commits 6 ohnsh/dev
  • 10:15 pm — John Sherrell <dev@ohn.sh>

    youtube-client: Refactored libs to use proper functions (with names in scope for sibling functions). The functions are returned as object keys (instead of methods).

  • 8:05 pm — John Sherrell <dev@ohn.sh>

    youtube-client: refactored into libraries (upload and live) with factory function exports

  • 7:31 pm — John Sherrell <dev@ohn.sh>

    youtube-client: renamed stream.tx -> live.ts; creating broadcasts is working.

  • 5:45 pm — John Sherrell <dev@ohn.sh>

    Documenting API samples

  • 5:04 pm — John Sherrell <dev@ohn.sh>

    added shebang to old scripts.

  • 5:03 pm — John Sherrell <dev@ohn.sh>

    youtube-client: storing token updates, exploring shape of API responses

Monday, June 29

Git Commits

dev commits 10 ohnsh/dev
  • 8:32 pm — John Sherrell <dev@ohn.sh>

    youtube-client: Implemented "desktop" OAuth client with loopback server. Should be able to make any API calls now.

  • 6:36 pm — John Sherrell <dev@ohn.sh>

    youtube-client: Keeping around old auth module as device-auth.ts

  • 6:34 pm — John Sherrell <dev@ohn.sh>

    youtube-client: Implemented device flow before realizing the allowed scopes are extremely limited. Saving state here but re-doing auth as a "Desktop" client (spin up a loopback server to handle the redirect).

  • 4:08 pm — John Sherrell <dev@ohn.sh>

    Re-organizing youtube client.

  • 1:47 pm — John Sherrell <dev@ohn.sh>

    dxif.sh: test whether files are currently open before moving them

  • 1:30 pm — John Sherrell <dev@ohn.sh>

    Streamlining path to executable scripts. No longer requires dependent package and installation.

  • 1:26 pm — John Sherrell <dev@ohn.sh>

    intermediate; re-organizing scripts

  • 12:32 pm — John Sherrell <dev@ohn.sh>

    Adding shell utilities

  • 6:23 am — John Sherrell <dev@ohn.sh>

    Housekeeping.

  • 1:44 am — John Sherrell <dev@ohn.sh>

    picture-in-picture proof-of-concept

days commits 1 ohnsh/days
  • 9:24 am — John Sherrell <dev@ohn.sh>

    Upgraded Astro to v7.0. Default HTML whitespace behavior changed (line breaks are removed from bundler output). I'm (not wisely) relying on the white space for spacing between inline elements, most noticably in the Latest Posts component. For now, I added a config option `compressHTML: false`) to change back to the old behavior.