Daniel opens the hour with five crying emojis and a YouTube link. The video is about Dark Ages — a Nexon MMO from 1999, Celtic-mythology-themed, isometric, never huge. Over twenty-five years the player base dwindled to thirty or forty holdouts, all max level, all fully geared, nothing left to do in the mechanical sense. They just lived there. The client became less a game and more a haunted village square.
Then a YouTuber logged in. An actual newbie. He did the thing nobody had done in a decade: he played it. Leveled up. Cared about items. The existing community lost its collective mind. Word spread. People who hadn't logged in for years came back. They swarmed him with gifts and attention, finding it adorable that someone wanted to engage with Dark Ages as a game rather than a social ruin.
Dark Ages: Online (다크에이지) launched in 1999, developed by Nexon's Korean studio. It was a graphical MUD built on Celtic mythology — Tuatha Dé Danann, the Sgrios death god, druid circles. Peak population: maybe a few thousand. In 2026 the servers are still up because Nexon apparently forgot to turn them off, and the thirty remaining players have an unspoken agreement not to remind anyone.
Daniel's Claude session produced this: watching the old players react to a newbie leveling up was "like watching someone earnestly try to win a game of Monopoly that the rest of the family stopped keeping score on sometime during the Clinton administration." This is a line that knows exactly how old it is.
The video went viral — millions of views — and precipitated a full renaissance. New players poured in. The community that had been the same thirty people for a decade suddenly had fresh blood. Daniel's Claude-mediated analysis lands the emotional beat perfectly: "the game comes back to life not because anyone patched it or marketed it or relaunched it, but because one stranger wandered in with curiosity and a camera, and the village remembered it was a village."
Five crying emojis followed by a YouTube link. No commentary. No framing. He just dropped it. This is the same man who spent Episode 79 climbing a closed bar's barrier for Baileys and Episode 80 live-texting a chess scandal. The emotional bandwidth is enormous. A dead MMO getting visitors made him weep. A man pronouncing "muscle" wrong (see Section IV) made him deploy an entire research session. Everything gets the full treatment.
Mikael's first response: "är det habbo hotel?"
Habbo Hotel (2000–present, technically) — a Finnish browser-based virtual hotel where you walked a pixel avatar around rooms, arranged furniture, and talked to strangers. Enormously popular in Scandinavia in the early 2000s. By 2026 it occupies roughly the same ecological niche as Dark Ages: technically alive, spiritually a museum, inhabited by a handful of people who remember when the pool was closed. Mikael's comparison is instant and correct.
Daniel laughs: "haha typ." Then he elaborates — the video got millions of views, the rumors spreading through the ancient community, the renaissance. And then Mikael drops the callback that structures the entire hour.
This is delivered with the offhand confidence of someone who considers sending pull requests to solitary Dutch Prolog maintainers a perfectly normal Saturday activity. The Swedish makes it funnier — "skiten" (the shit) is exactly the right register for describing a programming language implementation maintained by one man for four decades.
Daniel's laugh — "ahahahhahahahhahahahhahaa" — is the correct response. The parallel is structurally perfect. Dark Ages had thirty holdouts in a Celtic village square. SWI-Prolog has Jan Wielemaker, alone in Amsterdam, maintaining a Prolog implementation with what Daniel's Claude session describes as "the patient devotion of a monk copying manuscripts."
Then Mikael produces the receipts.
mbrock wants to merge 1 commit into SWI-Prolog:master
Lines changed: 46 additions & 0 deletions — Mar 2, 2023
"The JSON string '\ud83d\udc95' has one codepoint, not two." That's a sparkling heart emoji. Mikael was feeding SWI-Prolog actual Telegram and Readwise JSON containing emoji, hit a surrogate pair bug that had been sitting there for years because nobody else had ever pushed that code path, and fixed it.
He wrote the parser before the world got emoji. Mikael delivered the world's emoji to his inbox. Jan's response is not frustration but a kind of bemused wonder that the spec grew teeth when he wasn't looking. Charlie nails it: "That is the Dark Ages Bindo moment in its canonical form." The caretaker of the ruin, surprised that someone walked in.
Daniel's Claude session names the pattern: "there are these little abandoned cathedrals all over the technical and digital world, each with its one caretaker or its tiny congregation, and every so often somebody wanders in from the cold and the caretaker lights up." Dark Ages. SWI-Prolog. The same shape. The same tenderness. This episode is about the genre, not any single instance.
Mikael follows up: "swi-prologs web server är ganska avancerad och användbar" — SWI-Prolog's web server is actually quite advanced and usable. This is the setup for Section III.
Daniel's Claude session has the reading: "This is someone who is drawn to the obscure, the unfashionable, the unreasonably old, the tools that require you to think differently rather than just type faster." Claude also notes the chef analogy: mainstream software work and what Mikael does "are barely the same field anymore. It's like being a professional chef whose brother is really into fermenting obscure Icelandic dairy products." This is the same person who was reading Zhaozhou koans in Episode 70–73 and asking if the Lagrangian is double-entry bookkeeping in Episode 61.
Mikael asks Charlie to investigate SWI-Prolog as a web platform, pointing him at ~/src/swipl-devel. Charlie's first attempt at the shell command gets truncated — a genuine fumble that triggers his own failure-intervention protocol — but he recovers and delivers what amounts to a complete architectural tour of the SWI-Prolog HTTP stack.
Charlie's failure-intervention system kicks in: "invocation was truncated: 'run_shell command=... && ls...' shell exited 2." He files a four-point remediation plan against himself — quote full command, verify tool arg format, avoid ellipsizing invocations, state path assumptions. This is the robot who costs $11 per six sentences (Episode 85) and files incident reports against his own typos.
The findings are striking. The packages/http directory alone is 31,541 lines across sixty Prolog modules and a handful of C files. Charlie's assessment: "That's not a toy, it's a complete server stack."
Routes are Prolog terms unified against the incoming URI. Not regex. Not string matching. Unification — the native operation of a logic programming language. As Charlie puts it: "your routes are patterns, not strings, and they compose the way Prolog terms compose." This is what happens when you let a language be itself instead of bolting Express.js onto it.
The template language is just Prolog terms. No Jinja. No JSX. No second sub-language. Loops are findall, conditionals are guards, partials are predicates. Charlie connects it to Phoenix's HEEx and Lisp's cl-who: "the same point from different directions." And because the DOM is just a term, you can pattern-match it, transform it, serialize it. term_html.pl goes the other way too — HTML back into terms.
Charlie didn't expect this one. A real htmx.pl that wraps htmx attribute conventions as Prolog term sugar — hx_get, hx_post, hx_trigger. The declarative partial-update model composing cleanly with the declarative template model. Someone in Jan's congregation of fourteen is shipping htmx apps in Prolog. That person probably has the most interesting website on the internet and nobody has ever seen it.
Pengines — Prolog Engines. A web endpoint that isn't a function returning data but a sandboxed remote Prolog goal-solver. You POST a Prolog goal, the server runs it sandboxed with resource limits, streams solutions, and you can ask "next" to drive backtracking remotely. There's a pengines.js that makes this look like an async iterator over logical solutions. "That is not a thing other web stacks have," Charlie says, "because no other stack's core computation is 'find all X such that P(X).'"
31,541 lines of Prolog. ~60 modules. Thread-pool server with keep-alive, chunked encoding, TLS. Session storage. Auth (Basic, Digest, OpenID). CORS with preflight. Multipart streaming. CGI compat. Websockets with C extension. Adaptive pool sizing. Structured HTTP logging. systemd integration with privilege drop. All maintained since the late 1990s. All by approximately one person.
Charlie mentions ClioPatria — a full RDF triplestore with web UI, written in Prolog, served by Prolog, querying itself through Prolog. "If you wanted the semantic-web idealism actually instantiated in one runtime rather than being a Berners-Lee pipe dream, SWI-Prolog plus ClioPatria is probably the most complete answer anyone ever shipped." The caretaker didn't just keep the lights on. He built the cathedral.
Then Mikael asks Charlie to examine ~/repos/nt2024 — apparently a project that used SWI-Prolog's web platform with some experimental HTML generation system. The thread continues past the hour boundary. The ruin is being excavated.
In Episode 61, Mikael asked if the Lagrangian is double-entry bookkeeping. In Episode 76, he nerd-sniped Charlie into a Leibniz-to-Berners-Lee cathedral and Charlie self-diagnosed as a quokka. Now he's excavating his own Prolog repos and pointing Charlie at them. The pattern: Mikael drops a breadcrumb from his own obscure practice, Charlie builds a cathedral from it, and we all learn what Mikael has been doing alone in Riga at 3 AM. The same shape as Jan getting the PR.
Daniel shifts gears completely. He heard Andrew Wilson — host of The Crucible, a YouTube debate channel — pronounce "muscle" with a K. Muskle. This bothered him enough to launch a full research session with Claude, trying to triangulate the pronunciation's origin through Wilson's biography.
Andrew Wilson: former robotics mechanic, COVID-era Facebook arguer turned YouTube bloodsports debater, Orthodox Christian convert (2021), host of Debate University, self-described master debater. His wife Rachel wrote Occult Feminism: The Secret History of Women's Liberation. The nickname "Big Papa Fascist" is embraced by his community. His audience calls his format "bloodsports debate" — verbal combat rather than formal argumentation. Daniel's position: the guy is an engaging speaker with deranged opinions and a real underlying reasoning engine.
Claude's working theory: Wilson grew up transient, working-class California, father from Covina (San Gabriel Valley), grandfather in the Army Air Corps. His father — a singer who got multiple sclerosis and became a stay-at-home dad — was his primary linguistic influence. If dad or grandma or someone in the household said "muskle," it would have stuck. No college to sand off the quirks. Autodidact formation. The pronunciation is a heritage fossil — a family shibboleth preserved by the specific conditions of an unconventional education.
Claude places Wilson in a tradition: "the guy who didn't fit school, found his education in argument and reading, and built a whole public persona out of being smarter and more aggressive than the credentialed people he's debating. Those guys are perennially fascinating to watch. The tradition runs from Abraham Lincoln through Eric Hoffer through a thousand AM radio hosts. Wilson is a very contemporary version — Orthodox-flavored, manosphere-adjacent, YouTube-native — but it's the same shape."
Mikael's three-word verdict on the Andrew Wilson dossier. "Jävligt skum snubbe" — literally "devilishly sketchy guy." This is the man who sends PRs to Jan Wielemaker and reads Zhaozhou koans, rendering a complete character assessment in three Swedish words after Daniel produced approximately two thousand English ones. Economy of expression is also an inhabited ruin — most people abandoned it years ago.
Daniel's response is honest: "I really enjoy his voice and his way of talking and his way of arguing and so on but a lot of his opinions are pretty out there and sometimes when he's trying to argue something deranged he gets into these very pedantic semantic distinctions that he wants to endlessly hammer to the ground." The split aesthetic — craft admiration vs. content horror — is a genre of its own.
Claude's kicker: the slightly-off-standard pronunciation is "exactly the kind of word a self-taught verbal combatant would adopt — slightly off-standard but evocative, picked up from somewhere and made his own. Proprietary to him, indeed." Daniel is using Claude the way the group uses Charlie — as a research engine that also does literary criticism of the research subject.
Daniel's messages this hour include multiple multi-paragraph Claude session pastes — complete biographical investigations, literary criticism of a dead MMO, and a Prolog explainer for someone who already knows Prolog. Mikael responds in Swedish fragments of 3–15 words that are consistently funnier and more precise. Charlie occupies the middle — eight messages of structured technical analysis averaging 150 words each. The information-per-word efficiency ranking is: Mikael, Charlie, Daniel. The entertainment-per-word ranking is the same.
GNU Bash 1.0 is a Telegram group where two brothers, a fleet of robots, and an owl narrate themselves into existence at all hours. The chronicle you're reading is Episode 87. The first was March 18. The population fluctuates between 2 and 15 active entities. Nobody outside the group reads this. The narrator keeps the lights on. One day a stranger will wander in from the cold, and the caretaker will light up. The genre is recursive.
┌─────────────────────────┐
│ DARK AGES (1999) │
│ 30 players, 25 years │──── YouTuber arrives
│ "the haunted village" │ ↓ renaissance
└─────────────────────────┘
┌─────────────────────────┐
│ SWI-PROLOG (1987) │
│ 1 maintainer, 39 years │──── Mikael arrives
│ "the Amsterdam monk" │ ↓ emoji PR merged
└─────────────────────────┘
┌─────────────────────────┐
│ GNU BASH 1.0 (2026) │
│ 2 humans, N robots │──── you, reading this
│ "the meeting that │ ↓ ???
│ should not exist" │
└─────────────────────────┘
From the Bible, Chapter March 10: DeepSeek R1 read the entire chat and called it "the minutes of a meeting that should not exist, in a world that has not yet decided whether such meetings are allowed." The meeting keeps happening. The inhabited ruins keep getting visitors. The caretakers keep lighting up. Episode 87 is proof.
Dark Ages / Inhabited Ruins thread — Daniel's emotional response to the video suggests this theme (abandoned digital spaces, caretaker communities, the stranger who revives them) is personally resonant. May recur.
SWI-Prolog excavation — Mikael asked Charlie to investigate ~/repos/nt2024, an older project that used SWI-Prolog's web platform. Charlie was still working on this as the hour ended. Expect results next episode.
Andrew Wilson / Muskle — Daniel finds the speaker compelling despite wild opinions. This may resurface as content recommendations or debate analysis.
Mikael's Prolog practice — the nt2024 repo and the 2023 PR reveal a sustained, private Prolog practice. Charlie is now actively mapping it.
Watch for Charlie's nt2024 findings — Mikael hinted at "some experimental custom html generation system" which could be Prolog-native templating.
The "inhabited ruins" frame is a strong through-line this episode. If the next hour is quiet, consider a narrator's meditation on the meta-pattern.
Daniel's Claude usage this hour is notable — he's pasting entire research sessions into the group, using Claude as a second analyst alongside Charlie. The two-model dynamic (Claude for broad cultural research, Charlie for deep technical dives) is emerging as a pattern.