Programmierung
Softwareentwicklung, Architektur, Best Practices
C# & .NET
Wie arbeiten Interfaces, DataServices, Mapper und ViewModels zusammen? (Teil 1)
Warum testen wir mit echten Fakes statt mit Mocking-Frameworks? (Teil 2)
API-Keys sicher konfigurieren in .NET-Anwendungen (Teil 3)
Entity Framework Core mit SQLite: DbContext, Migrations und Query Filter (Teil 4)
Soft-Delete: Datensätze löschen ohne Datenverlust (Teil 5)
Dependency Injection in einer WinUI-3-Desktop-App (Teil 6)
MVVM in WinUI 3: ObservableObject, RelayCommand und x:Bind (Teil 7)
Navigation in WinUI 3: NavigationView, Frame und ViewModel-Loading (Teil 8)
Themes in WinUI 3: ResourceDictionary und Laufzeit-Wechsel (Teil 9)
Eigenes Logging-System: Sinks, Logger und MemorySink (Teil 10)
Spotify-Integration: Client-Credentials-Flow und Token-Cache (Teil 11)
Retry und Resilienz: Linearer Backoff für HTTP-Anfragen (Teil 12)
Audio-Wiedergabe: MediaPlayer, Playlist und PlaybackState (Teil 13)
SyncService: IServiceScopeFactory in Singleton-Services (Teil 14)
Import-Flow: ImportService und Keyed Services (Teil 15)
Lokalisierung in WinUI 3: Deutsch und Englisch mit .resw-Dateien (Teil 16)
Ein Abonnement-Flag: Kleines Feld, große Wirkung (Teil 17)
Dashboard-ViewModel: Services kombinieren und Gruppen-Layout (Teil 18)
Lokale Mediathek: Drei-Spalten-Navigation mit Auswahl-Kaskade (Teil 19)
Suche und Import: Ergebnis-ViewModels und Import-Status (Teil 20)
Player-Seite: FolderPicker, ID3-Cover und Slider-Antifeedback (Teil 21)
Einstellungen mit Tabs: TabView und Verbindungstest (Teil 22)
StatusBar als Singleton: Globaler Zustand ohne N+1 (Teil 23)
Tag-Manager: Audio-Metadaten lesen, schreiben und nachschlagen (Teil 24)
Log-Viewer: DispatcherTimer, IDisposable und NumberBox (Teil 25)
Cover-Suche: Fünf Anbieter parallel abfragen (Teil 26)
Online-Folgencheck: iTunes API vs. lokale Ordner (Teil 27)
SQLite professionell optimieren: PRAGMAs, Indizes und Partial Indexes (Teil 28)
Online-Mediathek: Akkordeon-Layout und Provider-Suche (Teil 29)
Cover-Architektur: Blobs von Metadaten trennen (Teil 30)
UserControls in WinUI 3: SeriesTileControl und DependencyProperties (Teil 31)
Hintergrund-Services: PeriodicTimer und CancellationToken (Teil 32)
Startup-Validierung: Splash-Screen und StartupResult (Teil 33)
Favoriten und Überwachung: Feature-Flags auf Serien-Covers (Teil 34)
Cache-Verwaltung und Datenbankpflege in den Einstellungen (Teil 35)
EchoPlay — Hörspiel-Manager für Windows
ShopAnalytics — SEO-Analyse ohne Agentur
KI & Automation
Künstliche Intelligenz in der Softwareentwicklung
Projekt vorbereiten: Dateien, Struktur, Kontext
Gute Regeln schreiben: Der KI Grenzen setzen
Saubere Prompts: Präzise formulieren, Token sparen
Modelle und Tools: Stärken, Schwächen, Einsatzgebiete
Sicherheit: Was nicht in den Prompt gehört
Reviews: Warum der Mensch das letzte Wort haben muss
Wann KI nicht nutzen: Die Grenzen kennen
KI-Werkstatt: Mein Entwicklungs-Setup
Kolumne
Gedanken und Meinungen aus dem Entwickleralltag
Wenn der externe Check-up mehr kaputt macht als er findet
KI ersetzt keine Programmierer
Lernbereitschaft als Kernkompetenz
Studium ist eine Basis — Praxis ersetzt es nicht
SEO ist kein Wachstumshebel mehr
Smartphone erlaubt, Kamera verboten
Die letzten 10% sind die echten 90%
Wann wird E-Commerce unbezahlbar?
Was Parfuemerien mit Softwareentwicklung zu tun haben
Wenn Automatisierung Vertrauen zerstoert
Warum ich mich trotz vieler Jobanfragen nicht bewerbe
Teilzeit in der IT ist kein Nachteil
Wenn bei Claude die Lichter ausgehen
Remote ist kein Benefit — sondern eine Arbeitsweise
Warum der Weg über Recruiter selten passt
Warum Abschottung vor KI nach hinten losgeht
Wenn KI von KI lernt: Das Kopierer-Problem
Wir wussten noch, wie Platinen riechen
Ich kann coden — warum KI-Coding keine Softwareentwicklung ist
Warum KI-Coding so viel Spaß macht
Wenn der Kopf nicht mehr will
Über mentale Belastung in der Softwareentwicklung
Wer nur noch Bus fährt, vergisst das Lenken
Vom Büroinformationselektroniker zum Full-Stack-Entwickler
Manchmal will man einfach mit einem Menschen sprechen
Maschinen kaufen keine Produkte
Mein digitaler Werkzeugkasten
Die Illusion der Verknüpfung
Wenn das Update zum Reset wird
SEO
Suchmaschinenoptimierung aus Entwicklersicht — technisch, mit Code und ohne Marketing-Versprechen.
Warum deine Website nicht rankt — und warum ich selten beim Content anfange
Schema.org für Entwickler: JSON-LD, Rich Results und was Google wirklich liest
SEO-Probleme in Shopware 6, die erst auffallen, wenn man genauer hinschaut
KI und SEO — was sich gerade verändert und wie du deine Inhalte darauf vorbereitest
Core Web Vitals: Wenn die Seite schnell wirkt, aber die Werte schlecht sind
Warum SEO oft scheitert, obwohl man eigentlich alles gemacht hat
Server & Infrastruktur
Linux-Server einrichten, absichern und betreiben
Shopware
Shopware Plugin-Entwicklung, E-Commerce und Shop-Systeme
Shopware-Entwicklungsumgebung einrichten: VPS mit DDEV und Docker (Teil 1)
RcCustomFields: Individuelle Eingabefelder für Shopware-Produkte
RcCustomerImageGallery: Kundenbild-Galerie für Produktseiten
RcDualPrice: Zweite Preisanzeige pro Kategorie
RcDynamicPrice: Längenbasierte Preisberechnung für Meterware
RcMinimalisticProductList: Reduziertes Listing-Layout pro Kategorie
IDE per SSH-Tunnel anbinden: VS Code und PhpStorm für Shopware (Teil 2)
RcProductFeedShippingExtension: Versandkosten im Google Shopping Feed
RcSubcategoryCmsBlock: Unterkategorien als CMS-Block
RcTracking: DSGVO-konformes Tracking zentral verwalten
Git-Workflow für Shopware-Plugins: Eigenes Repository oder GitHub? (Teil 3)
Code-Qualität automatisieren: PHPStan und PHP CS Fixer für Shopware (Teil 4)
Symfony
Symfony-Projekte und Tutorials