Auto-Git is a cross-platform Electron app that automatically monitors, manages Git repos, and provides commit and documentation support using LLMs.
Monitoring & Automatic Commit
Add any folder as Git repositories: Auto-Git takes care of the initial Git setup if needed.
Real-time file watching (Chokidar): As soon as files change, modifications are detected in a debounce interval and automatically committed to Git.
Intelligent commit messages: Once a defined line or time threshold is reached, Auto-Git collects all new commits, creates a prompt-optimized input from their diffs for an Ollama-LLM (qwen2.5-Coder), and replaces the standard commit messages with semantically concise summaries.
README Generation & Repository Description
At the push of a button or when initially added: Auto-Git extracts relevant code files (by size, relevance score, .gitignore rules) and feeds them into an LLM prompt to automatically create or update a complete, well-structured README.md.
LLM-supported short description (≤ 255 characters): For each folder, Auto-Git can generate a one-liner project description text in fractions of a second using the same Ollama backend.
Robust Folder Management
Missing or moved folders are automatically detected (“Needs Relocation”), and by clicking the sidebar icon, you can assign the new path and restore the original Git state (checked via commit hash).
Simple drag-and-drop support: Drag folders directly into the app, immediately initialize a Git repo, and set it to monitoring.
.gitignore management: Typical temporary/IDE/build files are automatically detected (Micromatch + predefined patterns) and added to .gitignore if necessary.
Gitea Integration & Push Workflow
A personal Gitea API token can be stored in the settings.
When clicking “Push to Gitea,” Auto-Git checks if the remote repo already exists:
Not present → Create repository (with LLM-generated short description).
Present → Update current description via PATCH.
Then, the local remote origin is reconfigured, and the current branch, including tags, is pushed automatically.
Desktop UI & Usability
Electron & TailwindCSS: Responsive interface with sidebar (filtered list of all monitored folders), central content area (displays all commits paginated, including diff view, snapshot export, and “Jump Here” checkout).
Sky Mode: Automatic time-dependent background (soft blue during the day, dark blue at night).
Tray Menu & Tray Icon: App minimized to tray, right-clicking the tray icon allows quick starting/stopping of monitoring per folder, adding/removing folders, “Quit”.
Settings Dialog:
Sky theme on/off
“Close to Tray”: Hides window when closing instead of actually quitting the app
Automatic startup behavior
Intelligent commit thresholds (lines and minutes)
Selection of the used Ollama models (commit vs. README)
Store Gitea API token
Gamification & Live Statistics: Daily counter for commits, color-increasing visualization (“Commits today”), live countdown to the next automatic LLM commit.
Technology Stack
Frontend: Electron + HTML/CSS + TailwindCSS + a custom minimal-animated “Anime Cat” (client-side cat streaming for LLM responses).
Backend/Node:
chokidar for file watching
simple-git for all Git operations (Init, Status, Commit, Diff, Rebase, Push, Remote Config)
micromatch & ignore for filtering files/folders
electron-store for persistence of all settings (including Gitea token, sky mode, thresholds, model selection)
Custom LLM integration: Start/Stop of Ollama server, parallel stream handling via fetch(…).getReader().
Tray/Menu integration with native Electron menus and context menus in sidebar/treeview.
All features – from continuous, automatic commit creation to fully automated push-and-repo setup on Gitea – are designed to make developers’ daily lives easier: You can continue to focus on code while Auto-Git ensures that commit history, documentation, and remote repositories are always up to date.
The “Virtual Interdimensional Ghost Teleportation Device” is an interactive 3D web application that brings figures from Japanese mythology to life in the browser. Through a digital “Merkaba,” the beings are teleported into a virtual world, can be viewed, and explored via a click in an info box overlay. A portfolio project aimed at learning about Japanese myths in German and building cultural bridges.
Frontend: Three.js Backend: Node.js, Express, Websocket 3D Models: Hunyuan3D-2, edited in Blender Info Texts: ChatGPT
The entire 3D environment including models and textures, such as a 1200px x 900px canopy texture and an HDRI environment map, as well as all the code, is smaller than 500 kilobytes. The 3D models are loaded dynamically; the client has no information about them until the server “pushes” them. The communication with the server as well as the spawn function are integrated into the spinner (Merkaba). Mobile representation is less computationally intensive than the desktop version. An adaptive fidelity system has also been implemented.
Interface for UNESCOs Lists of "Intangible Cultural Heritage"
The UNESCO project “Intangible Cultural Heritage” (ICH) offers an impressive collection of intangible cultural heritage as well as a register of best protection measures. These can be found on the UNESCO website in English, French, and Spanish, beautifully describing the individual cultural peculiarities of the nations of the world.
As a friend of online ethnology, I have set up a new interface in the form of an interactive world map (JavaScript, OpenStreetMap & GeoJSON). By clicking on a country, you gain insight into the culture of that country as registered by UNESCO (UNESCO Open Access Database). Using the ChatGPT API and Python, I translated the entire database into the 10 most spoken languages in the world. Additionally, I improved/enlarged all images from the database with Topaz AI.
By clicking on the cube, a random entry is displayed. Discover the world!
Note: Not suitable for mobile view
Sources:
UNESCO Open Access Database: Metadata, descriptions, and images from the UNESCO ICH database were used for this project.
OpenStreetMap: The map representation is based on tiles from OpenStreetMap.
GeoJSON World Map: The vector data for the country outlines comes from the open-source GeoJSON project.
IPAPI (ipapi.co): Automatic location determination is done via the API service ipapi.co.
Topaz AI: The images from the UNESCO database were upscaled using Topaz AI.
ChatGPT (OpenAI): The translations of the UNESCO data into 10 languages were created using ChatGPT.
This project is an experimental, non-commercial portfolio project and is for demonstration purposes only. All content (images, texts, titles) is the property of UNESCO. The translations were created using AI (ChatGPT). The map tiles come from OpenStreetMap. There is no connection to UNESCO, OpenStreetMap, or other organizations. The complete UNESCO metadata is available for download in English.
AI-Translate
WordPress plugin to automatically translate pages, posts, and custom type posts as well as their titles and custom fields. The translations are stored in the metadata of the posts. Depending on the selected language, the frontend displays the language under the same URL / post ID. In the Gutenberg editor, there is a small dropdown menu that allows you to switch between languages to make individual changes, and in the backend, unlike with Polylang, there is no confusing duplication of content. The translation is done via ChatGPT, which allows for context-specific translation – by specifying what the tone should be, e.g., polite or informal, and what the focus should be, such as project presentation, marketing, etc., better translations can be obtained.
The code for selecting and processing content is available in a git repository.
Jōyō-Kanji
The 2136 Kanji that are learned in elementary and middle school in Japan, which enable one to read most Japanese texts, along with their translations in German.
The meaning of a word often varies depending on the context. Many terms only arise when multiple Kanji are combined – that’s why the term “you” is not found here, for example. It is composed of 貴 (valuable, noble, precious) and 方 (person).
The question of how to comprehensively categorize a language has proven to be very interesting. The categorization by “school year” is a time-honored Japanese method – but the desire for finer granularity was present to make learning easier.
The Kanji list as a JSON file, the Python codes to create them, as well as the chosen categories can be found below in the git repository.
Colorful, abstract textures created through deliberately induced errors in digital image representation.
In 10/2015, I joined the Facebook group of the Glitch Artist Collective as well as their subgroup Glitch//Request, where photos of people (mostly selfies) are altered by glitch artists. The lively exchange here inspired me to create glitch art myself. Since then, I have been programming and implementing fragment shaders and controllers in Processing for the artificial generation of image errors (glitches). I use these to create entirely new abstract images (not for image editing). Original images serve as data sources. The results of this over-alteration have their own character.
The software unit “Manglr”, a creation of my own with which I generate the images, functions like a compositor for 2D shaders. (Link to workspace). By drag & drop, I insert an image or video file and then determine which shaders with which parameters should alter this image. This selection can also be made automatically/randomly. The parameters of the shaders can also change slowly over time. The shaders are then animated. I observe this autopilot mode or manually edit the controllers until I like a composition. Then I save images. The resolution is variable. I set the longer side to a maximum of 20,000 pixels, which corresponds to about 1.70m at 300 DPI print sharpness. Depending on the shader, this may take a bit more computing time. Smaller images (up to 20 centimeters) can be generated in real-time (24 frames per second or more). For some of the images, pixel aesthetics are good, allowing for the scaling of low-resolution images to large sizes. A selection process follows, in which I feel into all saved images once again and separate the wheat from the chaff.
Lightframes
Calming images that glow outward and want to be stroked.
The frame is made of satin acrylic glass with a thickness of 5mm. Below it is an LED strip with warm white light, controlled by an Arduino, programmed to make the lights appear fluid. The colors are randomly chosen from a handpicked set from transition to transition, so that the animation never repeats. The centerpiece is made of layered wood with aluminum foil in the middle, which detects changes in its magnetic field. This alters the brightness of the object.
Image Restoration
If there are old images that have lost quality over time, they can be restored or improved using modern technologies with minimal effort. Scratches, folds, or dirt are largely corrected manually, and missing image information can be regenerated with artificial intelligence. It is also possible to increase the resolution, colorize, or expand the image crop. Please contact me if needed.
Bloominas
Aesthetic similarities between the vulva and the flower have emerged from nature. It is a complex mathematical formula that allowed me to describe and fuse the visual similarities of these two subjects. Image generation with artificial intelligence, such as Stable Diffusion, is known for such fusions. The contrast between the logic, but also the urgency of my tool, the ambivalence of the possibilities it offers, and the beauty of the subject intrigued me. Additionally, the mystification of the female genitalia is meant to protect its intimacy and honor it.
The 50 images shown here represent a completed series. They were created between December 2023 and February 2024.
Mars is stupid
“Mars is stupid” – A reading on Mars of Skip Mantleton’s “Mars is stupid” (1974), read by the speech robot Brian. He reads the paragraphs of the book in random order, resulting in 5,443449391×10⁹² different scenarios, each with a reading time of about 13 minutes.
Privacy Policy
A cookie has been stored. Its name is "lang", it is 6 bytes in size, lasts three days, and is technically necessary because it can remember which language you prefer. Do not harm it!