Auto-Git ist eine plattformübergreifende Electron-App, die Git-Repos automatisch überwacht und verwaltet und mithilfe von LLMs Commit Messages und Dokumentationen / READMEs schreibt.
Überwachung & automatisches Commit
– Beliebige Ordner als Git-Repositories hinzufügen: Auto-Git übernimmt bei Bedarf das Initial-Git-Setup.
– Echtzeit-File-Watching (Chokidar): Sobald sich Dateien ändern, werden Änderungen in einem Debounce-Intervall erkannt und automatisch in Git committet.
– Intelligente Commit-Nachrichten: Sobald eine definierte Zeilen- oder Zeit-Schwelle erreicht ist, sammelt Auto-Git alle neuen Commits, erstellt aus ihren Diffs ein promptoptimiertes Input für einen Ollama-LLM (qwen2.5-Coder) und ersetzt die Standard-Commit-Nachrichten durch semantisch prägnante Zusammenfassungen.
README-Generierung & Repositoriumsbeschreibung
– Auf Knopfdruck oder bei initialem Hinzufügen: Auto-Git extrahiert relevante Code-Dateien (nach Größe, Relevanzscore, .gitignore-Regeln) und füttert sie in einen LLM-Prompt, um automatisch ein vollständiges, gut strukturiertes README.md zu erstellen bzw. zu aktualisieren.
– LLM-gestützte Kurz-Beschreibung (≤ 255 Zeichen): Für jeden Ordner kann Auto-Git mit Hilfe des selben Ollama-Backends in Sekundenbruchteilen einen einzeiligen Projektdescription-Text erzeugen.
Robuste Ordnerverwaltung
– Fehlende bzw. verschobene Ordner werden automatisch erkannt („Needs Relocation“), per Klick auf das Sidebar-Icon kann man den neuen Pfad zuweisen und den ursprünglichen Git-State wiederherstellen (Prüfung via Commit-Hash).
– Einfache Drag-&-Drop-Unterstützung: Ordner via Drag direkt in die App ziehen, sofort ein Git-Repo initialisieren und in Überwachung setzen.
– .gitignore-Management: Typische temporäre/Ide-/Build-Dateien werden automatisch erkannt (Micromatch + vordefinierte Patterns) und bei Bedarf in .gitignore eingetragen.
Gitea-Integration & Push-Workflow
– In den Einstellungen lässt sich ein persönlicher Gitea-API-Token hinterlegen.
– Beim Klick auf „Push to Gitea“ prüft Auto-Git, ob das Remote-Repo schon existiert:
Nicht vorhanden → Repository erstellen (mit LLM-Generierter Kurzbeschreibung).
Vorhanden → Aktuelle Beschreibung per PATCH aktualisieren.
– Anschließend wird das lokale Remote-Origin neu konfiguriert und der aktuelle Branch inklusive Tags automatisiert gepusht.
Desktop-UI & Bedienkomfort
– Electron & TailwindCSS: Responsive Oberfläche mit Sidebar (gefilterte Liste aller überwachten Ordner), zentraler Inhaltsbereich (paginiert alle Commits anzeigen, inklusive Diff-View, Snapshot-Export und „Jump Here“-Checkout).
– Sky-Mode: Automatischer Tageszeit-abhängiger Hintergrund (sanftes Blau bei Tag, dunkles Blau bei Nacht).
– Tray-Menü & Tray-Icon: App minimiert auf Tray, Rechte-Maustaste auf Tray-Icon ermöglicht schnelles Starten/Stoppen des Monitorings pro Ordner, Ordner hinzufügen/entfernen, „Quit“.
– Settings-Dialog:
> Sky-Theme ein/aus
> „Close to Tray“: Versteckt Fenster beim Schließen, statt App wirklich zu beenden
> Automatisches Autostart-Verhalten
> Intelligente Commit-Thresholds (Zeilen und Minuten)
> Auswahl der verwendeten Ollama-Modelle (commit vs. README)
> Gitea-API-Token hinterlegen
– Gamification & Live-Statistik: Tageszähler für Commits, farblich ansteigende Visualisierung („Commits today“), Live-Countdown bis zum nächsten automatischen LLM-Commit.
Technologie-Stack
– Frontend: Electron + HTML/CSS + TailwindCSS + ein eigenes minimal-animiertes „Anime Cat“ (Klient-seitiges Cat-Streaming bei LLM-Antworten).
– Backend/Node:
> chokidar für File-Watching
> simple-git für alle Git-Operationen (Init, Status, Commit, Diff, Rebase, Push, Remote-Config)
> micromatch & ignore zum Filtern von Dateien/Ordnern
> electron-store für Persistenz aller Einstellungen (inklusive Gitea-Token, Skymode, Thresholds, modell-Auswahl)
> Eigene LLM-Integration: Start/Stop von Ollama-Server, paralleles Stream-Handling über fetch(…).getReader().
> Tray/Menu-Integration mit nativen Electron-Menüs und Kontext-Menüs in Sidebar/Treeview.
Alle Funktionen – von der kontinuierlichen, automatischen Commit-Erstellung bis hin zur vollautomatischen Push-und-Repo-Einrichtung auf Gitea – sind darauf ausgelegt, Entwicklern den Alltag zu erleichtern: Man fokussiert sich weiter auf Code, während Auto-Git im Hintergrund dafür sorgt, dass Commit-History, Dokumentation und Remote-Repositories stets auf dem neuesten Stand bleiben.
Das „Virtuelle Interdimensionale Geisterteleportationsgerät“ ist eine interaktive 3D-Webanwendung, die Figuren der japanischen Mythologie im Browser erscheinen lässt. Über eine digitale „Merkaba“ werden die Wesen in eine virtuelle Welt teleportiert, können betrachtet und per Klick in einem Infobox-Overlay erforscht werden. Ein Portfolioprojekt, dessen Ziel ist es, über japanische Mythen auf deutsch lernen zu können und kulturelle Brücken zu schlagen.
Die 3D-Umgebung inklusive Models und Texturen, darunter eine 1200px x 900px Baumkronentextur und eine HDRI-Environment-Map, so wie der der Code sind insgesamt kleiner als 500 KiloByte. Die 3D Modelle werden dynamisch geladen, der Client hat von ihnen keine Information bis der Server sie “pusht”. Die Kommunikation zum Server so wie die Funktion zum spawnen sind in den Spinner (Merkaba) integriert. Mobile Darstellung ist weniger rechenintensiv als die Desktop-Version. Ein Adaptive-Fidelity-System wurde eingesetzt.
Interface für UNESCOs Listen des "Immateriellen Kulturerbes"
Das UNESCO-Projekt “Intangible Cultural Heritage” (ICH) bietet eine beeindruckende Sammlung immateriellen Kulturerbes sowie ein Register bewährter Schutzmaßnahmen. Diese sind auf der Website von UNESCO auf Englisch, Französisch und Spanisch zu finden, und beschreiben schön die individuellen, kulturellen Eigenheiten der Nationen der Welt.
Als Freund der Online-Ethnologie habe ich hierfür ein neues Interface in Form einer interaktiven Weltkarte (JavaScript, OpenStreetMap & GeoJSON) aufgesetzt. Klickt man ein Land an erhält man Einsicht in die Kultur des Landes, wie die UNESCO sie registriert hat (UNESCO Open-Access-Datenbank). Unter Einsatz der ChatGPT-API und Python habe ich die gesamte Datenbank in die 10 häufigst gesprochenen Sprachen der Welt übersetzt. Ausserdem habe ich mit Topaz AI alle Bilder aus der Datenbank verbessert / vergrößert.
Klickt man auf den Würfel, so bekommt man einen zufälligen Beitrag angezeigt. Entdecke die Welt!
Hinweis: Nicht für die mobile Ansicht geeignet
Quellen:
UNESCO Open-Access-Datenbank: Metadaten, Beschreibungen und Bilder aus der UNESCO ICH-Datenbank wurden für dieses Projekt verwendet.
OpenStreetMap: Die Kartendarstellung basiert auf Kacheln von OpenStreetMap.
GeoJSON-Weltkarte: Die Vektordaten für die Länderkonturen stammen aus dem Open-Source-GeoJSON-Projekt.
IPAPI (ipapi.co): Die automatische Standortbestimmung erfolgt über den API-Dienst ipapi.co.
Topaz AI: Die Bilder aus der UNESCO-Datenbank wurden mit Topaz AI hochskaliert.
ChatGPT (OpenAI): Die Übersetzungen der UNESCO-Daten in 10 Sprachen wurden mit ChatGPT erstellt.
Dieses Projekt ist ein experimentelles, nicht-kommerzielles Portfolio-Projekt und dient ausschließlich Demonstrationszwecken. Alle Inhalte (Bilder, Texte, Titel) sind Eigentum der UNESCO. Die Übersetzungen wurden mithilfe von KI (ChatGPT) erstellt. Die Kartenkacheln stammen von OpenStreetMap. Es besteht keinerlei Verbindung zur UNESCO, OpenStreetMap oder anderen Organisationen. Die vollständigen UNESCO-Metadaten sind auf Englisch als Download verfügbar.
AI-Translate
WordPress-Plugin um Seiten, Beiträge und Custom Type Posts sowie deren Titel und Custom Fields automatisch zu übersetzen. Die Übersetzungen werden in die Metadaten der Beiträge gespeichert. Je nach ausgewählter Sprache bekommt das Frontend die Sprache also unter der selben URL / Beitrags-ID angezeigt. Im Gutenbergeditor hat man ein kleines Dropdownmenü, mit dem man zwischen den Sprachen umschalten kann, um individuelle Änderungen vorzunehmen, und im Backend hat man, anders als z.B. bei Polylang, keine unübersichtliche Vervielfältigung des Contents. Die Übersetzung erfolgt per ChatGPT, wodurch kontextspezifische Übersetzung möglich ist – mit Angabe wie der Tonfall sein soll, z.B. höflich oder informell, und worauf Fokus gelegt werden soll, zum Beispiel Projektpräsentation, Marketing, oder, oder.. – bekommt man bessere Übersetzungen.
In einer git-Repository steht der Code für das Auswählen und Verarbeiten von Content zur Verfügung.
Jōyō-Kanji
Die 2136 Kanji, die man in Japan in Grund- und Mittelschule lernt, und die es einem ermöglichen, die meisten japanischen Texte lesen zu können, und ihre Übersetzungen auf Deutsch.
Häufig variiert die Bedeutung eines Wortes je nach Kontext. Viele Begriffe ergeben sich außerdem erst, wenn man mehrere Kanji zusammenfügt – deshalb findet sich hier zum Beispiel der Begriff “du” nicht. Der setzt sich nämlich zusammen aus 貴 (wertvoll, edel, kostbar) und 方 (Person).
Die Frage danach wie man eine Sprache umfassend kategorisiert hat sich als sehr interessant herausgestellt. Die Kategorisierung nach “Schuljahr” ist japanisch altbewährt – aber der Wunsch nach einer feineren Granularität war gegeben, damit das Lernen leichter fällt.
Die Kanjiliste als JSON-Datei, die Python-Codes um diese zu erstellen, sowie die gewählten Kategorien finden sich unterhalb im git-repository.
Update: Hier lässt sich eine PDF mit den 1026 Jōyō-Kanji, die man in der Grundschule erlernt, bebildert, mit Beispielworten, Strich-Reihenfolge, Pinsel-Variante und Druckvariante finden. Die Bilder und Beispielworte stammen von „ちびむすドリル“ (Chibimusu Drill), eine von der Firma PadinHouse betriebene japanische Website, die kostenlose, zum Ausdrucken gedachte Lern- und Fördermaterialien für Kleinkinder, Grundschüler und Mittelstufenschüler anbietet, die Übersetzungen sind von mir.
Farbenfrohe, abstrake Texturen, erzeugt durch absichtlich herbeigeführte Fehler in digitaler Bilddarstellung.
10/2015 trat ich der Facebookgruppe des Glitch Artist Collective bei, so wie deren Untergruppe Glitch//Request, wo Photos von Personen (meistens Selfies) von Glitchkünstlern verfremdet werden. Der rege Austausch hier gab mir den Anstoß selbst Glitch Art zu machen. Seitdem programmiere und implementiere ich Fragmentshader und Controller in Processing zur künstlichen Erzeugung von Bildfehlern (Glitches). Diese nutze ich um völlig neue abstrakte Bilder zu erschaffen (nicht zur Bildbearbeitung). Ursprungsbilder dienen als Datenquelle. Ergebnisse dieser Überverfremdung haben eigenen Charakter.
Die Softwareeinheit “Manglr”, eine Eigenkreation mit welcher ich die Bilder erzeuge, funktioniert wie ein Compositor für 2D-Shader. (Link zur Arbeitsablage). Per Drag & Drop schiebe ich eine Bild- oder Videodatei hinein und bestimme anschließend welche Shader mit welchen Parametern dieses Bild verändern sollen. Diese Auswahl kann auch automatisch / zufällig getroffen werden. Ebenfalls können die Parameter der Shader sich über Zeit langsam verändern. Die Shader sind dann animiert. Ich beobachte diesen Autopilot-Modus oder bearbeite die Controller manuell, bis mir eine Komposition gefällt. Dann speichere ich Bilder. Die Auflösung ist hierbei variabel. Maximal stelle ich die größere Seitenlänge auf 20.000 Pixel, was bei 300 DPI Druckschärfe ca 1,70m entspricht. Je nach Shader nimmt das dann etwas mehr Rechenzeit in Anspruch. Kleinere Bilder (bis 20centimer) können in Echtzeit animiert generiert werden (24 Bilder pro Sekunde oder mehr). Bei einigen der Bilder ist Pixelästhetik gut, was die Skalierung von Bildern mit geringer Auflösung auf große Größe erlaubt. Es folgt ein Selektierungsprozess, in welchem ich noch einmal in alle gespeicherten Bilder hineinfühle, und die Spreu vom Weizen trenne.
Lichtbild
Beruhigend wirkende, nach außen hin leuchtende Bilder, die gestreichelt werden wollen.
Der Rahmen besteht aus satiniertem Akrylglass mit 5mm Stärke. Hierunter befindet sich ein LED-Streifen mit warmweißem Licht, gesteuert von einem Arduino, der so programmiert ist, dass die Lichter fluide wirken. Die Farben werden von Übergang zu Übergang zufällig aus einem handverlesenen Satz gewählt, so, dass sich die Animation nie wiederholt. Das Mittelteil ist aus geschichtetem Holz gemacht mit einer Alufolie in der Mitte, welche Veränderungen in ihrem Magnetfeld erkennt. Dies verändert die Helligkeit des Objektes.
Bildrestaurierung
Sollte es alte Bilder geben, die mit der Zeit an Qualität verloren haben, so kann man diese mit modernen Technologien und geringem Aufwand wiederherstellen oder verbessern. Kratzer, Falten oder Verschmutzungen werden weitgehend manuell korrigiert, fehlende Bildinformationen können mit künstlicher Intelligenz regeneriert werden. Auch das Erhöhen der Auflösung, das Kolorieren oder das Erweitern des Bildausschnittes ist möglich. Bitte kontaktieren Sie mich bei Bedarf.
Bluminas
Ästhetische Gemeinsamkeiten der Vulva und der Blume sind der Natur entsprungen. Es ist eine komplexe mathematische Formel, welche mich die bildlichen Gemeinsamkeiten dieser beiden Sujets beschreiben und fusionieren ließ. Bildgenerierung mit künstlicher Intelligenz, wie z.B. Stable Diffusion, ist für solche Verschmelzungen bekannt. Der Kontrast zwischen der Logik, aber auch der Brisanz meines Werkzeuges, der Ambiavalenz der Möglichkeiten die es bietet, und der Schönheit des Themas interessierte mich. Auch soll die Mystifikation des weiblichen Geschlechtsorganes dessen Intimität schützen und es ehren.
Die 50 hier gezeigten Bilder stellen eine abgeschlossene Serie dar. Sie sind zwischen Dezember 2023 und Februar 2024 entstanden.
Mars is stupid
“Mars ist doof” – Eine Lektüre auf dem Mars von Skip Mantletons “Mars is stupid” (1974), vorgelesen vom Sprachroboter Brian. Er liest die Paragraphen des Buches in zufälliger Reihenfolge vor, wodurch sich 5,443449391×10⁹² verschiedene Szenarien ergeben, jede mit einer Lesezeit von circa 13 Minuten.
Datenschutzerklärung
Ein Keks wurde gespeichert. Sein Name ist "lang", er ist 6 Byte groß, drei Tage haltbar und technisch notwendig, da er sich merken kann, welche Sprache Sie wünschen. Tun Sie ihm nichts!