Sonos, Plex, and “Unable to browse music” on artist search

It’s taken me several months to connect the dots, but I’ve finally figured out why sometimes Sonos is unable to browse music from Plex artist search results. And it’s all about having multiple libraries in Plex.

The problematic behavior is this scenario:

  1. In the Sonos app, search for an artist on Plex
  2. Sonos shows the results successfully
  3. Click on the artist
  4. Sonos returns “Unable to browse music”

If, instead, you search for an album you can click on the results, see the tracks, and play the music. Sometimes this seems to work, sometimes it doesn’t, and it’s taken me months to find the pattern.

The problem is that my Plex system has two libraries: mine and my husband’s. Overall Sonos handles this well and we can play whatever music from whatever library.

But while artist searches are scoped to all libraries in Plex, browsing artist results is only scoped to the current Plex library. If the current Plex library contains the artist you can browse the search results. If not, you get the “Unable to browse music”. If you change the Plex source to the library with the artist it will work again.

I’m not certain if this is a limitation in the API that Sonos is using to interact with Plex, or if this is a bug in how Sonos is using that API, but knowing what the problem and how to work around it is a start.

Upgrading from Pixel 1 to Pixel 4a

I recently upgraded from a Pixel (the original 1st Gen) to a Pixel 4a. The Pixel 4a is a perfect successor to the Pixel 1 if you like the Pixel and just need a newer phone.

In 2016 I bought an original Pixel when they came out to replace my beloved Moto X (1st Gen). It’s been a great phone for the past 4 years but in the last few months the battery life has deteriorated to the point where the phone was almost unusable, often turning itself off while reporting 35% battery remaining. This despite it almost never leaving my house with a strong wireless and WiFi signal because of the pandemic.

The Pixel did everything I wanted it to do and had all the features that I wanted — including a headphone jack — and none of the ones that I didn’t. Despite some recent consternation with Google I still think the Pixel phones are the way to go when buying an Android phone. But the Pixel 4 and 5 are physically huge and expensive. And of course no headphone jack.

Enter the Pixel 4a. Physically it’s identical to the Pixel in size with a much larger screen thanks to the almost-bezel-less design. It still has the headphone jack (yay!). And because they took out all the expensive Pixel 4/5 stuff I don’t care about (wireless charging, Active Edge, Face Unlock, waterproof) it’s much cheaper than the Pixel 4 or 5.

The Pixel 4a is a nice step up in camera, newer generation CPU, and the battery life is truly amazing, although it’s hard to objectively compare with my dying 4-year-old Pixel. Full hardware spec details available at phoneArena.

After using my Pixel 4a for two weeks now, I couldn’t be happier with it as a successor to the Pixel 1.

Plex and Sonos

With the death of Google Play Music I needed another way of managing my music library and playing it through our Sonos system. We opted to go with Plex and in general it has been a good experience.

Plex

We have a Mac Mini hooked up to our TV for those times we want to watch something on YouTube or some other service that our not-very-smart TV doesn’t support. This was clearly the logical choice for the Plex server as it is always on and has worked really well.

I keep a copy of my music on my main laptop. Despite not using Music (formerly iTunes) to play music, I use it to manage my music on the filesystem. When I purchase music (now from Bandcamp or Amazon if I can’t find it there), I import it into Music and then run an rsync script to refresh the copy on the Mac Mini. Plex automatically picks up the changes and my music is ready for playing.

After some work I was able to import my playlists from Google Play Music (GPM) into Plex as well. See my GPM playlist reconstructor and Plex playlist importer gists for some python code to help get you going in the right direction.

Now I can access music, including all of my playlists, from my phone and any web browser.

Sonos

Being able to play my music through our Sonos system is one of my primary use cases and one of the reasons why YouTube Music is such a poor substitute for Google Play Music. Plex integrates nicely with Sonos without requiring a Plex Pass.

When I first got Plex and Sonos connected two months ago everything worked perfectly. Then a few weeks ago Sonos stopped reliably finding my music which was incredibly frustrating. When the Sonos couldn’t see the Plex library I was still able to access the library from the Plex mobile app and the web interface. Indeed, everything except Sonos seemed happy to talk to the library.

We did all of the usual things like rebooting the devices. I followed the Plex and Sonos troubleshooting docs both from Plex and from Sonos. I even tried upgrading the Sonos system from S1 to S2 to no avail.

Eventually I found this Plex on Sonos forum post which goes into a lot of details about the nuances of how the two devices connect. We had a 9-year-old Netgear WNDR4500 wireless router that in theory supported UPnP but it didn’t seem to be working to allow Sonos to reliably access the Plex library. I set up a manual port forward which seemed to make things slightly more reliable but didn’t fix the problem.

Eventually out of frustration I bought a brand new TP-Link AX1800 wireless router to replace the Netgear and suddenly everything just started working and has been rock-solid for a week now. No special configuration & no fuss.

So if you’re having trouble getting your Sonos to talk to your Plex library and are using an old wireless router, consider upgrading it.

Accessibility of Unicode as styled text

Facebook, Twitter, Instagram, and other internet sites often lack the ability to style text, like making it bold or italics. Some “clever” people have discovered ways of abusing Unicode to make the appearance of styled text with these sites. Unfortunately doing so renders the text completely inaccessible by users of assistive technology.

You might have run across an Instagram profile, Facebook post, or tweet that includes styled text and wondered how the person did that. They probably used a site like YayText [which I’m loath to reference at the risk of encouraging its use]. These sites take a string of text as input and present the user with what visually is the same text but styled in a variety of ways. How does this work? To explain that, we need a brief primer on Unicode.

Unicode is a technology standard that allows computers to encode and represent hundreds of thousands of characters, letters, and symbols used in over 100 world languages. It allows computers to differentiate between the English letter K (U+004B) and the Greek letter Κ (kappa, U+039A) because while they are visually similar — at least in many fonts — they are two very different letters and mean two very different things.

But Unicode supports more than just languages, it also supports mathematical symbols including a whole slew of alphanumeric ones. These mathematical symbols are intended to be used for math texts and are semantically different than their Latin counterparts. Said another way: just because the 𝐴 looks like an italic A doesn’t mean it is one.

Why is this important? Is this just a language nerd getting uppity about incorrect use of Unicode? It matters because beyond being semantically incorrect, using Unicode in this way renders the text completely unintelligible to assistive technology like screen readers.

When a screen reader encounters 𝐴 (U+1D434), it will read it as “mathematical italic capital a” because that’s what it is. It isn’t the English letter A (U+0041) that is italic. Which means that the string “apples 𝐴𝑁𝐷 bananas” will be read to the user as:

apples mathematical italic capital a mathematical italic capital n mathematical italic capital d bananas

The video in this tweet by @kentcdodds does an excellent job of demonstrating just how horrible this is for people with screen readers.

While I can certainly sympathize with the desire to add style and emphasis to help convey emotion in written form, let’s not do so at the exclusion of others.

Thank you to this StackExchange question & answer for confirming my suspicions and providing the video link when I was investigating this back in July.

YouTube Music is a poor replacement for Google Play Music

Google is replacing Google Play Music (GPM) with YouTube Music (YTM) starting this month and shutting down GPM entirely in December 2020. Google is touting YTM as a great replacement for GPM but are conveniently not revealing that YTM does not have feature parity without a YouTube Music Premium subscription.

With GPM I can listen to my music in the background on my Pixel. But with YTM you need a monthly subscription to do that.

With GPM I can listen to my music on my Sonos. But with YTM you need a monthly subscription to do that. Ars Technica reports that Google Home users will need a YTM subscription too, just in case you forked out money for Google-branded smart speakers.

And it doesn’t matter if this is music that you’ve uploaded or that you’ve purchased from Google. That’s the real kicker for me. I’ve been buying music from Google since 2013 — 669 songs to date, some of them via albums and some of them as individual songs. It’s hard to know exactly how much money I’ve paid to Google for music over the past 7 years, but at $1/song that would be just under ~$100/year. 

I don’t subscribe to music; I still purchase music. More over I’m not going to pay $12/month for YouTube Music Premium to be able to access the music I’ve already purchased. If I wanted a subscription service I would pay $10/month to Spotify. I realize that I am no longer Google’s target audience.

Instead I’ve downloaded my purchased music from Google and am trying out a Plex server. I can listen to music on my phone and Sonos without a subscription of any kind. So far it’s working out well.

Now I just need to figure out who to purchase music from that isn’t Amazon or Apple.

Managing passwords with LastPass

It’s abundantly clear from the numerous recent data breaches that the most secure password for a website is one that isn’t used anywhere else. And while there are mnemonics for making memorable, unique passwords, the best way I’ve found is to use a password manager like LastPass.

Before LastPass I used the common, but very insecure, method of having different “levels” of passwords. One password was throw-away and used on sites that I didn’t care about. My medium-security password was used more rarely and only on sites that were important but did not hold financial or medical data. My high-security password was only used on financial and medical sites. Periodically the high-security password sites would be changed and the password demoted to medium password sites, etc. That’s a pretty dumb way of doing it, because all it takes is for one financial company to get hacked for that password to be at risk1 and open the door to all your financial and medical accounts.

The most secure way is for every site to have its own password. That way if a site is hacked, the only place that password can be used is the already-hacked website, not your bank account2. Memorizing a unique, secure password for every website you visit is impossible for mere mortals however.

Enter a password management tool like LastPass.

LastPass is a browser plugin for all major browsers on all major platforms. You have one master password to log into LastPass and it then keeps track of all of your usernames and passwords in a vault, automatically filling in those form values when you visit the website again. LastPass uses your master password to encrypt/decrypt your vault and only sends the encrypted vault to its servers, so your data is never accessible outside of your computer.

You can have LastPass installed on multiple computers and devices, including your mobile device, and have access to all your usernames and passwords whenever you are using a hardware device that you trust.3 The only password you have to remember is the master password to your LastPass vault. Accordingly, that password should be both strong and memorable.

You can share individual username/password entries to other LastPass users for them to use. This is perfect for giving multiple people in a household access to a single resource — like utility company website credentials — without duplicating that information when the web site requires you to change the password every 6 months.

Also, just because you use LastPass doesn’t mean that all of your passwords have to be an unintelligible mishmash of characters and symbols you can’t remember. While I let LastPass create such completely-unmemorable passwords for most sites, I still create strong but memorable passwords for a few accounts that I want quick, direct access to. LastPass will happily remember those passwords just as easily has ones it creates, so don’t let that dissuade you from using it.

I’ve found LastPass useful for other things as well. For instance, within LastPass you can use secure notes. These are great for putting information like your frequent flyer numbers, known-traveler numbers, passport information, private key passphrases, and other data that you want to have secure and generally available.

If you aren’t using unique passwords everywhere, I strongly encourage you to do so. A password manager like LastPass is a great tool for easily moving to that paradigm and I highly recommend it after using it for 2 years.


1 For some definition of “at risk”. See also hash strength, salting, and rainbow tables.

2 In the biz we call that isolating the failure domain.

3 It’s important that you trust the device you are accessing LastPass from. Untrusted devices can be using keyloggers and other technology to swipe your passwords. Never type in a password on a device you do not trust.

Your tech resume needs help

After slogging through yet another dozen resumes for my two open SDET positions, it’s clear techies need help writing better resumes that convey their expertise and differentiate them from others.

Tweaking a resume

One of my resume tips for folks applying for SDET jobs was to make friends with a technical writer and offer to take them out to lunch in exchange for looking over your resume.1 Having a wordsmith look over your resume with a critical eye is great for tightening up wording, ensuring consistency in tone and verb tenses, and just making sure that the whole thing is coherent to another technically-inclined individual who isn’t you. That advice is just as true now as it was 6 months ago.

But while technical writers are miracle workers when it comes to translating obtuse technical details into prose for the masses, it’s unreasonable to ask one to essentially rewrite your resume from scratch in exchange for lunch. And based on many of the resumes that I’ve been seeing over the past four months, many techie resumes need a rewrite, not just a tweak.

Resume rewrites

In cases where you need more help than just some tweaks, I encourage you to hire a professional resume writer. A resume writer will sit down with you to learn about your technical expertise and accomplishments, then help convey that information on your resume. They can often help strengthen your LinkedIn profile as well, something that I and other hiring managers often look at.

Good resume writers aren’t cheap. It costs anywhere from $500 to $1000 to work with a resume writer, but depending on the state of your resume that could be money very well spent. Given that tech salaries easily run into six digits a year, spending <1% of one year’s salary on an investment in your career should be a no-brainer.

IT Resume Service

Frustrated with the quality of the resumes I’ve been getting as a hiring manager, I did some research to see if there were resume writers specifically for techies. Surely someone was capitalizing on this fertile field of poor tech resumes. And there are!

After reviewing several websites I ran across Jennifer Hay‘s IT Resume Service. I was impressed with her overall approach, list of sample resumes, and articles. After a few emails and a phone conversation with her I feel very comfortable recommending her services.2 We’re even discussing possible future collaborations on articles and other collateral to help tech folks write better resumes.

Contact her to discuss leveling-up your resume.

Even if you don’t use Jennifer, I strongly encourage you to take an honest look at your resume and consider if it could benefit from the expertise of a professional resume writer.

Do it for yourself, but also do it for me and every other hiring manager out there.


1 I also said that technical writers are amazing people and knowing them will enrich your career and your life. That’s still true. I’m good friends with 6 tech writers, or former tech writers, and you simply can’t find better people. Some of them even agree with me on the Oxford comma.

2 I’m not getting any financial compensation from her whatsoever. I just selfishly want to start getting better resumes.

If the FBI wins against Apple, we all lose

The following is a letter I’ve written my US Senators and Representative regarding the FBI’s attempt to force Apple to provide a backdoor into their iOS encryption framework.

Dear $CongressCritter,

I am strongly against the FBI’s attempt to force Apple to provide a backdoor into their iOS encryption framework.

I am not an iPhone user, but as a 15-year veteran of the tech industry, I am intimately familiar with the importance of encryption in today’s technology ecosystem. If the FBI were to force Apple into providing a backdoor into their encryption framework, there is little to ensure that this capability is limited to this one case and absolutely nothing to prevent others from using it once created. To expect that the custom iOS provided to the FBI would never get into the hands of hackers and enemy states is naive and dangerous. Nor is there anything to prevent the FBI or other government security agencies from using this against US citizens in the future.

Forcing Apple to provide a backdoor sets a terrible precedent. It will negatively impact the US technology sector, and thereby the US economy, as individuals and businesses (both within the US and outside of it) stop purchasing US-made equipment knowing that the US government has, or can have, a route into their data.

Privacy and security are inherently at odds with one another and I acknowledge that it is hard to find a balance between the two. But the US government should be directing tech companies to do a better job of protecting citizen’s privacy, not providing backdoors to allow the US government and others to violate that privacy.

Please put pressure on the FBI to withdraw their request from Apple and make it clear that American citizens need strong encryption to protect our privacy and the US economy.

Those who would give up essential Liberty, to purchase a little temporary Safety, deserve neither Liberty nor Safety.

— Benjamin Franklin

Sincerely,
Casey Peel

Career levels across Seattle-area tech employers

Disclaimer: These thoughts and opinions are my own and not my employer’s, although if you didn’t know that already you’re clearly not paying attention.

EMC Isilon recently refreshed their career level definitions and it got me thinking of how difficult it is to map levels from one company to another. EMC uses a P1-P7 numbering system, IBM uses a band 6-band 9 numbering system, Microsoft uses levels numbered 59-68, Amazon calls theirs levels L1-L10, etc. How is anyone suppose to make sense of this mess across companies? So I set out to do what any engineer would do: determine if there was a mapping between them.

From my experience at IBM, pre-acquisition Isilon, and now EMC I was able to do some of the mappings myself. I then reached out to friends who have worked for at least one of the three and asked how their current companies mapped to it. The following table includes the results thus-far:

IBM pre-EMC Isilon EMC Microsoft Amazon
P1 – Entry 59/60
band 6 SDE 1 P2 – Intermediate 61 L4 – college hires
band 7 SDE 2 P3 – Senior 62 L5 – mid-career
band 8 SDE 3 P4 – Principal 63 L6 – Senior
band 9 P5 – Consultant 64 L7 – Principal
STSM Staff P6 – Senior Consultant 65/66/67 – Principal L8 – Senior Principal
Distinguished Engineer Distinguished Engineer L7 – Lead /
Distinguished Engineer
68 – Partner L10 – Distinguished Engineer
Fellow Fellow Fellow

Discussion frameworks, not absolutes

The chart above is useful primarily as a framework for discussion. Even within a large company the skills for someone at given level may not map closely to others at that same level. Add cross-company evaluations into the mix and the above is, at best, a guideline.

Why is this important?

People change jobs frequently in the tech industry (no surprise given employees who stay in companies longer than 2 years get paid 50% less). My 10-year career at IBM and 4+ years (so far) at EMC makes me an outlier in a field where most of the resumes I see have people staying just 1-2 years between jobs.

The chart above can be useful when changing jobs across companies. When I left IBM to come work at Isilon this would have come in very handy. Instead of moving from my band 9 position at IBM to at least an SDE3 or Staff position at Isilon, I moved over as an SDE2 — two steps down. Next time I’ll have more data to make a solid lateral (or upward!?) transition.1

Levels !== Pay

Everyone I’ve talked to has confirmed that pay does not directly map to levels. It is common for the upper end of the pay range of level X to overlap greatly with level X+1 and maybe even border the lower end of level X+2.

What about Company X?

I’d love to get other large tech companies like Google and Facebook on here, I just haven’t found anyone willing to share their insight. If you have overlap with one of the above drop me an email and lets fill in the blanks.

1 FWIW, I currently have no intention of leaving EMC Isilon for another job.