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

Linux-Server einrichten: Ubuntu 24.04 von Null auf sicher

Firewall und Fail2Ban: Den Server vor dem Internet schützen

nginx und SSL: Webserver einrichten und absichern

MariaDB und PHP-FPM: Die Basis für Shopware und WordPress

Backup und Monitoring: Damit der Server nicht im Stillen stirbt

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

Dienstplaner — Schichtplanung mit Symfony