RSS.Social

Jordan Eldredge's Blog

follow: @[email protected]

Posts

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