I Finally Gave up and Tried Spotify

I am probably among the last people to have tried Spotify. When the service first arrived ten years ago I looked at it and concluded it seemed a poor match for my needs. To me, music is something you buy and own permanently in the style of old-fashioned CDs. The whole idea of a streaming service where an artist, album, or song could go missing all of sudden due to factors beyond your control just seemed (and still seems) suspicious. Everybody else seemed to love it, but that does not necessarily mean it is good…  However, I finally did jump in and try Spotify, and here is what I found.

At the Right Price, even a Curmudgeon can be Convinced

The reason I finally tried Spotify is that since both kids wanted Spotify Premium accounts it was cheaper to go for a family plan – which covers up to six people in the same household. As a result, I was suddenly a Spotify Premium user, and since it literally did not cost me anything, I decided to finally try it.

Overall, the content is impressive, but I am less impressed by the application and the organizational tools at your disposal.

My point of comparison is my personal music library composed of music collected since the early days of MP3s around the turn of the millennium – in total some 12000 files, many of them with custom tagging and genre markings. Some ripped from CDs, and quite a few bought as digital downloads, first from Apple iTunes and more recently from Google Play Music (when I stopped using iPods to play music a few years ago I decided to finally cut the cord to the Apple ecosystem entirely).

On my computers I play music using the Music Bee player, which also has excellent tools for working with tags and metadata in music files. It took quite a while to find a good music player for my phone, but I have finally found one I really like: Blackplayer EX. Google’s own Android Music application is not very impressive.

The Content is Great

The really good thing about Spotify is the content. Not just the availability of most of the music you might imagine playing, but also things like playlists set up by other people and Spotify Radio. It does indeed live up to the initial vision of having all the world’s music available legally and immediately, like the Spotify founder Daniel Ek explained in an episode of the Freakonomics podcast.

The search function works really well, and I like that you can dive into artists, songs, or albums. For some reason, this works a lot better than Google Music… with Spotify, finding all songs with the same title is easy (i.e., hunting for covers). With Google Music, you just end up somewhere weird and useless.

A biproduct of having everything available to stream without additional per-item costs is that it is really easy to jump around through the universe of music on Spotify and see what you find. You can check out a new album and give it a try in a way that would not be possible if I had to buy the album first to sample it. That is an obvious property of a streaming service, but it is probably one of the most important differences to the traditional way of unit-based buying of music.

I have a huge love for cover versions of songs I like, the stranger the better. Spotify has turned into a great resource to indulge in this. For example, I did a search on “Personal Jesus”. Which turned up a version by Di Leva, which led me to his Album Lovestar, which in turn contained a wonderful or awful cover of ABBA’s The Winner Takes it All… It is a bit like following chains of links on Wikipedia, where you never know what you will learn at the next turn.

The availability of shared playlists from other users on the platform offers another great source of discovery. For example, keeping up with the Personal Jesus theme, I stumbled on this collection of a ton of covers of that particular song:

One aspect of the content that I find less impressive is actually the metadata about the songs. For music created in recent years it seems that information about composers and similar is in decent shape. But for older tracks, it can be a bit sketchy:

The information about a classic song as shown on Spotify

For some reason, information like year of release is attached to the Album a song belongs to, and not to the song itself. For collections of songs, it makes more sense to include the original release date of the song I would think… This is clearly an area where I think Spotify could improve. In all fairness, there are some decent artist biographies to be found in the Spotify platform, and I guess there is no point in becoming a Wikipedia of information… that function is already fulfilled by the real Wikipedia.

Cloud Synchronization

The synchronization of Spotify across different devices and the web interface is probably the best I have ever seen. I guess it helps that we are talking about very little actual data stored on the device – handling a hundred gigabytes of information that is selectively downloaded to different machines based on local needs and storage capacities is arguably asking for more complexity than what Spotify does. Still, just having playlists and what I am currently playing seamlessly sync between web, desktop app, and phone is impressive.

Example of Spotify on the web noting that I am using the product on my phone

Organizational Tools

One area where I Spotify to be a bit disappointing is in the organizational tools that it offers. I cannot really see how you could build a music collection (I guess, virtual collection since you do not own anything) with it. It is really hard to catalogue and categorize things – all you can do is to like songs and create playlists.

But I would like to be able to do much more than that.

Why does Spotify not offer users the ability to rate songs on a scale from zero to five like all MP3-based tools do? And why can’t I add my own tags to songs and use them in queries to built algorithm-driven playlists? Like “all the Christmas songs that I have given four or five stars”?

There is no way to mark a song as “this looks interesting, I will check it out later” like the “Watch Later” function on YouTube. I definitely think the “like” of a song should be separate from “I have it in my library”.

The history function is decidedly odd. Instead of presenting me with a straight list of the previous songs I have played (like YouTube’s history function), I get a list of albums from which I have recently played songs. That is not particularly helpful if an interesting song went by at a time where it was not possible to use the app to mark it as good (like when listening with your hands full of something else). This makes it a lot harder to make use of Spotify as a discovery function, since music can just fly by and be very hard to find afterwards. There should be a straight simple song history.

Simplicity taken too Far 

Maybe I was not expecting the right things, but I did find the Spotify user interface to be a bit too simple for my taste. At least on the phone App, too many things are hidden several clicks away instead of adding direct-access buttons to the main UI. Compare Spotify: 

With my customized Blackplayer setup featuring buttons in all corners of the UI, a star rating slider, and a volume control.

I would not call this particularly busy, but it puts a lot more useful functionality directly on the now-playing screen. I think mobile apps should be more like this: add clear buttons for functions, rather than trying to be minimalist and hide things behind swipes in different directions on different UI elements.  Blackplayer is also great since it allows you to change the buttons displayed on the screen, which is something I think Spotify should do too.

The “Queue” functionality in Spotify (across platforms, but especially on the mobile App) seems totally broken. It might start playing from the queue, but then suddenly it moves into an Album, or onto a playlist. Swiping left (from the right) on the cover art will move to the next song in the queue… but swiping right does not go back into the queue, instead it also goes to some playlist or album I recently visited. History gets lost.  

The logical system would be to maintain a persistent history, and having swipe right and left always move back and forward through this history until you reach the end of it. Most other music player apps I have used have worked like that. Inside a playlist it seems to work, but not when mixing the Queue with playlists.  

Final Thoughts 

I will likely keep using Spotify as a way to discover music. It is really useful as a way to share discoveries with other people, since most people I know seem to have Spotify accounts anyway. It is really impressive to indeed have most of the music in the world available immediately and without added cost.  

But the overall impression is of a rather impersonal system in some way. It is hard to make Spotify your own – it really feels like the content creators have a bit too much to say, and there is too little room for users to change metadata around songs to suit their needs and preferences.  

It is also a bit too simplistic in the user interface and data model – there is clearly so much more that could be done to create a sophisticated music organization tool. Spotify is way behind even the early-2000s file-based music players when it comes to organizing things.  

One service I would like is to be able to actually buy permanent downloads of songs from Spotify directly, so that I can retain access to the music if I decide to stop paying Spotify or if (when) Spotify disappears from the market. I have been using computers and various services for long enough that I know that unless I have a copy on my own personal hard drives, I will lose access somehow. Music is a bit too important to trust to a fleeting engagement with a company that can remove access to it any day.  

Right now, I will likely discover things on Spotify and buy the permanent downloads from Google, crazy as it sounds. Downloaded music files also work in cases like the SD card in the not-at-all-connected car we have.  

Cancer Part 2: Going Radioactive

As I chronicled earlier this year (see “A Sudden Case of Cancer”), I got a Thyroid Cancer diagnosis back in May of this year. In June I went through surgery which went very well. After only three weeks, I was sufficiently recovered to travel to Greece and give a keynote presentation at the SAMOS conference. My scar prevented me from taking as much as advantage as I could have of the sun and pool, but it was possible to do at least a little bit of bathing towards the end. Now, I have reached part two of the treatment, radioiodine therapy to knock out any lingering cancer cells. Basically, I am going radioactive for a few days.

Continue reading “Cancer Part 2: Going Radioactive”

Off-Topic: Windows Explorer Tip: Shift Right-Click

For some reason, Microsoft has decided to hide some decidedly useful features in Windows 10 explorer behind the non-intuitive and rather unknown “shift-key + right-click” combination.

Continue reading “Off-Topic: Windows Explorer Tip: Shift Right-Click”

When is Redundancy Cheaper?

fire from MS Office clip artI find the subject of fault tolerance and resiliency in computers quite interesting. It also very interesting to look into what kinds of faults actually do happen in the real world, and what impact they have. I recently found a couple of good sources on this. First of all, a paper from Super Computing 2012 by Fiala et al, called “Detection and Correction of Silent Data Corruption for Large-Scale High-Performance Computing” (ACM Digital Library). One of its references was to a 2011 talk by Al Geist, “What is the Monster in the Closet”, which provided some more data on how common faults are.

Continue reading “When is Redundancy Cheaper?”

Chapter one of “Software and System Development Using Virtual Platforms”

Softwre-and-system-development-using-virtual-platforms-210x258The first chapter of mine and Daniel Aarno’s book Software and System Development Using Virtual Platforms can be downloaded from the Wind River Blog or the Elsevier Scitechconnect blog.

The purpose of the free chapter is to provide a way to understand the style of the book – and hopefully lead people on to buy the whole thing to read it.

The paperback edition looks really nice, and the printed copies that I have had the honor to get have been very well made.

Off-Topic: Lalandia Billund (Vacation)

Another Summer vacation has come around, and as usual that causes a blog post or two on Summer tips and comments on places where I have been. This year, we went down to Denmark to visit the city of Billund, home to Legoland and Lalandia. Lalandia is an interesting mix of indoors activity center and camping village. We rented a house there for our vacation, and are overall very pleased with the place.

Continue reading “Off-Topic: Lalandia Billund (Vacation)”

Third Swedish Workshop on Multicore: Call for Papers

The call for papers for the third annual Swedish Workshop on Multicore Computing (MCC10) is now out! MCC is a nice venue for multicore research about everything from computer design to software and debug. It is fairly informal, but still attracts some good papers and provides good discussions. It is not restricted to Swedish submissions, in 2009 there were several international participants. I gave a keynote talk about multicore and Simics at last year’s MCC, and for this year, I am on the program committee and looking forward to many great submissions to review!

Eclipse Linux Kernel Indexing Works

Edited on 2009-Feb-01, to include the link to the illustrated guide that really helps you get there faster. Thanks Simon! Also, promoted to front page, original post was put up on 2008-Nov-09.

Thanks to Simon Kågströms post (and the even better second-generation with screenshots) about using Eclipse for the Linux kernel, I have a much nicer work environment now for my ongoing work in learning Linux device drivers on PowerPC, which has helped me work my way through several hard-to-figure-out system calls. Continue reading “Eclipse Linux Kernel Indexing Works”

Building a Wooden Deck and Computer Simulation

I just spent the first week of Summer vacation practising the Swedish national sport of home renovation. It seems that everyone is doing that all the time nowadays – it might be that I have reached the age of family raising where that becomes important, or it might be that it is a general trend that more people spend more time and money renovating their homes. I think it is the second case.

Anyhow, what we set out to do this year was to replace (most of) the twenty-year-old wooden decking on the backside of our small row house with a new one. This was quite an adventure, as we discovered all kinds of interesting designs and problems with the old decking structure. Problems, which do reflect on the realities of computer programming and simulation.

Continue reading “Building a Wooden Deck and Computer Simulation”

Linux KVM for IBM Mainframes

There was an interesting little note at the CodeMonkey blog… basically, the Linux kvm kernel hardware virtualization support system now works on IBM z series mainframes. Using the z architecture virtualization support in hardware.  Nice to see some attention being put on non-x86 architectures. And a nice historical note that current x86 virtualization extensions were indeed inspired by the s/370 architecture from the mid-1970s. Cool.

ESC Silicon Valley 2008: Class 410

I am scheduled to talk at the ESC SV 2008 in the technical program. In 2006 and 2007 my topic was Multicore Debugging, but this year I have changed to Using Simulation Tools for Embedded Software Development. The date is April 17, the time 8.30 to 10.00, and the place the San Jose Convention Center.

See you there!

SCDsource: Reality Check on Virtual Prototypes

Bill Murray of the “New Media Outlet” SCDsource has published one of the best articles that I have seen on the use of software simulators and virtual prototypes in industry. The examples in the article run from low-level code run on very accurate simulators all the way to very fast virtual systems that are used instead of actual hardware to train NASA operators. The article covers the end-user perspective and is not particularly oriented towards a particular vendor. It offers some nice insights into the expected and unexpected benefits that various companies have obtained from using simulators of various kinds. As well as some glimpses into the underlying technologies they have chosen, developed, and adapted.

Highly recommended.

Virtualization and Linux on a DSP Processor

A small tidbit that I found interesting due to the targeted platform. LinuxDevices reports that the VirtualLogix VLX-NI virtualization layer that used to run only on x86 platforms now also run on TI DSPs in the C64+ series. Basically, you put their virtualization layer on the DSP, and you can then on the same core run both a Linux kernel and a DSP/BIOS kernel. Thus supporting traditional DSP development and Linux-style development on the same core.

Continue reading “Virtualization and Linux on a DSP Processor”

ARM Cortex-A9, Trango, and Virtualization for Migration

The new version of Trango’s embedded “secure virtualizer” for the ARM Cortex-A9 MPCore is an interesting solution in that it directly applies virtualization technology to the issue of migrating solutions (complete software stacks) from single-core to multicore. The details are a bit sketchy in just how this is done, there is some hardware support in recent ARM architectures, but a little bit of adaptation of a guest OS using paravirtual techniques are likely not a blocker. It also touches on security, implemented using ARM’s trustzone technology. All in all, I think this is a typical example of something that we are going to see much more of.

AMP vs Virtualization

It just dawned on me recently (and it sure must have been obvious to those working with configuring AMP — Assymtric Multiprocessing Systems) that in an AMP setup, the operating systems involved actually know about each other and have to account for the fact that they are sharing a single processor chip with other operating systems. So you cannot just take two single-core operating system images from an existing multiple-processor (local memory) solution and put them on a single chip and things just work. You do need to prepare the boot process and find a way to nicely share the common I/O devices, timers, accelerator engines and other resources on the chip. This is materially different from a virtualized setup.

Continue reading “AMP vs Virtualization”

SICS Multicore Day August 31

The SICS Multicore Day August 31 was a really great event! We had some fantastic speakers presenting the latest industry research view on multicores and how to program them. Marc Tremblay did the first presentation in Europe of Sun’s upcoming Rock processor. Tim Mattson from Intel tried hard to provoke the crowd, and Vijay Saraswat of IBM presented their X10 language. Erik Hagersten from Uppsala University provided a short scene-setting talk about how multicore is becoming the norm.

Continue reading “SICS Multicore Day August 31”