Cello Goodbye

The kid’s gotten interested in playing music and has been trying out various instruments over the last few months. (Yay for rentals!)

The latest is cello. As soon as he heard Bach’s cello suites, he was convinced.

We lined up lessons with the same teacher he’d had for violin earlier this year. Then we went to a music shop to measure what size he needed and rent a cello.

Only one problem: when we got it home he noticed the bridge was tilted instead of perpendicular to the body of the cello. He can replace a string just fine — he actually had to replace the E string on the rental violin when it snapped during tuning — but we all agreed to wait until his first lesson and let the teacher adjust it. It’s held in place entirely by the tension of the strings, and not something that they recommend beginners mess with.

He had his first lesson a few days later. The first order of business was to adjust the bridge. So she started carefully loosening the strings while holding the bridge until she could shift it into place. And as soon as it moved, we all heard a loud *THUNK* from inside the cello.

“Oh no!” the kid said. “SOUND POST!” And we all looked at each other in sudden horror.

Wait, what’s a sound post?

The sound post is inside the body of the violin or cello, connecting the top and bottom. (Or front and back, I suppose.) I wasn’t sure exactly what it did aside from maybe structural support, but I knew it shouldn’t be rattling around in there, and it was clearly not something that could be fixed on the spot.

And they were both certain that you couldn’t play the instrument without it.

I looked up its acoustic function: the sound post is aligned with one end of the bridge to provide a fulcrum for the bridge to vibrate around. This causes the bridge to transmit the sideways vibrations of the strings (constrained by the bow pressing on them) to vertical vibrations in the body, making it actually sound good. Plucked instruments like guitars don’t need that because the strings can vibrate in all directions.

So you definitely wouldn’t want that to be missing.

Or rattling around inside the cello.

Plan B

The teacher immediately had to retool the lesson. He couldn’t play the instrument we’d brought. And he couldn’t play her full-size cello. So she introduced him to reading bass clef and some of the basics of how violin and cello differ, and assigned some practice lessons, just in case.

Amazingly, we were able to make it to the music shop in time to swap it for another one that same day. It was half an hour to closing, and could easily take anywhere from 15-45 minutes to get there depending on traffic. And it was a weekday at 5:30. We made it there with 10 minutes to spare!

Linux Ejecting DVD Drawer on Wake

At first I thought this was related to Windows losing drives on wake. It started happening around the same time, it also involved waking up from sleep, and the CD/DVD drive was disappearing in Windows along with the vanishing hard drive.

But while moving the cables fixed that problem, it didn’t fix this one.

It was only mildly annoying, especially compared to regularly losing access to a large chunk of local storage, so I figured I’d come back to it later.

Other people are seeing this too and it’s a recent bug in the Linux kernel. At least with Fedora’s rapid kernel updates I probably won’t have to wait too long between when the patch lands and when it hits my desktop. It’s been years since I compiled my own kernel, and I don’t feel like starting that up again now!

Windows Losing Drives After Sleep (Solved)

My main desktop PC dual-boots Windows 10 and Fedora Linux. I have an SSD drive for each OS, and recently added an HDD for larger shared storage. It’s worked out pretty well except for a recurring problem: Sometimes the shared drive just disappears from Windows after I wake it up from sleep mode.

I don’t mean Windows just unmounts the filesystem. I mean Windows stops seeing the hardware at all.

When that happens, it sometimes reconnects after a few minutes…and sometimes doesn’t. Which means it’s not only invisible in Windows, it doesn’t get cleaned up properly on reboot, so Linux will only access it read-only the next time I fire that up, until I get back into Windows and shut it down cleanly.

Time to get to the bottom of it. Most of what I found online boiled down to:

  • Update the SATA controller driver.
  • Update the motherboard firmware.
  • Make sure the cable connection is solid.
  • Move the cable to another connector.
  • Replace the cable.
  • Get a better drive, [brand the OP mentioned] is terrible.

Continue reading

Solved: NginX serving different localhost sites to Chromium vs. Safari or Firefox

I ran into a weird problem testing some websites on a local NginX installation on my Mac, where it was sending different sites to Firefox and Chrome for the same URL.

I’d put the server names into /etc/hosts pointing to 127.0.0.1, and I’d set up NginX with multiple server {} blocks, each with a different server_name. But while Chrome would load the individual sites for one.example.com and two.example.com, Firefox would always get the content from one.example.com.

A little more testing confirmed that all Chromium-based web browsers (I tried Edge, Opera, Brave and Vivaldi) were getting the correct sites, but Firefox and Safari were both getting the wrong server’s content.

When I compared the server blocks, I noticed that one.example.com was listening on both IPv4 and IPv6, but two.example.com was listening only on IPv4. I added the second listen directive, reloaded nginx, and voila! It worked in Firefox and Safari!

    listen 443 ssl;
    listen [::]:443 ssl;
    server_name  two.example.com;

So apparently, even though I’d only pointed two.example.com to 127.0.0.7 (IPv4), Firefox and Safari were connecting to ::1 (IPv6) instead. And since NginX had only connected one.example.com to that interface, that’s the site it loaded. It’s not clear whether Firefox and Safari are both doing something weird and Chrome isn’t, or they’re both using a MacOS system resolver and Chromium is doing its own thing.

TL;DR: If you listen to IPV6 in one localhost server {} block, listen to it in all of them!