Zum Inhalt springen

Artikel

Neu hier? Starte hier →

  • Technische Führung: Aus einer Meinungsverschiedenheit eine testbare Entscheidung machen

    Technische Führung: Aus einer Meinungsverschiedenheit eine testbare Entscheidung machen

    Zusammenfassung Lange Debatte durch einen kleinen Spike ersetzen: erst die Kriterien vereinbaren, dann die Belege gemeinsam prüfen, dann entscheiden.

    Vor Kurzem war ich in einer technischen Diskussion, die sich zunehmend um denselben Punkt drehte. Wir überlegten, wie wir einen Teil einer Frontend-Anwendung strukturieren sollten, und hatten zwei Ansätze, für die es jeweils gute Argumente gab. Der eine versprach eine klarere Trennung und eine konsistentere Struktur. Beim anderen stand die Sorge im Raum, dass wir diese Struktur mit zusätzlicher Indirektion bezahlen und spätere Änderungen dadurch schwerer nachvollziehbar machen würden.

    Weiterlesen →
  • Technische Führung: Trenne die Praxis von dem Problem, das sie lösen soll

    Technische Führung: Trenne die Praxis von dem Problem, das sie lösen soll

    Zusammenfassung Benennt zuerst Problem, Ergebnis und Rahmenbedingungen. Dann wird die vorgeschlagene Praxis eine Möglichkeit unter mehreren, und das Team kann das Problem behalten, auch wenn es die Lösung verwirft.

    Mir ist kürzlich aufgefallen, wie schnell sich eine technische Diskussion auf eine bestimmte Praxis konzentrieren kann, obwohl ursprünglich ein ganz anderes Problem dahinterstand. In einem Teamgespräch ging es darum, ob wir Test-driven Development einführen sollten. Die Diskussion hätte leicht in den üblichen Austausch über TDD übergehen können: Vorteile, zusätzlicher Aufwand und die Frage, ob diese Arbeitsweise zum Team passt.

    Weiterlesen →
  • Technische Führung: Wenn die Entscheidung nicht mehr bei euch liegt

    Technische Führung: Wenn die Entscheidung nicht mehr bei euch liegt

    Zusammenfassung Helft, das Problem zu klären, und tretet dann zurück: Bringt Entscheider und Betroffene direkt zusammen, statt die Entscheidung hin und her zu tragen.

    Ein Muster, auf das ich inzwischen stärker achte, zeigt sich dann, wenn ein Problem meine eigene Entscheidungsbefugnis verlässt. In technischer und organisatorischer Arbeit passiert das häufiger, als es zunächst wirkt. Jemand bringt ein Problem auf, ich helfe dabei, es zu präzisieren, hinterfrage Annahmen, sammle Kontext und versuche, die Situation voranzubringen. Irgendwann erfordert die offene Frage jedoch eine Entscheidung, zu der ich nicht befugt bin.

    Weiterlesen →
  • Mein lokales KI-Setup, sechs Monate später: 48 GB, Qwen3.8 und ein anderer Engpass

    Mein lokales KI-Setup, sechs Monate später: 48 GB, Qwen3.8 und ein anderer Engpass

    Zusammenfassung Sechs Monate nach dem 16-GB-Setup: 48 GB, ein Standard-27B-Modell, Splash-Inference in LM Studio und 64K Kontext, weil sich der Engpass vom Einpassen des Modells auf die Nutzbarkeit langer Agent-Sessions verschoben hat.

    Vor einigen Monaten habe ich darüber geschrieben, wie ich auf einem MacBook Pro mit 16 GB Unified Memory ein brauchbares lokales KI-Setup für die Softwareentwicklung aufgebaut habe. Damals wurde fast jede Entscheidung durch den verfügbaren Arbeitsspeicher bestimmt. Ich experimentierte mit kleineren Modellen, begrenzte die Kontextgröße bewusst und suchte nach einer Kombination, die leistungsfähig genug für Entwicklungsaufgaben war und gleichzeitig genügend Ressourcen für IDE, Container, Browser und den Rest meiner Entwicklungsumgebung übrig ließ.

    Weiterlesen →
  • Technische Führung: Gib Autonomie einen zeitlichen Rahmen

    Technische Führung: Gib Autonomie einen zeitlichen Rahmen

    Zusammenfassung Autonomie funktioniert, wenn das Team den Ansatz trägt und die Führungskraft das Ergebnis, die festen Rahmenbedingungen und den Review-Zeitpunkt explizit macht.

    Ich habe festgestellt, dass Freiraum für Entscheidungen schnell unklar werden kann, wenn erwartetes Ergebnis und Zeitpunkt der Überprüfung nur implizit bleiben.

    Weiterlesen →
  • Mein lokales KI-Coding-Toolkit: Wie ich Agenten schnell und Token-effizient halte

    Mein lokales KI-Coding-Toolkit: Wie ich Agenten schnell und Token-effizient halte

    Zusammenfassung Wie ich die Umgebung um KI-Coding-Agenten optimiere, um Token-Verschwendung zu reduzieren und Sessions effizient zu halten.

    KI-Coding-Agenten sind fest in meinen täglichen Arbeitsablauf integriert. Ich nutze OpenCode und Claude Code für unterschiedlichste Aufgaben: vom Einarbeiten in unbekannte Codebasen und der Fehleranalyse bis hin zur Umsetzung von Änderungen, Code-Reviews und der Arbeit an architektonischen Fragestellungen.

    Weiterlesen →
  • ngrx-graph: Statische Analyse und Graph-Visualisierung für NgRx-Anwendungen

    ngrx-graph: Statische Analyse und Graph-Visualisierung für NgRx-Anwendungen

    Zusammenfassung ngrx-graph scannt NgRx-Codebasen mittels AST-Parsing, löst Aliase sowie verschachtelte Actions auf und gibt fokussierte oder projektweite Action-Flow-Graphen in DOT/SVG aus. Ein einziger Befehl ersetzt stundenlanges manuelles Durchsuchen von Code.

    Wenn Sie jemals eine Action durch eine umfangreiche NgRx-Codebasis verfolgt haben und sich fragten, welcher Effect darauf hört, welcher Reducer sie verarbeitet und ob ein anderer Effect im Hintergrund eine weitere Action in der Kette auslöst, kennen Sie das Problem. Das manuelle Durchsuchen des Codes funktioniert so lange, bis es an seine Grenzen stößt. Ein einziger verpasster dispatch()-Aufruf, der tief in einem mergeMap vergraben ist, und Ihr mentales Modell bricht zusammen.

    Weiterlesen →
  • Wie ich Cloudflare für meine Website konfiguriere

    Wie ich Cloudflare für meine Website konfiguriere

    Zusammenfassung Systematische Überprüfung jeder Cloudflare Free-Plan-Einstellung, was aktiv bleibt, was deaktiviert wird und die Prinzipien hinter jeder Entscheidung.

    Wenn Sie heute Ihr Cloudflare-Dashboard öffnen, finden Sie dort eine Vielzahl von Funktionen zur Verbesserung von Leistung, Sicherheit und Zuverlässigkeit. Einige sind standardmäßig aktiviert, andere werden empfohlen, und im Zuge der Weiterentwicklung der Plattform kommen regelmäßig neue Möglichkeiten hinzu. Angesichts der Fülle an Optionen wollte ich genauer verstehen, wie sich die einzelnen Einstellungen auf meine Website auswirken.

    Weiterlesen →
  • Wie diese Website funktioniert: Ein technischer Blick auf den Stack

    Wie diese Website funktioniert: Ein technischer Blick auf den Stack

    Zusammenfassung Eine vollständige technische Übersicht, wie diese Website aufgebaut ist, vom Bun + Astro Content-Pipeline bis zum Cloudflare-Deployment, minimalem JavaScript und Performance-Optimierungen.

    In einem Begleitartikel habe ich darüber geschrieben, warum ich diese Website mit Astro neu gebaut habe und wie diese Entscheidung zu einem viel größeren Projekt wurde. Jener Artikel handelte von der Reise und den Überlegungen. Dieser hier handelt vom Ergebnis: Wie die Website tatsächlich funktioniert, von der Schicht, auf der ein Beitrag geschrieben wird, bis zu dem Moment, in dem er im Browser eines Lesers erscheint.

    Weiterlesen →
  • Ein Mittagsgespräch hat meine Website verändert

    Ein Mittagsgespräch hat meine Website verändert

    Zusammenfassung Wie ein beiläufiges Mittagsgespräch zum Neubau dieser Website mit Astro führte, den gesamten Stack modernisierte und sie als persönliche digitale Werkstatt statt traditionellem Portfolio neu dachte.

    Einige der spannendsten Projekte, an denen ich gearbeitet haben, begannen in überraschend alltäglichen Momenten. Ein Gespräch führt zu einer neuen Idee, jemand teilt eine Erfahrung aus seiner Arbeit, oder ich stoße auf einen anderen Ansatz für ein vertrautes Problem. Das Gespräch endet irgendwann, alle kehren zu ihrer täglichen Arbeit zurück, doch eine kleine Idee bleibt weiter in meinen Gedanken. In den folgenden Tagen wächst diese Idee langsam zu Dokumentation, Notizen, Experimenten und gelegentlich zu einem völlig neuen Projekt zurück. Wenn ich zurückblicke, kann ich viele meiner liebsten Lernerfahrungen genau auf solche Momente zurückführen, und der Neubau meiner persönlichen Website wurde eine weitere dieser unerwarteten Reisen.

    Weiterlesen →
  • Angular AI in echten Projekten sinnvoll einsetzen

    Angular AI in echten Projekten sinnvoll einsetzen

    Zusammenfassung KI-Tools sind gut im Generieren von Code, aber echte Angular-Projekte gelingen nur, wenn man ihnen reichen Projektkontext, Architekturgrenzen und Konventionen mitgibt.

    KI kann eine Komponente erzeugen, einen Test schreiben oder einen Compilerfehler erklären. In realen Anwendungen hängen die Ergebnisse jedoch deutlich stärker vom Projektkontext als von den Fähigkeiten des Modells ab. Sie kennt weder eure Architektur noch eure Konventionen oder die Grenzen, die über Jahre entstanden sind.

    Weiterlesen →
  • Jede Kamera erzählt eine Geschichte

    Jede Kamera erzählt eine Geschichte

    Zusammenfassung Eine persönliche Reflexion darüber, wie Kameras unsere Fotografie, Kreativität und die Geschichten formen, die wir durch Bilder erzählen.

    Ab und zu ertappe ich mich dabei, wie ich mir neue Kameras ansehe. Ich öffne einen weiteren Testbericht, vergleiche ein weiteres Datenblatt oder sehe mir an, wie ein Fotograf erklärt, warum die diesjährige Kamera besser ist als die letztjährige. Es beginnt immer mit einer einfachen Neugier, und bevor ich es merke, sind Stunden vergangen. Irgendwo zwischen Vergleichsvideos, Fotografie-Foren und Gebrauchtanzeigen ertappe ich mich dabei, wie ich mir vorstelle, eine andere Kamera zu besitzen.

    Weiterlesen →
  • Neun Jahre auf GitHub Pages, warum ich endlich zu Cloudflare gewechselt bin

    Neun Jahre auf GitHub Pages, warum ich endlich zu Cloudflare gewechselt bin

    Zusammenfassung Warum ich diese Website nach fast zehn Jahren von GitHub Pages zu Cloudflare migriert habe, inklusive Migrationsprozess, Herausforderungen und entdeckter Kompromisse.

    Fast neun Jahre lang war meine Website auf GitHub Pages zu Hause. Kostenlos, zuverlässig, nahezu wartungsfrei. Warum also der Umzug? Der Wechsel zu Cloudflare Pages warf einige Fragen auf. Dieser Beitrag zeigt, was mich zu diesem Schritt bewogen hat, wie die Migration ablief, welche Probleme dabei auftraten und welche Erkenntnisse ich daraus gewonnen habe.

    Weiterlesen →
  • Lokale KI auf einem MacBook Pro mit 16 GB RAM: Was wirklich funktioniert

    Zusammenfassung Praktischer Leitfaden zum Ausführen lokaler KI-Coding-Assistenten auf einem 16 GB M1 MacBook Pro, was gut funktioniert, was nicht und die echten Kompromisse beim Setup.

    Lokale KI-Coding-Assistenten klingen verlockend: keine API-Kosten, Code bleibt auf der eigenen Maschine, und das Ganze kostenlos. Aber ein Setup, das auf einem 16-GB-MacBook-Pro-M1 wirklich gut läuft, erfordert mehr Trial and Error, als die meisten Guides zugeben.

    Weiterlesen →
  • Essentielle Entwicklungswerkzeuge: Mein Brewfile Setup

    Zusammenfassung Meine kuratierte Liste essenzieller macOS-Entwicklungswerkzeuge via Homebrew, die die tägliche Produktivität und Workflow-Freude deutlich steigern.

    Der Werkzeugkasten prägt, wie wir als Softwareentwickler arbeiten und was wir erreichen können. Im Laufe der Zeit habe ich mir eine Sammlung essenzieller Tools aufgebaut, die meine Produktivität steigern und die Entwicklung angenehmer machen. Hier ist mein Homebrew-Setup mit den Werkzeugen, die ich täglich nutze.

    Weiterlesen →
  • Portfolio, ein leichter persönlicher Portfolio-Tracker

    Zusammenfassung Dieser Beitrag erklärt Design und Implementierung eines einfachen browserbasierten Portfolio-Trackers mit React, TypeScript und Vite inklusive Anforderungen, Herausforderungen und Lösungen für State-Handling, Caching und Charts.

    Dieser Beitrag beschreibt Design und Implementierung eines browser-first Portfolio-Trackers. Im Fokus: Anforderungen, die Herausforderungen während der Entwicklung und wie die finale Lösung diese adressiert, mit Code-Snippets zu Zustandsverwaltung, Caching und Diagramminteraktion.

    Weiterlesen →
  • Git-Befehle meistern: Ein praktischer Leitfaden

    Zusammenfassung Eine praxisnahe Auswahl essenzieller Git-Befehle, die Entwicklern helfen, Änderungen effektiver zu verfolgen, reibungslos zusammenzuarbeiten und die Projekthistorie sicher zu verwalten.

    Git ist unverzichtbar für die Versionskontrolle: Änderungen nachverfolgen, effektiv zusammenarbeiten, Projektverwaltung. Die schiere Bandbreite an Funktionen kann überwältigen, aber wer die Schlüsselbefehle versteht, vereinfacht seinen Workflow enorm. Dieser Artikel stellt eine Auswahl praktischer Git-Befehle vor und erklärt, was sie tun, wie man sie einsetzt und wann sie am effektivsten sind.

    Weiterlesen →
  • Angular - Content Projection

    Zusammenfassung Content Projection in Angular ermöglicht flexible und wiederverwendbare Komponenten, indem Inhalte aus Elternkomponenten in Kindkomponenten eingefügt werden können.

    Content Projection erlaubt in Angular, eine Komponente in eine andere einzufügen. Das verändert, wie Angular-Entwickler ihre Anwendungen und Bibliotheken gestalten: hin zu flexiblen, wiederverwendbaren Komponenten, eine Grenze, die ich erneut betrachte, wenn ich Angular AI in echten Projekten zum Laufen bringe.

    Weiterlesen →
  • Reactjs: Arrays in jsx

    Zusammenfassung Kurzer Tipp zur Verwendung von JavaScript array.map zum Rendern dynamischer Elementlisten in JSX statt hartcodierten Wiederholungen, für saubereren und wartbareren React-Code, wie im Tic-Tac-Toe-Beispiel gezeigt.

    Als ich vor einigen Monaten das Reactjs Tutorial ausprobiert habe, ist mir aufgefallen, dass im offiziellen Startercode dieselben div-Elemente in der Methode render() wiederholt werden. Falls sich am Quellcode etwas ändert, liste ich ihn hier auf:

    Weiterlesen →
  • Fetch mit Gitlab API

    Zusammenfassung Python-Skript, das die GitLab-API mit einem Private Token nutzt, um automatisch alle zugänglichen Repositories zu klonen oder zu fetchen, mit JSON-Konfiguration und sowohl argparse- als auch Config-File-Variante.

    Ich verwende gitlab und habe viele Repositories, die ich täglich oder sogar mehr als einmal pro Tag verfolgen muss. Es war erstens sehr ermüdend, alle diese Repositories zu klonen, wenn ich meinen Arbeitsrechner wechsle, und zweitens, all diese Repositories aktuell zu halten. Aus diesem Grund begann ich, ein Automatisierungsskript zu schreiben, um die langweiligen Aufgaben von meinen Schultern zu nehmen.

    Weiterlesen →
  • PyConDe & PyData 2019

    Zusammenfassung Persönlicher Tagebuchstil-Rückblick auf den Besuch von PyConDE und PyData 2019 in Berlin mit Keynotes, Talks, Tutorials, Sprint-Tagen und persönlichen Highlights wie Treffen mit Core-Developern und Beitrag zu Bokeh.

    Ich bin gerade von PyConDe & PyData-2019 zurückgekommen und möchte meine Erfahrungen dort festhalten. Das hier ist eher ein Tagebuch als ein Blog, in dem ich über folgendes berichte:

    Weiterlesen →
  • RxJS Serie - Observables

    Zusammenfassung Einführung in RxJS Observables, die Kernkonzepte von Observer und Subscriber sowie wie man sie von Grund auf oder mit hilfreichen statischen Methoden wie of, range, interval, timer, from, fromEvent und create erstellt, mit praxisnahen Code-Beispielen.

    RxJS (auf Github) ist eine Bibliothek für reaktive Programmierung in Javascript, und in dieser Serie möchte ich meinen Weg des Lernens mit euch teilen.

    Weiterlesen →
  • Benutzerdefinierte Selenium Webdrivers mit Decorators

    Zusammenfassung Lerne, wie du dynamisch eigene Selenium WebDriver-Klassen für verschiedene Browserversionen mit Python-Decoratoren und Klassen-Factories erstellst, um Tests mit mehreren Firefox- und Chrome-Binaries parallel auszuführen.

    Wie erstellt man dynamisch benutzerdefinierte Selenium WebDriver-Klassen mit einem parametrisierten Browser-Binary-Pfad?

    Weiterlesen →
  • Fedora23 Upgrade (unbenanntes Home)

    Zusammenfassung Schnelle Lösung für das SELinux-Labeling-Problem nach Upgrade auf Fedora 23 oder 24, bei dem das Home-Verzeichnis unlabeled wird und der Login verhindert, einfach sudo restorecon -R /home ausführen.

    Als ich versucht habe, von fedora23 auf fedora24 zu aktualisieren, hatte ich das Problem, dass das home-Verzeichnis seine Beschriftung verloren hat:

    Weiterlesen →
  • Vim aus den Quellcode kompilieren

    Zusammenfassung Schritt-für-Schritt-Anleitung und Bash-Skript zum Bauen der neuesten Vim-Version aus dem Quellcode auf Fedora mit aktivierten Huge-Features inklusive Python3-, Ruby-, Lua-, Perl-Unterstützung und GUI für volle Funktionalität.

    Viele Male, wenn ich vim verwenden möchte, das im Haupt-Repo jeder Linux-Distribution enthalten ist, stelle ich fest, dass ihm eine Art Unterstützung fehlt, sei es Python oder Client-Server-Modus oder eine andere Funktion. Deshalb muss ich es manuell aus den Quellen kompilieren und installieren. Das resultierende Setup habe ich später Stück für Stück in meinem Vimrc-Abenteuer dokumentiert.

    Weiterlesen →
  • Einrichtung des Lwa4p Roboterarms

    Zusammenfassung Schritt-für-Schritt-Anleitung mit Bash-Skript zur Einrichtung des Schunk LWA4P-Roboterarms auf ROS Indigo mit ESD-CAN-Karte inklusive CAN-Interface-Konfiguration, MoveIt-Integration und Troubleshooting-Tipps zum Initialisieren und Bewegen des Arms.

    Während meiner Experimente mit dem Powerball Lightweight lwa4p Roboterarm von Schunk hatte ich viele Schwierigkeiten, ihn mit moveit in Bewegung zu setzen. In diesem Beitrag teile ich diese Erfahrung.

    Weiterlesen →
  • Abenteuer durch meine vimrc (nvimrc)

    Zusammenfassung Detaillierter Rundgang durch nützliche Konfigurationen, Mappings und Anpassungen in der vimrc/init.vim des Autors, von allgemeinen Einstellungen über Plugins und Statuszeile bis zu produktivitätssteigernden Tricks für Vim und Neovim.

    In diesem Beitrag werde ich Sie auf ein Abenteuer in meiner früheren vimrc und derzeitigen init.vim mitnehmen, die ich über die letzten Jahre durch die Nutzung von vim dann neovim gesammelt habe. Ich werde die Funktion oder den Feature erklären und dann die Konfigurationen oder den Code angeben, der in die Datei vimrc (init.vim) eingefügt werden sollte, um dieses Feature zu aktivieren.

    Weiterlesen →
  • OpenCV auf OpenShift

    Zusammenfassung Dieser Beitrag liefert ein Bash-Skript und schrittweise Anleitungen zur erfolgreichen Installation von OpenCV in einem Python-2.7-Cartridge auf OpenShift Online unter Umgehung der strengen 1-GB-Quota-Beschränkung.

    Als ich OpenCV auf meinem Python-2.7 OpenShift Online Cartridge installieren wollte, stieß ich auf das Problem der Kontingentbegrenzung auf 1 GB.

    Weiterlesen →