Jordan Eldredge

Items tagged "javascript"


Mainlining Nostalgia: Making the Winamp Skin Museum

Thoughts on what I think made the Winamp Skin Museum successful.


Speeding Up Webamp's Music Visualizer with WebAssembly

Writing an in-browser compiler to compile untrusted user-supplied code to fast and secure Wasm at runtime.


Interesting Bugs Caught by ESLint’s no-constant-binary-expression

I contributed a rule to ESLint that catches a surprisingly wide variety of logic bugs.


Grats: A More Pleasant Way to Build TypeScript GraphQL Servers

Bringing Implementation-First GraphQL to TypeScript via a novel static analysis approach.


Rendering Animated .ani Cursors in the Browser

Technical breakdown of how the NPM module ani-cursor converts .ani files into CSS animations in the browser.


A VSCode Extension to Clarify Operator Precedence in JS

I wrote a VS Code extension which shows subscript parentheses in your JS code to help clarify operator precedence.


A nice way to render Markdown in React apps

A pattern for rendering Markdown in React apps directly from an AST without any serialized HTML


I gave a talk about compiling to WebAssembly in the browser

Video of my TSConf 2021 talk entitled "Faster, Safer: Compiling Untrusted Code to WebAssembly in the Browser".


Rendering “modern” Winamp skins in the browser

Writing an interpreter for a custom bytecode opens the door for rendering interactive custom Winamp skins in the browser


The Super Tiny Compiler

A tiny compiler written in JavaScript perfect for hands on learning


Open .ani Animated Cursors Online

I made a simple website where you can instantly open and view any .ani file for free.


How Winamp2-js loads native skins in your browser

How we get from a binary Winamp skin file to seeing Winamp2-js take on the look of your favorite skin, all within the limitations of your browser.


Markdown Today: Journal from any browser

A private, mobile-first web app that writes your journal directly to Dropbox.


My GraphQL Conf 2024 talk: Semantic Nullability

Youtube video of the talk I gave at GraphQL Conf 2024 covering advanced client error handling and its implications for potentially fundamentally solving the problem of pervasive nullability in GraphQL


Turning the database inside-out with Apache Samza

This post on scaling data systems taught me to understand Redux


Using Notion as my CMS with Next.js

Why I chose to use Notion as the backing CMS for the Notes portion of this site, and the technical details of how it’s implemented


I'm glad I factored out jQuery

I refactored Winamp2-js to not depend on jQuery, and learned native JavaScript is not so bad.


Client data should not need to exceed O(screen size)

A rule of thumb for thinking about scaling client application state


Implementing Python's Context Manager Pattern in JavaScript

Python Context Managers are a great way to model resources with setup and teardown. Here's how to implement that pattern in JavaScript.


The Birth & Death of JavaScript

Sharing this classic brilliant, hilarious and prophetic talk about the crazy language that is JavaScript


How Relay Enables Optimal Data Fetching

Sharing a blog post I wrote about what makes Relay so special


Reactive GraphQL Architecture

A vision for using GraphQL on the client for local-first apps, apps using e2e encryption, and other apps with heavy client state


I think my new paste bin should be immune to takedown notices

I recently released a new website called HashBin which avoids being able to see the content the pastes it helps create.


How the React model tames N by N code complexity

Explaining how exactly the UI = f(state) model tames code complexity


You're underusing Underscore

Ten common mistakes people make when using Underscore, and a linting tool to detect them.


100k skins: Reflections on the Winamp Skin Museum’s upload flow

A technical breakdown of the Winamp Skin Museum’s over-engineered upload flow, and how it helped create a positive feedback loop


no-unused-binary-expressions: From code review nit to ecosystem improvements

How implementing an ESLint rule led to changes in how people write JavaScript


Creating the Shepard Tone audio illusion with JavaScript

The Shepard Tone is an audio illusion that creates the impression of an endlessly rising or falling tone.


Crash Safari with the Web Audio API

Discovering, reproducing, and working around a bug that crashes Safari hard.


Implementing a Robust Web Audio API Balance Node

After more than four years, I'm finally happy with how Webamp implements balance.


Drawing mandalas with JavaScript and canvas

Rewriting a PHP script from 2008 in JavaScript.


Web Audio regression in Safari iOS 17 Beta

Documenting a regression, I observed in iOS’ implementation of the web audio API


On ephemeral UI, fragile app state, and anxiety

Ephemeral UI make us nervous because we’ve learned that there’s a high likelihood lose our state by accident



A Tour of Winamp2-js Features

Demo videos of Winamp2-js' more interesting features with notes on how they are implemented.



Code golfing interview questions

A very silly code golf solution I came up with that I’m still amused by ten years later


Itsy Bitsy Data Structures

Sharing this repository which teaches data structures through charmingly commented JavaScript implementations


The Chrome team is working with the SQLite team on an official Wasm build

SQLite is getting an official Wasm build


The game Snake in 90 lines of JavaScript

I wrote a minimal implementation of the game Snake in JavaScript.


Gzip hates your DRY code

How to remove code and still increase your library weight.


?? "" is a Code Smell

Defaulting to empty string is a lie we tell our type checker.


Jerkll: A tiny static site generator that runs in your browser

Replacing Jekyll with 14 lines of run-anywhere JavaScript.


UriBin: A self-replicating paste bin that lives in url shorteners

I wrote a mad-scientist project that creates self-replicating paste bins that live in URL shorteners.


Webamp can pose for the camera

Webamp.org has a feature that lets it pose as if it were in action


Infinite javascript array using AJAX

A simple way to asynchronously load suggestions into an array in JavaScript.


Functional JavaScript: Learn by refactoring

Learn the basics of functional programming by iteratively refactoring imperative code.