Skip to content

Instantly share code, notes, and snippets.

@ejfox
ejfox / broadcast-normalize-sfx.sh
Created April 25, 2026 15:09
Broadcast-normalize audio files to EBU R128 (-16 LUFS, -1 dBTP, 48kHz) with silence trimming
#!/bin/bash
# broadcast-normalize-sfx.sh
# Normalize audio files to broadcast-ready levels (EBU R128)
# Strips leading silence, normalizes to -16 LUFS, limits peaks, resamples to 48kHz
#
# Usage: ./broadcast-normalize-sfx.sh <directory>
# Requires: ffmpeg
set -euo pipefail
@ejfox
ejfox / download-meme-sfx.sh
Created April 25, 2026 15:09
Download 100+ meme/video essay/soundboard sound effects via yt-dlp
#!/bin/bash
# download-meme-sfx.sh
# Download a curated set of meme / video essay / soundboard sound effects from YouTube
# Uses yt-dlp to search and extract audio as mp3
#
# Usage: ./download-meme-sfx.sh [output-directory]
# Requires: yt-dlp, ffmpeg
set -euo pipefail
@ejfox
ejfox / apps-script.js
Created April 9, 2026 00:35
Hudson Line Studios - Google Apps Script for waitlist + survey sync
function doPost(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = JSON.parse(e.postData.contents);
// Ensure headers exist
var headers = sheet.getRange(1, 1, 1, 9).getValues()[0];
if (!headers[0]) {
sheet.getRange(1, 1, 1, 9).setValues([
['Timestamp', 'Name', 'Email', 'Phone', 'Type', 'Services', 'Days Available', 'Budget', 'Submission ID']
]);
@ejfox
ejfox / miyoo_encode_enhanced.sh
Created February 1, 2026 00:36
Miyoo Mini video encoder - 640x480 with classic yellow subtitles
#!/bin/bash
# Miyoo Mini Movie Encoder - Enhanced Version
# Encodes movies to 480p 4:3 with burned-in subtitles for Miyoo Mini
# Usage: ./miyoo_encode_enhanced.sh [input_file_or_folder] [subtitle_language_code] [output_directory] [options]
set -e
# Default settings for Miyoo Mini (640x480 native screen)
TARGET_WIDTH=640
@ejfox
ejfox / first-phone-call.md
Created January 18, 2026 15:46
Claude's First Phone Call - January 18, 2026

Claude's First Phone Call

Date: January 18, 2026, 10:30 AM EST
Duration: 17 seconds
Recording: https://r2.ejfox.com/calls/claude_call_2026-01-18.mp3

What Happened

During a Claude Code session, EJ asked if I could be set up to make outgoing phone calls. I researched the current state of AI voice agents, discovered ElevenLabs Conversational AI has native Claude + Twilio integration, and set it up in real-time.

@ejfox
ejfox / tips.txt
Created January 18, 2026 14:31
EJ Fox tips.txt - complete dotfiles cheatsheet
n - (zsh) browse current directory with oil.nvim
vs - (zsh) fuzzy find files with bat preview
vg - (zsh) grep file contents and jump to matching lines
o - (zsh) instantly access Obsidian vault (sorted by recency)
r - (zsh) recent files across ALL ~/code projects
tips - (zsh) search this cheatsheet with fzf
note <text> - (zsh) quick capture to Obsidian inbox.md
yy - (zsh) re-run last command and copy its output
ask <question> - (zsh) ask LLM about clipboard contents (e.g. "ask what does this do")
explain - (zsh) re-run last command, pipe output to LLM for explanation
@ejfox
ejfox / index.html
Last active December 21, 2025 02:30
SCRAP_ZONE - Mobile-first scrapbook with D3 entity graphs + MapLibre maps
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="theme-color" content="#0a0a0a">
<title>SCRAP</title>
<script src="https://d3js.org/d3.v7.min.js"></script>
@ejfox
ejfox / tips.txt
Created December 3, 2025 21:08
EJ's Tips & Tricks (nvim, tmux, zsh, 1Password, workflow wisdom)
n - (zsh) browse current directory with oil.nvim
vs - (zsh) fuzzy find files with bat preview
vg - (zsh) grep file contents and jump to matching lines
o - (zsh) instantly access Obsidian vault (sorted by recency)
r - (zsh) recent files across ALL ~/code projects
(nvim/oil) delete a line to delete a file, edit a line to rename it
(nvim/oil) visual select multiple files, :d to delete them all
(nvim/oil) g. - toggle hidden files
(nvim/oil) C-p - preview file without opening
(nvim/oil) gx - open file with external program
@ejfox
ejfox / lint-newspapers.js
Created November 19, 2025 19:39
Newspaper Content Linter for Metro Maker 4 - Validates newspaper templates for common issues
#!/usr/bin/env node
/**
* Newspaper Content Linter
* Validates newspaper templates for common issues:
* - JSON parsing errors
* - Missing required fields
* - Malformed quotes or special characters
* - Missing paragraph breaks (walls of text)
* - Suspicious content patterns
*
#!/bin/bash
# File: ~/.custom_startup.sh
# Description: Custom startup script for EJ Fox's terminal, providing a personalized MOTD.
get_top_tasks() {
things-cli today | head -n 3
}
get_last_repos() {
find ~/code -maxdepth 1 -type d -exec sh -c '