I’ve been mulling over an app idea for some months now, but not found the time or energy for it.

I’ve also had this Raspberry Pi lying around for some months now, but not found a use for it.

Now I made a start on the app, and realized that the app idea and the Raspberry Pi are a match made in heaven.

The app will be a custom Sonos controller. We use Sonos a lot to play music at home, and while the Sonos ecosystem is great at playing music, its apps for controlling the music are so-so. One feature we really miss is some kind of music recommendation service.

We have hundreds and hundreds of albums ripped from CD to a file server. Back when we listened to the CDs directly, we could walk up to the CD shelf and stumble upon music we hadn’t heard in a while. Browsing the album list in Sonos is slow and clunky, and it only shows a very small number of albums at the same time, so those serendipitous finds never happen. We simply can’t remember all the great music we have. I’m hoping to write an app that brings back those lucky stumbles, so we can listen to more of what we have.

How do I write that app, though? The Sonos system is on our local network, so I want the app to also run locally, or otherwise figure out how to reach the Sonos from some server somewhere. Local app seems hard because (a) I’ve never written any native mobile apps, and (b) I use Android while the rest of the family use iOS devices, so I’d need to do something cross-platform, and (c) distributing iOS apps, even privately, looks like an expensive and frustrating bureaucratic process.

And then suddenly I realized that if I write a web app (which I know how to do) and run it on a web server on our local network (hello Pi!), all those problems go away! Tada!