---
title: "Stefan Kölle"
description: "Experienced Senior Software Developer and Software Architect with over 20 years of experience. Specialized in .NET and Kubernetes, with hands-on experience in AI-assisted development using Claude Code."
layout: stefankoelle.njk
---
Personal Projects
moonweb.org
My personal corner on the internet, documenting the homelab, smart home setups, infrastructure experiments, retro hardware, and the code that ties it all together. Everything runs on a homelab that has been evolving since the mid-90s.
- moonweb.org: Overview of all sites and projects.
- moonweb.org/infra: Proxmox cluster, Synology NAS, Docker containers, networking, and backup strategies.
- moonweb.org/smarthome: Home Assistant, MQTT sensors, AirPlay audio, energy monitoring, and ESP32 dashboards.
- moonweb.org/code: Curated catalog of public GitHub projects, sorted by topic.
- moonweb.org/retro: Atari ST, Amiga, DOS, MiSTer FPGA, and the retro computing corner.
Home Network Projects (2025-2026)
- Docker Host (Proxmox PVE)
Virtualized Docker host with Debian 12.2 running containerized services including Portainer, Prometheus, Grafana, Gitea, monitoring exporters, and more. Full architecture documented on moonweb.org/infra.
- Infrastructure
The whole homelab runs on a Proxmox cluster with a Synology NAS, LXC containers, and a full backup strategy. More on moonweb.org/infra.
- InfluxDB Time-Series Integration
Deployed InfluxDB 2.x for sensor data collection from Tasmota smart plugs and HomematicIP thermostats, replacing older MySQL-based storage with modern time-series architecture.
- LED Matrix ESP32 InfluxDB Integration
Data persistence layer for LED Matrix ESP32 sensor systems (DHT22 temperature/humidity) with InfluxDB 2.x backend. Automated collection at 60-second intervals for historical trend analysis.
- Air Quality Dashboard
Dynamic HTML5 dashboard consuming real-time sensor data from InfluxDB via Flux query API. Displays temperature and humidity across all network locations, accessible via nginx reverse proxy. See also moonweb.org/smarthome.
- Tasmota Energy Monitoring
Smart plug energy tracking with 8 Tasmota-enabled devices, integrating MQTT data collection and visualization. See also moonweb.org/smarthome.
- Smart Home Additions
Multi-room AirPlay audio on Raspberry Pi, a balcony solar Pi, an ESP32 home dashboard, and OctoPrint for 3D printing. More on moonweb.org/smarthome.
- Network Hardware & Monitoring
Four Zyxel GS1200-8HP managed switches in the server room, living room, and study, plus a Multi-WAN OpenWrt router for failover and VLAN segmentation. All switches feed into Prometheus monitoring via SNMP exporters, and IoT devices are isolated in VLAN 189.
Open-Source Tools & Side Projects
Most of these live on GitHub and are documented in more detail on moonweb.org/code.
- kctl-tui: A terminal UI (Go + Bubble Tea) for everyday Kubernetes work, with guided context/namespace selection and an AWS Secrets Manager sync workflow.
- M5Stack Dashboard & WT32-SC01 Dashboard: ESP32 dashboards showing live weather, calendar, and Munich transit departures on physical hardware.
- DynDns Updater: Cloudflare + FreeDNS DynDNS updater for FritzBox (TR-064), running as a Docker container.
- Google Calendar Sync: Syncs a private Google Calendar into MariaDB with recurring-event expansion and a FastAPI web UI.
- MVG Departures: Compact Munich transit departure monitor with configurable stations, direction filters, and a mobile-friendly view.
- iCloud Contacts Sync: Automated iCloud contacts sync to MariaDB via CardDAV, with birthday email digest and a read-only API behind Authelia.
- PeopleCostCounter, Focus App, and more on GitHub.
Retro Computing (2022/2023)
- Gotek Drive
- More RAM
- Alternative TOS ROMs
- SD HDD Adapter
Home Automation (since 2018)
- LED Matrix ESP32 for date, time, weather, and status messages via Web API, with a display in every room.
- MQTT for message transfer and remote control via Tasmota RF modules (433MHz).
- Power meter monitoring for washing machine and tumbler with info messages on LED matrices when finished.
- MP3 player with automated playback (e.g., bathroom radio when light is on).
- Raspberry Pi with pilight and RF433 module for remote control power plugs.
Various Docker Systems (since 2016)
- Monitoring: Prometheus, Grafana, InfluxDB, cAdvisor, Node Exporter, SNMP exporters
- Smart Home: Mosquitto MQTT broker, Home Assistant
- Infrastructure: Portainer, Nginx Proxy Manager, Authelia (SSO), Watchtower, Healthchecks
- Applications: Gitea (GitHub mirror), Stirling PDF, TubeArchivist, TubeSync, SearXNG
Walk-on Song (2019)
- When someone enters the office, their jingle is played.
- ESP32 scans WiFi, if a known device is found for the first time per day, the jingle is played.
- MP3 Module for playback on attached speaker.
- Interactive audio playback system utilizing RFID technology.
- Powered by an Arduino Nano for compact and efficient operation.
- Plays specific audio files when RFID-tagged objects or cards are placed on the device.
- Customizable: users can upload and assign personalized audio content to RFID tags.
.NET Community Activity (2009 - 2011)
- Attended multiple .NET Open Spaces, including Ulm 2009 and Leipzig 2009.
- Developed a schema-less object storage system named StupidDB.
- Contributed to a developer blog with colleagues.
- Actively participated in Coding Dojos at AutoScout24.
Owner & Developer, inseco.de (2003 - 2008)
- Managed approximately 20 clients, primarily from the gastronomy and club sectors.
- Developed a CMS system for maintaining their websites, programmed in PHP and MySQL.
- Included modules for photo galleries, menus, and events.
Home Network Projects during IT Manager Phase (2000 - 2006)
- Set up a home network with various Linux servers and Windows NT 4.0.
- Implemented a predecessor to the pfSense firewall.
- Managed a FreeBSD server with Apache, Sendmail, and Perl scripts.
- Maintained an NT 4.0 file server.
- Administered Windows 98 and Windows 2000 hosts.
- More info at moonweb.org/timecapsule/network/
Mailbox/Fidonet (1994 - 2000)
- Operated a BBS and Fidonet Node (see also FidoNet Nodelist on 28k8.moonweb.org).
- Managed a node in Augsburg with an uplink directly to the NC in Munich.
- Software was running on an OS/2 computer.
- Utilized 2x ISDN and 1x MODEM connections.
- Had about 20 subnodes and points.
- Served as the Bavaria HUB/HOST for various old networks.
- Developed several small software tools in Turbo Pascal for DOS.
PC Intro / Game / Software Development (1992 - 1994)
Atari ST Software Development (1990 - 1992)
- Completed game 'Atom oh no' in 1992 (GFA Basic)
Programming Languages
AI-Assisted Development
I've fully embraced the AI-assisted development paradigm since early 2025. At work, I've taught Claude Code a workflow for handling Jira stories end-to-end: it evaluates requirements, provides feedback to the PO, and creates a detailed implementation plan. From there, it's mostly about supervising the plan while the code generation runs largely autonomously. For code review, we use a second AI (e.g., Codex) as a quality gate to catch issues that might slip through. In migration projects, I define the exact plan upfront and Claude Code executes it with increasing independence. The output gain is massive, delivering in a fraction of the time.
Privately, I work with OpenCode paired with OpenCode Zen, Merge Gateway, and OpenRouter, mostly for Python-based home lab and automation projects. See my GitHub projects for examples and the Dev VM setup for the infrastructure behind this workflow.
.NET
- Working with .NET since 2018 at stellenanzeigen.de GmbH & Co. KG, which became TENHIL GmbH & Co. KG in 2022, where I migrated the old VB and ASP-Classic applications to modern .NET.
- Built around a dozen microservices, including Jobs Per Mail, JobApply, GeoService, Feedexporter, and Salary Data Service, first hosted on Azure and built with Docker, Terraform, Azure Tables, Azure Blobs, S3 buckets, and PostgreSQL.
- Since 2026, all of these microservices run in our self-hosted Kubernetes cluster on AWS machines.
- Introduced Squidex as a headless CMS for the microservice backend, with Sentry and Loki for monitoring and logging, and Quartz.NET, later Hangfire.NET, for scheduled jobs.
- Privately built Marcer GameDVD Launcher, a console tool for browsing and launching Atari ST/Falcon games from a USB stick.
Go
- First used Go for kctl-tui, a terminal UI for Kubernetes built with Bubble Tea, handling context selection, namespace management, and AWS Secrets Manager sync.
- Used Hugo (Go Templates) to rebuild the build broken blog archive (source) from Wayback Machine snapshots.
TypeScript / JavaScript
- Using Node.js privately for over a decade, TypeScript since its early days, and professionally at TENHIL since 2024.
- Since 2026, TypeScript is my go-to for AI-built microservices.
- Built an MCP (Model Context Protocol) server for ChatGPT integration in 6 half-days using Claude Code.
- Implemented a TypeScript widget renderer for AI-driven applications with the OpenAI Chat Kit.
- Static site generators: Eleventy (v3) for moonweb.org (6 sites, Nunjucks templates) and stefankoelle.de, Astro for the 28k8 BBS retro site.
Python
- Working with Python since 2020 on private projects, home lab tooling, and automation scripts.
- Since 2026, increasingly using Python for home network projects, with development accelerated by AI-assisted workflows in OpenCode.
- FastAPI web projects: Google Calendar Sync, MVG Departures, iCloud Contacts Sync.
- Flask: DynDns Updater, a Cloudflare + FreeDNS DynDNS updater for FritzBox as a Docker container.
Arduino / PlatformIO
- Built ESP32 dashboards (M5Stack, WT32-SC01) showing weather, calendar, and Munich transit departures on physical hardware.
- LED Matrix ESP32, the date/weather/status displays in every room (see the Home Automation section above).
- Kids RFID MP3 Player: Interactive audio playback system with RFID tags, powered by an Arduino Nano.
.NET Framework
- As CTO at stellenanzeigen.de GmbH & Co. KG (2004-2010), drove the move from ASP Classic to the .NET Framework, replacing the monolithic setup with a layered architecture of SOAP web services.
- Hosted applications on Windows IIS with MSSQL as the database.
- Introduced TDD and DDD practices and shared that knowledge with the .NET community at OpenSpaces and CodingDojos.
PHP
- Developed a website CMS system (activetool.de) for multiple clients from 2003 to 2008.
- Created a PHP Ticketing System and worked with MySQL databases.
ASP-Classic
- Started with ASP-Classic on PC (Windows) in 1999 while working as a web developer at IXOS AG: managed the web development environment and built internal departmental websites, introduced search functions, request systems, and link checkers to optimize web servers, developed a Visual Basic application for generating static web pages, and designed a workflow for maintaining the website using ASP scripts and SQL databases.
- Led the IT and development department at stellenanzeigen.de GmbH & Co. KG from 2000 to 2003, migrating applications from idc/htx to ASP-Classic and developing a multi-client web frontend for newspaper publishers.
Java
- Began using Java on PC (Windows) in 1998.
- Participated in a Security Hash Team Project at iXOS Software AG, developing the Java frontend.
- Utilized development environments such as Kawa and IBM Visual Age.
C++
- First used C++ on PC (Windows) in 1997.
- Worked on an R/3 Integration Project during practical work at iXOS Software AG.
- Completed one semester of C++ on UNIX (Solaris) during studies in 1998.
PASCAL
- Started with PASCAL on PC in 1993, using TurboPascal 6.0, 7.0, and Borland Pascal 7.0.
- Developed X-LIB Unit, a VGA graphics library used in the demos below.
- Developed DOSMENU, a menu system for DOS, and tools for Fidonet.
- Created two games: a Wheel of Fortune clone and a two-player Tetris.
- Studied PASCAL for one year in school (1994) and one semester on UNIX (Solaris) during studies in 1996.
Assembler
- Began learning Assembler on the Atari ST in 1992, creating simple programs with Pure Assembler, part of the Pure C Pack.
- Developed a small text mode demo with sound using DevPAK.
- Created four demos on PC using inline assembler in TurboPascal: Phobia Welcome Intro (1994) and three TranceMission Intros (1992/1993), with VGA graphics and SoundBlaster audio.
C
- First encountered C on the Atari ST in 1992, creating simple programs with Pure C, an advanced version of Turbo C.
- Completed one semester of C during studies in 1997.
BASIC
- Gained initial experience with BASIC on the EPSON HX-20 in 1988 and Atari ST in 1989.
- Developed two small games (Bowling, LiveStyleCity) using OmicronBasic.
- Created games such as AtomOhNo (an Atomix clone) and TOPchangethecolor with GFA-Basic and TOPpack.
- Produced graphic demos on the Atari ST around 1991.
- Developed simple programs using Amiga Basic in 1991.
- Studied BASIC for two years in school (1991-1992), including coding a Snake clone during class.
Legal Notice (Impressum, § 5 DDG)
Stefan Kölle
Neumarkter Str. 86c
81673 München
Phone/Fax: +49-(89)-20006547
E-Mail: [email protected]
Responsible for content according to § 18 (2) MStV: Stefan Kölle, address as above.
Full legal notice & privacy policy for this website and the moonweb.org network: moonweb.org/impressum