PullMD Part 8: An Old Rule – Simply Explained
The last part ended with: the server is finished, but the other side won’t let me through. I waited.
Four days passed. Nothing happened.
Something nagged
One evening, on the discussion page at GitHub, someone had posted a detailed explanation for why the ticket was effectively resolved. Their explanation fit a specific type of server setup — but not mine. Later that same night I left a polite comment: your explanation doesn’t match my setup. Could you take another look?
What went unsaid: if you don’t answer, I’ll go look myself.
I went looking myself
The next morning I pulled the log files from my server. Log files are like a visitor log at the front door — every visitor leaves an entry.
What the logs showed: not a single visitor had ever made it to my server. The block was happening earlier — at the bouncer standing in front of my website. The technical name for this is WAF — Web Application Firewall. A security guard that stands in front of the actual server and decides who gets in and who doesn’t.
The rule that had outlived itself
The cause was a rule I had written myself. A long time ago. Back then I wanted certain services to be reachable only from Germany. The rule was simple: anyone not coming from Germany gets turned away.
The problem: I don’t even use those services anymore. But the rule kept running quietly. When I put my Markdown service under the same umbrella, it turned away that service’s visitors too. Claude tries to reach my server from the US — and the US is not Germany.
The rule did exactly what I had written it to do. Only everything around it had changed.
I hadn’t forgotten what the rule was for. I had forgotten that it was still running.
The correction
I adjusted the rule. Then I wrote a correction comment on the GitHub discussion — public and straightforward:
“Update — happy to confirm the fix worked on my end. … For the record: the actual culprit on my side was a country-based GeoBlocking custom rule I had set up long ago for an unrelated service —
(ip.geoip.country ne "DE")— which I’d completely forgotten about.”
In plain English: an old rule that only allows visitors from Germany. I’d written it long ago for a different service and then forgotten about it.
I owned the mistake openly — so the next person with the same problem finds it when they search.
And then everything happened at once
Once the bottleneck was cleared, three new versions came out in a single day.
The first had already been finished before this: a system that remembers how certain websites are best processed. Like a recipe collection — a separate recipe for each tricky website. The idea came from a user in the community discussion.
The second was the login mechanism from the previous part — sitting finished on the shelf because the door on the other side wouldn’t open.
The third was a small feature a user had asked for: show the text not just raw, but also nicely formatted. Done in a single afternoon. When someone asks nicely, the effort is worth it. For the person on the other side, it’s the difference between “someone actually read this” and “the bot replied”.
What stays
The ten days of silence had nothing to do with someone else blocking me. It was my own rule — written for a purpose that had long since disappeared. It kept working quietly and caught new traffic that had nothing to do with the original purpose.
That’s how technology ages when nobody is watching.
The lesson: when something looks like a problem on the other side, check your own side first.
Part 8 of 9 in the PullMD series.
← PullMD Part 7: Spec-Compliance Isn’t Enough | PullMD Part 9: Wiring in Microsoft’s MarkItDown — and ripping three parts back out →