The strange allure of “realistic” simulator games

I never understood the point of The Sims. It’s already difficult enough to live one’s life without then coming home and living another one on a computer, really. Second Life seemed to somehow make it worse by inventing the concept of “virtual jobs”, “land” ownership and virtual corporations.

So I was rather surprised to find myself hooked on a game I’ve been playing for the past  couple of months: Car Mechanic Simulator 2021. It’s on Steam, and it’s one of those games I can in fact play on Linux. Basically you start out with a small garage, you do jobs, earn money, expand, and eventually you start doing things like buying cars, fixing and tuning them and then sell those cars for big profits.

So, great. It’s a video game that’s essentially a watered-down version of… a job. It’s a game sector that’s enjoyed considerable expansion in recent years, basically simulations of common place jobs. The biggest one of these is probably Farmer Simulator, but there are lots around covering everything from driving a bus to lawnmowing and even power-washing (!). They’re usually based on the template that you’re an entrepreneur starting a new service, and you grind your way to making that business a success.

Well, I’ve found that on several occasions by the time I shut down the game I look outside and the sun is coming back up. It’s very addictive — it seems to scratch an itch I haven’t had in a long time — the love of work.

If you asked me if it’s normal to want to work, my instinct is usually to say no. There are so many other ways to occupy one’s time! and yet I find myself constantly telling myself “ok, let’s renovate one more” whenever I play the game. So clearly I can take pleasure in work, in doing repetitive things for “credits” (which in this case do not convert to actual money, sadly.

In a way I’m reminded of a previous job I had as senior technical writer at Actional. I knew my stuff. It was in 2011-2012 and I was working mostly from home. I remember putting in work sometimes until 4am near release time as we had to produce docs for last-minute additions and make sure the online help worked correctly… then the test-and-repeat cycle.

Thing is, I didn’t mind doing this. To me this was part of the job. I and our other writer were producing the documentation, and my job was now to make sure everything worked, and I just did it, even if I was tired. That was work, but it was rewarding work.

And then it was all for nothing as in 2013 the company was sold to a VC firm that stripped everything down, getting rid of me and the other writer — as well as a bunch of other employees — and then, well, that lead to a bunch of other events in my life. And then I could never quite be coaxed into the idea that work (as a concept) was a positive thing, because the moment this started happening for me, the rug was pulled from under my feet like that and I ended up with nothing. I have no idea whether Actional is even a thing anymore, it’s at that level.

So, what makes this silly little sim game seem like what was really the most satisfying work experience in my life? Well, it’s the underlying “meta-mechanics” of the game. This is my “garage”. When I grind I earn credits. And also in-game achievements (I got all 46 of them). There was a progression. More work earns more money.

This is the way work is supposed to work.

So, this is not a very realistic representation of work. I mean, this is a computer simulation of manual work so there’s an obvious limit there. I don’t have to wash the grease from under my fingernails after playing, and I did start with a non-negligible sum of money by default, which starts you out on a fairly easy path. But the point remains. Hard work can be fun as long as it keeps being rewarded. Maybe it would be more realistic if, periodically — say, every year or so — a tornado ripped the whole garage out of the ground, a bit like the tech industry’s yearly spring wave of layoffs, and landed you there with zero credits, zero achievements, and no real way forward.

Which is kind of how I feel right now as someone who’s unemployed in the tech field despite 25+ years of technical documentation experience. And certainly this little note can help explain why I’m playing a mechanic in the first place. Right now I have a lot of time and nothing to do. I want to work hard and earn. But through a mix of job eliminations due to the promise (and not current capabilities) of AI, plus the glut of tens of thousands of tech workers having been recently laid off, it’s extremely difficult to find any job right now. And even if I do find something, how long before the company just “reorganizes” and lays me off as an employee with very little seniority? When is the next rug-pull coming?

So, that’s how it is. Sadly even my enjoyment of this game can best be seen as something driven by negative events and trends. It’s possible to enjoy work, and I have in the past, but it’s not something I’m likely to experience again in my life. And that’s pretty depressing.

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:

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

  • Cast iron pan

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

Blooming the yeast

  1. Add the 2tbsp of honey into a small bowl.

  2. Add the hot water to the honey and mix well to dissolve.

  3. Sprinkle the yeast on top, and mix it into the honey solution.

  4. 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

  1. Pour the yogurt in a separate bowl.

  2. Add the egg and mix together.

  3. 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.

  4. Once your yogurt mixture is warm, pour in the melted ghee/butter and mix.

Prepare the dry ingredients

  1. Put your flour in a medium-large mixing bowl.

  2. Add the 2 tsp salt and mix well.

Mix the wet and dry ingredients

  1. Once your yeast has bloomed, pour its contents into the yogurt mixture and mix them well.

  2. Pour the wet ingredients into a little "well" in the flour mixture.

  3. 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.

  4. 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.

  5. Cover the dough and let it rise for 1 hour.

Divide the dough

  1. After the dough has risen, knead it lightly again to get the excess air out.

  2. 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.

  3. Cover and let sit for 10 minutes.

  4. 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

  1. 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.

  2. Put the naan in the pan and let it cook for 90 seconds.

  3. 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.

  4. Brush the melted butter on the top side of the naan and let it cool for a couple of minutes.

  5. 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.

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.

Snack
Indian
bread, butter, naan

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)

Saying Goodbye

My 14 year old dog Judi has recently crossed the rainbow bridge.

Judi was 5 when she came into my life in 2012. She was my first dog, my first pet really. I had spent quite a bit of time in the two years prior researching dog breeds and I knew that I wanted a boston terrier, and then something happened that made me decide to “pull the trigger” on this, so to speak — I suffered a third degree burn while out for the Labor Day long weekend and had to spend almost two weeks in the burns ward. I found the experience particularly trying because once you’re let into the burns ward you really can’t leave until your skin graft is in place, due to the chance of infection. A third-degree burn basically causes a hole in your skin that just lets any pathogens in.

Once I left I figured that I should get a dog now, or forget about the whole thing. I spent a lot of time on Kijiji (it’s like craigslist for Canadians) looking at adoptable dogs. I didn’t want a puppy, I wanted to adopt a grown dog, which I felt was the best approach for someone with no experience. Somehow I knew that I wanted a girl, but didn’t really know why. But when I saw Judi’s ad I didn’t think twice and made arrangements with her current owner to pick her up that same day. The ad said free but the lady called me back and said that was an error and that getting Judi would cost me $200. That’s a bit of a joke given how much dogs cost nowadays.

So I drive over and pick up my little dog. She clearly hadn’t been there that long. The lady said that Judi and her other dog, a toy poodle, weren’t getting along — probably because, as I figured out soon after, both dogs were intact females probably used for breeding. Mind you, such was my inexperience that I had no idea that Judi had recently had a litter of puppies, I learned that from an employee at a pet shop. Her claws were in pretty bad shape, no one had trimmed them for quite a long time. But she wasn’t going to be neglected anymore, not now that she was with me. For about a year I became a dog dad, going on long walks all over Montreal with Judi.

Judi moved to Halifax with me in November of 2013 and became part of the merged family I formed with Lucie and Geneva, not without a few hiccups of course, but we hit our stride. Then along came Beatrice, whom Judi seemed to fear at first, but later warmed to.

Judi seemed to especially enjoy the first apartment I moved to in Halifax. It had a fairly large backyard and we liked to give her the run of it, with our rear door open so we could monitor her. She was well-liked by the other people of the building. She wasn’t so keen on other dogs; indeed her reaction to another canine was always a toss-up. Whenever I saw another dog coming towards her I took her in a different direction. You’d be surprised how often other dog owners completely disregarded this, however. I remember being in Montreal on a grassy knoll when I spotted another dog owner walking his dog, and so I was taking Judi to another place and not being even remotely subtle about it, but the guy was probably a little thick and insisted on having his dog meet mine, and Judi snapped at the poor canine. The other dog owner asked “why did he do that?” and the explanation going way over his head. Yeah guy, your dog is friendly, but my dog isn’t, and that’s why I was trying to get away. But sadly it’s a very contemporary trait of people that they just refuse to see reality even as it unfolds before them.

It’s hard to tell whether a dog is truly happy. I hope that Judi was, although as things progressed it was clear that I could no longer give her as much time as I previously could, as I now had to take care of the humans in the house. We moved to Bedford in 2015, which Judi didn’t enjoy as much. I think she enjoyed playing with the other building tenants before that, and now she was in a place that had a postage-stamp-sized yard and only the family for company. Of course she was 9 by then and slowing down a little bit but still spry and energetic.

In 2018 we moved to our current house, a place which was (and is) full of potential, but TBH hasn’t lived up to expectations. We now had a yard… 90% fenced in but not closed, so Judi never took to it much. We lived in a dog-rich neighborhood, but Judi had started developing some problems with her hearing which left her deaf about a year after we moved, so she was not as interested in walking about as she had been before, and whatever interest she had mostly disappeared after she started getting vision problems as well. By that time I was the only one in our house actually taking her outside.

About a year ago we started noticing that she had some problems with her back legs, they weren’t working right anymore. It was fairly serious arthritis. Her muscles started wasting away. Her eye problems got worse and one of her eyes was bulging and had a broken blood vessel inside; then she started having seizures periodically where she would either slip on the floor like her four legs had no strength left, or fall over to one side. Vets didn’t have any answers for her problems. I noticed that she was sleeping more and more deeply during the day. After much soul-searching and discussions we decided that it was time to stop Judi’s suffering. We had a vet from a service called Forever Loved come to our house and help Judi cross the rainbow bridge.

It was very hard on the kids, particularly Geneva. She and Judi had become particularly close. However Judi was clearly in pain and we did not want to prolong her suffering because we weren’t ready. I don’t know what it’s like to have a pet put to sleep in a vet clinic, but it seemed to us best to do it at home, in an environment Judi knew and loved.

I think I’ll always remember bringing Judi’s body to the vet’s car. Judi hated getting picked up, even when it was needed — to get up on the couch in her last weeks, for example — but she felt so much heavier now that she was no longer struggling to get away…

It has been a little over two weeks now.

All four of us miss Judi. When you spend years and years sharing your everyday with a little creature like that they’re not “just a pet”, they’re a non-human person, they’re part of the family. We all miss her in different ways, and it’s a very personal process for each of us. We like to think that in situations like this, when we have a lot of time to prepare ourselves, we will know grief when we feel it. But we delude ourselves, especially by thinking of “grief” as something objective. It is not. It is like love in the sense that it reflects both the grieved and the griever.

The grief I feel constantly since her passage is that I feel I was not taking care of her and spending time with her as much as I should have in her last couple of years. I have suffered from major depression for decades now, and in the last few years the pressure on me has just ratcheted up to the point where I’m just dead tired by the time I’ve put the kids to bed — largely because I’m also the first one up in the morning to get them to school. I remember all the times that Judi came downstairs to see me and I was sitting in front of my monitors with a thousand-yard-stare, and just had no strength to do anything. A few pets as she came by, and that’s about it. I had no idea I would miss these little visits so much, or feel so damn guilty about them.

It’s also said that all dads should have a dog because at least it ensures that someone in the house will be happy to see them when they come home. That resonated strongly enough with me that I often told Judi that when she was visibly excited to see me; I knew she was deaf and couldn’t hear a damned thing, and as a dog she wouldn’t have understood what I had said anyway, but I never got out of the habit of talking to her. Well now I don’t have that.

I also miss her in a different way. When I came to Halifax I had already seriously reduced the amount of stuff I had (I used to have way too much stuff really). Since then I have also ditched a whole lot more things I owned; I got rid of about 95% of the physical books I had retained, almost all the DVDs I had collected over the years, most of the clothes I brought with me are gone or as good as gone (by which I mean I no longer fit into them and I’m not deluded enough to think I will ever do so again). So there’s little I still have that came with me on the 2013 move. In March 2020 the timing on my car failed — just in time for the first COVID shutdown — and since then I’ve had it towed to my house and tried to fix it, but I just don’t have the time or know-how. I remember how keen I was to get my hands dirty and fix that thing… but due to other engagements I could never give it the time I needed to give it, and now it just sits besides the house like a monument to my personal failures. I always go out the side door and can’t really ignore it.

In the 18 months it’s been sitting there I’ve come to accept that much, but many a time it struck me that Judi was the last reminder of my life before I made the decision to change it to whatever it has become now. And now she’s gone, and she’s taken a part of me with her.

Finally the grief is also, in a more general way, a statement on mortality. When I took Judi for her last walkies outside I knew it was the last time we would do this and it hit me like a ton of bricks. And earlier this week when I dropped off my daughter at school I watched her walk from the car to the school’s door and the thought struck me — one day it will be the last time for that too. As far as I know no one’s seriously ill in the family but death is the one thing that is guaranteed to all. I’m far from young, far from fit, and on the inside I often find myself consumed by anxiety, depression, anger and frustration. I don’t have any illusions that I’m going to live a very long life. That’s not my current trajectory, anyway.

So, goodbye Judi. You were loved, and you’re missed more than you could imagine.