How to switch from JFIF to JPEG on Drag-and-Drop in Windows 10

I’ve recently noticed that when I drag an image out of Firefox, it saves itself as a JFIF image on Windows 10. Choosing to save the same image via the right-click context menu will save it as JPEG image as expected.

This perplexed me, so I did some research and found a fix that would let me save images with a .jpg extension when dragged out of a web browser. I did this by associating the correct file format in Registry Editor.

Let me show you how it works in this article.

What is JFIF again?

JFIF is apparently the JPEG File Interchange Format. Apparently it’s been around since 1991, but I’ve only heard of it in the summer of 2019. It just goes to show that you always learn something new. This Wikipedia article has a little more information about the format.

As to why on earth Windows is setup for this by default, or why Firefox is saving images with this format when dragging them out into a folder, or since when images are in fact stored as this format is anybody’s guess.

How do we make this “normal” again?

In Windows 10, search for “reg” at the bottom left corner until you find the Registry Editor. Open it.

This is a slightly intimidating database tool that associates many Windows-internal values with its settings and behaviour towards other apps, but don’t be discouraged by that. At the top left corner you’ll find the following menu. Open the first item on this list, namely HKEY_CLASSES_ROOT. It’ll open an amazingly long list of scary things.

Of course there’s no way to search through these 900 million entries, that would be too easy. However, they’re alphabetically ordered, which does help us out a little bit. I guess this tool is not exactly designed to be used by humans. Scroll down to the MIME folder and open it.

We’ll find another folder called Database, under which there’s one called Content Type. Open the latter to find yet another long list of scary things. This one will list all so-called MIME Content Types, which lets Windows determine with what extension it should save a file of a particular type.

Find the entry for image/jpeg and take a look at its contents by clicking on it. Notice that – shockingly – the Extension field is set to .jfif. This would explain why Windows keeps saving JPEG files with the .jfif extension. Who authorised that?!

It stands to reason that if we simply change this value from .jfif to .jpg, all our dragged-out images would henceforth be saved as regular JPEG images. Let’s double-click the word Extension (under Name) and change .jfif to .jpg then press return. That’s all we need to do.

Your entry should look like this:

Now you may close the Registry Editor and drag as many JPEG images out of your browser as you like. No restart is necessary.

The macOS Installation couldn’t be completed. Now what?

My MacBook Pro (2011) recently developed an issue after I had tried upgrading it to the latest version of High Sierra. Some security patch came along, and after bugging me for several weeks, I finally gave in and installed it.

Sadly, after macOS tried to restart I got a message like this:

I tried restarting several times, but without luck. The message varies slightly at times, often accompanied by an error log and a more explicit message that something went wrong, but not with simple solutions on how to rectify the situation.

What worked for me to a certain extent was to start macOS with the ALT key held down, which would give me a selection of the boot drive. There are usually two drives: the “boot partition” and the “regular drive”. Clicking the latter will boot macOS without applying the update, and everything went fine again. Booting into the former would try to apply the updates, but since it failed every time, I either had to remove this behaviour or fix the underlying problem.

I looked into it and found these tips on how to proceed:

Boot with SHIFT (Safe Mode)

According to Apple’s Support Website, Safe mode can be initiated by holding down the SHIFT key while booting. This will take absolutely forever, during which time your Mac will do the following:

  • Verifies your startup disk and attempts to repair directory issues, if needed
  • Loads only required kernel extensions
  • Prevents startup items and login items from opening automatically
  • Disables user-installed fonts 
  • Deletes font caches, kernel cache, and other system cache files

On large drives, this does take a while. Mine is a 500GB SSD and it took my MacBook Pro several hours to do this. Sadly, without fixing the problem mentioned above.

Boot with CMD+R

Another nifty trick is to bring up the Disk Repair Tool. Start your Mac and hold down CMD+R until you see the Apple Logo. At that point you can let go of those keys. This will launch something called macOS Utilities. Note that your trackpad may behave slightly differently that you’re used to (for example, tap to click will be disabled), that’s just because none of your configuration preferences have been loaded. It’s all default, and booted from another portion of your hard drive.

Once everything has loaded, select Disk Utility. Run the First Aid option and see what happens. This will attempt to repair your disk by looking through every sector and fix any mishaps that may have been caused by files not closing properly. It will either tell you that everything is fine, or that it detected issues and how fixable they were.

Check Incompatible Login Items

Another item on the agenda to check is what login items are selected. Those are processes that start after your Mac has booted into macOS. Examples include cloud service sync services like Dropbox or Creative Cloud, or things like Discord and Spotify. I’m a big believer of starting those myself if and when I need them, but over-eager installers like to sneak them in there sometimes. Some of those items may not be compatible anymore after a software update and hence interfere with both the update and the new version of macOS.

To check what’s being started with your Mac, head over to System Preferences – Users & Groups – Current User – Login Items.

Click the little lock icon at the bottom left, then select what you dislike from the list and hit the minus button below the list. This will remove said login item and – hopefully – make your Mac start as it’s supposed to.

I’m still in the middle of my investigation and have a few more items to check, but I’ll report back with what worked well for me, and what else I find. Stay tuned ๐Ÿ™‚

Redirecting a secure domain in Plesk

There are several ways to make two domains resolve to the same content in Plesk. The easiest option is to setup a Domain Alias. That way, domain1.com and domain2.com both serve the same content from the same subscription.

This worked great for non-SSL domains, but if you have a secured domain, the redirection will be detected by modern browsers and a certificate warning appears. Not what we want.

Another way to achieve the same thing is to create a separate subscription in Plesk, then change the Hosting Settings to Forwarding. This will result in a search engine friendly 301 redirect, but again we have that certificate issue to deal with. Since the redirected domain no longer has its own file structure, the Let’s Encrypt extension is unable to issue a separate certificate for the second domain. Not good either.

The solution, it appears, is a manual addition of a piece of code to the NGINX directives. This will only work if NGINX is enabled in your Plesk setup (it is by default as of Plesk Onyx). Let’s see how to do it.

Step by Step Instructions

Create a new subscription for the domain you’d like to redirect. In our example, let’s use new-domain.com as the current domain that has a subscription, but you’ve got another domain you want to redirect to the above. Let’s call that one old-domain.com. This domain needs its own subscription in Plesk. Don’t worry about adding any content there.

Once setup, head over to Websites and Domains is the subscription and select Apache and NGINX Settings.

Towards the bottom of this ever so slightly intimidating list we’ll find an empty field into which we can add our own code, under Additional NGINX Directives.

We’ll add the following to this box, replacing old-domain.com with the domain you’d like to redirect to. In essence, this is telling NGINX to use the location in brackets for the top level location of our current domain. Here’s a cut-and-paste friendly version:

And that’s it! Now your new domain will redirect to the old domain, while retaining all SSL properties. There’s no need for a new certificate either, and search engines will make a note when the bot comes crawling the next time. Furthermore, all deep links will be retained that way too.

Thanks to Nikita Nikushkin from Plesk for bringing this to my attention.

Screensharing and Video Calls in Discord

We had a blast last night trying to setup our first screensharing/conference call through Discord. We’re so used to Skype and FaceTime that these habits have made it a little difficult for us to grab the concept of getting started with Discord calls.

Before we forget how it works, I thought I’d better take some notes. Here’s how we made it happen.

Continue reading Screensharing and Video Calls in Discord

List of randomly generated Mixer User Names

When users first sign up on Mixer.com, they’re assigned a totally random user name. It is anyone’s guess how these are generated, but it certainly adds a little mystery and machine-generated individuality to new users. Some of these names are quite funny, so I thought I’d compile a list of the ones we’ve come across.

I’ve removed the random number at the end, which leads me to believe it’s probably a finite list of names to which a unique identifier is added. If you’re interested to see what your random name was, it may still be part of your channel name.

Here’s what we’ve seen so far in 2019:

  • KuerbisGebhard
  • SidedMovie
  • LeftCarnival
  • RuggedWolf
  • RestoredHail
  • JuratoryCord
  • ChasedLeopard
  • SlowedZebra
  • ArielHealer
  • MissionTrack
  • SapphireGamer
  • CellularCorn
  • UselessList

The last one is my favourite! I’ve compiled instructions on how to change your user name here.

Have you come cross any other funny random combinations on Mixer? Leave them in the comment below for us all to enjoy ๐Ÿ™‚

Roles and Permissions in Discord

We just started using that Discord thing everyone is talking about. It’s really easy to setup your own server, but with such great powers come great responsibilities.

We wanted to run a private invitation-only server and see how it would work for our team, but an obvious caveat was that everyone who had joined could send invitations to others willy nilly. It was not really obvious for me to fix this, until I did some digging. Here’s how to remove the default invitation setting from @everyone, and a brief explanations for new Discord Server Owners.

Continue reading Roles and Permissions in Discord

Child Theme Wizard – Version 1.4 released

I’ve pushed a new version of my Child Theme Wizard plugin to WordPress today. While the changes are very simple, the implications of this update are rather significant for using child themes.

From time to time, best practices for how to create your child theme change. This has happened several times over the course of this plugins 5+ year life span. Often it is down to users that I get to find out about such changes.

Something similar has happened this time, when Marcin contacted me about a missing variable declaration ($parent_style), without which child themes can under certain circumstances malfunction. The old P2 theme is such a candidate. Marcin left a comment on the original release post for this plugin from 2014 and told me I was missing a line in the code that’s generated. Thank you so much for your help, I really appreciate the heads up ๐Ÿ™‚

Now it’s in place, and I can sleep easy again. Apart form this major change, I’ve also taken the opportunity to update the link to the official WordPress documentation for Child Themes, which is in the process of migrating over to developer.wordpress.org. And while I was at it, I also made sure the plugin is now certified to run with WordPress 5.2.

Upgrade from the WordPress admin interface, take a look at the reviews on the WordPress.org, or grab a copy of the code from my GitHub repository. Pull requests are always welcome!

Upgrading existing Child Themes

If you’re previously created your child theme using my plugin, and you’d like to back-port the changes introduced in version 1.4 to your current theme, take a look at your child theme’s functions.php file. It should contain a function like the one below:

Copy the code above and replace the the function you’ve got running at the moment, and it’s like you’ve created a child theme with the current version. This is an optional step, if you feel your child theme is running fine as it is, don’t worry about it.

If you have any questions, please let me know ๐Ÿ™‚

How to change your user name on Mixer

Although we can use a Microsoft ID to login to Mixer.com, when we do so for the first time, the system assigns a random (rather funny) user name to us. It’s usually not what you want to be called in the chat.

Thankfully there’s an easy way to change this, and here’s how.

Click on that little icon at the top. It’s usually a little blue man icon (I’ve already changed mine). This opens up a menu, at the bottom of which you find an Account option. Click that.

Now you’ll be presented with a number of boxes, one of which will be the Change Username box. It’s not that obvious, but after entering your new name, you have to click on the white change username instruction – which turns out to be a button. It’s vital that you click it.

To make your changes take immediately, you’ll have to logout of Mixer, then log back in. As soon as you do, your new user name will appear in the chat.

How to reactivate Easy YouTube Video Downloader for Firefox

There’s a really useful Firefox plugin called the Easy YouTube Video Downloader by Dishita. Here’s the direct link on the Firefox Add-Ons Directory. Once installed, it allows you to download MP4 and MP3 versions of any video on YouTube. That’s super handy if one my streams is not recorded properly at my end. Let me tell you, it’s always good to have a local backup of things!

With the free version we can download MP3 files in 128Kbps and MP4 files in 720p. Higher resolutions are available with the Pro Version, for which you can make a voluntary donation. It’ll work immediately after you’ve made a payment, by clicking a link provided to you via email.

Trouble is, every once in a while (usually after a Firefox update), the Pro Version reverts back to the Free Version, and you’re stuck without all your paid for Pro Features. How do we get them back without paying again?

I’ve just found out – and I thought I’d remind us all how this works.

Continue reading How to reactivate Easy YouTube Video Downloader for Firefox

Where is Stream Deck profile data saved

I wanted to move my Stream Deck Profile Data over to another machine. I had previously setup several shortcuts and actions and wanted to sue the same setup on another system.

Turns out Elgato’s Stream Deck software saves such data in a similar location as OBS Studio does. Here’s the full path:

Windows

On Windows 10, you’ll find those files in the following location. For this example, imagine your user name is “you” and replace it with your correct one.

  • C:\Users\you\AppData\Roaming\Elgato\StreamDeck

macOS

On macOS, you’ll find those files in the following location:

  • ~/Library/Application Support/Elgato/StreamDeck

The Tilde Symbol means “your home folder”. If my user name was โ€œyouโ€, then the full path to the OBS Settings would be

  • /Users/you/Library/Application Support/Elgato/StreamDeck

Note that for either profile to work on another system, make sure all applications and their respective settings are also replicated. For example, if you’re switching OBS Studio scenes with your Stream Deck, both OBS Studio and the scenes/collections need to be configured the same was as before.