Fedora Silverblue as an HTPC Part 2

One thing to know about Silverblue is that it’s a Gnome environment. I was already running Gnome for the HTPC, but I prefer KDE for my computers usually. When I was installing Silverblue there was no option to go for KDE or anything else. On Silverblue you install via Flatpaks. Any regular installs (ostree instead of rpms) also requires a reboot.

A few things to note based on getting Kodi setup:

  • /media is actually at /run/media (but there is a symlink)
  • normally if you need to add stuff to the userdata folder for Kodi (advancedsettings.xml for using mysql, etc) the path is $HOME/.kodi/userdata . With Fedora Silverblue (and using Kodi Flatpak), it’s at $HOME/.var/app/tv.kodi.Kodi/data/userdata
  • And finally, $HOME is atually at /var/home/username (but there’s a symlink)

Right now I’m trying to figure out how to get my Ortek MCE remote to work with Kodi (at least for Play, Pause, and Stop). If I figure that out, I’ll definitely post here.

Fedora Silverblue as an HTPC Part 1

Originally I was going to mess around with Silverblue in a VM before considering using it on my HTPC. In theory it sounded like it would work very well – an immutable, rollback-able OS seems like the perfect thing for the one computer that ALWAYS needs to work for less tech-savvy folks in the house. But the first release of Silverblue seemed to still be a bit rough around the edges. Lots of recent blog posts on Fedora Planet (a blog aggregator for folks who participate in the Fedora project) seemed to indicate that things were in a better place now for Silverblue. Still, I was going to first mess around in a VM. But then I had to reboot the computer after things went awry with the display and this time I wasn’t able to get around the Free Magic issue that had been plaguing me for a few months now since upgrading to Fedora 31 (in anticipation of Fedora 30 being out of the support window). The Free Magic issue basically would appear after the grub menu and while others’ reports on bugzilla seemed to indicate that a kernel upgrade fixed it for them, such was not the case for me. For a while it worked such that if I was there on reboot and hit enter on the grub entry, it would work (while it would fail if you left it to boot on its own). But tonight it would not yield. The computer had gone catatonic. So, I figured it was as good a time as any to try and move to Silverblue. As a bonus, I was going to move the installation to an SSD, so I still have the old, borked installation if things go completely wrong (although I’d still need to fix the Free Magic issue).

I’m installing the base system as I write this. Future posts will document getting blueyoshi (name of that computer) back up to a working condition as the HTCP.

An Update on my Roll-Your-Own IoT

As things continue to happen in the commercial IoT space like Wink switching to requiring subscription fees, I continue to feel happy that I’m creating my own Internet of Things solutions rather than relying on commercial vendors who can decide to disappear or suddenly start charging fees. The cost for me is that things go at a slower pace and, obviously, don’t have sleek packaging. I think I can live with that.

Raspberry Pi B (1st Gen)

Because I don’t have that much disposable income for my projects, I prefer for my hardware projects to solve a problem for me. In this case, one of the problems I’ve had is leaving the garage door open and not realizing it. Mostly this happens when something distracts me (usually a parenting “emergency”) and breaks up the routine where I check the garage door after putting away all the kids’ outdoor toys. So, after finding someone who’d done a similar project with a first gen Raspbery Pi, I decided to code up my own solution. As of now I’ve got the system interfacing with Home Assistant to let me know at a glance if the garage door is open (great if I’m on any floor other than the first floor) and also have set up an integration for HA to let me know if the door is open after sunset. Additionally, I have the status pushed to my Matrix instance. There are a few more tweaks I’d like to make, both to make it more useful for folks who aren’t me, and just to get it to a perfect level of reliability (right now a REALLY strong wind can cause a blip where the doors seems to open and then close).

Arduino MKR WiFi 1010 and ENV Shield

Once again, this project is about helping me out with my shortcomings. All too often I would end up getting into the shower and forgetting to turn on the fan. Since I like to shower with water just this side of first degree burns, this isn’t so good for the bathroom environment which can reach into the realm of 90% humidity. So I built a sensor with the Arduino MKR WiFi 1010 and the ENV Shield. It measures humidity and when it reaches a certain threshold, it tells Home Assistant to turn on the bathroom fan. It also reports back the temperature and the light intensity. The mini-breadboard you see in the above image was something I added to try and do some hardware debugging. It did help me realize quite a few things I needed to change in my code. It also seems to keep the ESP32 chip from locking up. I’m not sure if that’s because having some load (from the LEDs) actually does something or if it’s just coincidence. But after adding the breadboard, the system went from a few days between lockups to going weeks before needing to be power cycled.

New Dishes I cooked in March 2020

Brown Sugar Cookies

While I did a lot of cooking in March, I only made one new dish – Brown Sugar cookies. I’d had regular sugar cookies my entire life. I’m pretty sure this is the first time I had sugar cookies made with brown sugar instead. The brown sugar definitely took these cookies to a whole other taste realm where the molasses in the sugar added another dimension to the taste. I’m not saying it’s supplanted [white] sugar cookies in my heart, but that there’s a place for each of them. If the kids ate more cookies or if I didn’t care about my heart health (most cookies have a LOT of butter) I’d make these a lot more often.

Recent Fedora 31 and Fedora 32 Upgrades

Recently upgraded my server to Fedora 31 as the Fedora 30 support window had closed. All I had to do was disable the bat Modular Repo. It wasn’t obvious I needed to do this at first, but I found a bugzilla that covered it. Then everything proceeded.

I also updated my main laptop to Fedora 32; it’s always my first upgrade since it’s not my main machine. That one required a few modular repos to be disabled as well as a bunch of conflicts from Python 2 packages. By using dnf’s –auto-erase (or whatever the command actually is), everything proceeded and seems to be running just fine. I was a little worried at first with the warning about coming back from a locked screen in KDE, but I decided I could live with it on the laptop. So far, either the issue doesn’t affect my laptop or I haven’t triggered the conditions.

With how well things went, I’ll probably upgrade my main machine in a month or so – mostly so I can get access to Python 3.8. If that ends up coming to Fedora 31, then I may wait for the Fedora 33 upgrade and just do a 2-level upgrade. Somewhere in between I’ll probably upgrade my VMs – one for MythTV and one for building RPMs (which I set up so that I wouldn’t have to install so many gosh-darned packages on my main machine – which makes upgrades take forever).

Disney continues to increase representation on TV with Mira, Royal Detective

Being a male, who’s racially white, I never had any trouble with finding representation on TV. This hasn’t always been the case for everyone, although it’s only recently (last 5ish years or so) that folks have begun to speak out on how important representation is. When you rarely see yourself in media, I’ve been told, you feel left out by the culture. Disney started rectifying this in its Disney Junior line; first with Doc McStuffins.

Doc McStuffins logo

Doc McStuffins involves a small African-American girl who is a doctor to her stuffed animals that she can bring to life. The show is pretty awesome on quite a few levels. First of all, when most young kids’ TV shows involved male protagonists (this is changing as you’ll see with this blog post), Doc McStuffins was pushing the boundaries by having a female protagonist. Second, Doc’s mother is a doctor. Third, her father is a stay-at-home dad, a trend more families are following and providing an example for children of color. The story lines emphasize using logic to solve problems as well as a general theme of reducing doctor anxiety – somethings kids of all backgrounds can appreciate.

Cast of Elena of Avalor.

Next, Disney released Elena of Avalor. It’s for a slightly older kid set, but what’s most groundbreaking about the show is that it’s an action show with not one, but three female main characters. For the longest time, the Hollywood consensus was that girls were not interested in action shows and that boys wouldn’t watch shows with female protagonists. Elena lives in a fictional country, Avalor, but it’s clearly modeled after a mix of MesoAmerican and Mexican cultures. There’s even an episode that has this MesoAmerican game that’s kind of like basketball meets soccer:


It also has an equivalent to The Day of the Dead and Christmas-like celebrations that incorporate Mexican themes. The show also excels at the female relationships – both Elena and her little sister and Elena and her best friend. In fact, in most of the episodes I’ve watched with the kids, there tends to be a role-reversal with the two male leads competing for Elena’s affections.

This brings us to the most recent cartoon in this progression, Mira, Royal Detective. This has quickly become a favorite of youngest because of the addictive music in the show. This show is targeted towards the Indian-American (as in your parents are from the Asian subcontinent) kids. The opening theme song has a Bollywood-style opening:

Part of Mira’s Bollywood-style opening

And every episode as Mira goes on the search for a clue, she does a Bhangra-ish little dance with her moongooses.

Some more dancing when Mira’s “on the case”

I’m much less familiar with Indian culture, so I can’t speak as authoritatively to how faithful it is, but there are definitely mentions of food like samosas, there’s Indian architecture, and Disney has done a great job on the casting. There are a good amount of South Asians in Hollywood, so there was no reason not to cast them for the voice acting. Mira, Royal Detective features Feida Pinto, Kal Penn, Jameela Jamil, and Aasif Mandvi as well as some other names I don’t recognize.

Given how important it is for kids to see themselves in TV characters to feel like they’re part of the culture, I think it’s pretty awesome of Disney to be doing this. Of course, it also exposes other kids to these cultures, which hopefully makes them seem a little less weird and different. (And, in the part of Maryland where I live – the South Asian population is pretty large so it’s good to have preschool kids exposed to these differences before they get to school) And, just because Disney probably did it to attract more spending dollars from wider sections of the American public doesn’t make it bad. Sometimes the results matter more than the incentives.

Installing KDE Plasma 5 on CentOS 8

You can watch the following video. There are also text instructions below the video. (including getting sddm working)

I started off with just a boot install of CentOS 8, so I wouldn’t have Gnome or any other unnecessary cruft installed. After installation, I enabled the EPEL repository – latest directions for that are here.

After that, I had to install KDE by typing:

sudo dnf groupinstall “KDE Plasma Workspaces”

systemctl set-default graphical.target

Then startx started Plasma.

I didn’t spend time getting the display manager working, but it’s pretty easy. After having done all of the above (but before you use startx), type:

systemctl enable sddm

A reboot later you’ll have your graphical login.

CentOS 8 on Acer Aspire One D255E

A little over a year ago, I put CentOS 7 on my Acer Aspire One. We had no idea when RHEL 8 was coming out (turns out just a few months later when I was at the Red Hat Summit, it was the release party for RHEL 8), so 7 went on there. And at Red Hat Summit I learned that, while running CentOS 7, suspend worked on that netbook. However, it was already pretty old by the time I put it on the netbook and it was missing certain libraries and had old versions of libraries like Go so I couldn’t do something like install Weechat-Matrix on there.

Now that CentOS 8 has been out for a while (I think part of the delay came from setting up CentOS 8-Stream, I decided to put CentOS 8 on my netbook. There isn’t any supported upgrade path (unlike Fedora), which is a bummer. However, this netbook is just used for light travel and as a backup at conferences in case my main laptop doesn’t work. So I didn’t mind blowing it away.

When I put in the USB stick with the install ISO, everything worked fine. However, from the minimal install, it did not install NetworkManager-wifi (which it probably would have done with the Desktop/Laptop install, but I really didn’t want to have any more packages than I needed). So if you find yourself installing CentOS 8 on a laptop where the WiFi works during the installation, but not after installation, you just need to plug in an ethernet cable and install NetworkManager-wifi. After a reboot, everything worked perfectly, network-wise. I was also pleased to see nmtui installed as I prefer it to nmcli most of the time. Usually it’s the first thing I install on a CentOs install.

On the unfortunate side, although there are EPEL packages for CentOS 7 for weechat and i3 (the window manager), they don’t exist for CentOS 8. Perhaps it’s a matter of time or perhaps someone needs to step up to make those packages.

OK, that’s it for now. I’ll report back if there’s anything astonishingly great or bad about running CentOS 8 on my netbook.

Coming Full Circle: Contributing to the Python Project Matrix-Nio

Somewhere around 15 years ago, I started learning Python because I’d gotten deep into genealogy and started using the free and open source project Gramps. As I was also pretty deep into free software (somewhere around that time I became a supporting member of the FSF for a few years – and I think my smile.amazon.com still donates to them) I got interested in the idea of helping projects by contributing code. Python seemed like it wasn’t too hard to learn (compared to C++), so I started learning. I never did end up contributing to Gramps as I found GUI programming incredibly hard. In fact, it was something like 6 years ago before I created some useful GUIs (that weren’t copied out of tutorials) and only last year that I started making good, competent GUIs using the QT toolkit.

Slowly I created more complex Python programs that solved various problems I had. But it was in 2019 that I started making complex projects with pytest, flake8, learning about decorators, etc and started reaching a certain level of mastery in the language. (Which is not to say mastery of the language, but certainly rising above casual tinkerer beginner level)

Also, long-time readers of the blog know that I support self-hosting so that you’re not the product and also so that services can’t be yanked away from you, so recently I started running my own matrix.org server, using the Synapse reference implementation. (In case you don’t know, Matrix is a federated version of a Slack-like app – basically IRC on steroids). As part of my garage IOT project, I wanted to have it be able to send a message into a Matrix room to let me know if the door has opened or closed. So I needed a Python library to interact with Matrix (rather than speaking at the level of http GET and POST urls). That led me to matrix-nio, the library recommended by the Matrix devs since they’re unable to maintain their own Python SDK.

I wanted to be able to have the user try and register their bot if they didn’t already have an account for it on their matrix server, but matrix-nio lacked both registration and deactivation methods. I put in a feature request for those features. When poljar, the project maintainer, marked it as a good issue for a beginner, I decided to jump in and try and implement it myself. It wasn’t easy – it involved Python’s async library, which I know nothing about, and a way of implementing the repo that was very different from the way I would have done it (not wrong, just different – and probably more like how I should do it given poljar’s experience programming). But I’m now the 3rd biggest contributor to the code base and I still haven’t implemented my deactivation code!

It’s pretty awesome to finally be able to give back to an open source project! I hope many others will be able to benefit from my code.

Milestones reached in two of my Python Projects

For my btrfs snapshot program, snapintime, I have reached version 1.1.1. About six years after starting this project, it now covers all the cases I wanted to back when I started. I’m very happy with where it’s now at.

For my Extra Life Donation Tracker (PyPi page here), I’ve reached my v4.2.0 release. This release fixes some of my oldest issues (#s 13 and 14 – while the current highest issue is #95), and allows users maximum flexibility in the way they want to set up their tracker window. They can change the font face and color of the text that displays the latest donation and they can change the background color if chromakey green doesn’t work for their use case.

A Tip for Reading Manga on the Kobo Clara HD

Recently I got a bunch of manga through a Humble Bundle sale. Having read “authentic” style manga before, the Kobo Clara HD seemed to be about the right size to read manga without having to do any zooming. So, naturally I uploaded the .epub for the Kobo. It was HORRIBLE. It cut off part of the image and made it impossible to read. After a bit of Googling around, I found the suggestion to use the .CBZ file, as the Kobo was capable of reading it. That worked very well. The only real bummer is that it has a margin around the page that makes it just SLIGHTLY reduced in size. It’s not a problem for the text, but some of the fine details can be a little hard to make out. Overall, it worked VERY well and I recommend it as a way to read manga in ebook form (allowing you to carry all of a modest run on your device). (But might not fit all of, say, One Piece or Dragon Ball.)

Review: Surrija by Surrija (formerly Jane Lui)

Like, perhaps, many of my readers, I knew Jane Lui’s music mostly from her cover songs. But I really liked her voice and so I decided to back the Kickstarter for her new album, Surrija. By the time this review is published, I’ll have had the album for about 2 months. For this review I’ll first focus on my initial impressions and then my impressions after having listened for a while.

My house is not full of Sonos speakers, Amazon Echos, or Google Home devices. So when I want to listen to music, it’s either on the living room sound system, or (more often now that I have kids), playing from my phone wherever I happen to be. Because of aforementioned kids, I rarely listen to music with headphones on while at home. That whole preamble is to say that I’m often listening to music, whether it’s Taylor Swift, Louis Jordan, Audioslave, or Billie Holiday, through my Pixel’s speakers. I would strongly advise you not to do that on your first listen of Surrija. While I normally don’t have issues with music through my speakers, Surrija (as we’ll refer to Jane Lui since that’s her new stage name with the album in italics) is trying to push boundaries with this album and until you get to know it, it just sounds extremely discordant coming out of speakers. This is particularly true with the first track, Nothing Love. The percussion that opens up the album is halting, seems to fail to maintain a tempo, is full of glitches – like glitch pop or a badly encoded MP3 and seems to challenge the user. Barcelona also starts off with some strange beats and Surrija singing with a very eerie voice and purposely out of key, before she moves into a beautiful rendition of a bridge that shows her range and that she’s purposely pushing her voice to put out a certain atmosphere. So, on that first listen on my phone, I wasn’t happy with my Kickstarter backing.

Then, the next day, I threw the album on at work (we have an open office, so headphones are the only way to stay sane) with some headphones. Suddenly I was able to hear the full range of what Surrija was trying to do with this album and I went 180 on my opinion. This was a great album that was worth waiting for! Surrija has put a LOT into this album and I would love to hear her do an episode on Song Exploder about any of them and how she decided what to layer into each track. So, without further ado, my thoughts on each track.

  1. Nothing Love – Interestingly, the song that at first listen (again, from my phone’s speakers) turned me off from the album ended up being my favorite once I gave it a proper listen with headphones on. Musically, my favorite part is the chopped up horns that accompany the chorus. Surrija’s haunting voice on the bridge is my favorite vocal part of the song.
  2. Barcelona – This song also has a beautiful chorus that shows off a lot of the strength of Surrija’s voice.
  3. Sylvette – This is the first song with a bit more of a pop sensibility. If I were introducing someone to Surrija, I’d start with this song. It has a much more common baseline where the percussion is not fighting the song. It’s also a great jam that I find stuck in my head for days after listening to the album.
  4. Minotaur – I’m not sure what the title has to do with the song, but this is a very interesting song. There’s a certain tension that builds musically and vocally that gets released with the chorus, right as you hear “She changes everything.”. I’m not entirely sure if it’s meant to be a hopeful song, but it certainly elicits that feeling in me.
  5. She learned not to be scared – This is a very haunting piano piece that sounds very familiar. Is a reference to a famous piece? Is it actually a famous piece? Either way, it’s a great, short track.
  6. Gilot – we return to some out of tune instruments in the melody, combined with sparse beats, and Surrija’s beautiful voice. I think this is my second favorite song on the album.
  7. Turnstile Hostile – while not as straightforward as Sylvette, it’s definitely a song that could be a single that helps take this album up the charts. It progresses to a crescendo in the end that really pays off.
  8. Dora – This one is in conversation with Minotaur. It’s also beautiful and appears to contain a duet, although it may just be Surrija singing with herself thanks to recording and editing technology.
  9. Mercy Street – A third song that could be a single, but this one a very slow, emotional one. Funny thing is that I’m pretty sure I’ve heard similar lyrics in Christian Rock. In fact this song reminds me in style of Plumb. Of course, don’t take that to say I’m accusing Surrija of copying anything, more just an observation of how certain themes appear in certain contexts.
  10. Semibelieve – Another slow song.
  11. h u m – doesn’t really function on its own. It’s more of an interlude into the next song.
  12. Almost Time – A good closing song. Powerful, if a bit melancholy sounding.

This is definitely an album worth buying. If you’re no longer buying music, definitely worth streaming. You get more out of it with every listen. Check it out!