<p><em>As a software engineer, the tools I use define how I work and I find it always inspiring to see the tools, other people use. This page focusses on Software. For Hardware, check <ahref="/setup">/setup</a>.</em></p>
<p>My software stack is pretty old-school. I prefer CLI applications for almost everything. The only GUI programs I usually run are browsers, image manipulators and LogSeq.</p>
<p>It all started with Real Red Linux 2000, a special millenium version of <ahref="https://en.wikipedia.org/wiki/Red_Hat_Linux">RedHat Linux</a>. I don't know for sure, but I think it was based on RedHat 6.1 or 6.2.</p>
<p>Over the years, I first used different RPM based distributions, then switched to <ahref="https://www.gentoo.org/">Gentoo</a> for a while, before getting annoyed by the compiling frenzy and discovering <ahref="https://archlinux.org/">Arch</a>. When Arch made the switch to systemd, I found Void Linux and stayed with it for years. At some point, not many years ago, I went with <ahref="https://fedoraproject.org/">Fedora</a> and it struck a nice middle ground between customizability and "it just works". Thanks to Fedora Spins, it is now easy to have a more standard system on my work laptop and a rather customized one on my private laptop, without too many differences in the foundation. I use official the <ahref="https://fedoraproject.org/spins/sway/">Sway Spin</a> on my private laptop.</p>
<h2><spantitle="Desktop Environment">DE</span>: GNOME vs Sway</h2>
<p>Over the years I got used to tiling window managers. Honestly, I tried almost all of them and went from <ahref="https://xmonad.org/">hyper-configurable</a> to <ahref="https://dwm.suckless.org/">super minimalist</a>. I ended up - as usual - somewhere in the middle, with <ahref="https://i3wm.org/">i3</a> and <ahref="https://swaywm.org/">Sway</a>.</p>
<p>My work laptop has a GNOME desktop with some extensions, that make it work well for me. My typical work flow involves full screen applications and many desktops. I rarely have more than one window on one screen. That is why I didn't have too much of a hard time to switch from <ahref="https://dwm.suckless.org/">dwm</a> and similar tiling window managers to GNOME, because it uses MacOS-like gestures to work with desktops. Extensions like <ahref="https://extensions.gnome.org/extension/6127/only-window-maximize/">Maximize Lonely Window</a> help as well. There used to be another extension, <ahref="https://extensions.gnome.org/extension/3100/maximize-to-empty-workspace/">Maximize To Empty Workspace</a>, which was even closer to my usual way of working. But it is not supported in newer GNOME versions.</p>
<h2>Editor: Helix</h2>
<p>Most of my life, I used <ahref="https://www.vim.org/">ViM</a>. It made me more productive and helped me to focus on the things that matter most for my productivity. One day, I found <ahref="https://kakoune.org">Kakoune</a>, which blew me away by being so similar and yet different to ViM, in a (in my opinion) good way. What Kakoune does is to to switch around the command order. While ViM's command language is VERB-MODIFIER-OBJECT. For example: <code>d2w</code> means delete two words. Kakoune switches that to MODIFIER-VERB-OBJECT and introduces selecting and non-selecting movement, which allows you to see your selection before applying an action. <code>d2w</code> changes to <code>2Wd</code>, which translates to select next two words, then delete them. I finally settled with <ahref="https://helix-editor.com/">Helix</a>, an editor that uses Kakounes command language, but implements many useful things by default, while still being very configurable.</p>
<h2>Terminal: foot + zellij + zsh</h2>
<p>Almost all of my day-to-day applications are in the terminal. I am so used to it, that I started trusting GUI applications less. This is obviously my issue, but luckily I'm not alone, so many great CLI applications exist.</p>
<p>I use <ahref="https://codeberg.org/dnkl/foot">foot</a> as terminal emulator. It is lightweight, supports 24bit colours and works with Wayland.</p>
<p>Inside foot runs <ahref="https://zellij.dev/">zellij</a>, which is a terminal multiplexer similar to <ahref="https://www.gnu.org/software/screen/">screen</a> and <ahref="https://github.com/tmux/tmux/wiki">tmux</a>. It allows me to run multiple applications in one terminal, keeps sessions alive after closing the terminal emulator and so on. I actually configured zellij to feel a lot more like tmux, because I'm so used to the latter and honestly I might just switch back to tmux, who knows.</p>
<p>My shell of choice is <ahref="https://www.zsh.org/">zsh</a> with <ahref="https://ohmyz.sh/">oh-my-zsh</a>. It is by far the most versatile shell and the only one (to my knowledge) that supports RPROMPT, a prompts at the end of the line.</p>
<h2>Browser: Firefox</h2>
<p>My browser of choice is <ahref="https://www.mozilla.org/de/firefox/">Firefox</a>, because I want an open and diverse internet. Firefox is a great choice and offers lots of features, like direct PDF support, privacy features out of the box and great synchronisation. Chrome and Chromium-based browsers are great as well, but if everyone uses the same browser, we'll end up with whatever the company behind this browser wants the internet to be.</p>
<p>Of course, I use a lot more tools in my day-to-day work.</p>
<p>I use <ahref="https://logseq.com/">LogSeq</a> for knowledge management. It is similar to Evernote, Obsidian or Notion. For me it hits the mark between flexibility and structure. I use it for everthing from todo lists to planning long D&D campaigns.</p>
<p><ahref="https://poe.com/">Poe</a> allows access to all kinds of generative intelligence tools, like LLMs ("ChatGPT") and image generators. I mostly use Mistral, but also switch between models from time to time. They help me with brainstorming and sometimes I misuse them to write JSDoc comments for me.</p>
<p><ahref="https://bitwarden.com/">Bitwarden</a> is a fantastic password manager with lots of utilities. It works so that you don't need to trust the server provider, because everything runs on the client (for example in a browser plugin) and is encrypted locally before being sent to the server. The best thing is, that I can host a bitwarden server myself, using <ahref="https://github.com/dani-garcia/vaultwarden">Vaultwarden</a>.</p>
<p><ahref="https://git-scm.org">GIT</a> is the most widely used source code management as of today. Although I see some strengths in other systems, Git is by far good enough for all my needs. I host my own <ahref="https://forgejo.org/">Forgejo</a> git server at <ahref="https://git.k0r.in">git.k0r.in</a>.</p>
<p>There is a lot more and I might extend this list from time to time.</p>