A short trip through dependencies hell

With my recent embracing of Linux for my desktop PC, and my tendency to want to install various software that’s not necessarily ready for primetime, it was inevitable that I would run into the dreaded “dependencies hell” situation where something gets broken and ends up breaking other things. Well, I’m still typing this on my now-fixed Linux desktop, so this is definitely not one of these “screw Linux, I’m going back to Windows” post, and I’ll walk everyone through this incident in detail so that if by some chance you find yourself having a problem such as this, you will not panic and be able to repair things.

So yesterday I was going through some of my old archives and saw a big fonts package. We’re talking 1000+ fonts. I don’t want to install all of those, but I wanted to have a fonts manager app so I can have a visual preview of all of them and enable/disable some of them without wanting to move files around directly. One of the apps I saw listed as available for Linux was fontbase, and from the web site I thought it looked really interesting. It is distributed as an appImage, which I don’t like — we Linux users have to deal with multiple software packaging methods already — but it’s supposed to be a way software can be installed without requiring a separate app (like apt, flatpak, etc.) so I gave it a try.

Usually the way to install an appImage file is to make it executable and double-click it, so I do that… and nothing happens. I bring it up in Nautilus (“Files”), right-click and select run, and again, nothing. So I grumble and open a terminal from my Downloads folder and run it (with ./[file]), and get an error message:


dlopen(): error loading libfuse.so.2

AppImages require FUSE to run.
You might still be able to extract the contents of this AppImage
if you run it with the –appimage-extract option.


This error occurs because Ubuntu switched from FUSE2 to FUSE3. A long time ago. However I did not know that, and foolishly did not research this ahead of time. So I assumed that FUSE was not installed at all, and that’s how this all started.

Naturally I went to a terminal and entered “apt install fuse”. Apt warned me it would have to install a lot of packages and, more importantly, remove a lot of packages. However I was in the middle of playing a game and was not paying sufficient attention. If I had been paying attention I would have noticed that the packages to be removed included things like “ubuntu-desktop”, which is pretty important on a working Ubuntu desktop system!

Unfortunately I just hit enter to start the process. This did not have any impact on running applications so I kept doing what I was doing, playing the game (it was “Car Mechanic Simulator” on Steam, if you’re curious), and then I watched the Japanese Grand Prix, and went to bed.

When I woke up is when I realized how badly I had screwed this up. I woke my computer from sleep, but I couldn’t enter my password. So, I reluctantly did a hard reboot on the system — hold down the power key for 5+ seconds, then restart — and that’s when I became aware that I had made a huge mistake.

I made a huge mistake

So the computer restarts, I get the initial Ubuntu screen… and then it disappears and shows me the console output of the system startup. That’s not a good sign. Also the last message I saw was that gdm had failed. That’s really great, I thought sarcastically. And that’s when it hit me that installing the “fuse” package was the origin of the problem. I looked up whether the apt system has a rollback system, and it does not — maybe that’s why Ubuntu now uses snap. However it gave me a starting point. Fortunately I still had my phone working so I looked up fuse and realized that I had inadvertently rolled back FUSE3. So I switched to a terminal in text mode by pressing “Alt + F2”, logged in, and reinstalled FUSE3. However I also noticed that it didn’t involve installing a huge number of other packages but one thing at a time. I rebooted.

Of course I was still left in the system console after rebooting, with gdm loading but me not seeing a GUI. So again I switched to a terminal, and thought about what my next step was going to be, and fortunately I found that apt has a flag you can use to reinstall some parts of the system (–reinstall). So at that point I started looking for a “desktop” meta-package and immediately saw “ubuntu-desktop”, so I went for it with this command:

“sudo apt install –reinstall ubuntu-desktop”

and this operation took care of all the dependencies. I crossed my fingers, rebooted, and Hallelujah! I got my desktop back, and my first thought was “I gotta write this down”, that’s the technical writer in me I guess.

Fortunately Ubuntu has the ubuntu-desktop metapackage available. Had this happened with another distro I think recovery would not have been nearly as easy  And fortunately I remembered exactly what I had done at the system level which could have caused this problem. Because, make no mistake, I am the only person who caused that problem.

However it might be a good idea to “blacklist” the fuse package from getting installed by apt, as this really shouldn’t be done by anyone who’s running the Ubuntu desktop. I’m not exactly sure how this could be done, but it’d be a good idea.

That being said, and even better idea is to be careful AS ONE SHOULD BE when installing packages using sudo and apt, and to not just breeze through stuff because of a foolish sense of self-assurance that “I know what I’m doing”. And that’s ultimately the lesson from this — sudo as a tool is powerful, and the way it works on Linux is to add a step (authentication) that’s literally there to stop you from doing something stupid. In Breaking Bad the expression “respect the chemistry” keeps coming up. Well, if you’re using Linux, remember to “respect the permissions”. But, if you do get yourself into trouble, at least Linux is made in such a way that it’s possible to walk back your errors and get back to a working system, which is more than I can say for Windows.

A tool for file recovery cleanup

If you’ve ever run file recovery tools on a disk, you know that you can end up with multiple copies of recovered files. Well, I made a little script that can help reduce the number of duplicates for you to clean up.

https://github.com/eltopo1971/file-duplicate-nuker

fileDuplicateNuker takes a directory as an argument, then recursively goes through that directory and takes a hash signature from the files in it. When it encounters a file with the same hash signature, it deletes the file.

Does this take care of all the duplicates? Oh heavens no. That’s a feature, not a bug — call it erring on the side of safety. The script has no idea what kind of file it’s dealing with. All it does is take a hash signature and base the decision of whether to delete the file on that. If there is so much as one byte of difference in the file it’s examining, it’s counted as a unique file and not deleted.

That being said, from my testing it does delete a good number of files, and when you have thousands of files to wade through, any little bit helps.

On the passing of Scott Adams

Scott Adams passed away earlier this week. He was the author of the Dilbert cartoon strip which used to run in newspapers everywhere who, once the heyday of his creation started to fade, let his life spiral into a cesspit of bigotry and hate so awful that it completely ruined his reputation and, to some extent, his existing work.

Sometimes success goes right to someone’s head and causes an interesting feedback loop — “if I am successful then it must be that I am much more intelligent than everyone else”. I mean, we pretty much get told all our lives that the reverse is true, so it’s not necessarily outrageous to believe that. The problem comes when that person then uses that logic to validate beliefs they have for whatever reason, but which are extreme and socially unacceptable in nature.

Most successful people would take a cue from the social reaction and see that there’s a problem with the beliefs. But some of them do not. Some of them think that no, they’re right and society at large is wrong. Not only that, but because they’re clearly so intelligent — society has already validated this by making them successful! — they see it as their duty to reform the world, to set them on the right path by being as open and offensive as they can be.

And boy did Scott Adams take that duty seriously. His descent into racist, sexist, transphobic madness is well documented here if you’re not already familiar with it:

YouTube player

That I think is what happened to Scott Adams.

And it basically caused his death as well — he was too smart to go to an ordinary person doctor. Those people treat losers! No, he was the vanguard, the illuminati! He was too intelligent to get chemo and radiation or maybe have a tumectomy or whatever else was possible medically. No siree. He went straight to the old panacea, ivermectin, a veterinary dewormer. It was just as effective for prostate cancer as it is for anything but getting rid of worms.

Scott Adams lived by his own rules, and he died by his own rules. Truly he was the architect of his own downfall.

My daily bread

I haven’t contributed a recipe in a while, so here’s something I make almost every day.

Fluffy, tasty naan

Naan so delicious you'll want to just eat it by itself
Prep Time2 hours
Cook Time15 minutes
Total Time2 hours 10 minutes
Course: Snack
Cuisine: Indian
Keyword: bread, butter, naan
Servings: 3 people
Author: tony
Cost: $5

Equipment

  • 1 Cast iron pan

Ingredients

Yogurt mixture

  • 1/4 cup plain kefir yogurt
  • 1 extra-large egg
  • 1/4 cup ghee or melted butter

Yeast

  • 2 tbsp honey
  • 1/2 cup hot water (40-50C)
  • 1 1/4 tsp yeast

Dry ingredients

  • 3 cup all-purpose wheat flour
  • 2 tsp table salt

Other ingredients

  • 1 tsp Avocado oil
  • 1 tbsp melted butter

Instructions

Blooming the yeast

  • Add the 2tbsp of honey into a small bowl.
    2 tbsp honey
  • Add the hot water to the honey and mix well to dissolve.
    1/2 cup hot water (40-50C)
  • Sprinkle the yeast on top, and mix it into the honey solution.
    1 1/4 tsp yeast
  • Let the mixture sit for 10 minutes while the yeast blooms. The yeast will rise to the top like foam.

Mix the other wet ingredients

  • Pour the yogurt in a separate bowl.
    1/4 cup plain kefir yogurt
  • Add the egg and mix together.
    1 extra-large egg
  • If you added the yogurt and egg straight from the fridge, you will need to bring up the temperature of the mixture to room temperature. This will prevent the butter from re-hardening into clumps when you pour it in.
  • Once your yogurt mixture is warm, pour in the melted ghee/butter and mix.
    1/4 cup ghee or melted butter

Prepare the dry ingredients

  • Put your flour in a medium-large mixing bowl.
    3 cup all-purpose wheat flour
  • Add the 2 tsp salt and mix well.
    2 tsp table salt

Mix the wet and dry ingredients

  • Once your yeast has bloomed, pour its contents into the yogurt mixture and mix them well.
  • Pour the wet ingredients into a little "well" in the flour mixture.
  • Mix everything together. Use a spatula at first, but when all the liquid has been absorbed just knead the dough with your hands. You need to get the point where the dough ball is slightly moist to the touch without sticking to your hand. Add additional flour if needed.
  • Put the avocado oil on top of the dough, just enough to make sure it stays moist. If it's very humid where you live you may not need to do that, but in my well-ventilated Montreal apartment in the winter it's needed. I use an avocado oil spray for this.
  • Cover the dough and let it rise for 1 hour.

Divide the dough

  • After the dough has risen, knead it lightly again to get the excess air out.
  • Divide the dough into individual pieces. How many pieces is really up to you, I used to make 8 pieces but now I make 6 because I like my naan relatively thick and chewy.
  • Cover and let sit for 10 minutes.
  • Warm your cast-iron pan while the dough is resting. Contrary to what you may have heard, this is done at a fairly low temperature, on an electric range use 3/10. My range uses a weird system that goes from "low" to 7 so I use small element setting 2.

Stretch out and cook your naans

  • For each of your little balls of dough, stretch and roll it out as large as your pan will accept. It's never going to turn out exactly round, but that's the beauty of naan.
  • Put the naan in the pan and let it cook for 90 seconds.
  • Flip the naan over and cook it for 1 minute. As a tip, I usually use that minute to roll out the next naan, it's pretty much perfect timing for doing this.
  • Brush the melted butter on the top side of the naan and let it cool for a couple of minutes.
  • Put your naans away into a container that doesn't let moisture escape. Your naans will be good for about a day, after that they tend to dry up and not be so good.

Notes

This is not a diet naan. I deliberately use butter because of the taste and texture. The original recipe called for vegetable oil which would be healthier but not as delicious. Any oil with a neutral taste should do the trick, I would recommend avocado oil if you're made of money. You may be tempted to use hemp oil figuring that its nutty taste will complement the bread taste, but I tried using it just to keep the dough moist and I found it distinctly unpleasant for reasons I don't quite understand.
I got the idea of using honey to bloom the yeast one night when I wanted to add a little sweet taste to the bread, and it worked so well I never bloomed the yeast with just sugar again. You will taste a difference between different honeys. 
It's important to use fine salt in the flour, as opposed to coarse salt or kosher salt. Fine salt distributes evenly through the flour with mixing, but larger grained salt doesn't, and that makes naans that have weird salty spots.

Elon Musk has always been a Neo Nazi.

Elon Musk “is aligned with the German neo-nazi party, opened the faucet of anti-semitism on the platform he purchased, follows neo-nazis, collaborates with neo-nazis openly, highlights neo-nazis, agrees with neo-nazi sentiment”. This has been made clear BY ELON in the posts that he’s made in Xitter, by his the moderation “policies” he’s brought to Xitter, and by his constant messing with the accounts of anyone who dares disagree with his fourth-reich ideas on the platform.
So why is anyone surprised by Elon literally doing a Hitler salute at the end of his speech on inauguration night? I’d like to say the signs were always there, but they’re not just signs, they’re fucking billboards.

Really Donald? You want to go there?

Today’s moment of zen is Donald Trump posting this on “Truth” Social, showing the world that he hasn’t gained an ounce of self-awareness — or indeed world awareness — in the past 4 years. Four years ago hospitals had to hire freezer trucks to store the body of the COVID dead because they were literally running out of space in the morgues.

Donald Trump asks if you're better off now than 4 years ago, not thinking for a second about what was going on 4 years ago

How to plan and run a gangbang

What does a blogger and sex worker get for herself on her birthday? Aella organized a gangbang for herself, and her Substack provides a fascinating view into how a successful gangbang gets organized, how it goes, and the lessons the star at the middle of it has drawn from it. It’s probably NSFW — no images but it’s a honest article about organizing a gangbang so you know what to expect.

My Birthday Gangbang by Aella (substack)

Internet find of the day

This sign makes me want to open this very store in my city…

Knobs & Knockers Decorative Hardware

Shockingly, would-be terrorists aren’t the sharpest knives in the drawer

Months after warning of violence against South Park creators Trey Parker and Matt Stone for their depiction of Islam prophet Mohammed, Abu Tallah Al-Amrikee (né Zachary Adam Chesser of New York, a.k.a. “Revolution Muslim”) was arrested trying to board a plane that was due to take him to Uganda (via a bunch of other places) so that he could then join Somali terror aficionados al-Shabaab. Chesser added a touch of genuine class to the attempt by taking his newborn son with him “so he would look less suspicious”.

So, how did the Feds get onto him? Basically they developed an interest in his blog postings and Youtube activities, then put Chesser/Al-Amrikee under tighter surveillance, which led them to uncover the not-exactly-brilliant-in-the-first-place plot. His plan for entering Somalia from Kenya involved bribing border guards with a $20 bill — so essentially the Feds saved the moron from getting kidnapped and held for ransom.

Blog update

I managed to “unbork” things that the WordPress “update” messed up — mostly by removing dead links — and put in a silly placeholder for the “about” page so clicking the link doesn’t cause an error anymore. All in all however, I’m pretty determined to write my own software again and ditch WP, at least I’m sure my own SW won’t have the sort of surprises I’ve been seeing this week.