Exfm is joining Rhapsody! Mon, Aug 4, 2014


For the past few months, we’ve been hinting that we had some big plans for the future. Well, we are very happy to announce that Exfm is joining Rhapsody! For the last 4 years, we’ve been committed to building an original, fast and fun way to discover new music. Rhapsody has been a leader in the on-demand music space since they pioneered the concept over 10 years ago. By teaming up, we can build the ultimate music service with an amazing social discovery engine backed by Rhapsody’s catalog of over 30 million songs. The idea of combining the best of Exfm with the best of Rhapsody has us all extremely excited!

For the next few months, we will be heads down working. When we resurface, we are sure you will love what we have built. We’ve got some pretty amazing plans for iPhone, Android, Windows Phone and the Web. We may have been doing this for a while, but we feel like we are just getting started. We hope you continue with us on this journey, and a heartfelt thank you for everything.

Please follow us on our blogTwitter and Facebook for updates. You can always email us as well.


Dan, Marshall & Jason

Changing Tune Fri, Dec 20, 2013

When we started Exfm four years ago, we had one goal. To help people discover and listen to new music on the web. What started as a Chrome extension quickly grew to a website, iPhone app, Android app, blog widget and API. Along the way we had people from over 200 countries use our apps and more than 50 artists play at our concerts in NYC.

Four years ago the music landscape was very different. Spotify and Rdio didn’t exist in America. There was no Google Music or iTunes Radio. Soundcloud and Bandcamp were just getting started. Today, music flows from all places on the web. It’s easy and affordable to get and it just keeps getting better.

After an amazing four years of sweat and tears, we’re ever-so-reluctantly accepting the reality of sustaining the Exfm platform as it exists today. The high costs of processing millions of new songs every month while attempting to keep that data relevant and useable is monumental. The technical challenges are compounded by the litigious nature of the music industry, which means every time we have any meaningful growth, it’s coupled with the immediate attention of the record labels in the form of takedowns and legal emails. Today, subscription services are gaining in popularity and enjoy the blessings of most major labels at a non trivial cost to those companies.

All this adds up to a very challenging position for a small startup with grand visions to make any real headway. The sad news is that we are no longer going to be able to keep the Exfm website and suite of apps up and running. To ease the transition to another music service, we’ve created an export tool so you won’t lose any of your songs, as well as a new Chrome extension that can run independently of our backend.

We still want to help create the links between the disparate music blogs and all of the music sites and apps out there. Our new Chrome extension will let you scrobble songs to Last.fm from Soundcloud. You can buy Bandcamp songs you hear on Tumblr. You can discover music on a blog and instantly save it to your Rdio or Spotify playlist. It acts as the glue between these services.

The new extension is available now. If you don’t have it yet, we hope you install it and give it a try. On January 15, 2014, we will completely remove the ability to love songs and follow people and your data will no longer be accessible. Our website will only offer the Chrome extension for install and our iPhone and Android apps will stop working. Our blog widget will also stop working. We urge you to grab your songs and sites before it’s too late.

Once you’ve exported your songs you can import them into an awesome new desktop app called Tomahawk which works really well with our new Chrome extension. You call also import all your songs to Rdio using this great website - re/spin.

This isn’t a full goodbye. We feel the time is right to reassess how we can continue to play a role in the new music landscape. We hope you continue to find us useful in the ever-growing world of music online. We’d love to hear back from you so please leave us comments and let us know your thoughts. Let us know what you think of the new Chrome extension.

Thanks for an amazing four years.


Dan Kantor @dankantor
Marshall Jones @majman
Jason Culler @jasonculler

Exfm now on Jolidrive! Thu, Apr 25, 2013

We are excited to announce that our friends over at Jolidrive have added Exfm as a new service! If you haven’t checked out Jolidrive, now’s the time. In their own words - ‘Jolidrive unifies all your content from multiple services in one simple and beautiful interface accessible from anywhere.’ We couldn’t agree more. Jolidrive is beautiful and the ability to access your music, photos, docs and videos from every service you use all in one place is simply killer.
Jolidrive’s Exfm integration is stunning. You can access your loved songs, followed sites, genres, trending, site of the day and more!
You can even search Exfm or all your other accounts right in one place. Head over to the Jolidrive blog to learn all about our integration. From NYC to Paris, this is a match made in heaven.

Using Amazon Cloudsearch with Python and Boto Thu, Apr 12, 2012

This morning Amazon announced their latest addition to the toolkit, Cloudsearch. Here at ex.fm, we were lucky enough to be part of the private beta for Cloudsearch, so we’ve been running it in production for the past few months.

In terms of performance, Cloudsearch is much faster and more reliable than our previous Apache Solr install. The best feature by far is scaling on demand. Data is horizontally partitioned on the fly as the number of documents you’re indexing grows. The number of instance size and number of instances scales up and down depending on how many bits you’re pushing and pulling. For more on how the auto scaling works, see Dr. Vogels’ post. In 4 months, we’ve had a total of 15 minutes of downtime, which is very good for a private beta. We’re also not concerned with lock-in because it is so similar to the way we were using Solr. We were even able to swap in Cloudsearch for Solr without anyone really noticing, except that search results were twice as fast and had much better relevance.

Out of the box, there are command line tools for everything, but we wanted a nicer integration with our app and management scripts. We already use boto for all of our S3, EC2, and Route53 acccess to AWS, so it was a pretty natural fit to create a drop in module to add Cloudsearch. Disclaimer: what we came up with was designed specifically for our needs and timeline, so we took some liberties in not making the code entirely “boto-ized” and not all Cloudsearch features are fully implemented. We’ll contribute all of this back into boto and hopefully a stable version will land in boto master soon.

An Example

Have a look at our cloudsearch.py. While you’re looking it over, make sure you’re signed up for the Cloudsearch Beta.

So let’s say we want to add search for our users. We want to be able to search by username, be able to drill down in the results to users in different countries, and sort the results in some interesting ways.

It’ll take a few minutes for your new domain to provision instances and get itself set up, so go check reddit and come back in a bit.

Now, time to get our documents in. If you’ve read the above links, you already know your new Cloudsearch cluster gives you two endpoints to work with; the document endpoint and the search endpoint. You can find these in the console once your cluster is ready. To get your documents indexed you post a JSON body to the document service endpoint in a schema Amazon calls Search Data Format (SDF) that looks like this:

Now let’s get our users indexed.

At this point, you should be able to check back at the console and see that you have 4 searchable documents. You can even run some test searches from the console. Try `dan*` and notice the faceting. Let search using some python.

Now lets say a user wants to delete their account and we need to remove them from the index.

Real World

We can build on the above to have our Cloudsearch cluster work even better for millions of documents like we deal with everyday at ex.fm.

Something that has worked very well for us is queueing incremental updates to songs and users. When a song or user is modified and we want to reindex the document in Cloudsearch, we add the documents id to a redis set. We then have a celery periodic task that collects all of the ids from the redis set, builds an SDF with hundreds of document updates and commits them all at once.

Another trick is using UTC timestamps in place of actually keeping a version number for each document. In our case, for songs and users, we do keep a version number and mongodb makes incrementing this extremely convenient and simple. For some new domains we’re working on though, we are using the timestamp as a version hack.

No downtime reindexing allows easy experimenting with a lot of different sorting algorithms (re: rank expressions). Rank expressions are really amazing and we’re still trying to wrap our heads around them fully. It’s incredibly simple to have a rank expression that implements any of the various popularity algorithms (ie Hacker News, Reddit, StubleUpon) in one line.

Lastly, it has been really handy to export entire mongodb collections to SDF’s and store them on S3 for even faster iteration and potential disaster recovery. We have a script that creates thousands of celery tasks; 1000 document ids at a time. Each celery task then pulls those 1000 objects from mongodb, creates the SDF and stores it on S3. We can then run another script, that creates thousands of more tasks to grab each SDF from S3 and directly post it to the document service. We’ve found this to be extremely effective for indexing millions of documents in a very timely fashion.

Many thanks are due to Jon Handler, Umesh Sampat, Gil Isaacs, Mike Bohlig, Stuart Tettemer, Puneet Gupta, Sonja Hyde-Moyer and everyone else from the Cloudsearch and AWS teams.

Sound like fun? Come work with us. jobs [at] ex.fm

SXSW Partnership: Exfm and Squarespace Sat, Mar 3, 2012

Who doen’t love a good food truck? The answer is nobody. Especially when you’re down at SXSW and only have a few minutes to grab a bite before your favorite band goes on. That’s why the brilliant people over at Squarespace are bringing back their massively successful food truck from last year, but this time they’ve extended their stay to nine days from March 9th - 17th.

Squarespace will be rotating through an all star cast of local Austin food celebs each day including newly crowned top chef winner Paul Qui, owner of East Side King. We’ll be down at the food truck each day with a specially curated playlist to enhance your foodie experience. Stay tuned for a new playlist each day that you’ll be able to listen to and follow on exfm.

For more information on the Squarespace food truck and as well as their other events down at SXSW click here You’ll be able to find the daily menu right here. We can’t wait to fill our bellies while listening to these very special jams all week long!

What is this exfm?

Only the best way to discover and share new music online. Like, ever!

Learn More
Blog Powered by Tumblr