RailCast
Since March 2026, RailCast has polled Deutsche Bahn’s delay reports every minute and recorded what information passengers had at which moment.
Of 160,739 departures that ended up at least 6 minutes late, the display showed a delay of that size one hour before departure for only 28% of them, just over one in four. Five minutes before, it was 63%. Conversely, when the display showed at least 6 minutes one hour before, the departure ended up at least 6 minutes late in nine out of ten cases (92%). “Display” here means what Deutsche Bahn’s IRIS interface reported at that moment. Period 8 September to 1 October 2026, as of 5 October 2026.
4,941,733 train stops recorded since March 2026, as of 30 September 2026.
Kombinat
In the Kombinat, AI agents under my direction search for records in mathematical problems whose solutions can be checked exactly; a find only counts once an independently written checking program confirms it.
| Entered | By | Vertices |
|---|---|---|
| 1985 | C. Delorme | 1,215 |
| 13 Aug 2026 | P. Isufi | 1,224 |
| 25 Sep 2026 | R. Mizuno | 1,458 |
| 30 Sep 2026 | R. Rajiv | 1,539 |
| 20 Oct 2026 | M. McCormick | 1,620 |
For every combination of maximum degree and diameter, the table lists the largest known network. On 13 August 2026 my network with 1,224 vertices replaced the 1,215-vertex entry from 1985; since then the cell has been beaten three times, most recently on 20 October 2026 with 1,620 vertices. Ten cells went into the table under my name in August 2026, and all of them have since been beaten. As of 24 October 2026.
Preprint on Zenodo: an independent verification of a counterexample to a conjecture by Goemans on unsplittable flows, doi:10.5281/zenodo.22238190. Its title calls it the second; the research page names earlier verifications that I had missed.
In progress: Radiotherapy certificates. Exact optimality proofs for choosing radiation beam angles in a computational model, with an independent checker.
Agent harnesses
A harness is the framework of rules, scripts and checks an AI agent works in. With mine I assign tasks to several agents and have their results checked in separate runs.
# report.json: tool model effort sandbox label cwd exit seconds session usage log_dir# Exit: Code des Werkzeugs (124 = Zeitlimit), 1 = Aufruffehler, 3 = Tiefensperre# Tiefe: dg_guard setzt AGENT_DELEGATE_DEPTH=1. Ist die Variable schon gesetzt, läuft der# Aufrufer selbst als Arbeiter: Delegation bricht ohne Modellaufruf mit Exit 3 ab.dg_guard() { [[ -z "${AGENT_DELEGATE_DEPTH:-}" ]] || { echo "Fehler: Delegation aus einem Arbeiter heraus ist gesperrt (Tiefe 1)." >&2; exit 3; } export AGENT_DELEGATE_DEPTH=1}
Marked are the rule and the line that enforces it: an agent that is already running as a delegated worker gets exit 3 when it tries to pass the task on, before any model is called.
I assign work to Claude, Codex, OpenCode and DeepSeek through the same interface, with a time limit and a log for every run. An agent that has been assigned a task cannot start further agents through it. As of 30 September 2026.
Whoever finds something does not check it: a second run writes its own checking code with a different method, and at least one deliberately corrupted counter-test has to fail. As of 30 September 2026.
Other work
Security
-
Bug bounty audits
I look for vulnerabilities in other people’s software, in an audit environment of my own with a fixed set of rules: AI agents work through the source code, and every suspicion is re-checked by a second, separate run before I report it.
Reports go through bug bounty programmes, where vendors accept vulnerability reports and sometimes pay for them; that has already happened with my reports. As of 30 September 2026.
Status: active
Products
-
Puzzlekreis
A swap platform for jigsaw puzzles, as a web app and for iOS and Android.
The web app and the iOS app have been released; the Android app is in closed testing. As of 24 October 2026.
Status: online
-
AmtsChecker
A private service to help people find relevant German social benefits and prepare applications. Focused on North Rhine-Westphalia and Wuppertal.
Structured conditions and exceptions, sources, application routes and an interface in six languages.
Status: Password-protected testing
-
Zoopa PN
A service for messages that delete themselves once read or after a chosen period.
The message is encrypted in the browser. The key sits only in the link after the # sign, and browsers never send that part to the server; all the server holds of the message is the encrypted text. As of 30 September 2026.
Status: online
-
Geheimauftrag
A party game with secret missions, for which guests submit photo, audio and video evidence.
Status: online
Data
-
Sperrmüll Wuppertal
A map showing when bulky waste is collected in which Wuppertal street, with a reminder the day before by Telegram bot or email.
1,825 streets and 442 collection dates for 2026 and 2027, from the data of Wuppertal’s waste company AWG and OpenStreetMap; 1,822 streets are drawn as lines. As of 30 September 2026.
Status: online
-
Maps from open data
Small maps and analyses on zoopa.org, mostly about North Rhine-Westphalia.
Status: online
Setup
My services run on two machines: a small computer at home and a rented server for the public-facing sites. Mail and the zoopa.org website are also hosted by a web hosting provider. Projects and services are backed up on the 3-2-1 rule, meaning three copies on two kinds of storage, one of them off-site; other datasets are backed up locally only or deliberately not at all. The machine at home cannot be reached directly from the internet; outside access goes only through a private network. As of 24 October 2026.
Contact
For encrypted mail, my OpenPGP key is at pgp-key.txt.