Hello! I am a software engineer, writer, and musician, the common ground between which is the manipulation of structures like code, chords, layouts, grammar, and so on. Over the years I’ve worked as an interactive data visualization engineer at the New York Times and as a journalist for The New Yorker magazine, coded custom multimedia software for Bob Dylan’s internal archives, edited a weekly newspaper, engineered and produced recording sessions, taught kids how to code and play instruments, and written columns for Spin, The Village Voice, The Awl, and McSweeney’s.


Selected Projects

🚨 !?!?!?!?dsakjlfdsa 🚨

An Interactive Guide To Ambiguous Grammar
Satirical English lesson for McSweeney’s about destructive uses of language.
Writers of Color
An index of writers sorted by location and expertise to help diversify editorial recruiting, with an accompanying Twitter account for posting job opportunities.
Genius security investigation
My attempts to confound the controversial web annotation tool led me to discover that it was strategically undermining a browser security feature in order to exploit it, so I wrote a long reported feature about my findings for The Verge.

🤓 Code 🤓

repeatable randomization for JavaScript.
binds arrays across time ranges in HTML5 audio and video elements so the current position of the playback head can serve as the array index.
shell preprocessor for extracting Markdown code blocks to enable “literate programming” in any language, an agnostic implementation of similar features in CoffeeScript and Haskell.
D3.js plugin to enable deep-linking in data visualizations.
D3.js plugin to overcome the limitations of text wrapping in SVG images.
D3.js plugin which selects nodes by searching upward in the DOM hierarchy.
Bookmarklet to enable visual debugging of D3.js data binds on the fly without inserting console.log() calls.
CSS Zen Garden API
A lightweight JSON REST API implemented in pure CSS, sort of.

✏ Words ✏

The Evolution of the Web, In A Blink
An article for the New Yorker’s tech blog about the shifts in web browser rendering engines and their likely effects on the future of the internet.
The Software that Builds Software
An early history of GitHub for the New Yorker.
Software Can Have Opinions
For New York magazine, explaining the design philosophy of “opinionated” software and its possible ramifications for the FBI’s legal assault on encryption.
Nobody Can Build An Email Killer
An op-ed for New York magazine about how the funding practices of Silicon Valley impede the development of new communication tools.
Loving The Robots
For the Village Voice, an essay about moving to New York City while trying to listen primarily to academic experimental music.
My Heart Feeds A Series of Tubes
For The Message, Medium’s internal editorial incubator, a history of the personal problems I’ve tried to solve through technology.
It’s No. 1 Somewhere
A column for Spin about major pop chart hits in foreign countries.

🎨 Graphics 🎨

Demonstrations of my D3.js plugins and other sketches and experiments.
Are Zombies Racist?
Satirical interactive network visualization for McSweeney’s.
What You Look Like to a Social Network
For the New Yorker, an accounting of the data fields contained in API responses.
Diversity in Journalism
Historical demographics of newsroom leadership positions across a wide array of newspapers, magazines, and web sites.

🔊 Audio 🔊

Tape Op archive
Assorted feature articles for the recording studio industry magazine.
Yo! Audio
Absurdist fake research paper about sampling rates and bit depths.
Cast In Concrete
Village Voice column reviewing field recordings I captured of New York City buskers and street musicians.