Thomas Flori
Solving a complex task in a way that makes the solution appear simple

that is my creativity

Thomas Flori

42 years, Husband, Inventor, Developer

What Drives Me

Rarely am I driven by mere tinkering. More often, it is the pursuit of a better, simpler, or more elegant solution – the challenge to implement existing concepts in a more thoughtful way.

This is precisely where creativity in programming begins for me. It lies in identifying complex relationships and patterns to find generalizations that are both simple and reusable. For me, it is not about building something that is hard to understand, but about reducing complexity to the point where the solution simply works – reliably and with minimal overhead.

I am fascinated by the gap between what the user sees and the well-thought-out architecture behind it that only professionals recognize. The following insight shows how this mindset developed and what else shaped me:

1984

Born in Germering as the son of a mathematician and a pedagogue. The foundation for my passion for IT was laid early: at just three years old, I was sitting in front of a 386 PC, navigating DOS directories and launching my first game, Aldo.

1996

Moving to Bayreuth brought two defining changes: I strictly saved my pocket money for four months to finally afford my first own PC in 1997. Shortly after, I joined the Nibelungen Bayreuth scout troop, where my passion for hiking, camping, and nature began.

2001

In my Counter-Strike clan, I was the only one with basic HTML knowledge – and was promptly tasked with designing the website. It quickly became clear that static HTML was not enough: at 17, I taught myself PHP to build a dynamic guestbook.

2003

Moved to Munich to live with my father and started my apprenticeship as a Software Developer (Fachinformatiker für Anwendungsentwicklung). On the side, I independently conceptualized, designed, and developed a PHP4-based portal for an internet radio station.

2004

Acquired my first dedicated root server. This marked the beginning of years of hands-on experience in Linux server administration and migration – including two rootkit incidents from which I learned valuable lessons about system hardening and recovery.

2006

Two attempts at self-employment in Schweinfurt and Wuppertal gave me a pragmatic reality check: a good idea alone does not guarantee success. During this phase, I also built my first proprietary Content Management System (CMS) – looking back, the solution was unpolished, but it served as an important milestone for my personal quality standards.

2008

Returned to Munich and joined PocketGear (mobile2day.de). Working on expanding their online shop for smartphone software taught me how to professionally manage large volumes of data in live operations.

2011

Following the closure of PocketGear's German office, I moved to GermanPersonnel. Here, I transitioned to a modern MVC framework (Zend Framework) and PostgreSQL, while fully migrating both my private and professional workstations to Linux.

2012

An event-packed year: alongside getting my driver's license, I spearheaded the transition from Subversion to Git at GermanPersonnel. On my first solo road trip to the Harz mountains, I also conquered my toughest hike to date: 26 kilometers and 1,200 meters of elevation up the Brocken.

2014

An AngularJS workshop with Golo Roden provided the decisive spark for my technical profile: it marked my entry into modern Single-Page Application development.

2015

A year of milestones – professionally and personally. At GermanPersonnel, I took over technical leadership of the frontend team and set the course for modern web architectures. Away from the screen, the most important personal moment followed: I met my future wife.

2017

Joined Sportradar. I took over maintenance of getopt-php (today with over 340 stars and used as a dependency by more than 100 packages, including google-ads-php). At the same time, I overhauled my private infrastructure using Docker containers and GitLab.

2018

Experience with large frameworks like Laravel highlighted their overhead for high-performance APIs. To enable extremely lightweight and fast interfaces, I developed a suite of modular libraries (verja, syna, hugga, breyta, riki-framework).

2019

Eager for something new: I learned Lua and built a custom Conky skin using the Cairo library (tflori/miracle-conky). In parallel, I made further open-source contributions to well-known community projects like mockery and whoops.

2022

Since commercial ergonomic keyboards rarely offered good mechanical switches and split keyboards were not only expensive but also lacked ergonomics, I decided to build my own: the first custom ergonomic split keyboard was born.

2025

After several iteration steps, the keyboard project reached version 4. For this, I dived deep into the KMK firmware codebase to implement individual per-key LEDs and status synchronization between both halves.

2026

Focus on personal projects and modern methodologies: through the intensive use of agentic coding (with Claude Code and OpenCode), I fundamentally reworked tflori/verja and developed my second CMS (riki-cms) – which powers this exact profile page.

What I Do Today

Open Source & Maintainer

Some projects stem from necessity, others from the challenge to do things better – and some of these projects evolve into long-term tools. To this day, I maintain several open-source libraries that I developed independently. A few examples:

  • tflori/orm: A high-performance ORM created with the drive to build a leaner alternative to existing libraries.
  • tflori/verja: A flexible library for validating user input (and other data).
  • tflori/dependency-injector: A lightweight dependency injection container for clean decoupling.
  • tflori/hugga: A lean library for interactive console applications in PHP – focusing on flexible output formatting, tables, and direct keyboard input handling.

Additionally, I took over maintenance of getopt-php a few years ago. Although the project did not originate with me, I have significantly developed it over the years – today it is used as a dependency by over 100 packages.

You can find an overview of my publicly accessible repositories and experiments on GitHub and on my GitLab.

Pragmatic Custom Developments

Not every tool needs to become a polished open-source project for the masses. Often I build things simply because existing software doesn't meet my specific requirements or I want tailored solutions for my day-to-day workflow:

  • fan-ctrl-php: Hardly any common fan control tool under Linux cleanly reads GPU temperatures via Nvidia commands. I wrote my own daemon for this, which runs as a background service and has reliably solved this issue for me for years.
  • vte-console: A lightweight dropdown terminal for Linux written in Python. If you're currently using a Wayland compositor that supports the zwlr-layer-shell-v1 protocol, feel free to give it a try.
  • Ergo2040: A self-built, ergonomic split keyboard with 83 individually addressable backlit keys and customized KMK firmware. The goal was an ergonomic layout without losing the ability to type on a standard keyboard.
  • network-gallery & riki-cms: In-house developments (e.g., for the family gallery and this website). They meet my needs and leave plenty of room for my own ideas – even if, realistically speaking, they cannot compete with established tools and their massive communities.

Infrastructure & Self-Hosting

I run my services fully self-hosted on a Linux root server. Alongside GitLab CE, NextCloud, OnlyOffice, SonarQube, Roundcube, and various databases (MySQL, MariaDB, PostgreSQL), I also host all my personal websites there.

To keep the setup organized, I developed a CLI tool that handles administration. It encapsulates Docker Compose using a modular system (service and vhost enabling) and directly combines it with Nginx configurations as well as automated SSL certificate management via DNS challenges.

Away From the Screen

The joy of construction and design isn't limited to code. When I'm not at the computer, I'm occasionally out with my camera or spending time in my small workshop.

Woodworking has been a long-standing passion: ever since I was 16, I've been building custom desks designed with a special focus on PC work. Every now and then, other handcrafted pieces come to life – like a lowboard featuring a self-poured river table top, an asymmetric structure, and angled joinery.