Ogg > MP3 (thanks, Apple) (not)

I have several CDs (Compact Discs, not Certificates of Deposit) of music that I like. When I popped them into my PC, I got several folders of files I could copy from. I chose to copy the .ogg files because I liked the idea of using an encoding format without weird licensing issues.

Apple has foiled that plan. If I try to play a playlist on an Apple device, the .ogg files get skipped because (apparently) Apple doesn’t feel like playing nice with the Open Source community. They may have more money than God, but adding another codec – that doesn’t have license issues – to their devices isn’t something they are going to spend money on.

When I work on-premises in the office, my co-workers are often noisy and annoying. I want to pop in my Airpods and play background music to drown out their inane chatter. I don’t want to carry the music files on my device; but I do have a Nextcloud server at home that can stream the audio from the Music app web page. I can log in on my iPhone and play the playlist.

But because it’s an iPhone, it auto-skips the Ogg Vorbis files. This doesn’t happen when I’m at home playing the same playlists on Linux or Windows.

So now I get to re-copy the files from the physical media to my NAS (network attached storage) which in this case is a Synology.

First, I get to delete the files with the .ogg file extension. Two steps (for example):

exiftool -p '$filename' -if '$album =~ /WOW Worship: Yellow \(disc 1\)/' *.ogg > wow_worship_ogg_file_list
This generates a file, wow_worship_ogg_file_list, which has the file names in a list.

then to delete them:

xargs -I{} rm -r "{}" < /path/wow_worship_ogg_file_list

Second, after having cleared out the disk space, I can copy from my physical CD to my NAS. That takes a while; and, after it is done, the file names aren’t wonderful. Rename music files to their title to the rescue.

Except, of course, for a duplicate file name. I have an MP3 file I bought from Amazon (published by Monstercat) with the same title as one of the files from the WOW Worship CD. I would prefer to rename the Monstercat file, but really if I’m going to be running the rename music files to their title command often, I need to change the Title inside the .mp3 file. If I don’t, the next time I run it, it will attempt to rename the file to a duplicate name that is already in use.

Exiftool doesn’t really write new Titles, apparently. I think it can, depending on the file type. I wonder if the weird license problems of MP3 are at the root of the problem. Whatever: the answer was to add the id3v2 program and use it instead.

id3v2 -t 'Title by Artist' file.mp3

Now the rename music files to their title script moves the one file to the new file name, and the other file to its simpler file name than what came off the CD.

Discord app update – hooray! :-)

In my last post I whined that it takes a while before OpenSuSE gets the updated Discord app. I checked today, and the update was there. I only have three days to catch up on: nice!

Thank you to Wojciech Kazubski for updating the app in the repository.

I think instead of creating a new post of when Discord goes broken (does an update) and when the new version shows up fixed, I’ll just make a list here.

  • 2023-12-27 Discord client update came through, and this time it matches the server version 🙂 I was down fifteen days, but I’ve been out of town for six days.
  • 2023-12-19 Discord update came through, but maybe it’s too late? Yep, still down. OpenSuSE updated to version .38-1.1 but the Discord app wants to install version .39
  • 2023-12-12 Discord stops working until an update can be applied. Shucks. Three days. I have a group of friends for whom with-alex-jones-returning-journalists-worried-theyll-no-longer-be-only-source-of-misinformation would be a fun topic; but they will have to wait.
  • 2023-12-09 Discord works again, yay! Only four days downtime.
  • 2023-12-05 Discord stops working until an update can be applied. Shucks. Four days was nice while it lasted.
  • 2023-12-01 Discord works again, yay! Only three days downtime.
  • 2023-11-28 Discord stops working until an update can be applied. Shucks. But it was a nice long run.
  • 2023-11-18 Discord works again, yay!
  • 2023-11-10 Discord stops working until an update can be applied. Shucks.

Discord App update again (sigh)

In my previous post, I explained that every time Discord publishes an app update, I’m locked out* until someone fixes it in the OpenSuSE repositories. Four days ago, it showed up in my list of updates, and hooray! I was back in Discord after eight days of being locked out.

Today, another update is published. Sigh.

*“Locked out” is a poor term: I am voluntarily opting-out. I boycott Flatpak and Snap Apps because I dislike those technologies.

OpenSuSE updates this morning: 1,671 (but Discord isn’t one of them)

Every time Discord updates their app, I don’t use Discord for many days. This is a bummer because I have a circle of friends on the Internet I’ve known for 20+ years, and Discord is where we have settled (so far). So when Discord does an update, I go through a dry spell of not being in contact with them.

The OpenSuSE folk tell me I should install the Flatpak version of Discord or the Discord Snap app. I’m not a fan of either Flatpak or Snap. Snap fouled up a machine months ago (and it’s still broken to this day) when I installed it. Flatpak seems like a (no better) replacement for my RPM repositories. Worse, it duplicates storage and doesn’t integrate unless I convert everything over; so that just creates more points for stuff to break. But at least the single developer doing the Flatpak doesn’t have to integrate, so that’s not his problem.

I can use the web version of the Discord app. It has keystroke conflicts with the web browser, though, and because I use temporary containers for everything, it treats me like a new user who didn’t see that sticky post from five years ago….

So, I wait until someone asks the Discord people to update the RPM in the OpenSuSE repository. Eventually it happens. Time before last, it was eleven days.

Home Assistant media folder – connect to SMB share

Ooof. This one kicked my ass for a really long time. The question is “How to connect the Home Assistant Media folder to an SMB share?” There’s a wizard, but what to enter for the Remote share entry is murky.

A part of this is pretty obvious, but the other part is not. Of course, I tried the wizard first, but I didn’t enter the Remote share entry correctly. I tried reading the documentation, but it wasn’t much more than “For the Remote share entry, put in the remote share.” Home Assistant would always fail to mount the share, and the error message was (essentially) “It didn’t work”. Sigh.

I had previously created an SMB share on my Synology NAS, and could map to it just fine from my main Linux desktop, from my Nextcloud instance, and from Windows machines I have here on my home network. I knew from my Nextcloud install (adding it to /etc/fstab) that the vers=3.0 option was important.

Doing a search found a Youtube video about editing the /config/configuration.yaml file and running a shell command. It mentioned that the vers=3.0 was important. Maybe this is what I need? This turned out to be a rabbit hole (but no rodent with a mean streak a mile wide at the end 1).

Since the system-launched shell command wasn’t working, I tried the next logical step: try it from an actual command line. It didn’t work. I think that is because of Docker and the impermanence of the terminal shell and sandbox for security.

I installed a terminal app in Home Assistant, but whenever I tried the same mount command that worked on Linux, it would fail on Home Assistant with “permission denied”. Not really helpful. In fact, it seems unhelpful, because if I read between the lines 2 I see “your password is wrong” – which it wasn’t. “Permission denied” is the error message you get when your password expires, and the credentials file has the old password. Of course, I knew my password was correct: but if I were someone brand new to this, I would have been mislead by my own thinking.

Here is the mount command that does work in Linux but not in Home Assistant:

mount -t cifs -o vers=3.0,credentials=/config/.smbcredentials //mysynology.domain.tld/sharename_smb/data /media/nasfiles 3 4

The problem that I was running into was that the Home Assistant documentation never tells you what it wants for “Remote share”. The dialog box says “This is the name of the share on your storage server” – but that doesn’t help, because it doesn’t specify what to put in. That’s why I’m writing this post: if you have a mount command that does work elsewhere, the pieces you need are here.

Over on the Synology, it told me the share name was smb://mysynology.domain.tld/sharename_smb/data

That does not work here in Home Assistant.

Here are the settings that do work:

So, from the mount command above, the Server entry is mysynology.domain.tld and the Remote share entry is sharename_smb/data

Phew. This was a long time in figuring out, as I tried all sorts of stuff for the Remote share entry:

  • /sharename_smb/data 5
  • mysynology.domain.tld/sharename_smb/data
  • //mysynology.domain.tld/sharename_smb/data
  • mysynology/sharename_smb/data
  • smb://mysynology.domain.tld/sharename_smb/data
  • \\mysynology.domain.tld\sharename_smb\data
  • \\sharename_smb\data
  • \\\\sharename_smb\\data
  • sharename_smb
  • data ( with the Server being mysynology.domain.tld/sharename_smb )

Hopefully, if you found this post, it helps:

Server entry is mysynology.domain.tld

Remote share entry is sharename_smb/data

  1. Thank goodness it wasn’t the Rabbit of Caerbannog ↩︎
  2. which is a bad idea. ↩︎
  3. host name and share name changed to protect the innocent. Not that any of this is on the public Internet, but why tempt the random bored teenager? They can be pretty clever and persistent. ↩︎
  4. Yes, I had to create a directory named config off the root of my Linux box and copy the .smbcredentials file to it for the mount command to be an exact replica of what would have gone in the shell command in /config/configuration.yaml ↩︎
  5. so close. ↩︎

Coffee, again: inflation + energy drinks = change

I’ve given up energy drinks due to inflation. They were overpriced to begin with; but now inflation has gone too far, and I’m out.

Coffee is good, but the Keurig company is bad, so what to do?

Turns out Costco carries a Ninja Dual Brew coffee maker that fills the bill.

(longer version):

Way back when, I was a fan of Keurig. I bought an early Keurig brewer and loved it. But, foolishly, I didn’t do the de-scaling thing that one needs to do. It’s never really been a task I had to grow up with, so I don’t have a practice of doing it. (I’m still looking for To-Do list software that will do recurring tasks. Ideally it would be in Nextcloud).

Anyway, I eventually ruined my Keurig. It did last a really long time. But between the time I bought it and the time I needed a replacement, the company came out with a new line of machines that tried to implement (essentially) DRM (digital rights management). In other words, if you tried to put in non-Keurig coffee pods, the machine refused to work.

There’s a Nietzsche quote: “Mistrust all in whom the impulse to punish is powerful.”

When the Keurig company announced this scheme, I was done with them. I’ll never buy another Keurig branded item, ever.

It was also a stupid implementation of DRM, because it pointed a camera at the top of the coffee pod and looked for a QR code which identified the pod as authentic. So … buy one authentic pod, slice the top off of it, and glue it to the camera. Now every coffee pod is authorized.

Okay, so there is a work-around; but, what we have is a company that is willing to bully its customers. No-way am I going to reward that sort of company with any new sales.

So, what to do?

Well, turns out that Monster Energy has a line of energy drinks that are low (or zero) calories. Also, they keep working on different flavors. I started buying them. A lot of them. I was buying them by the case; usually drinking two a day. Over the course of two months, I’d go through five cases. Each case was 24 cans of 16 ounces each.

In the beginning, I was paying about $28 per case. That’s about $1.17 per can. Then the price creeped up to around $32 per case, or $1.33 per can.

But, some of the more popular flavors jumped up to $38 per case, then $43, then $48, and now over $50 per case.

In fact, to combat the perception that the prices are so bad, they’ve stopped selling them by the 24 pack case. Sure, the price per case is back down to $28, but the case is now eight cans instead of 24.

That’s the equivalent of $84 per case, for what I used to pay $28 – $32.

I’m out.

But man my ass was dragging without the caffeine boost.

Back to coffee is the answer; so I bought a normal coffee brewer.

There’s a reason the Keurig line of brewers was popular. The nightly mess of having to empty the grounds, and wash the filter basket and coffee pot definitely lowers my quality of life. It also boosts my home energy costs: I didn’t used to have to run the dishwasher every single night. I have the reusable filter with a micro fine mesh, and it’s fine; but I don’t want to reuse it without putting it through the dishwasher. I suppose that’s a choice I’m making that is picky. But that’s the way I am, so if I want coffee tomorrow morning, I need to run the dishwasher tonight.

Previously, I’d put dirty dishes and cups and tableware in the dishwasher and wait until the machine was full enough to warrant running a load. Dishwashers burn a lot of energy. I’m fine with that, because I get that “sanitize” work out of them. But running it every night for a coffee pot, filter, and coffee cup seems wasteful to me. The machine was practically empty.

Thankfully, I was in Costco a few days ago, and saw that they carry the Ninja Dual Brew coffee maker.

I don’t know much about Ninja, except that one of the podcasts I listen to is about the stock market, and one of the guys mentioned that Ninja as a company has excellent customer loyalty. Cool.

And indeed, this machine does coffee pods. I’m sold.

I’m back to 60 seconds for a cup of coffee, and no mess after. Heck, with the inflation costs of the Monster Energy drinks, this purchase has a positive ROI.

Thank you, Ninja, for making this machine. Thank you, Costco, for carrying it.

Gavin Newsom resents Californians?

I don’t know what else would explain choosing Dianne Feinstein’s replacement from Maryland. Maryland now gets 3 Senators and California gets 1.

I understand that the original design of two houses, with Senators versus Representatives was so that the big states with lots of representatives couldn’t bully the smaller states around. But that doesn’t mean that a large state should simply cede its power away. We should get an equal seat at the table.

Yes, the new senator from Maryland has spent her entire career as (essentially) a (under funded) lobbyist, so is deeply embeded in Washington DC politics.

But nothing about that helps Californians.

Quarterly inventory – 2023 Q3

Dear FutureMe,

Today would be a good day to do a quarterly inventory.

How is your personal life going?

How is your work life going?

How is your Volunteer Service life going?

Personal Life

Not really a whole lot going on. My mom did want to move in to a senior assisted living facility, so we took a tour and got a complimentary lunch. However, the place charges $8,000 per month which is $96,000 per year (and the move-in fee is one month’s rent, so $104,000 for the first year). Although my mom has some money, this was too rich for her blood. The residents we met loved the place. They say it is like a cruise ship that is parked. I was mildly interested to see if they are publicly traded, but alas they are not. Their headquarters are in Seattle WA, but they are privately held.

Happy that I have a Nextcloud server running on a tiny PC here at home. I had to configure pfSense to do Dynamic DNS to map the server name to my home IP address. The Internet gateway had to be beaten into submission to pass outside traffic in: pfSense had to carefully map the listening IP address and port (with an SSL upgrade) on the public Internet to the inside address and port. Running physical hardware is I think a better option than renting a Linode. Don’t get me wrong, I love my Linode running my email server on my own domain. But for serving up a calendar, address book, to-do list and media files – oh so many media files – the Linode would have been rather expensive. $110 later, I’ve got a (refurbished) 16 GB RAM Intel Core i5 running a cool 12 watts at idle. Storage is over on the Synology NAS (not exposed to the Internet). 12 watts isn’t as low as a Raspberry Pi, but still, it’s pretty good.

FINALLY! My new cell phone has an address book with entries. The entries are stored on the Nextcloud server, which is nice. I’m having to use Nextcloud email to get access to the address book contacts; and I’d prefer Roundcube, but that they are there at all is good. When I added them to Nextcloud email, it did create Birthday entries on my calendar which is sweet.

I’ve been trying to get Home Assistant, running on a Raspberry Pi 4, to connect to the files on the Synology, but it doesn’t work. I’m pretty sure it is that the Synology requires SMB 3, and Home Assistant isn’t specifying vers=3.0 correctly. It could be something else though, which is extremely frustrating that I cannot tell what the hell is what.

Been playing a lot of Factorio. Did get Elder Axe’s blueprint used and fully implemented; it is probably the best blueprint I’ve used so far. That said, it is missing a few assembly machines, and only has a single yellow science and a single purple science, so progress toward artillery was extremely slow. Bulked up my defenses and let the game run over night and during the day when I’m not at home. Still needed to manually craft some materials (low density structures) for yellow science bottles to be produced in less than a week’s time.

Work Life

The email retention project will soon be winding down. There was some kerfuffle because Opentext (who bought Micro Focus and GWAVA, who bought Attachmate, who bought Novell) wants to increase the yearly charge a huge amount, and we have documentation that their records are screwed up. They are claiming some people are new, when I show we paid for them three years ago, so they are not new. The whole mess though did kick us in the butt to export everything out of the server so we can power it down and delete it. That would free up 15 TB of storage, which is a reasonably large amount.

I did get to fix a broken system where server templates run a script on startup that send an email to a Mediawiki server, and the body of the email becomes the documentation for the new server in the wiki. Fixing that was cool, because it was a nice feature way back when, to get some documentation simply because the new box powered up and asked the server team member to answer a few questions. It’s not 100% solid though, as I just learned of two servers, and they are not in the wiki. 🙁

Volunteer Service Life

I’ve registered for a couple conferences; one is out of town with a hotel/motel. I also get to go to an Election Assembly, although a friend booked the motel. I’ll drive as we carpool three people. I get to man a Public Information booth at a health fair here in a couple days. One person on the Board of Directors for our local 501(c)(3) is ineligible to run, and another has announced that he may not run for health reasons. That leaves me and two others as elected members. Maybe one other person is interested in running? I also attended a technology workshop via Zoom, and heard that apparently I’m a “dark knight”. I’ve done technological stuff (it’s just WordPress), so like a knight, I’ve shown up to save the day: but I’m a dark knight because zero other people understand the dark arts I’m using to keep the website running. Did I mention that it’s just WordPress? But if I were to get hit by a bus, people might feel helpless to continue on (which would be a shame, since it’s just WordPress).