Linux
XFCE: Chrome Steals Focus on click despite mouse-focus modeI 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:
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:
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
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
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
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
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
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
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
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
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
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 ...