Hang the DJ case study

Hang the DJ – the interactive playlist for people who share speakers

Hang the DJ
  • Client
    Personal project
  • Agency
  • Role
    Founder, designer, developer
  • Tasks
    UX, UI, prototyping, development
Presentation mode
Hang the DJ running in presentation mode

After months of listening to the same playlist that a colleague of mine had put together, everyone in my office was pretty tired off those 120 or so songs, but no one had the energy to create a new one.

Hang the DJ was conceived as an attempt to come up with a better solution for groups of people sharing speakers. It is a collaborative playlist that lets everyone in the room add their favourite tunes – it’s as easy as finding a song on Spotify. Think of it as a jukebox that lets you see who added which song while avoiding the fight over the aux cord.

Starting with a prototype

Hang the DJ started as a simple prototype created in 2 weeks, with no preliminary design made. It looked a bit like an old version of Spotify. It was immediately put to use in my office, effectively turning the office into my personal user testing lab. Observing how people are using Hang the DJ has been the driving force behind every tweak, change or feature added since launch.

One week in a couple of challenges were already identified; songs would tend to be added in waves. When someone added a song that was widely liked, people would join in and start adding more songs, and some users would add loads of songs effectively taking over the playlist for hours before the next person’s songs were played. This was particularly frustrating when someone had decided to queue up several S Club 7 albums. These spikes would be followed by hours of no one adding songs because they were preoccupied with other activities, and so occasionally the music would stop.

An early prototype
Screenshot of a very early prototype with voting implemented. The cover art was later given much more prominence as seen in the screenshots below.

Two main ideas were conceived because of this: a voting system to control the flow of the songs by ordering them by a vote count (3 up votes and 1 down vote giving a vote count of +2), and an implementation of Spotify’s related songs algorithm to fill out the gaps when people weren’t adding songs – I call it the ghost playlist – without going completely off piste genre-wise.

The two ideas would eventually be tightly interlinked, but at first they were conceived as completely siloed concepts. Anything added to the playlist would affect the algorithm and between a couple of indie tracks, a couple of rap tracks, and a Mariah Carey song, Spotify’s algorithm would sometimes serve up a pretty weird mix of Christmas songs, gangsta rap and emo tracks.

The up and down voting system would move liked and upvoted songs up the queue and unliked and downvoted songs down the queue or entirely off the queue. Users would naturally form themes, ie. 90’s r’n’b, 80’s post punk, etc. and songs added by users that deviated from these themes would quickly be downvoted off the playlist.

To maintain a coherent ghost playlist, I created an invisible seed playlist –a list of songs fed to the Spotify related tracks API which in turn returns a new list of related songs. The seed playlist contains the 3 latest user added songs and leaves out any songs with a below zero vote count. I found that a seed playlist of more than three songs made Spotify return an incoherent list of related songs, and a shorter seed playlist would too easily create abrupt genre changes.

The initial versions ran on a Raspberry Pi, but as I wanted Hang the DJ to be available to all types of users, I quickly moved onto a cloud platform allowing me to get users setup running a ‘party’ in just three steps and with nothing but a browser required.

All notifications Single notication

Product launch and impact

Hang the DJ went live in February 2019. I probably broke all the good rules of launching a product. While I had help writing the copy for the product site, everything else was designed, built and managed by me – including: the web app, iOS/Android apps, and product site.

With the core product finally running smoothly I could start heroing some of those roles that users took or were given during the daily use of the product; the procrastinator who spends all day adding music, the person whose music no one else likes, the hater who downvotes everybody’s songs, the troublemaker whose songs get everyone voting, and finally the most upvoted user. Every Friday these people are called out.

Another thing I observed was how much people would connect over a shared love of a song, so to help establish those bonds Hang the DJ notifies a person who's added a song when someone else upvotes it. Downvotes are kept anonymous.

Initially most plays were happening during office hours, and it got particularly busy on Friday afternoons – initally crashing my server until I implemented a series of code optimisations. As the months progressed I saw an increasing amount of users returning at night time on Fridays and Saturdays, meaning users were seeing its value outside office hours too.

Weekly stats
Weekly stats – see who’s added the most songs and many other stats.
Playlist history
Playlist history – see what’s been played and who added it.
the mobile app
The Hang the DJ mobile app – the product website