Softwareentwickler · Systeme & Self-Hosting
Joshua 祐华 Hirsig
Softwareentwickler in der Schweiz. Ich arbeite über den ganzen Stack — Services in TypeScript und Go, etwas Rust — und betreibe die Linux-Server, auf denen das Ergebnis läuft. Fast alles, was von dieser Seite weggeht, liegt auf einer einzigen eigenen Maschine.
14
Dienste selbst gehostet
docker · traefik
23
Projekte umgesetzt
dev · work · client
2017
unterwegs seit
ch
Live-Status
online
Eigene Projekte
Dinge, die ich für mich selbst baue. Quellcode offen, wo es welchen gibt.
Koch- & Backbuch
2026Live
Eine Codebasis für zwei Aufgaben: Rezeptverwaltung für die Bäckerei mit Bäckerprozent, Chargen und Kostenrechnung — und ein privates Kochbuch mit Mengen-Slider, Kochmodus und Sprachsteuerung. Als PWA offline installierbar.
roadbook
2026In Entwicklung
Offline-fähige PWA für eine Autoreise: Etappenplanung, Reisetagebuch, Budget und Checklisten. Das Go-Backend bettet das gebaute React-Frontend als einzelne Binary ein, der Client synchronisiert über IndexedDB.
stepshot
2026Alpha
Step-Recorder für KDE unter Wayland: screenshottet das angeklickte Fenster, markiert den Klick, benennt das UI-Element über AT-SPI und exportiert einen eigenständigen HTML-, PDF- oder DOCX-Report. Läuft im Tray.
fix-omnissa-horizon-wayland
2026Patches, die den Omnissa-Horizon-Client unter Wayland brauchbar machen: Dark Theme, HiDPI-Skalierung, ein XKB-Crash und eine Protocol-Warnung. Aufbereitet für Fedora, Gentoo und Arch.
Repository 7 GitHub-Sterne 1 Forks
ts3-query-proxy
2026Übersetzungsschicht vom alten TeamSpeak-3-Raw-Query-Protokoll auf die TeamSpeak-6-SSH-Query, damit Tools für die alte Schnittstelle ohne Änderung weiterlaufen.
Repository 4 GitHub-Sterne 3 Forks
gentoo-forge
2026Mein Gentoo-Setup als öffentliche Referenz: OpenRC, KDE Plasma auf Wayland, AMD-Grafik, systemweites LTO und natives Steam — Portage-Konfiguration samt Notizen, warum sie so aussieht.
Repository 2 GitHub-Sterne
dotfiles
2026Laufend
Ein chezmoi-Repository für Fedora und Gentoo. Eine Distro-Erkennung wählt pro Maschine die passende Variante der Konfiguration von zsh, git, kitty, starship und btop.
openmapper
2026In Entwicklung
Ein Mapping-Werkzeug in Go. Für mehr ist es noch zu früh.
TSPerms
2026Live
Web-Oberfläche für die Servergruppen und Bans eines TeamSpeak-6-Servers — auch für Mitglieder, die gerade offline sind und deshalb im TS-Client nicht anklickbar wären.
Open-Source-Beiträge
Beiträge zu fremden Projekten. Jeder Link führt zum Pull Request im Upstream-Repository.
gemergt
Fremdes Projekt: Maxallica/ts6-viewer
Drei Bugfixes: ein bufio-Panic bei grossen ServerQuery-Antworten (Buffer 4 KB auf 64 KB) und ein Goroutine-Leak im Keepalive; ein Read-Timeout von 15 Sekunden gegen hängende SSH-Verbindungen plus konfigurierbares max_width; Reconnect bei EOF für channellist, clientlist und serverinfo.
gemergt
Fremdes Projekt: mathieuviart/legrandgeoquiz
Vollständige deutsche Lokalisierung — 146 Keys, 228 Ländernamen, 399 Hinweistexte — plus eine selbst hostbare Daily-API als Fallback zum Cloudflare Worker. Ein zweiter Pull Request teilte die 5510 Zeilen lange index.html in 14 Module auf, funktional unverändert.
gemergt
Fremdes Projekt: Majorfi/immich-places
HERE Maps als Fallback-Geocoder für die Fälle, in denen Nominatim nichts zurückgibt. Backend und Frontend, über Umgebungsvariablen konfigurierbar, kein Breaking Change.
Pull Requests #35
in Review
Fremdes Projekt: coom/ts6-manager
Beiträge an coom/ts6-manager, einem aktiv gepflegten Fork von clusterzx/ts6-manager. Fünf offene Pull Requests: Single-Flight-Token-Refresh gegen die Refresh-Stampede bei parallelen 401ern; numerischer Vergleich von WebQuery-Booleans, weil "0" truthy ist und alle Clients fälschlich als abwesend markierte; erneutes Lesen der gespeicherten Identität, damit Rollenänderungen ankommen; fünf Security-Härtungen (yt-dlp-Argument-Injection, SSRF über Redirects, Entropie der MFA-Recovery-Codes); Reverse-Proxy-SSO über vertrauenswürdige Header mit JIT-Provisioning.
in Review
Fremdes Projekt: cinnyapp/cinny-desktop
System-Tray auf Tauri v2 portiert. Unter Linux mit einer eigenen ksni-StatusNotifierItem-Implementierung, weil Tauris tray-icon dort keinen Linksklick weiterreicht.
Pull Requests #586
in Review
Fremdes Projekt: mathieuviart/PokemonTCGSetOrMilitaryOperation
Die einzelne index.html modularisiert, Theme-Farben korrigiert, die nur im Dark Mode funktionierten, das Layout mobil responsiv gemacht, Self-Hosting per Docker Compose und ein Favicon ergänzt.
Pull Requests #1
Arbeit
Anonymisierte Fallbeispiele aus dem Anstellungsverhältnis: keine Arbeitgeber-, Kunden- oder internen Namen. Mein Anteil ist als Commit-Zahl angegeben — in diesen Repositories wird direkt gepusht statt über Pull Requests, das ist also der ehrliche Massstab.
Inventar- und Wartungsanwendung
2026Hauptautor · 113 von 137 Commits
Read-only-Übersicht über ein Inventar technischer Geräte, dazu der Ablauf für Wartungen und Übergabeprotokolle samt PDF-Export. Sieben Monate Arbeit, September 2025 bis April 2026 — mein grösster einzelner Beitrag.
Freigabe-Dienste für LLM-Agenten
2026Hauptautor · 41 von 43 Commits
Eine Familie von Diensten, die einem LLM-Agenten kontrollierten Zugriff auf interne Geschäftssysteme gibt — mit menschlicher Freigabe vor jeder Schreiboperation. Drei davon stammen von mir: einer vor einer internen Inventar-API (8 von 10 Commits), einer vor einem internen Wiki (12 von 12), einer vor einem Zeit- und Ferienerfassungssystem (21 von 21).
Gateway für Agenten-Dienste
2026Alleinige Umsetzung · 12 von 12 Commits Laufend
Ein Gateway, das die einzelnen Freigabe-Dienste hinter einem einzigen Endpunkt bündelt — ein Agent spricht so mit einem Einstiegspunkt statt mit vielen. Allein von mir geschrieben und weiterhin im Ausbau.
Beleg-Digitalisierung mit OCR
2026Hauptautor · 18 von 23 Commits
Digitalisiert Belege per OCR. Bewusst ohne Serverkomponente gebaut: Alles läuft im Browser, sensible Dokumente verlassen das Gerät also nicht. Januar 2026.
Internes Bestell-Werkzeug
2025Hauptautor · 37 von 41 Commits
Firmeninternes Werkzeug zum Auslösen und Nachverfolgen von Bestellungen. August bis November 2025.
Internes Such-Werkzeug
2025Hauptautor · 40 von 64 Commits
Firmeninternes Werkzeug zum Suchen und Auffinden interner Inhalte. Juli bis November 2025.
Template-Editor für Prüfprotokolle
2026Mitarbeit im Team · 3 von 5 Commits
Editor für die Vorlagen hinter Prüfprotokollen zu technischen Anlagen. Ein kleiner Arbeitsanteil im Team. März 2026.
Internes Kontaktverwaltungssystem
2026Mitarbeit im Team, geringer Anteil
Firmeninternes System für Firmen- und Personendaten. Ich habe an einzelnen Teilen mitgearbeitet, zusammen mit mehreren anderen Entwicklern: 4 von 25 Commits im Frontend, 1 von 49 im Backend.
Kundenprojekte
Websites und Gestaltungsarbeiten für andere.
denidrive.ch
2023Website einer Fahrschule auf WordPress-Basis. Updates und neue Seiten mache ich bis heute.
Akkordeon Brittnau
2022WordPress-Framework für einen Verein aufgesetzt, damit die Mitglieder Beiträge und Termine selbst veröffentlichen können — ohne Umweg über mich.
Mein Baumhaus
2018Firmen-Website. Die Domain gibt es nicht mehr, der Link zeigt ins Internet Archive.
KIAN
2017Gestaltung der Speisekarte eines Restaurants. Die Bestellung per Tablet am Tisch war zusätzlich geplant.
VicoTV
2017Erste Version des Backends. VicoTV war ein Lernenden-Startup von Swisscom und SRG.
Infrastruktur
Was auf der Maschine läuft — und wofür.
AdGuard Home
Filternder DNS-Resolver für alle Geräte im Haushalt, von aussen per DNS-over-HTTPS erreichbar.
Authentik
Single Sign-on für die Dienste dahinter. Anmeldung per Passkey, das Passwort bleibt als Rückfallebene.
CrowdSec
Liest die Logs der öffentlichen Dienste und sperrt Adressen, deren Verhalten nach Angriff aussieht.
Forgejo
Die Git-Forge, auf die ich tatsächlich pushe. GitHub und Codeberg sind Spiegel, die von hier aus befüllt werden.
Immich
Foto- und Videobibliothek für den Haushalt. Suche und Gesichtserkennung laufen auf dem Server, nicht in fremder Cloud.
Matrix
Homeserver für privaten Chat und Anrufe. Die Anmeldung läuft über MAS gegen Authentik.
Traefik
Reverse Proxy vor jedem Container: Routing nach Hostname und automatische Let's-Encrypt-Zertifikate.
Uptime Kuma
Überwacht alle anderen Dienste, meldet Ausfälle und liefert den Live-Status auf dieser Seite.
Vaultwarden
Passwort-Tresor, kompatibel zu den Bitwarden-Clients, auf eigener Hardware.
Zipline
Kurze Links für Screenshots und Datei-Uploads, unter eigener Domain statt bei einem Hoster.
Spiele-Server
Browserspiele für Freunde, ganz ohne Konto.
Codenames
Wortassoziationsspiel für zwei Teams. Link öffnen, Seite wählen, los.
Massive Decks
Kartenspiel im Stil von Cards Against Humanity, gedacht für grössere Runden.
Scribble
Zeichnen und raten mit Freunden; eine Runde startet, sobald zwei Leute im Raum sind.
TriviaForge
Quizabende mit Fragensets, die man selbst schreibt statt kauft.
Lebenslauf
Stationen, in Kurzform.
- 06/2024 – heute Biomedical Engineer Immeditech AG Medizintechnik zwischen Gerät und IT-Infrastruktur. Daneben interne Werkzeuge: Freigabe-Dienste für LLM-Agenten, eine Inventar- und Wartungsanwendung, Beleg-Digitalisierung.
- 02/2023 – 05/2024 Informatiker MBT, Medizintechnik-IT Universitätsspital Basel IT-Verantwortung für medizintechnische Geräte samt Server- und Netzwerkumgebung. Klinische Systeme an die ICT-Infrastruktur angebunden, Betrieb und Monitoring der Fachapplikationen, Mitarbeit an Schnittstellendesign.
- 11/2020 – 02/2023 Junior IT-Onsite Engineer Universitätsspital Basel Vor-Ort-Support im 1st und 2nd Level. Neue Systeme gemeinsam mit Entwicklung und Netzwerk-Engineering integriert, Hardware-Migrationen und Abteilungsumzüge geplant und umgesetzt.
- 06/2020 – 11/2020 Rollout-Techniker Universitätsspital Basel Migration von Windows 7 auf 10 an Einzelarbeitsplätzen, inklusive Einzellösungen für klinische Software.
- 01/2020 – 06/2020 Dialoger Corris AG Direktansprache im Auftrag von Hilfswerken.
- 06/2018 – 11/2019 Militärpolizei, zuletzt Sicherungsunteroffizier Schweizer Armee Objektsicherung in Sion und Luzern. Vom Sicherungssoldaten zum Unteroffizier befördert, zuletzt mit Führungsverantwortung.
- 08/2014 – 06/2018 Lernender Applikationsentwicklung SWISS TXT AG Vierjährige Lehre als Applikationsentwickler bei der SRG-Tochter in Biel. In dieser Zeit entstand unter anderem die erste Backend-Fassung von VicoTV.
- 2014 – 2018 Informatiker Applikationsentwicklung EFZ Gewerblich-Industrielle Berufsschule Bern Berufsbegleitende schulische Ausbildung zur Lehre.
- 2014 – 2015 Basisausbildung Informatik ICT Berufsbildungscenter AG Einjährige Grundausbildung zum Einstieg in die Informatik.
Zertifikate
PDFs zum Herunterladen.
- C Programming Certification Course Programming Hub PDF herunterladen: C Programming Certification Course
- IT Basics Certification Course Programming Hub PDF herunterladen: IT Basics Certification Course
- Grundlagen des Onlinemarketings Google Atelier Digital PDF herunterladen: Grundlagen des Onlinemarketings
- Python Certification Course Programming Hub PDF herunterladen: Python Certification Course
- Beförderung zum Wachtmeister, Militärpolizei Schweizer Armee PDF herunterladen: Beförderung zum Wachtmeister, Militärpolizei
- Professional Scrum Master I Scrum.org PDF herunterladen: Professional Scrum Master I
- Basisausbildung Informatik ICT Berufsbildungscenter AG PDF herunterladen: Basisausbildung Informatik