Mute or unmute a Sonos room by tapping the speaker icon near the group’s numeric volume value. The volume slider is be disabled while a room is muted.
To access this multi-room volume control in Bops:
On tap, an animation replaces the grouped volume control with individual room volume controls.
This new functionality is available today as a part of Bops’ public beta. You can try it out now by joining our TestFlight. I’ve just added a handful more beta slots to allow more testers to join. Read more about Bops in our announcement post.
]]>
I’m thrilled to introduce Bops, an iOS app developed by ur computering pal, LLC. Bops is designed for listening to Apple Music℠ on your Sonos® speakers or on your device when you’re on the go. Putting listeners first, Bops is for those who don’t settle: stream the world’s largest cloud music library to your best-in-breed smart speakers with a first-class experience.
For several years, I’ve been building Bops as a personal project motivated by my desire to listen to music without ads and my inability to sit still. I’ve been using it for a while now, and I’m pretty pleased with how it’s turned out. It isn’t perfect yet; in fact it’s still missing some pretty notable features like shuffle, repeat, queue reordering. Currently, discovery features are pretty limited. But recent events have, well, changed my perception of what minimum-viable means for an iOS music app. So I’m releasing Bops as is today and plan to iterate on it quickly with your input! I hope you enjoy it; I’m feeling positive about the potential of this app and I’m excited to see where I’m able to take it combined with your feedback.
Read on for more on why I built Bops, how it works, and how you can get started using it. Or jump right in and join the beta today.
So, why another music app?
The existing solutions for listening to Apple Music on Sonos speakers provide you with a choice; you can either use the Music app to stream music from your device to your Sonos speakers, or use the Sonos app and its Apple Music integration. Both of the these options have considerable tradeoffs.
Using Apple Music to stream music to your Sonos speakers is great because you can use Apple®’s high-quality Music app to browse your library, search for songs, and create playlists. But it’s not great for a for a handful of reasons - the biggest being that your phone must maintain continuous connectivity to your Sonos speakers lest the music be interrupted and the vibes ruined. Being the DJ for your family or friends means you can’t run to the corner store with your phone, take the dog on a quick walk, or even check on the peppers in that part of the garden where the WiFi isn’t that great. Being the DJ means you can’t even take a phone call without the music stopping, or watch a video on your phone without it rudely interjecting itself into the mix. It’s a real bummer.
Using the Sonos app on your phone is also an option. The Sonos app is a free app thrown in as a value add for top-of the-line speakers. Recent changes to this app make it clear where Sonos prioritizes its existing customers: their app is now a platform for selling you new stuff first and interacting with your speakers second. Beneath the ads for headphones you don’t want and the newer version of a speaker that you bought a year ago, the current incarnation of the Sonos app is barely-passable for the key functionality of setting up, configuring, and controlling your speakers. It has a lot of features for managing those speakers that neither the Music app nor Bops have; even one that plays magical sounds to make you feel like your speakers are smart. One earnestly good feature of the native Sonos app is that it plays music by sending API requests to your generally-stationary speakers instead of continuously streaming music content to them. The speakers in turn use their wireless or wired connection to download the contents of the songs they play from the internet. This means if you use the Sonos app to start playing music on your speakers and then leave the house with your phone, music will keep playing. The Apple Music integration in the Sonos app is not great either; the browsing and searching features are limited, and the app encourages you to curate playlists and favorites that only work while you’re at home.
Even more frustrating than each app’s individual tradeoffs is the fact that you have to choose between two apps based on where you expect to be for the duration of the queue. Want to queue up some music for you and your partner while you enjoy your morning coffee at home? Open the Sonos app. Want to listen to music while you’re walking the dog? Leash up the dog and open the Music app for your walk. Want to keep listening to the music you were hearing on the walk back home when you return? Switch to the Sonos app, stop the current queue music, then switch back to Music and use Airplay to stream what’s left. Now your phone is tethered to the speakers; don’t forget to leave it behind if you stray out of WiFi range! Want to listen to music on the Sonos speaker you brought with you to the beach? Open the Sonos app, get confused when it says no speakers have been found, then connect to your speaker over Bluetooth® and open the Music app. This is all a real bummer. I want one app in my dock for music, and I want it to be able to play music in any scenario. I also miss Rdio and its simple interface and straightforward “Play later” workflow.
Bops is a simple, easy-to-use app that allows you to listen to Apple Music on your Sonos speakers or on your device when you’re on the go. With Bops, you can easily browse your Apple Music library or search for songs, albums, artists, and playlists to listen to on your Sonos speakers, on your device, on your Bluetooth® headphones, or other Airplay®-compatible speakers. If you’re near your Sonos speakers, you can control their volume and manage which rooms are playing music. Bops plays your Apple Music content on your Sonos speakers by sending API requests to your speakers instead of continuously streaming music content to them. This means that you can use Bops to start playing music on your speakers, and then leave the house with your phone and the music will keep playing. And while you’re away, you can use the same app to listen to music on your device for a cohesive experience.
Bops is the passion project of a independent developer who is eager to hear your feedback and ship ongoing improvements. I’m not here to sell you headphones; I earnestly want to make Bops the best choice for listening to Apple Music on your Sonos speakers or on your device when you’re on the go.
Bops is currently available in a limited public beta while we prepare for a full release. Please join the Beta program here to get started. If you find the Beta program to be full, please reach out with your Apple ID email and I’ll see what I can do.
Bops works great on iPhone and iPads with iOS 17+. It requires an active Apple Music subscription and a Sonos system authorized with Apple Music. Bops is not endorsed by or associated with Apple or Sonos.
As you give Bops a shot, I’d be thrilled to receive the gift of your feedback; I’m eager to hear how it works for you and how you’d like it to evolve over time. Please send your compliments, complaints, and/or feature requests via any of the following methods:
Oh, about the name: a “bop” is a slang term for a great song or a great piece of music, and I think it’s a fun word to say. “Bops” is also the ‘grandparent nickname’ my sister assigned to my late grandfather Vernon Barrett, a music lover and all around rad dude. I think he would have liked this app.
Bops is an indie iOS app developed by ur computering pal, LLC. Sonos is a trademark of Sonos, Inc. Apple Music is a trademark of Apple Inc. Bops is not endorsed by or associated with Apple or Sonos. Purple is a color.
]]>apiVersion: foods/v1tasty
kind: bacon
metadata:
name: breakfast
spec:
thickness: chunky
If you’re a software engineer, there’s a good chance that you might have edited some YAML today. That’s pretty cool, because you can do some rad stuff with YAML these days! You can configure Kubernetes clusters, wrangle servers with Ansible cookbooks, or even automate your home with Home Assistant. In my opinion, YAML is a pretty good language for managing simple data structures, but things can sometimes get a bit frustrating when trying to edit more complex files.
Like me, I imagine that you might have run into a syntax error or two while editing YAML in your past. Even so, I often find myself full of undue hubris when editing YAML:
Me, working on the the last 90% of some feature: Rad, all I need to do is add that port number as an environment variable. That sounds easy!
Me: Cracks open the GitHub web editor and quickly adds the port number without quotes, unconsciously forgetting that YAML will helpfully attempt to cast unquoted values and that
EnvVar.valuerequires astring.Jenkins: Ur code looks great. Ship it! I skipped all of this YAML stuff. What’s that about?
Me: Cool! CI is green and my code has been reviewed! Imma deploy my PR!
Kubernetes: You’ve got yourself a YAMBURGER! See, environment variables are strings but what you provided was an integer.
Me: …
I can’t help but feel like YAML is right smack dab in the uncanny valley of configuration languages. It seems easy enough that many edit it without the help of editor tools that assist us along the way by highlighting errors with squiggly red lines and feel duped when it turns out to be less magical than expected. And because it’s so easy, many software projects lack continuous integration processes for YAML and implicitly expect the author to validate it themselves. That’s a bit of a catch 22, isn’t it?
Complicating things further, simple mistakes in YAML files can often have a pretty large blast radius. I’ll never forget the time I shadowed a YAML hash key in a Hiera file and had to rush to revert a PR to avoid taking down a critical service. That day changed the way I think about YAML - or any configuration language to be honest! The fact that a language isn’t turing complete doesn’t protect you from harm in the event of a typo.
If you’re using YAML to configure a service that you’re responsible for, you owe it to yourself and your service’s users to validate the YAML configuring that service with just as much rigor as you test your code. At the very least, please consider testing that the YAML in your repository is well-formed using continuous integration.
It may delight you, dear reader, to learn that this post contains strategies for doing just that.
If you’re pushing YAML of any kind to GitHub, you should check out YAMBURGER. It’s a GitHub App that validates the syntax of the YAML files that have been changed on your GitHub Pull Requests, highlighting any YAMBURGERS it finds using the super cool new GitHub Checks feature:

It’s easy to get started: you can install YAMBURGER on your GitHub repositories with a couple clicks. YAMBURGER’s hosted version is free during a limited preview period. The code is open source, so you can run your own deployment on a platform like Heroku or Zeit if you’d prefer! Please reach out if you have any questions, feedback, or feature requests. We’d also be thrilled to accept contributions from anyone willing to adhere to our code of conduct!
One of my favorite charactaristics of Kubernetes is its opinionated use of declarative configuration. Using kubectl and YAML, an ambitious engineer can describe the infrastructure required to run their service using a handful of YAML files piped to kubectl apply. Quite a few people use this approach:
So I estimate there are about ~420,000 Kubernetes YAML files publicly available on GitHub.
— Gareth Rushgrove (@garethr) August 2, 2018
What have we done?
That’s a lot of YAML! There are many approaches to configuring Kubernetes that don’t require YAML! But the suite of tools supporting this approach continues to expand: tools like Skaffold and Kustomize layer additional functionality on top of your existing kubectl workflow. YAML is certainly a foundational part of the experience of interacting with Kubernetes today, and that seems destined to continue for at least some time.
We didn't expect, long term, that people would still be writing flat explicit yaml files. But here we are. I'm hoping we can move past it but in some ways there are too many choices and so that makes it more complicated.
— Joe Beda (@jbeda) May 18, 2018
As you may have experienced, the complex schemas of many Kubernetes resources highlight YAML’s uncanny-valley-like characteristics. Modern editor tools can help significantly, but they’re not available for everyone’s favorite editor just yet.
kubevalidator is a GitHub App that validates the contents of the Kubernetes YAML changed on any Pull Request against a set of community-maintained schemas. This essentially enables automatic code review for mistakes that I make all of the time, like these:
There are a bunch of other configurable features, like the ability to validate Kubernetes YAML against multiple schema versions. This has turned out to be really helpful during the process of migrating services between clusters or in advance of cluster upgrades! If the default schemas aren’t right for you, kubevalidator makes it easy to use your own: you can validate against a different schema by forking garethr/kubernetes-json-schema and dropping your forkUsername into .github/kubevalidator.yaml.

It’s super easy to get started with kubevalidator: install it on your GitHub repositories today and it’ll help you through the process of configuring it. Like YAMBURGER, kubevalidator’s hosted version is free during a limited preview period, but the project is open source along with reference Kubernetes configuration if you’d like to run your own instance.
If you push Kubernetes YAML to GitHub for either fun or profit, install it on one of your GitHub Repositories out today and reach out if you have any questions, feedback, or feature requests! We’d also be thrilled to accept contributions from anyone willing to adhere to our code of conduct.