WARN: Duplicate profile ‘Dovecot IMAP’, using last found

So when running ‘ufw’ I was getting this error: WARN: Duplicate profile ‘Dovecot IMAP’, using last found

The issue was duplicate rules were specified in:




The solution for me was to delete the second file (imapd) as it was covered by the previous file (core).

A folder named ~/.cache/kioexec/krun/13821_0/ already exists

2017-12-09 jj5 – TODO: document this on my blog…

On Debian GNU/Linux 9.1 (stretch) when I try to open an *.desktop (application/x-desktop) link in a browser I get:

A folder named ~/.cache/kioexec/krun/13821_0/ already exists.

Searching for:

A folder named kioexec krun already exists

turned up diddly squat.

I solved the issue (for me) by changing:

System Settings -> Personalization -> Applications -> Default Application s-> Web Browser


Open http and https URLs in an application based on the contents of the URL


Open http and https URLs in the following browser: firefox

Installing .NET on Debian 9

After installing Visual Studio Code I followed the instructions from .NET Tutorial – Hello World in 10 minutes, basically:

wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg
sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
wget -q https://packages.microsoft.com/config/debian/9/prod.list
sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list


sudo apt-get update
sudo apt-get install dotnet-sdk-2.1

Then for example to create a new console project:

dotnet new console -o myApp
cd myApp

I ended up reading MICROSOFT SOFTWARE LICENSE TERMS for the MICROSOFT .NET LIBRARY which included this doozy:

The software may collect information about you and your use of the software, and send that to Microsoft.

Ah, Microsoft. You haven’t changed.

I found some notes about how to disable telemetry:

The .NET Core tools collect usage data in order to help us improve your experience. The data is anonymous and doesn’t include command-line arguments. The data is collected by Microsoft and shared with the community. You can opt-out of telemetry by setting the DOTNET_CLI_TELEMETRY_OPTOUT environment variable to ‘1’ or ‘true’ using your favorite shell.

Read more about .NET Core CLI Tools telemetry: https://aka.ms/dotnet-cli-telemetry

I have added the opt-out environment variable via jj5-bin.

Create a desktop alias for an SMB mount on Mac OS X

So to create an alias to an SMB share on your Mac desktop:

First use Finder -> Go -> Connect to Server…

Enter a location such as: smb://server/share

Then use Finder -> Preferences… -> Show: Connected servers

The SMB mount should now be visible on the desktop. Right-click the share on the desktop and choose ‘Make Alias’. Then take connected servers out of your Finder preferences and rename the desktop alias probably as the name of the share.

Debugging JINJA in Salt Stack

So I was trying to figure out how to report the template source file within the template itself and I found myself wanting to know what was available in the JINJA globals for a Salt Stack JINJA template.

Turns out you use the show_full_context() function, like this:

Context is: {{ show_full_context() }}

You can parse the output to see what top-level items are available. In my case I found the ‘source’ setting for the JINJA template in use.

Hot tip: if you’re using Vim to inspect the show_full_context() output, try using ‘%’ or ‘]}’ to move between matching braces.

Bonus: while I was learning about reporting the JINJA context I discovered that you can call Salt functions from JINJA templates, like this:

# The following two function calls are equivalent.
{{ salt['cmd.run']('whoami') }}
{{ salt.cmd.run('whoami') }}

If Apache2 won’t serve your JavaScript file try…

I had an issue with Apache2 improperly serving a JavaScript file which I seem to have fixed by making sure the file was terminated with a new-line character… this was really hard to diagnose and resolve! The behaviour in Firefox was that the file just didn’t finish to download, whereas the Apache2 logs indicated a 200 result… I think it may have had something to do with automatic compression, which is a dark art that I do not understand (mumbles something about mod deflate…).