My Skill Set

Here my goal is to list the technologies I am familiar with and have used in the past

Tiers

1 Beginner
🫣 You have the most basic understaning of the technology.
2 Learner
🔥 You can colplete simple projects.
3 Intermediate
🔦 You could implement moderatly complext project using this technology.
4 Expert
💡 You know this technology fairly well and can teach others.
5 Master
☀️ You are as competent as a core contributer.

Programming Languages

Python
4
See JWebmail 2
If I know a project has a limited complexity and will not need to scale up I choose Python.
If you need to find out if someone is a Python expert ask them about the descriptor protocol.
JavaScript
2
A neccessaty evil even though it is the only christian language that worships the holy trinity.
Java
3
I have a very ambivalent relationship with Java.
C++
3
I worked on Binc.
I worked on vmailmgr.
There is so much terrible C++ code out there. Don't think about this too much or else you get trouble sleeping at night.
Go
4
Just look at my github profile.
This is my favorite programming language. It is easily learnable and straight to the point.
Rust
3
I wrote maildir_extract_rs.
It is an awesome programming language with a steep learing curve. Making the borrow checker happy can be a fun game if you have the time. You must not be shy of dependencies when using Rust but thanks to Cargo you don't have to be.
C
4
You can tell that this language is date but it is still ubiquitus for a lot of system software.
Bash
4
See goupgrade.
Bash is a pretty ugly language. So use is as little as possible.
Perl
4
See JWebmail 1.
My recommendation: just use Python.
Lua
3
I used Awesome WM for some time.
Fits is niche as an embeddable scripting language exceptionaly well. I admire its simplicity. Lua is the better JavaScript.
Haskell
3
I havent yet done larger project with Haskell. I know the fundamentals but issues like space leaks and compiler erratics is something I need to experience before I am comftable making the next step.
My favourite language when it comes to properly designing software. The only issue is the bikeshedding over which monad composition framework to use. I may do a comparison of these framework in the future. That will include mtl, tagless-final, polysemi, free-monads, eff and god-monads like RIO which I now prefer.
Elixir
2
Like Ruby or Python but functional. I see a bright future of this language.
Clojure
3
((((An actual fun language for the JVM and my favorite LISP.))))
(SWI) Prolog
3
I really like DCG. They make parsing a breeze. Comparable to good Haskell monad parsing libs.
Yeah, I am a programming language nerd. I have a preference for functional languages. But kept simple procedural language I enjoy also.

Backend Web Frameworks

Flask
4
See JWebmail 2
Jinja2 is a blessing.
Django
2
My favorite full stack web framework.
Gin
2
A small Go web framework. Today I would choose plain net/http after the introduction of placeholders in the serve mux.
Mojolicious
3
See JWebmail 1
Has nice documentation.

Frontend Web Frameworks

JQuery
3
I tend to prototype usig it and then rewrite in plain JS to avoid the dependency.
HTMX
2
If your needs are not that deep HTMX can get you a lot for very little.

CSS Frameworks

Bootstrap
2
A default choice for many and for good reasons.
Bulma.io
3
See JWebmail 2. Has a lot to offer and without any JavaScript.
Pure
4
See JWebmail 1. A great foundation to get started for simple projects.

Web Servers

Apache httpd 2
4
I maintain a quite complex multi domain setup with cgi multiple reverse proxyies php-fpm and more.
My recommendation is to use nginx. The Apache configuration is just to confusing even after attempting to make sense of it for days.
Nginx
3
It just works™. (Except when you forget a semicolon.)
Caddy
2
I run this website on caddy.
The configuration kind of works the opposite way of nginx. It puts directives first not paths.
The auto TLS Certificate integration is chefs kiss.

Operating Systems

Debian
4
My main server OS.
Ubuntu
3
Arch Linux
4
My main desktop OS.
RHEL/Centos Stream/Alma/Rocky
3
A little bloated ootb but has the best support and update model for a server OS.
FreeBSD
2
rc.conf is the center piece of this OS.

Databases

PostgreSQL
4
I maintain a small instance on my server.
It just works™. The best OLTP databe and a great all-rounder.
Mysql/Mariadb
3
I used to maintain a small instance on my server.
My recommendation: If you can use PostgreSQL.
Redis/Valkey
3
I use Redis as a session storage for JWebmail. So many commands!
Memcached
2

File Systems

ext4
4
I have used this a lot in the past. If you need a simple file system for less than 10 TiB ext4 is a fine choice.
Has some cool features like htrees for directories, block groups and fast-commit journaling.
Btrfs
4
I use it on most of my client machines. Snapshots, compression and file integerty are great features. Has aged great.
MDRAID + LVM2 + XFS
3
I used this on my desktop with a heterogeneous setup of an NVMe and HDDs. For a storage pool for VMs I used a thin provisioned lvm pool. Now all on Btrfs.
ZFS
3
Simply the best open source software raid. If you have fife or more drives in a system ZFS is a no brainer.
F2FS
3
Great for Raspberry PIs and similar devices. Is quite a hassle to get working perfectly.
See my blog post on how to properly tune it.

Package Managers

Apt + dpkg
3
pacman + alpm
3

Virtualization

KVM/qemu
3
I use libvirt and virtmanager to host my virtual machines.
Proxmox
3
The most difficult part is getting the storage right.
Docker/Podman
3
I use Podman to deploy some of my own services and some software that is not available in the Debian repositories.
Quadlet – the Podman systemd integration – is quite nice.
Kubernetes
1

Observability

Prometheus
3
I use it to monitor my own systems.
If you need native histogram support for the Python client see my branch here .
Update 2026-04-10: A similar commit was merged a while ago. Native Histograms are available now without a patch.
Grafana
3
I use it to display the monitoring data of my own systems.
Loki
3
I use it now to store and process logs of some of my systems.
In some ways kind of simplistic in other ways very complex. I have not yet made my mind up to what I should think about Loki.
OpenTelemetry Collector
3
I use it manly as the log data collector.
It is really quite flexible.
I managed to create a tai64 time parser in the expr language as an operator. That was neat.

Other

Meson
4
By far the best meta build system for C/C++. I use this every time. That is uses ninja as its build system instead of make is just the cherry on top.
Make
4
No! Use Meson or in siple cases a build.sh file. Good alternatives are justfiles or taskfiles if you use it to run tasks.
Git
3
I use Git for >90% of my software projects.
Suprisingly complex. But every dev needs to know this. I am lazy so I use lazygit.
Ansible
3
I use this to deploy some of my own services.
(N)VIM
3
Neo VIM is my main editor.
LaTeX
3
High quality fixed format documentation.
Matplotlib
Hugo
3
The blog of my website is build using Hugo. I have my own theme jmhugo.
Surprisingly difficult to get started.
GTK
Varlink
3
I use it in JWebmail2 in a slightly obscure manner.
Thank God (or the authors) for a sensible local IPC protocol.