Custom Ubuntu Starter / Menu Entry

Sometimes I am installing software and would like to have a starter entry in the menu or the sidepanel but some programs don’t create one. But it’s quite easy to add a custom runner.

Just create a file somewhere on your disk. I used my home directory (~) and Postman as an example app – here my ~/postman.desktop file:

[Desktop Entry]
Comment=collaboration platform for API development

With this file in place you have to decide to install it for all users or for a single user only.

For all users run

sudo desktop-file-install ~/postman.desktop

or for you active user run

desktop-file-install --dir=$HOME/.local/share/applications ~/postman.desktop

After running one of those commands you will find the starter in the menu.

Install Google Cloud SDK (gcloud) on Apple M1

Trying to install google cloud sdk on my new 13 inch M1 Mac Book failed with homebrew and also with the manual installer with the following error message:

ERROR: (gcloud.components.update) The following components are unknown [anthoscli, kuberun].

I couldn’t find a way how to fix this with the brew install command. But the manual installation gives you a chance to have it installed. The manual installation starts with this:

curl | bash

Don’t worry about the error from above while running this. After the script ended cd to the downloaded directory (you can choose target) and run

./ --override-components core gcloud-deps bq gcloud gsutil

This will get rid of the two default components that fail to install (anthoscli and kuberun).

The second way would be to edit the file bin/bootstrapping/.default_components, remove the two entries from the component array and then run the script without any options.

IntelliJ 2020.3 cli command – run idea from your shell again

My latest IntelliJ installation didn’t come with a command line idea command so I wrote a short script and put it to /usr/local/bin/idea on my local machine.

"/Applications/IntelliJ" $@ &

This will only work on a mac. If you’re facing the lack of the command as well you need to find the path to your and put it in a script the same way i did and can use the same place as well. $@ just forwards all arguments you give the script to the called command and & will run it in the background – if you skip the & you will see intellij logs in your shell – so its running in the forground.

iCUE shutdown/reboot bug on Windows 10 – The memory could not be read

With Corsair’s iCUE (latest version) on my Windows 10 (all updates installed) I got an error dialogue on every shutdown/reboot from iCUE. It was something like the following:

The instruction at 0x000000005FC4030B reference memory at 0x000000003ED0860. The memory could not be read.

Taken from the Corsair forum this especially effects systems with ASUS soundcards. I have an ASUS Essence STX II and a Corsoir keyboard which requires iCUE for LED config.

I didn’t want to try switching soundcard drivers to get rid of a keyboard led software problem so I went with the solution to run C:\Windows\SysWOW64\HsMgr.exe as admin. Here the steps I followed (taken from the forum – thx to the guys investigating this already and posting a solution):

Go to ... C:\Windows\SysWOW64, here you'll find a HsMgr.exe file.
HsMgr.exe is a driver component for Asus, Auzentech, Creative and other sound cards. If you run it as Admin, the error will disappear.
Do this by right clicking it > Properties > Compatibility > Change settings for all users > Run this program as an administrator.

Now just restart your system. The error won't be there anymore the next time you reboot or shut it down.

I didn’t investigate if this compromises system security but I can confirm that the error is gone.

IntelliJ .http/.rest cli support

I’m a big fan of the IntelliJ .http/.rest files but only being able to run them from within the IDE was not very satisfying. So I was looking for a way to run them from the cli as well and found This project offers a cli tool named rest-cli that is able to run IntelliJ’s files including env files. So those can also be integrated into CI/CD or other workflows that don’t use IntelliJ.

On the release page you can find the latest version of the tool as zip or brew package. If I remember correctly I was able to install the brew package with

brew install -f

But just downloading it and putting it into the path also works fine.

nvm slows down shell startup

Recently I was wondering why my shell is taking so long to show a prompt and was able to track it to nvm – node version manager. The check which version to use as default takes quite long so I was looking for a solution that allows me to keep nvm functionality and have a fast shell.

When installing nvm it tells you to add the following statement to your shell config:

export NVM_DIR="$HOME/.nvm"
[ -s "/usr/local/opt/nvm/" ] && . "/usr/local/opt/nvm/" --no-use # This loads nvm
[ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && . "/usr/local/opt/nvm/etc/bash_completion.d/nvm"  # This loads nvm bash_completion

Line to of this is causes the delay in the startup. As more on the backend side of development I don’t switch node versions and so on around very often so I found a solution that let’s me disable this check, which version should be used on nvm startup by adding a default version to the path and disable that check in the startup script:

# set default node version
export PATH="~/.nvm/versions/node/v12.18.3/bin:$PATH"
export NVM_DIR="$HOME/.nvm"
[ -s "/usr/local/opt/nvm/" ] && . "/usr/local/opt/nvm/" --no-use # This loads default nvm version from above and skips default check
[ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && . "/usr/local/opt/nvm/etc/bash_completion.d/nvm"  # This loads nvm bash_completion

The first line set my default node version to 12.18.3 as default – which is stable right now. Then I added --no-use to the end of the second line. Now every time i start the shell node 12.18.3 will be used until i say nvm use. But that’s a tradeoff I can live with to have my shell start in an acceptable timespan again.

gradle jacoco plugin with java 15

In my latest experiments I upgraded a project to Java 15 and received exceptions during the build from jacoco that state that the used Java version isn’t supported. Here the exceptions stacktrace I received:

java.lang.instrument.IllegalClassFormatException: Error while instrumenting sun/util/resources/cldr/provider/CLDRLocaleDataMetaInfo.
        at org.jacoco.agent.rt.internal_43f5073.CoverageTransformer.transform(
        at java.instrument/java.lang.instrument.ClassFileTransformer.transform(
        at java.instrument/sun.instrument.TransformerManager.transform(
        at java.instrument/sun.instrument.InstrumentationImpl.transform(
        at java.base/java.lang.ClassLoader.defineClass2(Native Method)
        at java.base/java.lang.ClassLoader.defineClass(
        at java.base/
        at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(
        at java.base/jdk.internal.loader.BuiltinClassLoader.findClassInModuleOrNull(
        at java.base/jdk.internal.loader.BuiltinClassLoader.findClass(
        at java.base/java.lang.ClassLoader.loadClass(
        at java.base/java.lang.Class.forName(
        at java.base/java.util.ServiceLoader.loadProvider(
        at java.base/java.util.ServiceLoader$ModuleServicesLookupIterator.hasNext(
        at java.base/java.util.ServiceLoader$2.hasNext(
        at java.base/java.util.ServiceLoader$3.hasNext(
        at java.base/sun.util.cldr.CLDRLocaleProviderAdapter$
        at java.base/sun.util.cldr.CLDRLocaleProviderAdapter$
        at java.base/
        at java.base/sun.util.cldr.CLDRLocaleProviderAdapter.<init>(
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(
        at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(
        at java.base/java.lang.reflect.Constructor.newInstance(
        at java.base/sun.util.locale.provider.LocaleProviderAdapter.forType(
        at java.base/sun.util.locale.provider.LocaleProviderAdapter.findAdapter(
        at java.base/sun.util.locale.provider.LocaleProviderAdapter.getAdapter(
        at java.base/java.util.Calendar.createCalendar(
        at java.base/java.util.Calendar.getInstance(
        at java.base/java.text.SimpleDateFormat.initializeCalendar(
        at java.base/java.text.SimpleDateFormat.<init>(
        at java.base/java.text.SimpleDateFormat.<init>(
        at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.getLastResortErrorLogFile(
Caused by: Error while instrumenting sun/util/resources/cldr/provider/CLDRLocaleDataMetaInfo.
        at org.jacoco.agent.rt.internal_43f5073.core.instr.Instrumenter.instrumentError(
        at org.jacoco.agent.rt.internal_43f5073.core.instr.Instrumenter.instrument(
        at org.jacoco.agent.rt.internal_43f5073.CoverageTransformer.transform(
        ... 37 more
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 59
        at org.jacoco.agent.rt.internal_43f5073.asm.ClassReader.<init>(
        at org.jacoco.agent.rt.internal_43f5073.asm.ClassReader.<init>(
        at org.jacoco.agent.rt.internal_43f5073.asm.ClassReader.<init>(
        at org.jacoco.agent.rt.internal_43f5073.core.internal.instr.InstrSupport.classReaderFor(
        at org.jacoco.agent.rt.internal_43f5073.core.instr.Instrumenter.instrument(
        at org.jacoco.agent.rt.internal_43f5073.core.instr.Instrumenter.instrument(
        ... 38 more

Especially “Unsupported class file major version 59” is a good indicator that Java 15 isn’t supported yet. To get around that you need to upgrade the jacoco tool version in your gradle project by adding:

jacoco {
    toolVersion = "0.8.6"

You need at least 0.8.6 because there experimental Java 15 was added. You can find the release history under Right now 0.8.6 is the latest release that solves the issue without the need to go to a snapshot build of 0.8.7.

Professional audio stack for video editing/streaming

I just managed to get the audio stack of my windows 10 more professional with equalizer and VST plugins:

First I installed virtual audio cable and voicemeeter potato:


With those I am able to split up all my audio sources and manage volumes per channel or add equalizers. With OBS you can install the voicemeeter plugin from

Just disable all audio in the OBS settings and add Voicemeeter sources instead. You should use scene inheritance so that you don’t have to do that for every scene. With insert input sources you can grab the input from every input line of potato directly. You could then add VST plugins for every channel directly in OBS. If you want to use equalizers or plugins from potato – or change volumes there – then you need to grab the output instead and route the channel to single hardware/virtual outputs.

Next I took care of my microphone and installed equalizer APO from

This alone wouldn’t help much so I also downloaded some VST plugins from and and created my audio stack for the microphone.