The three threads
GAdvisory and the CNA work come from the first. How I think about licensing and maintainer burnout comes from the second. GBoarse comes from the third.
That's not a coincidence. You end up building tools for the problems you keep walking into.
Vulnerability data
The interesting problem was never finding bugs. It is that advisory data gets stuck where it was published: easy to read on the platform hosting it, awkward everywhere else.
Running a CNA means living inside that. Assignment, scoring, weakness chains, record formats, disclosure timelines. GAdvisory exists because the friction in those workflows is not theoretical to me, and GAnalytics exists because I wanted to measure whether the programme as a whole is getting better or worse rather than guess.
Open-source governance
Working on a project that is genuinely open source, next to a product line that is deliberately not, forces you to be precise about the difference.
GHub is open core and I say so. I do not call it open source, because it isn't. Postiz is open source and belongs to its maintainers, and my part in it is a contribution rather than a possession. Collapsing those two would misrepresent both.
Contribution Checker came out of the other half of this: popular repositories attract pull requests nobody asked for, and the expensive part of triaging them is not the code review.
Stock markets
The one thread with no professional justification, which is probably why it is the most fun.
GBoarse is a full market simulation with a real central limit order book, double-entry bigint accounting, and a deterministic replayable core. Markets are an unusually honest systems problem: the rules are written down, the failure modes are well documented, and the accounting either balances or it doesn't.
How I build
UI-first, everywhere. If the API can do it, the UI has to do it too. It costs more up front and I've never regretted it.
Self-hosting as the primary target rather than the afterthought. Bare metal ahead of containers where the choice comes up. Things that must survive a restart run on durable workflows rather than in-process timers, because a bot that restarts should not lose the auto-close it promised.
Where I work
Germany, in German and English. Advisories, release notes and support replies go out in whichever one suits the person reading them.
Personal projects and the homelab sit under Gelhaus Solutions. The work page covers what runs there and why it is built that way.
Away from the terminal
Self-hosting and network engineering, mostly. Watching where the industry is actually going rather than where the press releases say it is.