Skip to content

Instantly share code, notes, and snippets.

View rileyjshaw's full-sized avatar
💭
Riley is typing…

Riley Shaw rileyjshaw

💭
Riley is typing…
View GitHub Profile
@rileyjshaw
rileyjshaw / camo.glsl
Last active November 6, 2025 13:30
Predator (1987) camo sketch for ShaderBooth (https://shaderbooth.com/)
// by rileyjshaw
// inspired by the camo effect in predator (1987)
void main() {
vec3 color = getCam(uv);
vec2 dir = uv - faceCenter;
float lenDir = length(dir);
if (lenDir < 1e-5) {
dir = vec2(0.0, 1.0); // avoid divide-by-zero at exact center
} else {
@rileyjshaw
rileyjshaw / generate-grid-image.js
Last active October 28, 2025 16:48
Quickly generate grid images to test shader positioning
const { createCanvas } = require('canvas');
const fs = require('fs');
const gridWidth = parseInt(process.argv[2]) || 16;
const gridHeight = parseInt(process.argv[3]) || 16;
const SQUARE_SIZE = 200;
// Inferred.
const WIDTH_PX = gridWidth * SQUARE_SIZE;
const HEIGHT_PX = gridHeight * SQUARE_SIZE;
@rileyjshaw
rileyjshaw / convert-albums-to-flat-list.sh
Created April 19, 2024 15:45
Traverse subdirectories (albums) and convert them to a flat list of 192kbps mp3s. Used for the Digital Media Sound Player.
#!/bin/bash
# Ensure the 'converted' directory exists
mkdir -p converted
# Initialize a counter for file naming
counter=1
# Allowed audio file extensions
allowed_extensions="flac mp3 wav"
.container
- for i in 1..3
.shaker
ul.group
- for j in 1..14
li.line
@rileyjshaw
rileyjshaw / ffmpeg-slit-scan.sh
Created March 5, 2024 02:57
Create an ultra-wide photograph out of a slow dolly shot video. FFMPEG is amazing!
#!/bin/bash
# Default values
start_time=0
rtl_flag=false
output_file="output.png"
downscaling_factor=1
aspect_ratio="16:9"
# Parse arguments
@rileyjshaw
rileyjshaw / convert_to_mp3.sh
Created November 17, 2023 20:11
Convert a folder of .flac albums to 192kbps MP3s to save space on my OpenSwim headphones
#!/bin/bash
# Define the source and target directories.
SOURCE_DIR="./originals"
TARGET_DIR="./processed"
# Ensure ffmpeg is installed.
if ! command -v ffmpeg &> /dev/null
then
echo "ffmpeg could not be found, please install it."
@rileyjshaw
rileyjshaw / heic-convert.sh
Created May 30, 2023 03:15
Adding this to remind myself that the `mogrify` command exists
# heic-convert() {
# local ext
# ext="${1:-jpg}"
# for img in *.heic; do
# convert "$img" "${img%.heic}.$ext"
# done
# }
# Instead of ^this^, do this:
mogrify -format jpg *.heic
@rileyjshaw
rileyjshaw / convert.sh
Last active September 1, 2025 04:31
Download all issues of Emigre Magazine from Letterform Archive’s Online Archive
# Move the results into their own folder, drag that parent folder into imageOptim, `cd` into it, then:
for d in Issue\ */; do
cd "$d"
convert -compress jpeg -quality 33 -resize 2388x2388\> *.jpg "../${d%/}.pdf"
cd ..
done
@rileyjshaw
rileyjshaw / prattle.sh
Created March 29, 2023 23:26
Multiple shell `say` instances at once
curl https://raw.githubusercontent.com/dariusk/corpora/master/data/technology/new_technologies.json | jq '.technologies[]' | while read technology; do say -v zarvox "$technology" & done
@rileyjshaw
rileyjshaw / move-component.js
Created March 10, 2023 03:58
A quick script to organize loose React components
/**
* Moves a React component into its own folder in <src>/components/, adds an index.js for
* cleaner imports, and updates the import path in other files.
*
* Based loosely on the structure shown in https://www.joshwcomeau.com/react/file-structure.
*
*
* Usage
* =====
*