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.