Items tagged "blog"
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.

Grats: A More Pleasant Way to Build TypeScript GraphQL Servers
Bringing Implementation-First GraphQL to TypeScript via a novel static analysis approach.

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.

{transitions} = f(state)
Thinking about the React component tree as modeling a state machine can help clarify the implications of asynchronous updates and React’s concurrent features.

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.

Using Machine Learning to Generate Winamp Skins
I used thousands of screenshots of Winamp skins and StyleGAN2 to train an ML model generate more Winamp skins.

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.

Charlie Chaplin's Smile: Ukulele Solo
A solo ukulele arrangement of Charlie Chaplin's 'Smile'.

Talk: Design as an Optimization Problem
Video of a talk I gave at Speakeasy JS about the engineering and design philosophy behind the Winamp Skin Museum.

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

This Software is Punk Rock
A reprint of an interview I did with the Italian design magazine Progetto Grafico about Winamp's significance in our digital culture.

Refresh Cannon
I turned my forum avatar image into an interactive projectile aiming game.
Refresh Hero Avatar Game
I turned my forum avatar image into an interactive rhythm streak game.
Generating a 12 Hour Youtube Video With Python
Making a video that smoothly scrolls through 70k Winamp skins over the course of 12 hours.
In Dixie Land (Where I Was Born)
I recorded a barbershop tag 'In Dixie Land (Where I Was Born)' with a Zoom H4.
Building the @WinampSkins Twitter Bot
How my Twitter bot @winampskins works under the hood, how it has evolved over time, and what I've learned from the project.

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

How I DDOSed myself with an avatar
An inventive trick with dynamically generated avatar images, or: How I learned the hard way just how motivated people are by leader boards.
Implementation-First GraphQL
Defining a meaningful distinction within code-first GraphQL server libraries.
Electric ukulele ring-tone for Chelsea
While visiting my parent's cabin in the woods, I created a little ring-tone song with my Electric Ukulele for Chelsea.

My first barbershop multi-track: Love Letters
I recorded a multi-track of the barbershop tag 'Love Letters Straight From the Heart'
Markdown Today: Journal from any browser
A private, mobile-first web app that writes your journal directly to Dropbox.

Long Distance Multitrack Barbershop Tag
I collaborated with friends on a multitracked barbershop tag.
WhatTheFuckShouldIBeForHalloween.com
Generate infinite sexy Halloween costume ideas.

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.
[Original Song] "Our Love Will Last As Long"
I wrote and recorded a novelty love song for Chelsea.

Barbershop multi-track: Mother's Day gift
I recorded a multi-track of a barbershop tag for my mom for Mother's Day.
Multitrack Barbershop Tag With Josh Beld
I recorded a barbershop tag with my friend Josh Beld.
Silly fach generator
I created a website that will generate silly fach names.
Original Barbershop Tag: You Beside My Side
I wrote a barbershop tag for my girlfriend Chelsea.
Get alerts when the emails you send are opened
I wrote a script that sends you an email when the image you embed in your emails is opened.
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.
Alice 'n The Irving Street Kidz
My friends and I recorded a rendition of 'I Want to Hold Your Hand' by The Beatles.
Fix For Digg Link in Sociable 3.4.4 Wordpress Plugin
Sharing a fix I found for the broken Digg link in the Sociable 3.4.4 Wordpress plugin.
My Git alias for shipping a feature branch
A handy Git alias for merging a feature branch into master and pushing it to the server.
A trick to get consistent checkbox form values
A tehcnique to ensure that unchecked checkboxes submit a value of zero with PHP apps.
New Song: Ballad of the man who can't sing
I wrote and recorded an original song about not being able to write.
Video: I Made a $4 Electric Ukulele
I got bored over winter break and make an electric ukulele out of stuff I found in my parent's basement.

New Video Camera: Take Me Out to the Ball Game
I recorded myself singing 'Take Me Out to the Ball Game' off by one word.

Barbershop multi-track: Original cell phone ring tone tag
I wrote and recorded a multi-track of a barbershop tag for my cell phone ring tone.
PHP: Avatar Hack
A php script that generates an image for use as an avatar.
Twitter Bot: UkeChord
I wrote a Twitter bot that sends ukulele chord fingerings via text message.
"The Surprise Slide" Ukulele Micro Song
A micro song for Chelsea, written and recorded while she was in San Diego.

I did a Q/A with the Reactiflux community
Read the transcript of a live Q/A I did about Webamp and Nuclide.
Play the card game "War" in my avatar
I programed a dynamic avatar that plays the card game war.
I did an interview for the Changelog Podcast
I talked about Winamp2-js on the Changelog Podcast.
Jazz Ukulele "Love Is a Song" from Bambi
I arranged and recorded 'Love Is a Song' from Walt Disney's Bambi on my new ukulele.

FachMe: Find your roles
I built a website to help opera singers discover role which might suite their voice.
Found: "Update on Money Unpaid to Me and Evil Needed to be Stopped"
A chaotic note I found taped to a newspaper vending box.
Found: Three smutty paper airplanes
Three paper airplanes I found in San Francisco with writing on them which is decidedly not safe for work.
Barbershop Happy Birthday For Amanda
I multitracked 'Happy Birthday' for my friend Amanda Ortmayer's birthday.
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.
Fly Duet from Offenbach's Orphée aux enfers
A video of Chelsea Hollow and I performing the Fly Duet from Offenbach's Orphée aux enfers.
Eight-Part Barbershop Tag In Parallel Fifths
Experimenting with recording every part in a barbershop tag a perfect fifth higher to create jazzy chords.
Backyard Ukulele Session: Ukulele Videos with Chelsea
Chelsea and I recorded a few songs in our backyard with the help of Beau Lambert.

Laravel 4.1 handles ambiguous routes differently than 4.0
Documenting a change in Laravel 4.1 that affects how ambiguous routes are handled.
Speed up Laravel tests with database transactions
How I used transactions to make my tests run eight times faster.
I'm glad I factored out jQuery
I refactored Winamp2-js to not depend on jQuery, and learned native JavaScript is not so bad.
Drawing mandalas with PHP for my Papa
I wrote a PHP script that generates mandalas based on the size and number of points you give it.
Piano Four-Hands Arrangement (Wedding Gift)
As a wedding gift for Chelsea I arranged a piano four-hands version of the song her dad wrote to sing her to sleep.

Multitrack Video: "In My Room"
On New Years Day some friends and I recorded a multitrack video of The Beach Boys' song 'In My Room'.

[Ukulele Solo] Never On Sunday
I arranged and recorded a solo ukulele version of the classic song 'Never on Sunday'.

Breaking into open source
A detailed guide for those who are struggling to find a way to contribute to open source.
Barbershop multi-track: Lord, You Made the Night Too Long
I recorded a multi-track of the barbershop tag 'Lord, You Made the Night Too Long'
Tag: Sleepy Time Down South
I multitracked a barbershop tag 'Sleepy Time Down South'
Barbershop multi-track: Happy Anniversary Chelsea
I recorded a barbershop tag for Chelsea on our year and a half anniversary.
Refresh Cannon Bot
Geoff's Boring Programming Stuff wrote a bot to beat my Refresh Cannon game.
[Multitrack] "That's Why I Love You"
I recorded an a cappella version of 'That's Why I Love You' by The Flamingos.
Mother's Day Tag: Beautiful Life Long Friends
A belated Mother's Day barbershop tag for my mom.

My brother's minuet
I recorded myself playing a minuet my brother wrote for a music course.
Barbershop Multitrack Tag: Overtone experiment / robot quartet
I recorded a barbershop tag in a robot voice to experiment with overtones.
Row Row Your Boat
I sing 'Row Row Your Boat' in a round with myself, shifting the words one note back each time.

"Ah leave me not to pine" ukulele solo
Video and PDF tablature of a Gilbert and Sullivan aria arranged for ukulele.

Jazz Ukuele Video: What's New?
I arranged and recorded a jazz ukulele version of the classic song 'What's New?'

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.

Original Song: "Driving"
I wrote a song for Chelsea after three years of dating.

Better indent support for PHP in Vim
A .vimrc snippet for better indent support for PHP with HTML.
Setting up PHP completion in Vim
.vimrc settings for PHP completion in Vim
The ABCs Backwards
I learned to sing the alphabet song backwards and recorded it in Golden Gate Park.

Music nerd limericks
Two nerdy music limericks that I wrote.
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.
Tweeting the various things the SF City College hill says
I started to Twitter accounts to document the various things the hill on the south side of the City College has written on it.
Barbershop multi-track: Cry
I recorded a multi-track of the barbershop tag 'Cry'
Doo-Wop Multitrack: "Earth Angel" (for Chelsea)
I recorded a doo-wop arrangement of 'Earth Angel' for my girlfriend Chelsea.

Intro to Vim Talk
I gave a talk at the San Francisco Vim Enthusiasts user group.
You're underusing Underscore
Ten common mistakes people make when using Underscore, and a linting tool to detect them.
Drawing mandalas with JavaScript and canvas
Rewriting a PHP script from 2008 in JavaScript.

no-unused-binary-expressions: From code review nit to ecosystem improvements
How implementing an ESLint rule led to changes in how people write JavaScript
Why I switched from Vundle to Plug
I've found Plug to be superior to Vundle in several regards.
Backwards ABCs One Step Nerdier
I recorded myself singing the ABCs backwards while playing the ukulele.

I Come To the Garden Alone (For George Morris)
I arranged and recorded the hymn 'In The Garden' on ukulele in memory of George Morris.

Recording of robot reading song translation
I goofed around and recorded a robot reading a translation of a song.
Your Debut Album (Automated)
I wrote a PHP script that automates a hilarious method for generating Your Debut Album.
Youtube finally caught me
Sharing a video of me singing Papageno

SFSU Opera Gala: Papageno Papagena Duet
Video of myself and Sanja Wetzel performing the Papageno Papagena Duet in San Francisco State's Opera Gala.
Free Edition of Charles Gounod’s Le Crucifix
I typeset a Creative Commons edition of Charles Gounod's a cappella choral work 'Le Crucifix'.

Barbershop multi-track: Who'll Take My Place When I'm Gone
I recorded a multi-track of the barbershop tag 'Who'll Take My Place When I'm Gone'
Tag: All By Myself Alone
I recorded a multi-track of the barbershop tag 'All By Myself Alone'
"Lazy Afternoon" Barbershop Tag
I wrote and recorded a barbershop tag for Chelsea.

I Love You Truly [Ukulele Mp3]
I arranged and recorded 'I Love You Truly' on electric ukulele for Chelsea.

Chelsea's Text Tone [Ukulele]
A tiny ukulele track for Chelsea's iPhone text tone.

Papageno's Glockenspiel-kulele [Ukulele Ringtone]
A ringtone for Chelsea based on Papageno's Glockenspiel music from Mozart's The Magic Flute.

Alvin sings Schumann's Widmung
I tricked my professor into thinking I found a recording of the Chipmunks singing Schumann's Widmung.
Multi-track Jazz Standard: Everything I have is yours
I record a multi-track of the jazz standard Everything I Have is Yours, with strange harmonies.
[Original Song] "Parking Garage"
I recorded a short song in a parking garage.
GutterGold.com
I designed, coded and published a website for posting things found on the street.
A Tour of Winamp2-js Features
Demo videos of Winamp2-js' more interesting features with notes on how they are implemented.

We're Going To Be Friends (White Stripes Cover)
I recorded a cover of 'We're Going To Be Friends' by the White Stripes with multiple voice parts and ukulele.
I Wish I Had The Time [Ukulele/Vocal Multitrack]
I wrote and recorded a song about not having time to write songs.

I was interviewed for a podcast
My work interviewed me as part of their "employee spotlight" series.
Endlessly rising Shepard Tone
I created the Shepard Tone audio illusion using Lilypond.
I talked about Winamp2-js on the Zeal Interestings Podcast
I appeared on the Zeal Interestings Podcast to talk about Winamp2-js.

Why linting errors should cause tests to fail
Making the case against allowing linting errors in master.
Found: Henry system of music transcription
A strange document I found on the ground which refers to an unknown music transcription system.
Video: Barbershop tag taught with hand signs
I recorded a video multitrack of a barbershop tag, showing all four parts in sol-feg hand signs.

classicalcode.com
Announcing that I've moved domain names

Installed MediaWiki
Announcing that I've installed MediaWiki on my server
Server back up (or so it seems)
Announcing that the server is back up after a period of downtime.
I've started a tech blog
Announcing a new blog for software things that I think are interesting.

Wordpress running
First ever blog post in which I announce that I have wordpress running.
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.
[Video] Tom Lehrer's "My Home Town" on Ukulele
I recorded Tom Lehrer's 'My Home Town' on my cheap $35 Ukulele in Golden Gate Park.

Mary Had a Little Lamb - Parallel Fifths
My dad and I recorded a version of Mary Had a Little Lamb where I sang and played the same song a fifth above.

Irving Berlin's "Blue Skies" on Eleuke electric ukulele
I arranged and recorded Irving Berlin's 'Blue Skies' on my new Eleuke electric ukulele.

Keeping the Party "Up-Tempo"
I recorded a capella versions of two simple piano piece with my friend Joachim Luis.

I gave a talk: Finding Creativity Through Constraints
In which I discuss how constraints have inspired my creative process as a musician and programmer.

FMyLife.com + SadTrombone.com Mashup
I combined FMyLife.com and SadTrombone.com to create a mashup of schadenfreude and comedy brass.
Barbershop multi-track: I Love To Sing 'Em (Best tag so far!)
I recorded a multi-track of the barbershop tag 'I Love To Sing 'Em'
Barbershop Multitracks with Zane
I recorded two barbershop tags with my friend Zane Fiala.
Happy Birthday/PhD Nathaniel: "That's Mathematics"
I got my family to record a math themed song for my brother's birthday and graduation.
Colors of The Wind (Alice n' The Irving Street Kidz)
My friends and I recorded a cover of 'Colors of The Wind' from the major motion picture _Pocahontas_.

Tom Waits' "Ol' 55" for Jared and Kathleen [Ukulele]
I recorded a simple version of Tom Waits' 'Ol' 55' for my friends Jared and Kathleen's wedding.

Walking Away [Ukulele]
An original song from the vaults. Recorded on my first ukulele into my first (MacBook) laptop.

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.
One way "curl pipe sh" install scripts can be dangerous [proof of concept]
One way in which 'curl pipe sh' install scripts can be dangerous.
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.
Winterreise Blog
I have started a blog about Franz Schubert's Winterreise.
Found: Socrates Myspace Page
A drawing I found depicting what Socrates' Myspace page would look like.
Found: Envelope of old photos and slides
I found an envelope of old photos and slides in a PG&E bill return envelope.
Found: "still, the fire hasn't burnt out yet for us Baby, just keep holding on to me Alfonso"
I found a letter in which the writer tries to assure the recipient that the fire hasn't burnt out yet for them.
Some of my finds have been chosen for "Find of the Day"
Four of my finds have been chosen for the Found Magazine's Find of the Day feature.
Youtube also caught my choir
Sharing a youtube video of the choir in which I sing.

SFSU Chamber Singers sing for ACDA
A video of my choir singing at St. Boniface Church in Anaheim, California.

Video: Overtone singing
I experiment with overtone singing.

Further Backwards ABCs Foolishness
I sing the alphabet song with the melody backwards, the words backwards while showing solfegge hand signs and conducting.

Opera stuff looking for good home (free)
Trying to find a home for a collection of opera libretti, Opera News, and San Francisco Opera programs.
[Multitrack] Gilbert + Lisa 30th Anniversary
I recorded a little audio drama for my parents 30th wedding anniversary featuring characters and musical excerpts from the hilarious musical Forever Plaid.
Php only serving one page at a time [fix!]
I uncovered the reason why my php server was only serving one page at a time.
The two characters that were destroying our CodeIgniter sessions
Documenting a bug in CodeIgniter that causes sessions to be irretrievable.
Acceptance testing with Codeception and Vagrant
How to get Codeception acceptance tests working in a Vagrant workflow.
Testing emails with Codeception
A Codeception helper to test emails sent by your application.
Writing a custom Codeception module
How to write a custom Codeception module and distribute it as a Composer package.
Globally install PHP command-line tools with Composer
How to install CLI tools wiht Composer.
Vim Awesome: Talk at the San Francisco Vim meetup
Video of a talk I gave introducing and explaining Vim Awesome.

Refresh Cannon Returns
I got my server back up and running and now you can play Refresh Cannon again.
UrlMeme: Make memes anywhere you can type a URL
I made a meme generator where the URL is the user interface.

Are your digital memories going to be there when you're old?
Thinking about the challenges of preserving digital memories
Podcasts I like
A summary of the podcasts to which I subscribe.
Making the case for building something useless
Why I'm perfectly happy to have built something that nobody really uses.
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.
Barbershop tag taught as a limerick
I wrote a limerick which dictates a singable barbershop tag.
Shrewd Simon Short
I recorded myself reading a tongue twister story about Shrewd Simon Short.
Mac OS X keychain fix
How to fix a corrupt keychain file on Mac OS X
Fixed the two major problems with the MAME cabinet
Update on my MAME cabinet project.
Only the first and last letters of a word need be in the right place
A made a script that scrambles the inner letters of words but, surprisingly, leaves them still readable.
PGP Desktop was causing OS X to run slowly
Sharing an issue I found where PGP Desktop was causing my computer to run slowly.
Issue tracking for your workflow
I've been using GitHub issues to track problems with my workflow.