The Curious Engineer

All blogs / JavaScript / TypeScript

Jordan Eldredge's Blog

jordaneldredge.com

The personal website of Jordan Eldredge, a software engineer and musician.

JavaScript / TypeScriptSoftware / engineering practiceMusic

Posts
209 from 29 Oct 2007 to 24 Oct 2026
Posting
monthly (12 in the last year)
Kind
personal blog
Feed
https://jordaneldredge.com/feed/rss.xml

2026 10

  1. I was interviewed for People of GraphQL
  2. Clip of me singing Despard in Ruddigore in 2013
  3. Talk: React Server Components Vs. GraphQL
  4. Building a metadata database with AI agents
  5. Talk: Grats - Bringing Implementation-First GraphQL to TypeScript
  6. This blog has secrets
  7. Prevent MacOS from inserting a period after two spaces
  8. Markdown is great for encoding test snapshots
  9. Aliasing alias
  10. Keynote: GraphQL at Meta

2025 27

  1. Talk: The Big Ideas in Relay
  2. “’S Wonderful” by George Gershwin
  3. Winamp in Your Pocket: 63 artist depictions of physical Winamp players
  4. A Mental Model for Data in UI Applications
  5. React’s useTransition and state update reordering
  6. 2018 Talk by Tracey Jaquith: Webamp at archive.org
  7. SQLite Railroad Diagrams
  8. [2012] FachMe mentioned on Voicebox
  9. Podcast episode on the history of the Real Book
  10. SQLite can emit ASCII art diagrams of its parse AST
  11. List Out of Lambda
  12. Preserving Winamp skins for posterity at the Internet Archive
  13. My one, awkward, Winamp Skin
  14. My old websites
  15. An archive of 31k GeoCities badge images
  16. Teenagers making Winamp skins in 2025
  17. Grats’ very nice testing strategy
  18. My blog’s audio player
  19. An SQL murder mystery
  20. A C program who’s source code is a Magic Eye
  21. {transitions} = f(state)
  22. “A Dream is a Wish Your Heart Makes” (piano/whistling)
  23. Fumbling through “Aria” from Bach’s Goldberg Variations
  24. “A Glorious Dawn”, a brilliant remix of Carl Sagan and Stephen Hawking
  25. Dr. Richard Hipp Lectures on SQLite
  26. Kids on Youtube playing my ukulele arrangement
  27. Philip Glass Piano Works by Víkingur Ólafsson

2024 35

  1. “The Old Dope Peddler” by Tom Lehrer
  2. Open Goldberg Variations
  3. You can now “read” this blog as a podcast
  4. “A Christmas Carol” by Tom Lehrer
  5. Partitioning complexity
  6. Client data should not need to exceed O(screen size)
  7. Rendering “modern” Winamp skins in the browser
  8. Hyper-Reality
  9. Webamp can pose for the camera
  10. Code golfing interview questions
  11. The Birth & Death of JavaScript
  12. 100k skins: Reflections on the Winamp Skin Museum’s upload flow
  13. Reactive GraphQL Architecture
  14. Why use the Relay Connection Spec?
  15. “KillsParentOnException” a lesson in API naming
  16. no-unused-binary-expressions: From code review nit to ecosystem improvements
  17. From opera to tech
  18. Videos: I used to sing with a men’s chorus
  19. My GraphQL Conf 2024 talk: Semantic Nullability
  20. A video of my wife and I singing Mozart’s Requiem
  21. I was on the Changelog podcast again
  22. How the React model tames N by N code complexity
  23. Hal fixing a light bulb (what software development always feels like to me)
  24. Itsy Bitsy Data Structures
  25. Bob Nystrom explains the Pratt Parser algorithm
  26. Windows93.net
  27. Using Notion as my CMS with Next.js
  28. The Winamp Skin Museum has a secret debug mode
  29. The Winamp Skin Museum is powered by an sqlite3 database
  30. Winamp Skin Mosaics
  31. The bizarre secrets I found investigating corrupt Winamp skins
  32. How I indirectly helped remove stray characters from across the web
  33. Next.js’s unstable_cache() demystified
  34. “Alexa, add half & half”
  35. Grats: A More Pleasant Way to Build TypeScript GraphQL Servers

2023 1

  1. Implementation-First GraphQL

2022 2

  1. Interesting Bugs Caught by ESLint’s no-constant-binary-expression
  2. ?? "" is a Code Smell

2021 10

  1. A VSCode Extension to Clarify Operator Precedence in JS
  2. Implementing Python's Context Manager Pattern in JavaScript
  3. Open .ani Animated Cursors Online
  4. I gave a talk about compiling to WebAssembly in the browser
  5. This Software is Punk Rock
  6. Generating a 12 hour YouTube video with Python
  7. Building the @WinampSkins Twitter Bot
  8. Using Machine Learning to Generate Winamp Skins
  9. Speeding Up Webamp's Music Visualizer with WebAssembly
  10. Talk: Design as an Optimization Problem

2020 2

  1. Rendering Animated .ani Cursors in the Browser
  2. Mainlining Nostalgia: Making the Winamp Skin Museum

2019 1

  1. Implementing a Robust Web Audio API Balance Node

2018 5

  1. I did a Q/A with the Reactiflux community
  2. I did an interview for the Changelog podcast
  3. Making the case for building something useless
  4. I talked about Winamp2-js on the Zeal Interestings Podcast
  5. A Tour of Winamp2-js Features

2017 3

  1. Crash Safari with the Web Audio API
  2. Markdown Today: Journal from any browser
  3. Gzip hates your DRY code

2016 10

  1. Functional JavaScript: Learn by refactoring
  2. I was interviewed for a podcast
  3. "Ah leave me not to pine" ukulele solo
  4. Why linting errors should cause tests to fail
  5. Podcasts I like
  6. Listen Faster: How I Found 30 Extra Hours in My Week
  7. The game Snake in 90 lines of JavaScript
  8. Breaking into open source
  9. Vim Awesome: Talk at the San Francisco Vim meetup
  10. You're underusing Underscore

2015 6

  1. UrlMeme: Make memes anywhere you can type a URL
  2. I gave a talk: Finding Creativity Through Constraints
  3. I think my new paste bin should be immune to takedown notices
  4. How Winamp2-js loads native skins in your browser
  5. Creating the Shepard Tone audio illusion with JavaScript
  6. Drawing mandalas with JavaScript and canvas

2014 10

  1. Surviving Hacker News traffic with the help of free CDNs
  2. I'm glad I factored out jQuery
  3. Why I switched from Vundle to Plug
  4. Speed up Laravel tests with database transactions
  5. Globally install PHP command-line tools with Composer
  6. Writing a custom Codeception module
  7. Infinite javascript array using AJAX
  8. Testing emails with Codeception
  9. Acceptance testing with Codeception and Vagrant
  10. Intro to Vim Talk

2013 12

  1. The two characters that were destroying our CodeIgniter sessions
  2. A trick to get consistent checkbox form values
  3. Laravel 4.1 handles ambiguous routes differently than 4.0
  4. My Git alias for shipping a feature branch
  5. Setting up PHP completion in Vim
  6. Better indent support for PHP in Vim
  7. Issue tracking for your workflow
  8. WhatTheFuckShouldIBeForHalloween.com
  9. Free Edition of Charles Gounod’s Le Crucifix
  10. Piano Four-Hands Arrangement (Wedding Gift)
  11. Papageno's Glockenspiel-kulele [Ukulele Ringtone]
  12. Silly fach generator

2012 7

  1. One way "curl pipe sh" install scripts can be dangerous [proof of concept]
  2. Charlie Chaplin's Smile: Ukulele Solo
  3. Walking Away [Ukulele]
  4. Tom Waits' "Ol' 55" for Jared and Kathleen [Ukulele]
  5. Chelsea's Text Tone [Ukulele]
  6. I Wish I Had The Time [Ukulele/Vocal Multitrack]
  7. I Love You Truly [Ukulele Mp3]

2011 5

  1. [Ukulele Solo] Never On Sunday
  2. Backyard Ukulele Session: Ukulele Videos with Chelsea
  3. I Come To the Garden Alone (For George Morris)
  4. FachMe: Find your roles
  5. "The Surprise Slide" Ukulele Micro Song

2010 5

  1. Electric ukulele ring-tone for Chelsea
  2. Irving Berlin's "Blue Skies" on Eleuke electric ukulele
  3. Jazz Ukuele Video: What's New?
  4. Jazz Ukulele "Love Is a Song" from Bambi
  5. Multitrack Video: "In My Room"

2009 23

  1. Video: I Made a $4 Electric Ukulele
  2. Mary Had a Little Lamb - Parallel Fifths
  3. Original Song: "Driving"
  4. Colors of The Wind (Alice n' The Irving Street Kidz)
  5. Eight-Part Barbershop Tag In Parallel Fifths
  6. [Multitrack] "That's Why I Love You"
  7. [Multitrack] Gilbert + Lisa 30th Anniversary
  8. Happy Birthday/PhD Nathaniel: "That's Mathematics"
  9. [Original Song] "Parking Garage"
  10. [Original Song] "Our Love Will Last As Long"
  11. "Lazy Afternoon" Barbershop Tag
  12. We're Going To Be Friends (White Stripes Cover)
  13. Alice 'n The Irving Street Kidz
  14. Refresh Cannon Bot
  15. Refresh Cannon
  16. Refresh Hero Avatar Game
  17. Original Barbershop Tag: You Beside My Side
  18. Endlessly rising Shepard Tone
  19. Barbershop Happy Birthday For Amanda
  20. Further Backwards ABCs Foolishness
  21. Backwards ABCs One Step Nerdier
  22. The ABCs Backwards
  23. Doo-Wop Multitrack: "Earth Angel" (for Chelsea)

2008 32

  1. Barbershop Multitracks with Zane
  2. Shrewd Simon Short
  3. How I DDOSed myself with an avatar
  4. Play the card game "War" in my avatar
  5. Php only serving one page at a time [fix!]
  6. Your Debut Album (Automated)
  7. PHP: Avatar Hack
  8. New Song: Ballad of the man who can't sing
  9. Get alerts when the emails you send are opened
  10. Drawing mandalas with PHP for my Papa
  11. Multi-track Jazz Standard: Everything I have is yours
  12. Video: Barbershop tag taught with hand signs
  13. Video: Overtone singing
  14. Barbershop Multitrack Tag: Overtone experiment / robot quartet
  15. Barbershop multi-track: Happy Anniversary Chelsea
  16. Alvin sings Schumann's Widmung
  17. Barbershop multi-track: Cry
  18. Barbershop multi-track: I Love To Sing 'Em (Best tag so far!)
  19. Found: "still, the fire hasn't burnt out yet for us Baby, just keep holding on to me Alfonso"
  20. Found: Envelope of old photos and slides
  21. Barbershop multi-track: Original cell phone ring tone tag
  22. Barbershop multi-track: Who'll Take My Place When I'm Gone
  23. Found: Three smutty paper airplanes
  24. Found: "Update on Money Unpaid to Me and Evil Needed to be Stopped"
  25. Barbershop multi-track: Lord, You Made the Night Too Long
  26. My first barbershop multi-track: Love Letters
  27. Found: Socrates Myspace Page
  28. Found: Henry system of music transcription
  29. SFSU Chamber Singers sing for ACDA
  30. My brother's minuet
  31. Youtube also caught my choir
  32. PGP Desktop was causing OS X to run slowly

2007 3

  1. Only the first and last letters of a word need be in the right place
  2. Fixed the two major problems with the MAME cabinet
  3. Mac OS X keychain fix