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.

BANNED! Kinda

Those of you who follow me on, and communicate with me using, Facebook will notice that I’ve been very quiet on the platform for the past three weeks or so. Well, I was suspended for simply re-sharing a joke that had already been shared by someone else on FB. I have no idea if the other sharer was also suspended because, well, I’m suspended.

It was a screenshot featuring someone making a joke response to the story about the Colombian sex island resort where guests are offered sex and drugs — the person basically said, “where is that island so I can go and tell them how terrible they are in person” or something like that. Classic joke redirection. Anyway the brain donors at FB — who recently spent EIGHTY BILLION DOLLARS on remaking Second Life but worse and way less popular — decided that I was encouraging drug use by resharing that image.

So I clicked the “Appeal” button on my suspension notice. It’s been over 2 weeks now and I’ve received no update whatsoever on that. It really doesn’t take very long for a human being to review posts, so I have to assume that the FB space cadets shadow-banned me, because that’s the kind of limbo I’m in, indefinitely.

And that’s fine, because frankly as a platform FB is generally a waste of time. I do miss the dog pictures and the Snapmaker U1 support forums on FB where I was a frequent contributor, but I do have better things to do these days than to prop up a dying social media platform so I’m officially giving up on Meta and its various virtual properties now. I also frequently bought stuff from Marketplace but obviously that also stopped.

There’s still the issue of people who used to communicate with me using Messenger. Well, I’ve been on Signal for a while, but now I’ll make it my primary means of communications. It’s a privacy-first messaging platform used widely by journalists to communicate with confidential sources, so it’s much better than Messenger — I mean how many times have you communicated to someone on FB about a particular subject and then saw that the ads you were served after that reflected the contents of that conversation? Signal isn’t a social network, so no risk of that there.

My username at signal is eltopo71.40, or you can use my current phone number in the signal app to reach me.

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.

Running a Windows virtual machine on Linux using an Existing Windows Installation

I’ve been a Linux user for years. At home I’ve kept a file server which runs off Linux, but that was “classic Linux” — without a graphical user interface, using the command line, and doing things the “hard way”. My main desktop PC was still running Windows, and had to because the one game I play regularly, Fortnite, was not available on Linux.

Well, someone recommended that I check out GeFORCE NOW, which is a virtualized environment you can use within Linux to play a large number of games in the cloud. I’ve always been skeptical about that type of play, largely because the capacity of the system to provide a good gaming experience had not previously been available. However since I live alone and have a good broadband connection I tried it out and loved it. It’s indistinguishable from playing the game from your own computer.

So, since most of the apps I use are open-source or otherwise available for Linux, I decided to switch from Windows to Ubuntu 24.04. My PC has two hard drives as well as a NVME drive which hosts the Windows system, so I decided to delete and transfer what I could from a 1TB drive and installed Ubuntu on there. It was a breeze and I was quickly up and running. Ubuntu has very good hardware support so most things just worked, and the only thing I had to hunt down was a driver for the Logitech G13 gamepad I constantly use. I’ve been running this for about 3 weeks now and I have no desire to go back.

However, today I came up against an obstacle. On Windows I used Bitvise SSH client to connect to this server, and Bitvise saves its files in its own binary format. I found myself in a situation where I would have to go back to Windows to use Bitvise to connect to my server. Also while my current situation does not require that I have access to a Windows machine, that can change all too easily. So I decided to create a Windows virtual machine (VM from now on), but instead of using a virtual hard drive file, I would simply use the disk on which Windows is already installed. That makes a lot more sense. It’s just more efficient.

I found one set of instructions to help me do that, but it dates back to 2021 and hasn’t been updated more recently, so I spend some time figuring out the more current way to go about it.

How to run a Windows VM from an existing Windows disk

For this you will naturally need a computer running Linux, preferably something Debian-based like Ubuntu. You will also need to install VirtualBox on that computer (downloads here). You should also disable Bitlocker encryption from your Windows drive before proceeding. I didn’t have it enabled on my drive so I don’t know how that would affect the installation.

Set up your user

Your user will need to be part of two groups: “disk” (to enable raw disk access) and “vboxusers”.

sudo usermod -aG disk,vboxusers [user]

Also let’s create a folder “vms” in your home directory in which you will keep your VMs:

mkdir vms

Set up your Windows disk

First, find out where your Windows drive is mounted. By default when you install Ubuntu on a computer with FAT32 or NTFS drives, they will be accessible to Linux.

lshw -short -class disk,volume

This will show you a list of your hard disks and their partitions. Look for a disk that contains a “Windows FAT volume”, a “reserved partition” and one or more “Windows NTFS volumes” and note the entry in the Device column for the disk (not partition). Usually this will be “/dev/nvme0” (if you have a NVME disk) or “/dev/sda”.

Next, we’re going to create a special file that points to that disk using a utility that is installed with VirtualBox. Enter this as your regular user (not root):

VBoxManage createmedium disk --filename=vms/[disk file].vmdk --variant=RawDisk --format=VMDK --property RawDrive=[Windows drive]

This file points at the location of the Windows drive.

Create a VM

Now we’ll start using VirtualBox itself. But before we do, let’s install the VirtualBox Extension Pack (download from here). To install the file just double-click on it on the file. It will launch VirtualBox and the installation will take place.

In the VirtualBox dashboard, click on the Create a new virtual machine (VM) link.

  1. In the VM Name field, enter a name for the virtual machine
  2. The VM Folder should be “/home/[user]/vms”
  3. In the OS field select Microsoft Windows
  4. In the OS Version field select the version of Windows installed on your Windows disk.Win12
  5. Click on the Next button at the bottom right of the New Virtual Machine window.
  6. Under Specify virtual hardware, adjust the Base Memory and Number of CPUs. Bring the Disk Size slider to the lowest value. Note that using 16GB (or more) of RAM is highly recommended otherwise you’ll find the VM experience very taxing, but keep in mind that this memory will not be available to your Linux apps while the VM is running.
  7. Select Use EFI
  8. Click on the Next button.
  9. Click on the Finish button.

Attach The Windows Disk to the VM

Now we’ll attach the pointer file we created in step 1 to the VM.

  1. In the Machines tab of VirtualBox Manager, right-click on the new VM and click on Settings.
  2. In the [VM]-Settings window, select the Storage tab.
  3. You’ll see a .vdi file which we won’t be using. Click on the Add Attachment button at the bottom right of the Devices box (see below) and select Hard disk from the dropdown menu. Attach Disk
  4. In the Hard Disk selector window, click the Add button.
  5. Select the .vmdk file you created earlier in the file selection dialog box.
  6. With the .vmdk file selected, click on the Choose button.
  7. In the [VM]-Settings window, select the .vdi file, and click on the Remove Attachment button (next to the Add Attachment button).
  8. Click OK to save your VM configuration.

Run Your VM

Nothing left to do but to run the VM and make sure it works, so in the Machines tab of VirtualBox Manager, right-click on the VM you just edited and select Start > Start with GUI.

You should be able to log into your Windows installation.

If you have tried in the past to install Linux and modified the UEFI partition of your boot disk… well, you will then have to navigate around the disk using the GRUB CLI to fix your boot sequence. This is beyond the scope of this particular tutorial, but instructions are easily found online. I had to do this myself.

Something else that came to mind as I was writing this was to try and see if I can do the same thing using QEMU instead of VirtualBox, which I will also write a tutorial for if I can manage to do it.

Keep in mind that virtualization at the local level can be a bit tricky and resource-intensive. It’s also one of the rare things that can completely freeze up your system and force you to reboot it — that’s called a kernel panic.

A song about Jeffrey Epstein

I ain’t no songwriter, me. However this idea popped up in my head to make a song about the Jeffrey Epstein story, and even without using the word Trump at any point! Because, well, Epstein hosted pretty much everyone in the Who’s Who of high society. I purposely composed this to be sung to the tune of The Village People’s YMCA, a song hilariously co-opted by Trump. I’ve only done one stanza and the refrain so far so feel free to contribute in the comments!

JEFF (to the tune of YMCA)

[Stanza]

RICH MAN, there’s no need to feel down, I say
RICH MAN, you want to screw around, I say
RICH MAN, don’t you fear getting found
While you’re raping tons of young girls

RICH MAN, there’s a guy you should know, I said
RICH MAN, you can even bring blow, you can
Stay there in the lap of luxury
But smile for a pic with Jeffrey!

[Chorus]

It’s time to go and see J-E-F-F
It’s time to go and see J-E-F-F
You don’t need no flowers,
You don’t need no pearls
You can hang out with all the girls…

 

PEACE WAS NEVER AN OPTION!

PEACE WAS NEVER AN OTION!
PEACE WAS NEVER AN OPTION!

PLA, printed on a Snapmaker U1 printer, steak knife by Dollarama

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.

An expensive job to accept

Part 1 here

Everyone’s lost a job before. I’ve lost a few. So why did this time feel like a kick to the bollocks?

Well, the story kinda begins at the end of April 2025 when I was laid off following a reorganization at my then workplace. That sucked, but whatever. This was more of a normal job, where I got actual feedback on my performance, and things that needed improvement were worked on.

I applied to Bombardier via Linkedin. I got a call to set up and interview and I was very, very keen. In recent years I had developed a taste for aviation so I was already pumped for that, but also to find a job in this industry for a Canadian company that’s got huge cultural importance in this country and province… it seemed perfect.

The interview was… short. Very short. I got the impression that the interviewer, who would become my boss, either didn’t really know what he wanted to see in a candidate, or maybe he knew EXACTLY what he was looking for and I had ticked all the right boxes. When I got the offer I decided to believe it was the latter.

Now there was just one thing (there always is). I got offered the job in late July, but could only start on September 22nd, two months away. At that time I didn’t think too much of that, since my daughter was on a visit which was getting extended due to other things coming up, so it worked out for me. Still I asked if maybe it was possible to start earlier, but my now-boss said that I would be working with someone who was on vacation until September 22nd.

In hindsight I should really have seen this as kind of a red flag. This is an aircraft manufacturer. You’d think that it would be possible to train someone to do a vital customer service-related job, that the jobs themselves and the processes involved would be well-documented. You would think that. And if this were to happen now I would have questions, but between my relief at having found a job so quickly, my joy at being able to hang out with my girl — we went swimming every other day pretty much — and my enthusiasm at this new job, I decided to trust the process. When waiting for the first day I get a notification that starting in January we would be required to be at the office for at least 2 days a week. I don’t particularly like this, because it’s a pretty major change from the work conditions I was told about when I was interviewing (as well as another red flag I ignored), but I think “ok, whatever, I can get there by transit” and don’t give it much thought.

Late September comes around and I show up for the first day on the job. This is my first partial on-site job since the pandemic, but again I just accept things as they are. On the first day I just get my gear and am given time to set myself up, and my boss says I can go and asks me to come back to the office the next day. By sheer coincidence this happens to be during the transit strike in Montreal and I end up stuck in St-Laurent for a couple of hours until the Metro starts running again. It’s just bad luck. The next day I return, expecting to meet the guy I’m supposed to work with, but he didn’t show up. In fact I would never actually meet this guy face to face. While every non-manager was technically still working remotely, we were requested to be in the office one day a month (this will be an issue later) and the next office day is the next Monday. I come in on that day… and am the only there from my team, besides the boss.

This is probably where I should have clued in that the company has some serious internal communications issues.

Back on my second day, there was a little information session covering things like the company history, including the recent business focus. To give a very, very brief overview — this is a company that grew and grew until it became unmanageable (some 15 years ago), but has now refocused its operations to concentrate on their core business (high-end business jets) and sold off a lot of its divisions and products, which allowed it to become profitable again. Yay!

When we introduce ourselves to the group one thing stands out to me. Half of us are new employees, but the other half are returning employees. And we’re talking about people who had worked there for 10-15 years. I think this is great, because clearly this is a company that must treat its employees well, otherwise they wouldn’t return, right?

So I am studying the materials that have been shared with me. There’s a call with my boss and the coworker I’m expected to learn my job from, things seem to go well. He says he doesn’t expect me to start taking over the tasks until 2026 which tells me that the expectations are reasonable. However I can’t help but notice that after this initial meeting he’s not really talking to me. If I have questions he answers them, but otherwise there’s no “let me show you the ropes” moment from him. Eventually I bring up getting trained for the job, and he starts telling me. Kind of. I get hooked up with access to a resource I need, start analyzing things contained in said resource (I have to be really vague to respect NDAs), but then the radio silence resumes.

I never got a good idea of exactly why that was happening. If I had a question he would answer it, but there was still a big problem, which obviously only became clear in hindsight. Everyone else who was a full-time employee on the team had worked at Bombardier for 15+ years, and they had all been in their jobs for many years already. And we really did not have the level of internal documentation that should have been a given for a company our size in our industry.

Now, there is a pretty famous standard out there called ISO-9000. This should be the basic standard for publicly-traded companies. The part of ISO that I want to talk about is the need to have specifications and documentations for internal processes and roles. It’s admittedly an annoying process to go through, but it provides the company with a way to be able to answer “what does this person do here”. It’s very useful to have this information when onboarding people. If nothing else you’d have a list of what the new hire will do in terms of tasks, and the resources they need access to in order to start doing the job. In fact, with most of the companies I worked at before, the access issues would have been taken care of even before my first login. For example, if I needed access to a mailing list account, that access would have been granted and the lists would already have been added to my Outlook. There would have been an email sent to me with at least a pointer to existing documentation as it relates to my group/job. That’s how you onboard people quickly and with a minimum of fuss.

However, Bombardier really, REALLY doesn’t know how to onboard people. I mean there’s a cute little corporate write-up, and they would like their employees to set their linkedin profile to have a Bombardier-supplied background, but there isn’t that much else. That means that the knowledge is in people’s heads and has never been meaningfully turned into documentation. But with a workforce with an average tenure of 15 years, that’s a big problem. The processes and jobs are things that were established many years ago and have undergone changes over these years, but no one really remembers how to start as a new employee in the role. Once I know enough to know that there’s something I’m missing, yes, I can ask about that and get an answer. However in the long term I’m constantly begin expected to ask details about what Donald Rumsfeld once called the “unknown unknowns” — stuff I don’t know that I don’t know. Something we could have resolved so quickly had process and role documentation existed, as it should have. But no, I was effectively set up to fail. Two days before my last day I found that I should have been subscribed to an additional mailing list (besides the one I subscribed to), but get this — I found this out double-checking something with an external contractor, who checked the detail and said “I think you’re not on that distribution list”. Seriously, WTF?!?

Frankly I wonder if there was ever another possible outcome to this disaster. Because (again after much reflection) I’m fairly sure it was coworker feedback — which had, again, never been discussed with me — that resulted in my losing the job, but that’s mostly because our manager was not involved with the day-to-day details of my job, and so he depended entirely on said coworker for my assessment. And as I said, the coworker didn’t seem interested in talking to me much. Now I was always under the impression that the team was intended to go forward with the same number of people, and I was replacing someone who had left to go to another team. However, the more I think about it, the more it sounds like my boss told my coworker that he had to train his replacement (me), and that he was clearly not pleased with the idea.

But the onboarding problems exist not only in the job-specific areas, but also at the corporate level. It took over a week before I got any information about registering for health insurance and other benefits, for example, even though everyone reassured me that I was covered. Every single company I’ve worked for in the past had all that stuff ready to go on day 1, and I don’t think it was unreasonable for me to think it would be the same at Bombardier. I mean, they had almost 2 months to get the paperwork ready.

The other surprising thing about losing this job is that from a 12 person team 1 (me) has been fired, 1 is leaving due to his contract being up, and 3 are retiring in the first two quarters of the year. INCLUDING THE MANAGER. Maybe his apparent lack of interest in things was down to his imminent retirement and just having checked out already. It’s a customer service-related team, and while we weren’t always rushing, I really don’t know how the work’s gonna get done. However at this point it’s just not my fucking problem and I really don’t give a shit how they resolve it.

That being said, I’m sure the situation is not unique to my team. There will be very serious problems related to this that will come up in the next few years and inevitably product and customer service quality will suffer.

Well, that’s it. I’ve run out of things to say and I want to put everything aside and never thing about that damned company again. Oh by the way they did screw up my last pay by not paying for unused vacation and personal time, which I just reminded them about. All in all Bombardier is not a company you can trust as an employee.

What I got for Christmas

Fired. I got fired.

That’s one hell of a “present”, let me tell you. And I think the story needs to be told, partly to get things off my chest, and partly to warn people about my former employer, because frankly it may look like a dream job — it sure af did to me — but being involved with Bombardier has been nothing but a catastrophe for me, and I wouldn’t want anyone to waste several months of their life on that company.

And I wasn’t even fired in an up front way. That Wednesday, December 17th 2025, seemed like it would be an ordinary Wednesday leading up to Xmas. I’m finishing up a development task, get a meeting invite for my regular one-on-one scheduled for the next day — normal since the company basically shut down from the 24th to January 5th — so I RSVP and continue my work, then noon comes around and I take the dog out for a walk.

Something important to know: at this point my initial 3-month milestone would be coming up the next Monday. I had already received an invite to complete a survey, which I was planning to do the next Monday. I had really not been given a set of objectives to achieve for this particular date, had never received much any feedback on my work, and I was in the middle of doing some Python scripting for my group. We’d had a meeting about that task the previous day and things were proceeding along.

When I come back I have another meeting invite for my one-on-one, which seems weird because I already accepted the other one. I look at it and it’s for Friday, which is weird because my boss was supposed to be off on Friday. Then I open it.

Suddenly my boss would like me to come in to the office for this meeting, and bring my equipment.

Tell me I’m getting fired without having the balls to actually tell me I’m getting fired.

So at this point I reply “Tell me honestly, am I getting fired?” Which was answered by a Teams call. Yes, I was being dropped after 3 months. I got no other feedback. I got the official letter letting me know I was shitcanned, and within a few minutes got that “please sign in again” notification from Outlook that confirmed that this was not some kind of sick joke.

I went in the next day to hand in my equipment. Didn’t even page my former boss at this point. Went straight to IT, gave them back the equipment, and left my ID badge with security on my way out.

So yeah. 54 years old and now jobless in the IT industry. Merry fucking Christmas to me. And in such a galling way. No discussion of performance or anything. Just a big “fuck you” a week from Xmas. And a decision that was taken between 10 and 12:30 on a Wednesday.

I’m just getting over the shock of it now. But Bombardier wasn’t quite done fucking me over. They still owed me pay as well as unused vacation time. That was supposed to come in the next Wednesday, but when I checked my account the deposit was, shall we say, very light. In fact it could not have been more than my vacation time. I’ll bet dollars to donuts that my former boss just didn’t even bother taking care of the timesheet. We all have to file a timesheet, but since my last day was a Wednesday I had not filled it out for that week. If I didn’t have some money in savings I wouldn’t be able to make the January rent. Again, thanks for that Bombardier, which apparently can’t be arsed to fix its own mistake before next week.

There is so much more to say about this awful work experience, but that’s it for today. “I’m tired, boss”. My daughter is over for Xmas and my priority is keeping myself together until she gets on her flight home, for her sake. I’ll continue this story when I have the energy.

Part 2 here

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.