Snag Trees at Turntable.FM February 20th, 2013 at 11:29pm

If you have a second, check out this post I wrote for the Turntable blog about a cool data graphic I made during our internal hack day.

Reading the chart, like reading the rings on a tree stump, requires a bit of explanation: The cluster of green dots in the middle represent a song’s “primary sources” – that is, people who added the song to their queue on their own, either by uploading it or searching for it in our library. Each grey line is a snag from another user, represented by the yellow dot at the other end of the line. As they play the song for more people, the “snaggers” become “snaggees”, adding another layer to the tree and spreading the music out to more people.

Not content to stop there, I began to plug in more and more songs to see what their snag trees looked like. Not surprisingly, there is as much variation in these patterns as there is in the songs themselves. Soon we were able to identify a few common species of tree.

I hacked the thing together in a day thanks to D3.js and 2 years worth of data in our MongoDB database. Unfortunately, I can’t open source the code, but the tree generator may be available to Turntable users someday soon. Here are a few more of my favorite snag trees:


Ohhh man… I haven’t been this excited for a kid’s movie since I was a kid.

BrightBrightGreat 2009 Launched! March 25th, 2009 at 7:13pm

For the past month or two, I’ve been working with my friend Jason on a redesigned website for his brainchild/graphic design LLC, Bright Bright Great. I’m proud to say the site is officially live today, go check it out at! Jason’s a great designer, and he’s provided me with a steady stream of freelance coding work, for which I’m eternally grateful. We’re a pretty rockstar duo, so if you’ve got a project that needs designing or coding, please drop me or Jason an e-mail or tweet.

A side note: My cross-browser testing cycle has been significantly streamlined lately, thanks to my switch to Mac hardware this past year, VMWare Fusion, and Xenocode’s browser virtual machines. I’d implore anyone who has trouble with this annoying but necessary part of web development to give this workflow a shot. Here’s my post-X-testing screenshot, showing IE6, 7, 8, Opera, Chrome, Safari, and FF Mac/Win. Cool!



Back in the summer of 2006, when I was a wee sophomore moving out of the CU dorms, I spent nine days on perhaps the nerdiest road trip ever taken. Driven by my friend Nick Bradley’s dream to visit every single county seat in the great state of Colorado (there are 64), Nick and I, along with our friends Ryan and Kristina, planned a route 3434 miles long (longer than the distance between Seattle and Miami) which visited every last nook and cranny in the state. To do this, I wrote a Python script which queried Google Maps for driving distances between each county seat in the state, and a Matlab program which approximated a Traveling Salesman solution for the matrix to give us the most efficient order in which to visit them. (I warned you it was nerdy.) If anyone thinks they could do it in much less than 3434 miles, I’d love to see a better route!

The trip was amazing: we visited some of the greatest strange tourist attractions, small towns and homemade castles in the state, and to prove that we visited each and every county seat, took a series of progressively more absurd snapshots in front of each and every county courthouse. And, since we were all engineers, we blogged the entire trip (including a map of our progress, miles traveled, and a careful log of each album listened to) from the road, at coffeeshops and truckstops, as it happened. That blog has been located here, but I’ve recently imported all the entries to my new blog on this domain. So, without any further adieu, please enjoy “The County Trip,” a nine-day road-blog, presented for the first time on

The County Trip: Finalized Map
Tuesday, May 9th, 2006

PodCamp Boulder 09 is a wrap! January 25th, 2009 at 11:41pm

PodCamp Boulder 2009, held at the Threadless/SkinnyCorp office on Pearl Street, was a great success, thanks to Jeremy Tanner and the awesome Boulder new media community. I didn’t take any photos, so here’s some I stole off of Flickr:

Photo: Andrew Hyde

Photo: Andrew Hyde

Photo: Andrew Hyde

Photo: Andrew Hyde

Photo: Kit Seeborg

Photo: Kit Seeborg

PCB’09 Diary:

7PM 1/23: PodCampers convene to decide the fate of tomorrow’s unconference. Much beer is consumed, (thanks to Slice of Lime,) though the only bottle openers present are a fork and Griffin’s wallet. Topics discussed include podcasting, wordpress plugins and hacks, Twittiquette, and animated .GIF’s. I sign up to talk about API’s and the Semantic Web.

2:30AM 1/24: I go to bed, and wish I hadn’t spent so much potential sleep time on tweaking my presentation for tomorrow.

9AM: Sleepy PodCampers devour Einstein bagels + coffee.

10AM: Neil Simon gives a great presentation on creating a WordPress plugin, something I was learning anyway for this blog. Includes handouts of all code, commented and annotated. I love my geeks.

11AM: Jeremy Tanner and friends talk about WordPress hacks. I never realized how many awesome WP plugins exist.

12PM: Discussion about Amazon’s EC2 elastic cloud services, led by Ronald Lewis. I’ve always wanted to give this a shot, but I always figured I had to pay an initial fee and be a l33t sysadmin to get started. In fact, Amazon charges only by bandwidth/storage, and has tons of pre-configured server images. I can launch a server instance from my iPod, and therefore feel like a badass. Thanks Ronald!

1PM: Eric, Griffin and I retire to Illegal Pete’s for some burrito action. We return to an open keg of K-9 Winter Ale, courtesy of Flying Dog, just in time for me to drink some courage before my 2PM preso!

2PM: I lead a relatively well-attended discussion about API’s and the future of the semantic web. It is filled with nuggets of brilliance from all involved. Afterwards, I have a cool dialogue with Jed White, and decide he is effin’ smart. See my presentation here.

3PM: After lots of meandering, I end up in a talk about advertising and new media, especially as they relate to podcasts. We decide that, while targeted advertisements via semantic contextual analysis (ie. GMail, Dapper et al) are cool, there is another variable involved: reputation. I am much more likely to buy or be interested in a product if it is directly mentioned by someone whose opinion I trust than if it just appears in their ad area, even it’s directly related to what I’m reading about.

4PM: The moment everyone has been waiting for arrives: PodCampers morph temporarily into zombies in order to learn the Thriller dance, led by Naomi. Jeremy posts a video online, to the chagrin/amusement of all involved:

Unfortunately, I’m about dead center in the video from :50 on.

5PM: More beer is consumed. Cornbread hates being called Cornbread. I bid a sad adieu to my PodFriends, and they head to Goremet (scary movies + scary food) in Denver. A long, great day comes to an end, and I leave feeling inspired.

Thanks again to all organizers, sponsors and attendees! This was an awesome event, and proves that a conference does not require lots of $$$ and expensive speakers to foster truly brilliant conversation.