A simple Python client to interact with ArgoCD.
[Read More]WSL2 & Keychain
The problem
If you use ssh-agent with an encrypted ssh key it does not persist when you open a new terminal window.
The solution
Use keychain
instead.
- Install
sudo apt install keychain
- Add to your shells rc file, eg.
.bashrc
or.zshrc
# Repeat this line for all keys you want to unlock and use this way /usr/bin/keychain -q --nogui $HOME/.ssh/id_rsa source $HOME/.keychain/wsl-sh
- Unlock your keys on shell startup and enjoy
Self-hosted notifications

Running any kind of personal infrastructure sometimes requires your attention based on certain events or failure states, no matter how much you automate tasks.
Over the years I have used E-Mail, Telegram bots and a variety of other tools for this purpose. However all of them have the drawback that they mix with other kinds of information and are not easilly usable in scripts.
[Read More]Git: Add only changed files
Sometimes you may want to commit only the files you have changed and not any newly created files,
this can easily be achieved by this command: git commit -a
Post Mortems
Learning from incidents
GitLab: User owned projects report
Export a CSV formatted report of projects in user-namespace on a GitLab instance.
This is especially useful if you think about limiting or disabling this feature.
[Read More]Monoliths & Microservices
An opinionated overview
Simple git changelog
The WSL Onion
Calling powershell.exe from PowerShell inside WSL
The other day I was playing around in WSL with a colleague of mine and we did this:
[Read More]Windows Subsystem For Linux 2: Debian+Podman
The problem: Docker itself can’t be run in WSL2 as it requires the docker daemon, usually run though systemd.
The solution: Podman works just fine and can easily be installed, although we will need to configure some things to make it work properly.
[Read More]Going Part Time
(Re)starting my indie journey
Simple HTTP Status Monitor Using Curl
yamllint: Ignore exisiting errors
When adding yamllint to an existing project it can be hard to fix all the errors at once.
I wrote a simple script to create a rules block that simply ignores all rules that currently trigger for a file. This works by generating a rules block ignoring paths.
[Read More]Local User Management Polyfill
Older Versions of Windows 10 and all Windows Server 2012 systems have no local user management commandlets.
This is a working polyfill to allow scripts using local user management to run on old systems.
Local S3 with MinIO in Django
Hidden WSL Fileshare
WSL file systems get exposed as a hidden share network share:
\\wsl$\<WSL Name>\<path\to\file>
For example, my Debian home folder is at: \\wsl$\Debian\home\kamner
Windows Terminal: Open New WSL Tab In Linux Home Folder
Resolve .local Through Nameserver With Netplan
When using netplan it is easy to force .local DNS requests to go to you nameservers instead of being only resolved locally (the default and standard).
This also works with all other strange .WHATEVER domains you may have lying around in your organization.
Snippet from netplan configuration:
nameservers:
addresses:
- X
- Y
search:
- local
- myotherstupiddomain
MongoDB Logrotate
Show all active user cron jobs on a system
Debian/Ubuntu
grep -vH "#" /var/spool/cron/crontabs/*
RedHat/Centos/Rocky
grep -vH "#" /var/spool/cron/*