Category Archives: Music

Anatomy of a Hack – Books, Music & CODEX

Awhile back I randomly found out about CODEX Hackathon, a “literary hackathon” mashing up books and technology, and I knew I had to get involved. I started by registering to attend, but realized pretty quickly I wanted to do more. I volunteered to helped organize and sponsor, which I’ll write about later. I also hacked, and wanted to share what I came up with, and how I came up with it.

I’ve been interested in the intersection of books and music for awhile. I used to write book reviews with embedded playlists of what I was listening to while I read the book. Or make playlists of music mentioned in a particular book – for example, the early jazz mentioned in Kathleen Ann Goonan’s In War Times. Or read interviews where authors talk about the music that inspired them as they wrote.

And write why Books & Music go together like Wine & Chocolate.

Books & Music: Like Wine & Chocolate

Books and music go together like, well, wine & chocolate. Settling down on the couch with a great book, a glass of wine, and some great music has to be one of life’s guiltiest pleasures. Heck there’s even a quiz that, given your favorite wine, will pick some books & music for you!

So when this hackathon came along, the juices had been flowing for awhile and I knew what I wanted to do. Build an environment where people could collaboratively build and share music playlists for their favorite books.

I had the basic idea framed out in my head. I’d use the Spotify web player and hack up a branch of to become the new thing. Seemed like a layup, all their Web APIs are sitting right there. Spotify has a feature for “collaborative playlists” – what could go wrong, right?

After some presentations from sponsors (I was a sponsor, here was my pitch for The Hawaii Project), we get down to it, at 11am Saturday morning.

Here’s a quick timeline from my notes:

start @ 11
around 12, have a Master & Commander (Patrick O'Brien’s book) page with a static playlist on it. Everything hard coded but I can listen to music for the book and it visually looks pretty good!

My plan is to use Spotify’s Collaborative Playlist feature so everyone can add to the playlist (and be authenticated to Spotify in the normal way via their browser). SNAG! Turns out making a Playlist “Collaborative” in Spotify makes it Private so only collaborators can see it. Even worse, via the API, only the Owner can modify it. That pretty much blows the whole idea out of the water.

OK, Plan B. I will make a Hawaii Project Spotify account that will own all the playlists. When users add an item to a playlist I’ll send it to my server and the server will add it to the playlist. Because the API calls have to authenticate (via OAuth) to the Spotify server, I have to figure out how to authenticate in PHP to Spotify without a browser around. I dumpster dive in Stackover flow and find The Hint (thank you Michael Thelin!).

12:00 : 1:30pm. I struggle to get The Hint to work in practice. I take a break and grab lunch (wonderful sandwiches and Hummus, CODEX has great food!).
3:41pm EUREKA!!!! I get a valid spotify token and successfully retrieve a playlist!!!!!
3:42pm. My token expires and I can’t figure out how to get it to renew.
7:45pm. I think I get a repeatable way to add tracks, at least until my token expires. which I have to renew manually. OK for a demo but can’t actually go live with that. I’ve spent ~50% of my hacking time on OAuth. Not what I had in mind.
8:30pm. I have some basic track search + autosuggest for tracks working. (like when you type “Stairway to H” I suggest “Stairway to Heaven by Led Zeppelin”)
8:50 Stairway to Heaven and Highway to Hell added to playlist via UI. !!!!!!
9:50 Code cleanup. Things basically working with a single hard-coded book & playlist ID, except hacky tokens & expiration.
10:00 Did I mention this is a hackathon for Adults? MIT kicks us out at 10pm. Home. Martini. Sleep.
6:30 am up, by 7:40am On the train.
8–9 in coffee shop because MIT doors locked. Quickly solve some problems with playlist views and track list ordering problems solved. still struggling with expiring oauth tokens.
10:00 With the exception of tokens, I have what I need for a workable demo, can search for and add tracks to any book.
10:30–11. Make some fun playlists for some of my favorite books!
11:12 roll a new home page showing the latest books that have soundtracks created.
12:30. stop and roll a deck for the presentation.
1pm. Hands off the keyboard at 2pm for presentations, so I decided to adopt the “Vietnam strategy”. Declare victory and get out. I avoid breaking my demo with any late changes, and go chat with a few interesting folks I didn’t have time to get to before.

Presentation went well (in fact everyone’s did!). I start my presentation with the James Bond theme and end with adding Highway to Hell to a playlist, and playing it over the speakers as I exit. Mission Accomplished.

I wanted to launch it to a live URL during the Hackathon, but I just couldn’t solve the expiring token. On the drive home, I decided that tomorrow I’d ask my son-in-law, who is an actual practicing software engineer. But I wake up the next morning and, as often happens, within about 20 seconds I see a typo that’s been causing me all this grief. Edit, “git commit -m “I’m an idiot””, and a few minutes later, voilá: BookPlaylist is born!

As I write this, I’m jamming to Kayti’s most excellent playlist to Cinder, a book I’ve not read. But now might.

Cinder (Lunar Chronicles)

It was really fun to take an idea that I’ve had in my head for almost a year, and get it out of my head and into something real. Hope you get a chance to play (pun intended) with it!

You can read a bit more about the Hackathon here (via Matthew S Carroll, one of the organizers.

Welcome to the CODEX Hackathon 2016 – 3 to read

It’s all about books, publishing, literary & library By Matt Carroll ,Elisa Mala and Anika Gupta Hello, from the the CODEX Hackathon. We’ll be live blogging here all weekend, so come back often as we update. To follow on Twitter: #codexhack. The hackathon is about “literary/publishing/library/books,” as the web site describes.

In later posts, I’ll write about the technical tools we made available for participants.

The Limits of Social Discovery


This is the second post in our continuing series on how and why The Hawaii Project recommends great books, and more broadly the key ingredients in a good discovery or recommendation system.

In our last post, we argued that the “ratings & review” model for decision making and discovery is corrupt and broken.

Today we’ll explore the limits of another common approach, Social Discovery.

Social Discovery is in use across the web. TripAdvisor will tell me if one of my friends has stayed at a hotel I might be considering. Spotify will show me a continuous stream of what music my friends are listening to. Quibb is doing interesting things with social news reading. This approach can be quite helpful — if for nothing more than a bit of reassurance that the thing in question doesn’t suck.

And yet…..

Let’s have a look at my Spotify page and what my friends are listening to.


Foo Fighters (not interested). Radiohead (know all about it). Counting Crows (meh). Buffalo Springfield (nope). Sara Bareilles (nope). Epic Score (no clue who this is, and no context so I’d have to listen). Knowing what music my friends are listening to satisfies a certain voyeuristic tendency, and showing off what music I am listening to feeds my vanity and helps establish a “personal brand”. But it’s not that helpful for discovery — my friends don’t listen to the kind of music I do! (which is why Spotify leans harder on the personalized Browse feature for discovery).

What is a “discovery”? The key ingredients of a discovery are that it is personally relevant, interesting and surprising. That music above might have been interesting but it wasn’t relevant. Current discovery systems often don’t deliver on these key requirements.

In the context of book recommendations, if I read the first Game of Thrones book, Amazon’s “people who bought this also bought that” algorithm will happily tell me I should read the 2nd book in the series. Probably relevant but hardly surprising. Not a discovery. And the Goodreads model of “your friends read this so we’ll tell you about it” fails the “relevant” test. In large measure, my friends don’t read what I read.

It’s like the GEICO commercial: “Huh. did you know you can save 15% in 15 minutes?” “Everybody knows that!” (perhaps relevant but unsurprising). “well did you know the ancient pyramids were a mistake?” (the surprise). Discovery systems need to create that feeling of serendipity, creating that emotion of “wow, I never would have found that on my own”, and today’s engines often don’t.

Social discovery works when:

  1. my social graph and I have high alignment in interests, and/or
  2. the investment required to evaluate or consume is low.

Many services piggy-back their social networks off Facebook. That’s pretty much guaranteed to produce a social graph not aligned with my tastes. Just because I work with you doesn’t mean I like your movies, books or music. Quibb works because they are doing professional tech news, and the network itself is curated and piggy backs on Twitter. The graph is much more aligned to my professional news interests than my Facebook friends, and the news they read/share is therefore highly likely to be relevant. And the feed is high enough velocity the articles will likely be a surprise (that’s why they call it “news” folks — it’s new!). Further, it’s low-investment to take advantage of the articles. I just scan the headlines and click on what is interesting.

Spotify’s “social discovery” may not be highly relevant, but it does satisfy the second point — it’s low investment to taste some of that random stuff my friends listen to — I just push the play button and it’s free.

Social Discovery also requires the “velocity” of activity to be in a fairly narrow range. If the velocity is too low (I might only stay in a hotel a few times a year), the recommendations stream is too old or empty to be relevant. If the velocity is too high (say, Facebook posts), the stream rapidly becomes too big to manage and the items stop being interesting (sound like your Facebook feed?).

Lastly, socially-driven recommendations tend to be static. That recommendation for Book 2 of Game of Thrones is never going to change. If I go back to the Amazon page for Book 1 a year from now, I’ll get no new fresh insight — it’ll still be recommending Book 2 to me, although I knew that a year ago. What you want is a surprising recommendation, so if you come back a few days later you can get new ideas, and one you wouldn’t have thought of on your own.

If socially driven discovery systems have these challenges, what’s the alternative?

I am a big fan of curation. There are people (curators) who spend their time looking for interesting things and writing about them. Robert Scoble for Startups. Maria Popova for intellectual ideas and books. Jason Hirschhorn for Media. Pitchfork for Music. Aggregating their streams can produce something that is satisfies our last two requirements: that the items be interesting (because they’re curated) and surprising (because curators are always writing about something fresh and we’re aggregating those interesting items into a time-based stream that’s constantly renewed). But that aggregation won’t be sufficiently relevant. Not everything a given curator writes about will match your personal interests.

If we take those streams and layer on top of it a “picker” that grabs the personally relevant things, you will get a much more interesting, high quality stream of discoveries. I call this approach “Personalized Curation”. That is the approach we’re taking to book recommendations on The Hawaii Project, and you can see similar approaches happening in Music (Shuffler.FM and Apple Music), News (Flipboard, Quibb) and other areas.

Personally Relevant. Interesting. Surprising. Deliver on all three and you’ll get and keep your audience.

A personalized stream of Books & Articles from The Hawaii Project

Diary of a Kickstarter – Day 9

Do The Work

It’s day 9 of the Kickstarter for The Hawaii Project, April 10.

Yay, it’s Friday! Time for the weekend! Oh wait, I’m an entrepreneur. Nose to the grindstone!

Funding is at $6,725, 29% funded, 93 backers, average backing: $72, much higher than my model predicted (more on my model in a post-Kickstarter retrospective post I’m working on). Most of the new backers are people I don’t know personally, an encouraging trend. I think. Still, need some “non-linear” events to make the $ goal, and as you probably know Kickstarter is all-or-nothing.

I’ve pretty much gotten over my mild panic of two days ago. As the title of the great Steven Pressfield book says, Do The Work. Do The Work, Trust The Process, and good things will happen. Maybe not the thing you want, but good things nonetheless. We’ll make the goal, or we won’t. And if we don’t we’ll get up, dust ourselves off, and get back to work. (BTW, I’ve written about handling failure before.) Because we’ve been “doing the work”, we have an enormous amount of marketing material, refined thinking, market awareness and other stuff. If the $ don’t work out, we have all that.

The literary agent/author who was interested in a Founding Author page has seen the mockup and he commits to the reward, which is awesome. It’s the first author I didn’t have a pre-existing relationship with who signs up. Big step. He’s also an agent to many other authors, and he mentions it to them and some of them sign up too! Awesome. He also expresses interest in talking about a publisher page so I create a mockup and more detailed thoughts on that, which takes most of the day. There’s a few details left, will finish that tomorrow.

A big local (Boston) media outfit gets back in touch about coverage with some final questions. I draft a series of responses immediately (immediately!) and get them back. Hopefully that will turn into coverage before too long. I also email a few other journalists I think might be interested in what we’re doing. So far, deafening silence is my response 8).

In the good news / bad news department, the Red Sox beat the Yankees. But it took them til 1 in the morning to do it…..

Today’s music: Songhoy Blues, a west African Stevie Ray Vaughan sounding band. I defy you not to tap your feed to this music.

Diary of a Kickstarter – Day 8

It’s day 8, the end of the first week of the Kickstarter. I’ve been typing continuously for the last 3 weeks, sending emails (5,000+, literally – of course many via mailing lists), writing journalists, mailing friends, twittering….my carpel tunnel (or RSI or whatever the catchy new name is), is back. wrists hurt and i have to break out the wrist braces again. (note to self: getting old sucks. type less.).

First job of the day is to send a mail to all my beta test users (~150 people) giving them an update on progress and rattling the tin cup. I.e., asking for donations 8). The rattling is becoming a dull roar…I also sent personal notes to all the new backers in the last few days (I always send a personal thank you to them!).

I spent an hour talking with old friends my “kitchen cabinet” for The Hawaii Project, Thomas Jensen ( & Lynn Thorsen-Jensen ( Their assessment is similar to mine but more pointed: current course and speed on backing won’t fund the project. Their counsel – work Facebook and book bloggers more, stop sending bulk mails (aka spamming) and chasing publishers, which I’ve been spending time doing. Up my game on Twitter – so I’ve been doing more (Buffer is a great tool), and different kinds of tweets than I have been doing. And, write a daily diary about the Kickstarter and process and post it. So here we are.

I spent awhile working on trying to get coverage from the American Library Association – which would be good on its own, and would give me a good reason to be in touch with every librarian in the country, many of whose email addresses are available online. They are an important constituency for the project. Also got back in touch with Robert Scoble, who covered my last company. May or may not get his attention, as he’s back from a long break.

I continued a few refinements to the Founding Author page, and have seen some inbound interest from more authors about it. Yay!

Finally, I play some tennis around 9pm. When you’re cranking, physical exercise is important to blow of some steam, keep the body going, and give the brain some time to think about other things.

I’m also using Rescue Time to keep track of how my time is spent. Here’s what it looked like yesterday:

Screen Shot 2015-04-10 at 10.30.44 AM

Today’s Music: Al Di Meola. His jazz/rock/fusion keeps the neurons firing.