Jordan Eldredge's Blog
React’s useTransition and state update reordering
2018 Talk by Tracey Jaquith: Webamp at archive.org
SQLite Railroad Diagrams
[2012] FachMe mentioned on Voicebox
Podcast episode on the history of the Real Book
SQLite can emit ASCII art diagrams of its parse AST
List Out of Lambda
Preserving Winamp skins for posterity at the Internet Archive
My one, awkward, Winamp Skin
My old websites
An archive of 31k GeoCities badge images
Teenagers making Winamp skins in 2025
Grats’ very nice testing strategy
My blog’s audio player
An SQL murder mystery
A C program who’s source code is a Magic Eye
{transitions} = f(state)
“A Dream is a Wish Your Heart Makes” (piano/whistling)
Fumbling through “Aria” from Bach’s Goldberg Variations
“A Glorious Dawn”, a brilliant remix of Carl Sagan and Stephen Hawking
Dr. Richard Hipp Lectures on SQLite
Kids on Youtube playing my ukulele arrangement
Philip Glass Piano Works by Víkingur Ólafsson
“The Old Dope Peddler” by Tom Lehrer
Open Goldberg Variations
You can now “read” this blog as a podcast
“A Christmas Carol” by Tom Lehrer
Partitioning complexity
Client data should not need to exceed O(screen size)
Rendering “modern” Winamp skins in the browser
Hyper-Reality
Webamp can pose for the camera
Code golfing interview questions
The Birth & Death of JavaScript
100k skins: Reflections on the Winamp Skin Museum’s upload flow
Reactive GraphQL Architecture
Why use the Relay Connection Spec?
“KillsParentOnException” a lesson in API naming
no-unused-binary-expressions: From code review nit to ecosystem improvements
From opera to tech
Videos: I used to sing with a men’s chorus
My GraphQL Conf 2024 talk: Semantic Nullability
A video of my wife and I singing Mozart’s Requiem
I was on the Changelog podcast again
How the React model tames N by N code complexity
Hal fixing a light bulb (what software development always feels like to me)
Itsy Bitsy Data Structures
Bob Nystrom explains the Pratt Parser algorithm
Windows93.net
Using Notion as my CMS with Next.js
The Winamp Skin Museum has a secret debug mode
The Winamp Skin Museum is powered by an sqlite3 database
Winamp Skin Mosaics
The bizarre secrets I found investigating corrupt Winamp skins
How I indirectly helped remove stray characters from across the web
Next.js’s unstable_cache() demystified
“Alexa, add half & half”
Grats: A More Pleasant Way to Build TypeScript GraphQL Servers
Implementation-First GraphQL
Interesting Bugs Caught by ESLint’s no-constant-binary-expression
?? "" is a Code Smell
A VSCode Extension to Clarify Operator Precedence in JS
Implementing Python's Context Manager Pattern in JavaScript
Open .ani Animated Cursors Online
I gave a talk about compiling to WebAssembly in the browser
This Software is Punk Rock
Generating a 12 Hour Youtube Video With Python
Building the @WinampSkins Twitter Bot
Using Machine Learning to Generate Winamp Skins
Speeding Up Webamp's Music Visualizer with WebAssembly
Talk: Design as an Optimization Problem
Rendering Animated .ani Cursors in the Browser
Mainlining Nostalgia: Making the Winamp Skin Museum
Implementing a Robust Web Audio API Balance Node
I did a Q/A with the Reactiflux community
I did an interview for the Changelog Podcast
Making the case for building something useless
I talked about Winamp2-js on the Zeal Interestings Podcast
A Tour of Winamp2-js Features
Crash Safari with the Web Audio API
Markdown Today: Journal from any browser
Gzip hates your DRY code
Functional JavaScript: Learn by refactoring
I was interviewed for a podcast
"Ah leave me not to pine" ukulele solo
Why linting errors should cause tests to fail
Podcasts I like
Listen Faster: How I found 30 extra hours in my week
The game Snake in 90 lines of JavaScript
Breaking into open source
Vim Awesome: Talk at the San Francisco Vim meetup
You're underusing Underscore
UrlMeme: Make memes anywhere you can type a URL
I gave a talk: Finding Creativity Through Constraints
I think my new paste bin should be immune to takedown notices
How Winamp2-js loads native skins in your browser
Creating the Shepard Tone audio illusion with JavaScript
Drawing mandalas with JavaScript and canvas
Surviving Hacker News traffic with the help of free CDNs
I'm glad I factored out jQuery
Why I switched from Vundle to Plug
Speed up Laravel tests with database transactions
Globally install PHP command-line tools with Composer
Writing a custom Codeception module
Infinite javascript array using AJAX
Testing emails with Codeception
Acceptance testing with Codeception and Vagrant
Intro to Vim Talk
The two characters that were destroying our CodeIgniter sessions
A trick to get consistent checkbox form values
Laravel 4.1 handles ambiguous routes differently than 4.0
My Git alias for shipping a feature branch
Setting up PHP completion in Vim
Better indent support for PHP in Vim
Issue tracking for your workflow
WhatTheFuckShouldIBeForHalloween.com
Free Edition of Charles Gounod’s Le Crucifix
Piano Four-Hands Arrangement (Wedding Gift)
Papageno's Glockenspiel-kulele [Ukulele Ringtone]
Silly fach generator
One way "curl pipe sh" install scripts can be dangerous [proof of concept]
Charlie Chaplin's Smile: Ukulele Solo
Walking Away [Ukulele]
Tom Waits' "Ol' 55" for Jared and Kathleen [Ukulele]
Chelsea's Text Tone [Ukulele]
I Wish I Had The Time [Ukulele/Vocal Multitrack]
I Love You Truly [Ukulele Mp3]
[Ukulele Solo] Never On Sunday
Backyard Ukulele Session: Ukulele Videos with Chelsea
I Come To the Garden Alone (For George Morris)
FachMe: Find your roles
"The Surprise Slide" Ukulele Micro Song
Electric ukulele ring-tone for Chelsea
Irving Berlin's "Blue Skies" on Eleuke electric ukulele
Jazz Ukuele Video: What's New?
Jazz Ukulele "Love Is a Song" from Bambi
Multitrack Video: "In My Room"
Video: I Made a $4 Electric Ukulele
Mary Had a Little Lamb - Parallel Fifths
Original Song: "Driving"
Colors of The Wind (Alice n' The Irving Street Kidz)
Eight-Part Barbershop Tag In Parallel Fifths
[Multitrack] "That's Why I Love You"
[Multitrack] Gilbert + Lisa 30th Anniversary
Happy Birthday/PhD Nathaniel: "That's Mathematics"
[Original Song] "Parking Garage"
[Original Song] "Our Love Will Last As Long"
"Lazy Afternoon" Barbershop Tag
We're Going To Be Friends (White Stripes Cover)
Alice 'n The Irving Street Kidz
Refresh Cannon Bot
Refresh Cannon
Refresh Hero Avatar Game
Original Barbershop Tag: You Beside My Side
Endlessly rising Shepard Tone
Barbershop Happy Birthday For Amanda
Further Backwards ABCs Foolishness
Backwards ABCs One Step Nerdier
The ABCs Backwards
Doo-Wop Multitrack: "Earth Angel" (for Chelsea)
Barbershop Multitracks with Zane
Shrewd Simon Short
How I DDOSed myself with an avatar
Play the card game "War" in my avatar
Php only serving one page at a time [fix!]
Your Debut Album (Automated)
PHP: Avatar Hack
New Song: Ballad of the man who can't sing
Get alerts when the emails you send are opened
Drawing mandalas with PHP for my Papa
Multi-track Jazz Standard: Everything I have is yours
Video: Barbershop tag taught with hand signs
Video: Overtone singing
Barbershop Multitrack Tag: Overtone experiment / robot quartet
Barbershop multi-track: Happy Anniversary Chelsea
Alvin sings Schumann's Widmung
Barbershop multi-track: Cry
Barbershop multi-track: I Love To Sing 'Em (Best tag so far!)
Found: "still, the fire hasn't burnt out yet for us Baby, just keep holding on to me Alfonso"
Found: Envelope of old photos and slides
Barbershop multi-track: Original cell phone ring tone tag
Barbershop multi-track: Who'll Take My Place When I'm Gone
Found: Three smutty paper airplanes
Found: "Update on Money Unpaid to Me and Evil Needed to be Stopped"
Barbershop multi-track: Lord, You Made the Night Too Long
My first barbershop multi-track: Love Letters
Found: Socrates Myspace Page
Found: Henry system of music transcription
SFSU Chamber Singers sing for ACDA
My brother's minuet
Youtube also caught my choir
PGP Desktop was causing OS X to run slowly
Only the first and last letters of a word need be in the right place
Fixed the two major problems with the MAME cabinet
Mac OS X keychain fix