Akom's Tech Ruminations

Various tech outbursts - code and solutions to practical problems

Linux Linux

XFCE: Chrome Steals Focus on click despite mouse-focus mode

I like to use mouse-focus mode in Linux (XFCE), which also means that I don't want windows to get raised on click.  This means, for example, that I can have a piece of a window visible but not raised and copy something to/from there:

The terminal is not raised on click

However, Google Chrome does not honor this window manager setting.  Any click in a chrome window causes it to be raised.

It turns out that, with XFCE's xfwm, there is an additional setting to turn off in gconf:

XFCE Settings
Turning off raise_with_any_button stops Chrome from stealing focus

DevOps

Automating minikube configuration to log in to a Docker Private Registy.»
In CI, I am using  minikube  for local testing on my nodes.  In the name of repeatable builds, I completely rebuild minikube after each build (minikube delete, minikube start).   I am also using an internal Docker Private Registry (DPR or DTR).  Same methodology applies if you are using Google Container Registry or the Amazon equivalent.  In order to ...

Linux Linux

Upgrading a non-LTS Ubuntu installation after EOL»
If you don't upgrade a non-LTS release (eg: 21.10) to a supported version before End-Of-Life, you will be dealing with a rather awkward user experience.  Here is what happens: $ do-release-upgrade Please install all available updates for your release before upgrading. Yet if you atempt to install updates, that fails: $ apt dist-upgrade -y Err:5  ...

Linux Linux

Upgrading a non-LTS Ubuntu installation after EOL»
If you don't upgrade a non-LTS release (eg: 21.10) to a supported version before End-Of-Life, you will be dealing with a rather awkward user experience.  Here is what happens: $ do-release-upgrade Please install all available updates for your release before upgrading. Yet if you atempt to install updates, that fails: $ apt dist-upgrade -y Err:5  ...

Linux Linux

Preserving a Static Copy of Atlassian Jira (and Confluence) as a Jekyll Site»
Last month an old Jira installation I own was compromised via a recent vulnerability. This is bound to happen. Keeping a public product like that secure would require very frequent patching, which is a lot of maintenance. Fortunately, this installation is only a historical record of a popular open-source project (current development uses github issues). In other words, I can get away with ...

DevOps Linux Linux

Bootstrapping S3/CloudFront with LetsEncrypt»
Let's assume that you want to do the following: Host the contents of your S3 bucket via YOUR.DOMAIN.COM Use CloudFront Use a LetsEncrypt cert "What's the problem?" , you may ask. There are plenty of tutorials for this stuff. Not exactly. A CloudFront Distribution will not let you add a CNAME until you have an SSL cert, but you can't use certbot to auto-provision an SSL ...

Hardware Hacks Hardware Hacks

Adventures in Modifying a UPS for external DC power and LiFePO4 batteries»
I have an ancient APC Smart-UPS 1400 RMNET. It's a very nice UPS, but I have frequent multi-hour power outages and battery life becomes a problem. I have these issues: Short battery runtime , especially as batteries age Lead-acid batteries require frequent replacement and quickly lose capacity (and there are 4 of them) UPS will not accept 110v from a cheap generator ...

DevOps Linux Linux

PowerShell on Linux doesn't find modules when run through Puppet»
I'm running PowerShell on Linux for the sake of using PowerCLI . An interesting thing happens: when pwsh is run interactively, in a terminal, the following works fine when PowerCLI is already installed: pwsh -c 'Get-InstalledModule VMware.PowerCLI' When puppet runs it - it doesn't find the module: Get-Package: ...

DevOps Java Java

Gradle Toolchains Support - different JVMs for compile and test»
I'm testing a product that needs to be compiled with JDK 8 but tested (sometimes) on JDK 11. This is now possible to do with maven surefire (although that took some effort). With gradle, I was doing it as follows, which is terrible, even if the path comes from configuration: // The old way: test {     executable = '/some/hardcoded/path/to/java' }   ...

DevOps Linux Linux

Puppet recipe for setting up autossh via systemd»
I've always set up autossh in /etc/rc.local , but with CentOS 8 that doesn't work well (things start too early, etc). Luckily, there is a nicer way using systemd templates. Essentially, all you have to do is create one symlink and one config file per instance of autossh. Example: Make a config file /etc/autossh/mything.conf: OPTIONS=-N -M 20000 ...

DevOps

Using puppet to set Windows Computer Description»
My company's security department decided to assign Antivirus exclusion policies based on the value of the windows computer description. That means that I need to set computer descriptions ( net config server /srvcomment:"new description" ) to the same value on a whole bunch of windows machines. Doing that by hand is unappealing, and I already have puppet, so here is a simple solution: ...

Low Tech Hacks Low Tech Hacks

Replacing Dishwasher Circulation Pump Bearings without buying a whole new unit»
I have a DW80j3020us/AA Samsung dishwasher. It has been producing a loud noise for some time, and the noise kept getting worse. It was a matter of time before it either seized or melted the motor. The reason I know that the problem is with the circulation pump is that the noise is only audible while it's washing (circulating), not while draining or filling. Clearly the problem could be the ...

Android

Android doing Optimizing app 1 of 1 on every boot»
The message appears for a good 15 minutes every time my phone boots up. I followed the usual suggestions (wipe cache partition), and that didn't help Figuring out what app is causing this issue is the hard part. I did it with logcat (I happened to have the Android Studio installed, so logcat is a tab, and it displays the log automatically as the plugged-in phone is booting). You ...