One Git Repo to Rule Them All: Managing 12 Machines with NixOS

The Pain Before the Solution I started with Gentoo. If you know, you know: USE flags, emerge --sync, watching a browser compile for six hours, and the quiet satisfaction of a system shaped entirely to your will. It was maximum configuration at maximum cost - every package exactly how you wanted it, every kernel option hand-chosen, every dependency chain personally audited. It was also completely unreproducible. The system on disk was the result of hundreds of commands typed across months. If the disk died, so did the configuration. You could document it, but documentation and reality drift apart fast. ...

March 21, 2026 · 17 min · Manuel Herrmann

DocMan: A Minimalist Document Management Solution

As a German living with the country’s infamous love for paperwork, I built a streamlined Qt-based tool called DocMan to manage my scanned documents efficiently. This post explains how it works and why I created it several years ago—and why it’s still my go-to solution today without requiring any maintenance. The Problem My document workflow starts with my scanner, which connects to my network via Samba and deposits scanned PDFs into an INBOX folder. I needed a lightweight but effective way to: ...

May 8, 2025 · 6 min · Manuel Herrmann

Generic XML Parsing in C++: A Template Metaprogramming Adventure

Some years ago, I found myself experimenting with template metaprogramming in C++. One of the most intriguing projects that came out of this tinkering was a generic XML parser that combined several powerful features: declarative syntax, automatic validation, and bidirectional serialization/deserialization—all without requiring duplicate code. Today I’m dusting off this experiment to share how it works and reflect on how modern C++ features could simplify this approach even further. ...

May 1, 2025 · 5 min · Manuel Herrmann

Building a Modular Emacs Configuration

Maintaining a clean, organized Emacs configuration becomes increasingly important as your setup grows. A modular approach separates concerns, simplifies troubleshooting, and makes your configuration more maintainable over time. In this article, I’ll share how I structure my Emacs configuration for maximum flexibility and sustainability. The Problem with Monolithic Configurations Many Emacs users start with a single .emacs or init.el file. This works fine at first, but as your configuration grows to accommodate different programming languages, workflows, and packages, a single file becomes unwieldy. Common issues include: ...

April 26, 2025 · 7 min · Manuel Herrmann

Puppet vs. Ansible: Game-Changing Differences in Modern Infrastructure Automation

After working extensively with both Puppet and Ansible, I’ve discovered some powerful features in the Puppet ecosystem that deserve more attention. In this post, I’ll share my experiences with Hiera and Puppet Bolt, highlighting how they compare to Ansible’s approach. Hiera vs. Ansible’s host_vars and group_vars One of the most significant differences between Puppet and Ansible is how they handle variable hierarchies. Ansible uses host_vars and group_vars directories, which provide a straightforward but somewhat rigid approach to configuration data. In contrast, Puppet’s Hiera offers a much more sophisticated system. ...

March 31, 2025 · 8 min · Manuel Herrmann

SaltStack from Zero to Efficient: A Practical Journey

Let’s face it: infrastructure management can be tedious. But what if I told you that SaltStack has some seriously useful features that can transform your experience from mundane to efficient? While many configuration management tools like Ansible, Chef, or Puppet offer similar functionality, SaltStack distinguishes itself through its powerful event-driven architecture, efficient minion communication, and exceptional templating capabilities. These features make it particularly well-suited for managing complex, dynamic infrastructure at scale. In this article, I’ll show you how to make SaltStack more pleasant to use, establish a proper development workflow for modules, and maintain a clean main branch while doing so. ...

March 30, 2025 · 10 min · Manuel Herrmann

Getting Started with Emacs Lisp: Core Concepts Explained

Emacs Lisp (often abbreviated as Elisp) is the programming language that powers the extensibility of the Emacs text editor. It’s a dialect of Lisp that has been adapted specifically for text editing tasks. While it might look unusual at first glance, understanding a few key concepts opens up a world of possibilities for customizing your Emacs experience. In this article, we’ll explore some of the fundamental concepts in Emacs Lisp that often confuse newcomers. ...

March 29, 2025 · 6 min · Manuel Herrmann

The Essential Emacs Hotkeys Every User Should Know

For over four decades, Emacs has stood as a pillar in the text editing world, beloved by programmers, writers, and power users alike. What makes Emacs particularly powerful is its extensive keyboard shortcut system that allows users to perform complex operations without ever touching the mouse. Emacs comes with an excellent built-in tutorial that can be accessed with C-h t (Control-h followed by t). I highly recommend all new users complete this tutorial to get comfortable with Emacs’ fundamentals. That said, the tutorial is comprehensive and takes time to complete. ...

March 28, 2025 · 6 min · Manuel Herrmann

Lessons Learned from Journaling with Emacs org-journal-mode

As I delve into the intricacies of Emacs and its powerful org-mode ecosystem, I’ve discovered that org-journal has transformed my daily note-taking and task management workflow. Looking at the configuration shared, there are several valuable insights worth highlighting for anyone looking to enhance their personal knowledge management system. The Power of Daily Granularity One of the most impactful lessons I’ve learned is the importance of splitting journals into smaller, more manageable chunks. The configuration sets up org-journal with daily entries rather than maintaining one massive file for an entire year’s worth of thoughts and tasks. This approach offers several benefits: ...

March 28, 2025 · 3 min · Manuel Herrmann

The Rust Programming Language and the Advent of Code 2018

I recently got reminded about AdventOfCode2018. Be sure to check it out before end of december. Till now i did the challenges in rust, perl, bash - no specific language - just depending on the time i have. If you have plenty of time, the challenges from the last years are still available. Additionally i was looking a little into the programming language rust. ...

December 7, 2018 · 3 min · Manuel Herrmann