Implementing a Robust Web Audio API Balance Node

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

I did a Q/A with the Reactiflux community

Read the transcript of a live Q/A I did about Webamp and Nuclide.

I did an interview for the Changelog Podcast

I talked about Winamp2-js on the Changelog Podcast.

Making the case for building something useless

Why I'm perfectly happy to have built something that nobody really uses

I talked about Winamp2-js on the Zeal Interestings Podcast

A Tour of Winamp2-js Features

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

Crash Safari with the Web Audio API

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

Markdown Today: Journal from any browser

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

Gzip hates your DRY code

How to remove code and still increase your library weight.

Functional JavaScript: Learn by refactoring

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

I was interviewed for a podcast

My work interviewed me as part of their "employee spotlight" series.

"Ah leave me not to pine" ukulele solo

Video and PDF tablature of a Gilbert and Sullivan aria arranged for ukulele.

Why linting errors should cause tests to fail

Making the case against allowing linting errors in master.

Podcasts I like

A summary of the podcasts to which I subscribe.

Listen Faster: How I found 30 extra hours in my week

I’ve added the equivalent of 30 hours to my week, all dedicated to reading and listening

The game Snake in 90 lines of JavaScript

I wrote a minimal implementation of the game Snake in JavaScript

Breaking into open source

A detailed guide for those who are struggling to find a way to contribute to open source

Vim Awesome: Talk at the San Francisco Vim meetup

Video of a talk I gave introducing and explaining Vim Awesome

You're underusing Underscore

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

UrlMeme: Make memes anywhere you can type a URL

I gave a talk: Finding Creativity Through Constraints

In which I discuss how constraints have inspired my creative process as a musician and programmer.

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

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

Replacing Jekyll with 14 lines of run-anywhere JavaScript.

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 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.

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.

Drawing mandalas with JavaScript and canvas

Rewriting a PHP script from 2008 in JavaScript.

Surviving Hacker News traffic with the help of free CDNs

Free CDNs are a thing, and they can be put to use almost instantaneously during an unexpected traffic spike.

I'm glad I factored out jQuery

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

Why I switched from Vundle to Plug

I've found Plug to be superior to Vundle in several regards.

Speed up Laravel tests with database transactions

How I used transactions to make my tests run eight times faster.

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

Setting up PHP completion in Vim

My Git alias for shipping a feature branch

Issue tracking for your workflow

Better indent support for PHP in Vim

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]

I Wish I Had The Time [Ukulele/Vocal Multitrack]

Chelsea's Text Tone [Ukulele]

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

Irving Berlin's "Blue Skies" on Eleuke electric ukulele

Electric ukulele ring-tone for Chelsea

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"

Twitter Bot: UkeChord

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

In Dixie Land (Where I Was Born)

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)

Keeping the Party "Up-Tempo"

Barbershop Multitracks with Zane

Shrewd Simon Short

Play the card game "War" in my avatar

How I DDOSed myself with an 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: Overtone singing

Video: Barbershop tag taught with hand signs

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!)

Some of my finds have been choosen for "Find of the Day"

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: Who'll Take My Place When I'm Gone

Barbershop multi-track: Original cell phone ring tone tag

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

SFSU Chamber Singers sing for ACDA

Found: Henry system of music transcription

My brother's minuet

Youtube also caught my choir

PGP Desktop was causing OS X to run slowly

How to actively connect to a local Verlihub

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