Now Playing Music in Git

About 20 years ago (😭), before we had smartphones, when using a computer meant sitting at a desk the entire time, we had these things called “away messages”. You see, because sometimes you would be away from computers and unreachable. It was a wild time.

AOL was a company that distributed free discs to your mail and as a side hustle they provided internet services by making two computers scream at each other over the phone line. I swear to you I’m not making any of this up, kids. AOL Instant Messenger, or AIM, was a free chat program they provided, and it was the most popular place to chat for a time (among certain social circles, during a specific time, look there are all sorts of disclaimers here, just let me have my nostalgia). AIM had away messages for when your computer was still screaming at another computer over the phone line, but you weren’t actively sitting at it. You were what was known as “afk” or “away from keyboard”, because at the time it was conceivable that you wouldn’t be within arm’s reach of a keyboard sometimes. Again, this is wild to remember, but it was just normal.

But the thing about AIM messages is they had cultural tropes. Prototypical memes, basically. When you were dating someone, you declared undying love to them in your away message, and if it was Serious you included song lyrics dedicated to them. You could include quotes or jokes or try and be witty. Look, it was basically early Twitter, okay?

But the most common trope I saw was including whatever was currently playing on your computer in your AIM away message. OK, I need to explain this one. We used to download files onto our hard drives, meticulously and manually organize them in this program called iTunes, and play them. (Before that there was this thing called Winamp, which represented an era of software development that was just so great, but that’s neither here nor there.) And if you wanted to listen to them on another device, you had to copy the files over by hand. If you wanted to listen to them in your car, you had to burn them onto a CD and put the CD in. If your car didn’t have a CD drive, you probably just listened to the radio in the car instead of your music. The “radio” was basically like the free version of Spotify, but you didn’t get to pick what songs were played unless you called up an actual person on the phone and asked nicely and they decided to listen to you. Oh and also everyone in a village/town/city listened to one of the 12 stations at the time, so they were basically just broad genres, and you had to listen to whatever song was playing in that genre or nothing. Oh, and also there were prototypical podcasts, too, but sometimes it was just a podcast host talking between songs. It was weird.

So anyways, yeah, if you were playing music and it was your music you had either 1) bought it or 2) stole it (this was more popular, which is part of the reason copyright is the way it is right now, sorry about that) and you were playing it on a specific device, and if that device happened to be the same one you were logged into AIM on, you got to display the song you were currently listening to as part of your AIM away message.

Recently, I had albums from boy bands from this time period playing on repeat as I fought with a hard programming problem, and it made me smile thinking about all of the Very Serious Engineers that would be using this thing I was making and imagining them all offering thanks to “Everybody (Backstreet’s Back)” (ask your parents) for the problem being solved, because music is an important part of how I write software. ADHD is wild, and I need to give my brain an overly-dramatic or grandiose bone to gnaw on so that I can do things.

Months later, no longer working on those kinds of problems, I was thinking about it again and got nerdsniped. I want to partially blame Anil Dash for this one, I think, because I’ve had “how many things you use are made by people who care about you instead of by giant corporations” on my brain ever since he said something like that. And I was thinking about making things while being yourself and what a great way to make friends that is.

And so I made a monstrosity.

I put together a Go program to replicate the experience of having an AIM message with your currently playing song in it, but for git. It checks in with Spotify and/or Plex every ten seconds and asks what you’re listening to. It then updates the default git commit template to include that information. A few notes about how it includes that information:

  • I put each piece of metadata (artist, track, album, any unique IDs I could get my hands on) in its own line of the commit, for easier parsing. Because I want it to be human readable, but still machine-parseable. We’ll get back to that.
  • I prefixed every line with a 🎵 emoji, for easier machine parsing.

Why do I want to be able to parse these with a machine? Because it seemed neat to me to be able to look at all the commits in a release and say “this release was brought to you by these songs”. I’ve grown enamored with authors releasing playlists for their books, and wondered what a software release’s playlist would look like. And it turns out if we’re recording what we’re listening to in git commits when we make them, we can generate one! That seemed like a neat possibility, so I left the door open for it.

Now, this whole thing is a bad idea for a few reasons:

  • Your employer probably will not be thrilled about you including which boy band you were listening to at work in your git commits. Something something “professionalism” something something “keep git commit messages useful” something something. I will not be using this at work, and only partially because I’ve stopped working on things that people outside the company use and so the audience is limited.
  • Honestly, I probably could’ve done this as a git hook instead of a daemon, but there’s a trade-off there of “not needing to poll APIs” vs “needing to wait for API requests to be made before writing a commit”. We’ll see if/how that evolves.
  • It turns out Plex has no useful IDs for music exposed, despite matching your library with MusicBrainz’ data to get its metadata. Plex’s API (technically, not a thing) in general makes me sad. Imagine going to all the trouble to own your media and keeping it on your local network and then not being able to build any automation around that. What the heck, Plex.

But you know what? I think it’s okay to include some of ourselves in the software we write, and to make some software at least the creation of people, not corporations. And this felt like a small, silly step towards that. And when I think about my ideal future of technology, what I envision is a bit small, a bit silly.