Feed fetched in 139 ms.
Warning Content type is application/atom+xml, not text/xml.
Feed is 122,741 characters long.
Warning Feed is missing an ETag.
Warning Feed is missing the Last-Modified HTTP header.
Warning This feed does not have a stylesheet.
This appears to be an Atom feed.
Feed title: Aphyr: Posts
Feed self link matches feed URL.
Feed has 12 items.
First item published on 2025-11-14T20:00:52.000Z
Last item published on 2025-02-21T23:04:55.000Z
Home page URL: https://aphyr.com/
Home page has feed discovery link in <head>.
Error Home page does not have a link to the feed in the <body>.
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<id>https://aphyr.com/</id>
<title>Aphyr: Posts</title>
<updated>2025-11-14T15:36:18-05:00</updated>
<link href="https://aphyr.com/"></link>
<link rel="self" href="https://aphyr.com/posts.atom"></link>
<entry>
<id>https://aphyr.com/posts/399-op-color-plots</id>
<title>Op Color Plots</title>
<published>2025-11-14T15:00:52-05:00</published>
<updated>2025-11-14T15:00:52-05:00</updated>
<link rel="alternate" href="https://aphyr.com/posts/399-op-color-plots"></link>
<author>
<name>Aphyr</name>
<uri>https://aphyr.com/</uri>
</author>
<content type="html"><p>A lot of my work involves staring at visualizations trying to get an intuitive feeling for what a system is doing. I’ve been working on a new visualization for <a href="https://github.com/jepsen-io/jepsen">Jepsen</a>, a distributed systems testing library. This is something I’ve had in the back of my head for years but never quite got around to.</p>
<p>A Jepsen test records a history of operations. Those operations often come in a few different flavors. For instance, if we’re testing a queue, we might send messages into the queue, and try to read them back at the end. It would be bad if some messages didn’t come back; that could mean data loss. It would also be bad if messages came out that were <em>never</em> enqueued; that could signify data corruption. A Jepsen checker for a queue might build up some data structures with statistics and examples of these different flavors: which records were lost, unexpected, and so on. Here’s an example from the <a href="https://github.com/jepsen-io/nats">NATS test</a> I’ve been working on this month:</p>
<pre><code><span></span><span class="p">{</span><span class="ss">:valid?</span> <span class="nv">false</span>,
<span class="ss">:attempt-count</span> <span class="mi">529583</span>,
<span class="ss">:acknowledged-count</span> <span class="mi">529369</span>,
<span class="ss">:read-count</span> <span class="mi">242123</span>,
<span class="ss">:ok-count</span> <span class="mi">242123</span>,
<span class="ss">:recovered-count</span> <span class="mi">3</span>
<span class="ss">:hole-count</span> <span class="mi">159427</span>,
<span class="ss">:lost-count</span> <span class="mi">287249</span>,
<span class="ss">:unexpected-count</span> <span class="mi">0</span>,
<span class="ss">:lost</span> <span class="o">#</span><span class="p">{</span><span class="s">&quot;110-6014&quot;</span> <span class="nv">...</span> <span class="s">&quot;86-8234&quot;</span><span class="p">}</span>,
<span class="ss">:holes</span> <span class="o">#</span><span class="p">{</span><span class="s">&quot;110-4072&quot;</span> <span class="nv">...</span> <span class="s">&quot;86-8234&quot;</span><span class="p">}</span>,
<span class="ss">:unexpected</span> <span class="o">#</span><span class="p">{}}</span>
</code></pre>
<p>You can tell just by eyeballing the numbers that most attempted writes were acknowledged, and about half of them were later read back. There were just three “recovered” writes where we didn’t know if they succeeded or not, and they later appeared. About half were lost: acknowledged but never read. About half of those were “holes”—writes which were missing even though some later write was read. And there’s a few examples, in case you want to go digging into the history and see what might have happened to specific writes.</p>
<p>At the same time, there are lots of <em>qualitative</em> questions that are hard to answer statistically. For instance, were the lost writes clustered together in time, or were they spread out? What faults might have happened to trigger write loss? Is data loss universal on short timescales, or do, say, 40% of writes survive? Is the rate of writes uniform over time, or do lost writes happen faster or slower? Did the data loss event destroy all records prior to some time, or did some survive? Could apparent data loss be attributed to slow delivery of messages, or is it likely that the data is truly missing?</p>
<p><img class="attachment pure-img" src="/data/posts/399/set.png" alt="A timeseries plot, as described below" title="A timeseries plot, as described below"></p>
<p>This plot helps answer some of those questions. Time flows left to right. Each operation (measured by its invocation time) becomes a single point. Colors indicate the flavor of that operation: OK, lost, unknown, or so on. Operations are splayed out vertically, in such a way that the aggregate “shape” of the plot traces out the rough throughput of the system over time. Operations from the fault-injection system are shown as vertical lines and (for process kills) horizontal bars spanning them.</p>
<p>From this, we can see that data loss occurred in two large chunks, starting near a file-corruption operation at roughly 65 seconds and running until the end of the test. They were not evenly mixed: writes were lost in blocks. A few records survived around 87 seconds in, then everything later was lost as well. These OK records in the middle hint that this is “real” data loss, as opposed to readers lagging behind. The rate of OK and lost operations was essentially constant at ~6,800 records/sec. Unknown operations happened <em>much</em> slower–likely due to timeouts. Some, but not all, process kills caused throughput to tank. You can guess that some of them took down a majority of nodes, halting the cluster until nodes were restarted; others were recoverable after a few seconds.</p>
<p>Jepsen tests can range from a handful of operations to hundreds of millions, and our plots need to work for both extremes. In this case, the plot used single-pixel dots for frequent operations like <code>ok</code> and <code>lost</code>, but for the handful of <code>unknown</code> operations, switched to a larger cross style. These infrequent operations are often of the most interest, and could easily get lost in the noise, so it makes sense to visually emphasize them.</p>
<p>This isn’t a <em>good</em> plot yet. I am, for instance, running out of colors to represent all the kinds of faults, and that leads to awkward color-blind issues like the red/green pairing here. There’s a sort of aliasing/moire pattern caused by the point layout algorithm, which divides the history into 512 time windows, computes a height for each window based on throughput, and then spreads the window’s points along the y axis uniformly. I feel like I may be able to use some sort of adaptively-determined transparency and overlapping dots to get something a little closer to a density field, and that might read more clearly, but I’m wary of what might happen when some windows have lots of plots and others have only a few.</p>
<p>Despite these shortcomings, this plot has been remarkably useful! I’m using them to get an at-a-glance feel for how bad a given test run is, to figure out where in the history I should look, and to refine the checker itself.</p>
<p>Because there’s lots of ways you could interpret these plots—showing lost elements of a set, highlighting transaction anomalies in an SQL test, showing how read-only and read-write queries are affected by faults—I don’t really know what to name them yet. For now I’m calling them “op color plots”. They’re available in the <a href="https://github.com/jepsen-io/jepsen/blob/3eb61ba6b1e855bd38d042389a0736252c47f71e/jepsen/src/jepsen/checker/plot.clj#L22-L145">current Jepsen 0.3.10-SNAPSHOT</a>, and I’m hoping they’ll be useful in all kinds of tests to come.</p></content>
</entry>
<entry>
<id>https://aphyr.com/posts/398-the-future-of-fact-checking-is-lies-i-guess</id>
<title>The Future of Fact-Checking is Lies, I Guess</title>
<published>2025-11-10T14:24:47-05:00</published>
<updated>2025-11-10T14:24:47-05:00</updated>
<link rel="alternate" href="https://aphyr.com/posts/398-the-future-of-fact-checking-is-lies-i-guess"></link>
<author>
<name>Aphyr</name>
<uri>https://aphyr.com/</uri>
</author>
<content type="html"><p>Last weekend I was trying to pull together sources for <a href="https://aphyr.com/posts/397-i-want-you-to-understand-chicago">an essay</a> and kept finding “fact check” pages from <a href="https://factually.co">factually.co</a>. For instance, a Kagi search for <a href="https://kagi.com/search?q=pepper+ball+chicago+pastor">“pepper ball Chicago pastor”</a> returned <a href="https://web.archive.org/web/20251110003151/factually.co/fact-checks/justice/ice-agents-pepperball-incident-b2b86e">this Factually article</a> as the second result:</p>
<blockquote>
<p><b>Fact check: Did ice agents shoot a pastor with pepperballs in October in Chicago</b></p>
<p>The claim that “ICE agents shot a pastor with pepperballs in October” is not supported by the available materials supplied for review; none of the provided sources document a pastor being struck by pepperballs in October, and the only closely related reported incident involves a CBS Chicago reporter’s vehicle being hit by a pepper ball in late September <a href="https://web.archive.org/web/20251110003151/https://www.cbsnews.com/chicago/news/feds-fire-pepper-ball-at-cbs-chicago-reporters-truck/">[1]</a><a href="https://web.archive.org/web/20251110003151/https://www.ftvlive.com/sqsp-test/2025/9/29/reporter-claims-ice-agents-fired-at-her-direction">[2]</a>. Available reports instead describe ICE operations, clergy protests, and an internal denial of excessive force, but they do not corroborate the specific October pastor shooting allegation <a href="https://web.archive.org/web/20251110003151/https://www.usnews.com/news/best-states/illinois/articles/2025-09-20/ice-denies-using-excessive-force-as-it-broadens-immigration-arrests-in-chicago">[3]</a><a href="https://web.archive.org/web/20251110003151/https://chvnradio.com/articles/clergy-protest-ice-and-national-guard-presence-near-dc-churches">[4]</a>.</p>
</blockquote>
<p>Here’s <a href="https://web.archive.org/web/20251110155956/https://factually.co/fact-checks/justice/pastor-shot-by-ice-pepper-ball-493ff8">another “fact check”</a>:</p>
<blockquote>
<p><b>Fact check: Who was the pastor shot with a pepper ball by ICE</b></p>
<p>No credible reporting in the provided materials identifies a pastor who was shot with a pepper‑ball by ICE; multiple recent accounts instead document journalists, protesters, and community members being hit by pepper‑ball munitions at ICE facilities and demonstrations. The available sources (dated September–November 2025) describe incidents in Chicago, Los Angeles and Portland, note active investigations and protests, and show no direct evidence that a pastor was targeted or injured by ICE with a pepper ball <a href="https://web.archive.org/web/20251110155956mp_/https://www.cbsnews.com/chicago/news/feds-fire-pepper-ball-at-cbs-chicago-reporters-truck/">[1]</a> <a href="https://web.archive.org/web/20251110155956mp_/https://www.thecorsaironline.com/corsair/2025/9/11/z749m9bixh4cur754hg9rlib50g9w1">[2]</a> <a href="https://web.archive.org/web/20251110155956mp_/https://www.usnews.com/news/best-states/illinois/articles/2025-09-20/ice-denies-using-excessive-force-as-it-broadens-immigration-arrests-in-chicago">[3]</a> <a href="https://web.archive.org/web/20251110155956mp_/https://www.theguardian.com/us-news/2025/sep/19/ice-protest-chicago-police#:~:text=Federal%20law%20enforcement%20agents%20used,building%20in%20Chicago%20on%20Friday.">[4]</a>.</p>
</blockquote>
<p>These certainly look authoritative. They’re written in complete English sentences, with professional diction and lots of nods to neutrality and skepticism. There are lengthy, point-by-point explanations with extensively cited sources. The second article goes so far as to suggest “who might be promoting a pastor-victim narrative”.</p>
<p>The problem is that both articles are false. <a href="https://religionnews.com/2025/10/07/in-chicago-clergy-and-religious-protesters-say-ice-is-threatening-their-religious-freedom/">This</a> <a href="https://www.cnn.com/2025/10/08/us/video/amanda-tovar-witness-chicago-reverend-david-black-ice-pepper-balls">story</a> <a href="https://www.youtube.com/watch?v=DVKXujeagO0">was</a> <a href="https://abcnews.go.com/US/video/chicago-pastor-sues-ice-alleging-agents-shot-pepper-126689554">broadly</a> <a href="https://chicago.suntimes.com/immigration/2025/11/06/minister-david-black-gregory-bovino-broadview-pepperballs-protest-court-ruling-sara-ellis">reported</a>, as in this <a href="https://www.fox32chicago.com/news/video-federal-agent-shoot-chicago-pastor-head-pepper-ball-broadview-ice-protest">October 8th Fox News article</a> unambiguously titled “Video shows federal agent shoot Chicago pastor in head with pepper ball during Broadview ICE protest”. DHS Assistant Secretary Tricia McLaughlin even went on <a href="https://x.com/TriciaOhio/status/1976026380841386287">X to post about it</a>. This event definitely happened, and it would not have been hard to find coverage at the time these articles were published. It was, quite literally, all over the news.</p>
<p>Or maybe the articles are sort of true. Each summary disclaims that its findings are based on “the available materials supplied for review”, or “the provided materials”. This is splitting hairs. Source selection is an essential part of the fact-checking process, and Factually <a href="https://factually.co/faq">selects its own sources</a> in response to user questions. Instead of finding authoritative sources, Factually selected irrelevant ones and spun them into a narrative which is the opposite of true. Many readers will not catch this distinction. Indeed, I second-guessed myself when I saw the Factually articles—and I read the original reporting when it happened.</p>
<p>“These conversations matter for democracy,” says the call-to-action at the top of <a href="https://web.archive.org/web/20251110155956/https://factually.co/fact-checks/justice/pastor-shot-by-ice-pepper-ball-493ff8">every Factually article</a>. The donation button urges readers to “support independent reporting.”</p>
<p>But this is not reporting. Reporters go places and talk to people. They take photographs and videos. They search through databases, file FOIA requests, read court transcripts, evaluate sources, and integrate all this with an understanding of social and historical context. People go to journalism school to do this.</p>
<p><a href="https://factually.co/faq">What Factually does</a> is different. It takes a question typed by a user and hands it to a Large Language Model, or LLM, to generate some query strings. It performs up to three Internet search queries, then feeds the top nine web pages it found to a pair of LLMs, and asks them to spit out some text shaped like a fact check. This text may resemble the truth, or—as in these cases—utterly misrepresent it.</p>
<p>Is the East Wing of the White House <a href="https://www.cnn.com/2025/10/26/politics/white-house-east-wing-history">still there</a>? Factually is happy to <a href="https://web.archive.org/web/20251111045206/https://factually.co/fact-checks/politics/trump-white-house-renovation-bba06d">gaslight readers</a> into thinking it wasn’t demolished. Did David Ballard <a href="https://www.cnn.com/2025/10/03/us/chicago-apartment-ice-raid">see a Black Hawk helicopter</a> used in the South Shore immigration raid, like the one in DHS Secretary Kristi Noem’s <a href="https://x.com/Sec_Noem/status/1974443512017178924">video montage of that night</a>? Might it have been <a href="https://www.helis.com/database/cn/51171/">03-26987</a> or <a href="https://www.helis.com/database/cn/44162/">86-24548</a>, both of which were in Chicago in the weeks before the raid? Factually is confident that “no direct, documented evidence” supports this story, and suggests readers <a href="https://web.archive.org/web/20251111045221/https://factually.co/fact-checks/politics/ice-blackhawks-operations-in-us-cities-53a97d">might have confused the helicopter with Chicago’s hockey team</a>. Did ICE announce <a href="https://www.nytimes.com/2025/08/05/us/politics/ice-bonuses-immigrants-deportations.html">a cash bonus program for speedy deportations</a>, then retract it a few hours later? Factually.co <a href="https://factually.co/fact-checks/politics/ice-deportation-quotas-bonuses-e340e5">knows nothing about that story</a>. Over in my neck of the woods, Factually <a href="https://web.archive.org/web/20251110203032/factually.co/fact-checks/technology/is-mongodb-strong-serializable-55a4ba">happily conflates</a> Serializability with Snapshot Isolation, and repeatedly misleads users into thinking they can get Strong Serializable guarantees by turning on <code>snapshot</code> read concern and <code>majority</code> write concern. To be clear, <a href="https://jepsen.io/analyses/mongodb-4.2.6">this won’t work</a>.</p>
<p><b>Calling Factually’s articles “fact checks” is a category error.</b> A fact checker diligently investigates a claim, reasons about it, and ascertains some form of ground truth. Fact checkers are held to a higher evidentiary standard; they are what you rely on when you want to be sure of something. They are supposed to be right when other sources are wrong. The web pages on <a href="https://factually.co">factually.co</a> are fact-check-flavored slurry, extruded by a statistical model which <a href="https://garymarcus.substack.com/p/llms-dont-do-formal-reasoning-and">does not understand what it is doing</a>. They are fancy Mad Libs.</p>
<p>The end result of this absurd process is high-ranking, authoritative-sounding web pages which sometimes tell the truth, and sometimes propagate lies. Factually is a stochastic disinformation machine which exacerbates the very problems fact-checkers are supposed to solve.</p>
<p>Please stop doing this.</p></content>
</entry>
<entry>
<id>https://aphyr.com/posts/397-i-want-you-to-understand-chicago</id>
<title>I Want You to Understand Chicago</title>
<published>2025-11-08T13:15:07-05:00</published>
<updated>2025-11-08T13:15:07-05:00</updated>
<link rel="alternate" href="https://aphyr.com/posts/397-i-want-you-to-understand-chicago"></link>
<author>
<name>Aphyr</name>
<uri>https://aphyr.com/</uri>
</author>
<content type="html"><p>I want you to <a href="https://dansinker.com/posts/2025-10-24-understand/">understand</a> what it is like to live in Chicago during this time.</p>
<p>Every day my phone buzzes. It is a neighborhood group: four people were
kidnapped at the corner drugstore. A friend a mile away sends a Slack message:
she was at the scene when masked men assaulted and abducted two people on the
street. A plumber working on my pipes is distraught, and I find out that two of his
employees were kidnapped that morning. A week later it happens again.</p>
<p>An email arrives. Agents with guns <a href="https://chicago.suntimes.com/immigration/2025/11/05/daycare-teacher-taken-by-ice-north-side-immigration">have chased a teacher</a> into the school where she
works. They did not have a warrant. They dragged her away, ignoring her and her colleagues’ pleas to show proof of her documentation. That evening I stand a few feet from the parents of Rayito de Sol and listen to them describe, with anguish, how good
Ms. Diana was to their children. What it is like to have <a href="https://ca.news.yahoo.com/video-shows-ice-agents-grabbing-202310296.html">strangers with guns
traumatize your
kids</a>.
For a teacher to hide a three-year-old child <a href="https://www.chalkbeat.org/chicago/2025/11/05/daycare-worker-pulled-out-of-school-by-armed-federal-agents-traumatizing-parents-say/">for fear they might be
killed</a>.
How their relatives will no longer leave the house. I hear the pain and fury in
their voices, and I wonder who will be next.</p>
<p>Understand what it is to pray in Chicago. On September 19th, Reverend David Black, lead pastor at First Presbyterian Church of Chicago, was <a href="https://wgntv.com/news/chicago-news/i-wonder-about-their-intentions-chicago-pastor-speaks-out-after-ice-agents-shoot-him-in-head-with-pepper-balls-in-broadview/">praying outside the ICE detention center in Broadview</a> when a DHS agent <a href="https://www.msn.com/en-us/news/us/reverend-shot-by-ice-shares-chilling-warning-after-being-left-with-dent-in-his-head/ar-AA1PHXPe">shot him in the head with pepper balls</a>. Pepper balls are <a href="https://store-c19drjba2a.mybigcommerce.com/content/PEP-22018-TRP-LE-Manual-042423.pdf">never supposed to be fired at the head</a> because they can seriously injure, or even kill. “We could hear them laughing as they were shooting us from the roof,” Black recalled. He is not the only member of the clergy ICE has assaulted. Methodist pastor Hannah Kardon was violently arrested <a href="https://www.youtube.com/watch?v=eARiC31koHo">on October 17th</a>, and Baptist pastor Michael Woolf was shot with pepper balls <a href="https://wordandway.org/2025/11/04/baptist-pastor-shot-in-leg-by-officer-during-all-saints-day-march-outside-ice-facility/">on November 1st</a>.</p>
<p>Understand what it is to sleep in Chicago. On the night of <a href="https://www.npr.org/2025/10/24/nx-s1-5570113/chicago-south-shore-building-residents-recount-humiliating-ice-raid">September
30th</a>,
federal agents rappelled from a Black Hawk helicopter to execute a raid on an apartment
building on the South Shore. Roughly three hundred agents deployed flashbangs,
busted down doors, and took people indiscriminately. US citizens—some women and children—were grabbed from their beds, marched outside without even a chance to dress, zip-tied, and <a href="https://www.youtube.com/watch?v=vFh5yBIxTpc">loaded into
vans</a>. Residents returned to <a href="https://blockclubchicago.org/2025/10/02/south-shore-residents-return-to-ransacked-apartments-try-to-move-out-after-ice-raid-it-looks-like-hell/">find
their windows and doors broken</a> and their belongings
stolen. Despite the violence of the raid, it appears <a href="https://www.propublica.org/article/chicago-venezuela-immigration-ice-fbi-raids-no-criminal-charges">no criminal charges</a> were filed.</p>
<p>Understand what it is to lead Chicago. On October 3rd, Alderperson Jesse Fuentes <a href="https://blockclubchicago.org/2025/10/15/ald-jesse-fuentes-gears-up-to-sue-after-being-handcuffed-by-ice-agent/">asked federal agents</a> to produce a judicial warrant and allow an injured man at the hospital access to an attorney. The plainclothes agents grabbed Fuentes, handcuffed her, and took her outside the building. Her lawsuit <a href="https://chicago.suntimes.com/city-hall/2025/10/21/ald-jessie-fuentes-tort-claim-ice-agents-humboldt-park">is ongoing</a>. On October 21st, Representative Hoan Huynh was <a href="https://www.cbsnews.com/chicago/news/illinois-state-rep-hoan-huynh-border-patrol-agents-gun-drawn/">going door-to-door</a> to inform businesses of their immigration rights when he was attacked by six armed CBP agents, who boxed in his vehicle and pointed a gun at his face. Huynh says the agents <a href="https://www.fox32chicago.com/news/chicago-lawmaker-stopped-gunpoint">tried to bash open his car window</a>.</p>
<p>Understand what it is to live in Chicago. On October 9th, Judge Ellis issued a <a href="https://www.nprillinois.org/chicago-il/2025-10-09/judge-grants-restraining-order-protecting-protesters-journalists-in-chicago-area-protests">temporary restraining
order</a>
requiring that federal agents refrain from deploying tear gas or shooting
civilians without an imminent threat, and requiring two audible warnings. ICE
and CBP have flouted these court orders. On October 12th, federal agents
<a href="https://chicago.suntimes.com/immigration/2025/10/12/ice-chicago-albany-park-tear-gas">shoved an attorney to the
ground</a>
who tried to help a man being detained in Albany Park. Agents refused to
identify themselves or produce a warrant, then deployed tear gas without
warning. On October 14th, agents rammed a car on the East Side, then
<a href="https://www.chicagotribune.com/2025/10/14/ice-deploys-tear-gas-after-crash/">tear-gassed neighbors and
police</a>.</p>
<p>On October 23rd, federal agents <a href="https://blockclubchicago.org/2025/10/22/border-patrol-agents-descend-on-little-village-sparking-fury-fear-in-neighborhood/">detained seven
people</a>,
including two U.S. citizens and an asylum seeker, in Little Village. Two worked
for Alderperson Michael Rodriguez: his chief of staff Elianne Bahena, and
police district council member Jacqueline Lopez. Again in Little Village, agents <a href="https://blockclubchicago.org/2025/10/23/immigration-agents-protesters-clash-in-little-village-for-2nd-day-in-a-row/">tear-gassed and pepper-sprayed protestors</a>, seizing two high school students and a security guard, among others. Alderperson Byron Sigcho-Lopez reported that agents assaulted one of the students, who had blood on his face. On October 24th, agents in
Lakeview emerged from unmarked cars, climbed a locked fence to enter a
private yard, and <a href="https://blockclubchicago.org/2025/10/24/lakeview-street-tear-gassed-by-agents-amid-north-side-immigration-surge-it-hit-home/">kidnapped a construction
worker</a>.
As neighbors gathered, they deployed four tear gas canisters. That same day, a few blocks away,
men with rifles jumped out of SUVs and <a href="https://blockclubchicago.org/2025/10/24/lakeview-street-tear-gassed-by-agents-amid-north-side-immigration-surge-it-hit-home/">assaulted a man standing at a bus
stop</a>.</p>
<p>“They were beating him,” said neighbor Hannah Safter. “His face was bleeding”.</p>
<p>They returned minutes later and attacked again. A man from the Laugh Factory, a
local comedy club, had come outside with his mother and sister. “His mom put
her body in between them, and one of the agents kicked her in the face”.</p>
<p>Understand what it is to be a family in Chicago. On October 25th, agents
arrested a 70-year-old man and <a href="https://blockclubchicago.org/2025/10/26/federal-agents-use-tear-gas-again-this-time-in-northwest-side-confrontations/">threw a 67-year old woman to the
ground</a> in Old Irving Park, <a href="https://abcnews.go.com/US/border-patrol-agents-fire-allegedly-disrupting-childrens-halloween/story?id=126900354">then deployed tear gas</a>, disrupting a <a href="https://blockclubchicago.org/2025/10/28/after-halloween-parade-ruined-by-federal-agents-old-irving-park-neighbors-furious/">children’s Halloween parade</a>. One parent spoke to <a href="https://www.nbcnews.com/news/us-news/chicago-immigration-enforcement-children-tear-gas-border-patrol-rcna241629">NBC news</a> about her two-year-old child’s response to the gas. The same day, agents <a href="https://chicago.suntimes.com/immigration/2025/10/26/northwest-side-ice-arrests-tear-gas">deployed tear gas against residents of Avondale</a>.</p>
<p>“Kids dressed in Halloween costumes walking to a parade do not pose an immediate threat to the safety of a law enforcement officer. They just don’t. And you can’t use riot control weapons against them,” <a href="https://blockclubchicago.org/2025/10/28/after-halloween-parade-ruined-by-federal-agents-old-irving-park-neighbors-furious/">Judge Ellis said</a> to Border Patrol chief Gregory Bovino.</p>
<p>Understand how the government speaks about Chicago. On November 3rd, paralegal Dayanne Figueroa, a US citizen, was driving to work when federal agents <a href="https://www.chicagotribune.com/2025/11/03/chicago-woman-collision-ice-accountability/">crashed into her car</a>, drew their guns, and dragged her from the vehicle. Her car was left behind, coffee still in the cup holder, keys still in the car. The Department of Homeland Security blamed her, claiming she “violently resisted arrest, injuring two officers.” You can <a href="https://www.youtube.com/watch?v=vLozt6ThXfE">watch the video for yourself</a>.</p>
<p>“All uses of force have been more than exemplary,” Bovino <a href="https://wgntv.com/news/operation-midway-blitz/judge-border-patrol-commander-lied-about-use-of-force/">stated in a recent deposition</a>. He is, as Judge Ellis put it, lying. Bovino <a href="https://abcnews.go.com/US/border-patrol-commander-admitted-lied-tear-gas-incident/story?id=127283392">personally threw a tear gas canister in Little Village</a>. He claimed <a href="https://wgntv.com/news/operation-midway-blitz/judge-border-patrol-commander-lied-about-use-of-force/">in a sworn deposition</a> that he was struck in the head by a rock before throwing the canister, and when videos showed no rock, <a href="https://chicago.suntimes.com/public-safety/2025/11/04/plaintiffs-lawyers-bovino-views-protesters-as-violent-rioters-tells-officers-to-go-hard-against-them">admitted that he lied</a> about the event. When shown video of himself <a href="https://wgntv.com/news/operation-midway-blitz/judge-border-patrol-commander-lied-about-use-of-force/">tackling peaceful protestor Scott Blackburn</a>, Bovino refused to acknowledge that he tackled the man. Instead, he claimed, “That’s not a reportable use of force. The use of force was against me.”</p>
<p>“I find the government’s evidence to be simply not credible,” <a href="https://www.chicagotribune.com/2025/11/06/operation-midway-blitz-injunction/">said Judge Ellis</a> in her November 6th ruling. “The use of force shocks the conscience.”</p>
<p>Understand what it is to be Chicago. To <a href="https://blockclubchicago.org/2025/10/15/hundreds-pack-chicago-whistlemania-events-in-effort-to-fight-ice-we-have-to-stand-up-for-one-another/">carry a whistle</a> and have the <a href="https://www.icirr.org/fsn">ICIRR hotline</a> in your phone. To wake up from nightmares of shouting militiamen and guns in your face. To rehearse every day how to calmly refuse entry, how to identify a judicial warrant, how to film and narrate an assault. To wake to helicopters buzzing your home, to feel your heart rate spike at the car horns your neighbors use to alert each other to ICE and CBP enforcement. To know that perhaps three thousand of your fellow Chicagoans have <a href="https://www.nbcchicago.com/investigations/could-ice-have-lost-3000-immigrant-arrestees-in-chicago/3844220/">been disappeared</a> by the government, but <a href="https://www.wbez.org/immigration/2025/09/12/immigration-customs-enforcement-ice-arrests-detentions-data-deportation-project-trac">no one really knows for sure</a>. To know that many of those seized were imprisoned a few miles away, <a href="https://www.pbs.org/newshour/nation/judge-calls-alleged-conditions-at-chicago-area-immigration-site-disgusting">as many as a hundred and fifty people in a cell</a>, denied access to food, water, sanitation, and legal representation. To know that many of these agents—masked, without badge numbers or body cams, and refusing to identify themselves—will never face justice. To wonder what they tell their children.</p>
<p>The masked thugs who attack my neighbors, who point guns at elected officials and shoot pastors with pepper balls, who tear-gas neighborhoods, terrify children, and drag teachers and alderpeople away in handcuffs <a href="https://en.wikipedia.org/wiki/Schutzstaffel">are not unprecedented</a>. We knew this was coming a year ago, when <a href="https://www.npr.org/2024/11/12/nx-s1-5181962/trump-promises-a-mass-deportation-on-day-1-what-might-that-look-like">Trump promised mass deportations</a>. We knew it was coming, and seventy-seven million of us voted for it anyway.</p>
<p>This weight presses on me every day. I am flooded with stories. There are so many I cannot remember them all; cannot keep straight who was gassed, beaten, abducted, or shot. I write to leave a record, to stare at the track of the tornado. I write to leave a warning. I write to call for help.</p>
<p>I want you to understand, regardless of your politics, the historical danger of a secret police. What happens when a militia is deployed in our neighborhoods and against our own people. Left unchecked their mandate will grow; the boundaries of acceptable identity and speech will shrink. I want you to think about elections in this future. I want you to understand that every issue you care about—any hope of participatory democracy—is downstream of this.</p>
<p>I want you to understand what it is to love Chicago. To see your neighbors make the heartbreaking choice between showing up for work or staying safe. To <a href="https://blockclubchicago.org/2025/10/18/thousands-gather-to-protest-trump-at-chicagos-no-kings-rally-downtown/">march two miles long</a>, calling out: “This is what Chicago sounds like!” To see your representatives put <a href="https://www.youtube.com/watch?v=tWuIONYSwhA">their bodies on the line</a> and their <a href="https://abc7chicago.com/post/chicago-daycare-worker-rayito-de-sol-arrested-ice-front-children-witnesses-say/18116866/">voices in the fight</a>. To <a href="https://blockclubchicago.org/2025/10/08/chicago-neighbors-are-forming-watches-near-schools-to-protect-students-guardians-from-ice/">form patrols</a> to walk kids safely to school. To join <a href="https://dailynorthwestern.com/2025/11/05/city/icirr-eyes-on-ice-text-network-alerts-community-to-verified-federal-immigration-enforcement-activity/">rapid-response networks</a> to document and alert your neighbors to immigration attacks. For mutual aid networks to <a href="https://blockclubchicago.org/2025/11/05/from-chicago-to-la-neighborly-solidarity-fuels-resistance-to-ice/">deliver groceries</a> and <a href="https://blockclubchicago.org/2025/10/17/chicago-cyclists-are-buying-out-tamale-carts-to-keep-vendors-home-and-safe-from-ice/">buy out street vendors</a> so they can go home safe. To see your local journalists <a href="https://blockclubchicago.org/2025/10/07/block-club-chicago-news-organizations-sue-feds-over-first-amendment-violations/">take the federal government to court</a>. To talk to neighbor after neighbor, friend after friend, and hear yes, yes, it’s all hands on deck.</p>
<p>I want you to understand Chicago.</p>
<p><em>This essay has been building—eating at me, really—for the last two months. My thanks to all the friends, family, neighbors and colleagues who have talked with me about ICE and CBP. In particular, I want to acknowledge the families of Rayito de Sol—parents like Maria Guzman and Tara Goodarzi, whose powerful speeches have been lodged in my chest. Also the members of <a href="https://www.onenorthside.org/">One Northside</a>, Aldermen Vasquez and Martin, Senator Simmons, and everyone who spoke at the rally Wednesday. Your call to “tell the story” caught me, and I hope I have done some small part of that work here.</em></p>
<p><em>I was particularly moved by Kelly Hayes’ <a href="https://organizingmythoughts.org/in-chicago-we-run-toward-danger-together/">In Chicago, We Run Toward Danger Together</a> and Dan Sinker’s <a href="https://dansinker.com/posts/2025-10-24-understand/">What I Need You To Understand</a>, which inspired the core motif of this essay. His follow-up <a href="https://dansinker.com/posts/2025-11-05-ghosts/">Ghosts in the Graveyard</a> is also worth your time. Cam’s <a href="https://buttondown.com/camrodriguez/archive/11525-on-repacking-your-unpacked-funeral-clothes/">On Repacking Your Unpacked Funeral Clothes</a> breaks my heart. Laurie Merrell’s <a href="https://lauriemerrell.com/posts/dispatch-from-occupied-chicago/">Dispatch from Occupied Chicago</a> is a lucid, reflective piece which mirrors my own feelings.</em></p>
<p><em>ICE and CBP affect us all: south, east, north and west; city and suburb. In particular, ICE has hit Little Village, a predominantly Latino neighborhood on the Southwest Side, <a href="https://borderlessmag.org/2025/10/24/when-ice-came-to-little-village-residents-stood-up-we-are-in-solidarity/">hard in recent weeks</a>. Marginalized communities especially deserve our focus and care.</em></p>
<p><em>You can donate your time and money to organizations like <a href="https://www.icirr.org/">ICIRR</a>, which connects immigrants and refugees with legal aid and social services. I also suggest a donation to the non-profit <a href="https://blockclubchicago.org/">Block Club Chicago</a> or <a href="https://chicago.suntimes.com/">Chicago Sun-Times</a>, both of whom have been doing exceptional local journalism in this dark time. Without their reporting, this would have been impossible.</em></p></content>
</entry>
<entry>
<id>https://aphyr.com/posts/396-notes-on-prothean-ai</id>
<title>Notes on "Prothean AI"</title>
<published>2025-11-02T20:38:55-05:00</published>
<updated>2025-11-02T20:38:55-05:00</updated>
<link rel="alternate" href="https://aphyr.com/posts/396-notes-on-prothean-ai"></link>
<author>
<name>Aphyr</name>
<uri>https://aphyr.com/</uri>
</author>
<content type="html"><p><em>If this were one person, I wouldn’t write this publicly. Since there are apparently multiple people on board, and they claim to be looking for investors, I think the balance falls in favor of disclosure.</em></p>
<p>Last week Prothean Systems <a href="https://www.facebook.com/reel/2528744020845660">announced they’d surpassed AGI</a> and <a href="https://www.beprothean.org/TECHNICAL_WHITE_PAPER#9-conclusion">called for the research community</a> to “verify, critique, extend, and improve upon” their work. Unfortunately, Prothean Systems has not published the repository they say researchers should use to verify their claims. However, based on their posts, web site, and public GitHub repositories, I can offer a few basic critiques.</p>
<h2><a href="#arc-agi-2" id="arc-agi-2">ARC-AGI-2</a></h2>
<p>First: Prothean’s core claim, repeated in the <a href="https://www.beprothean.org/TECHNICAL_WHITE_PAPER">white paper</a>, the <a href="https://www.beprothean.org/FAQ">FAQ</a>, and <a href="https://www.beprothean.org/PRESS_RELEASE">the press release</a>, is that Prothean has <a href="https://www.facebook.com/photo.php?fbid=10236879950353996&amp;set=p.10236879950353996&amp;type=3">successfully solved</a> all 400 tasks of the <a href="https://arcprize.org/arc-agi/2/">ARC-AGI-2 benchmark</a>:</p>
<blockquote>
<p>We present Prothean Emergent Intelligence, a novel five-pillar computational architecture that achieved 100% accuracy on all 400 tasks of the ARC-AGI-2 challenge in 0.887 seconds.</p>
</blockquote>
<!-- -->
<blockquote>
<p>This system achieved 100% accuracy on all 400 tasks of the ARC-AGI-2 challenge in 0.887 seconds—a result previously considered impossible for artificial intelligence systems.</p>
</blockquote>
<!-- -->
<blockquote>
<p>ARC-AGI-2 is specifically designed to resist gaming:</p>
<ul>
<li>400 unique, novel tasks</li>
<li>No training data available</li>
</ul>
</blockquote>
<p>It is not possible to solve “all 400 tasks of the ARC-AGI-2 challenge” because ARC-AGI-2 does not have 400 evaluation tasks to solve. Nor is it true that ARC-AGI-2 has no training data. The ARC-AGI-2 web site and docs are clear about this: the workload consists of <a href="https://github.com/arcprize/ARC-AGI-2?tab=readme-ov-file#dataset-composition">“1,000 public training tasks and 120 public evaluation tasks”</a>.</p>
<p>Prothean System’s “verification protocol” <a href="https://www.beprothean.org/TECHNICAL_WHITE_PAPER">instructs researchers</a> to download these 400 tasks from a <a href="https://github.com/fchollet/ARC-AGI/arc-agi-2-dataset.zip">non-existent URL</a>:</p>
<blockquote>
<p><strong>Step 3: Obtain ARC-AGI-2 Dataset</strong></p>
<pre><code><span></span><span class="c1"># Download official dataset</span>
wget https://github.com/fchollet/ARC-AGI/arc-agi-2-dataset.zip
</code></pre>
</blockquote>
<p>This isn’t even the right repository. ARC-AGI-2 is at <a href="https://github.com/arcprize/ARC-AGI-2">https://github.com/arcprize/ARC-AGI-2</a>.</p>
<h2><a href="#local-operations" id="local-operations">Local Operations</a></h2>
<p>Prothean Systems repeatedly claims that its operations are purely local. The <a href="https://www.facebook.com/reel/2528744020845660">announcement post</a> states:</p>
<blockquote>
<p>🧬 WE SURPASSED AGI. THIS IS EGI. NOT AI. HERE’S THE PROOF.</p>
<p>Welcome to Prothean EGI.<br>
──────────<br>
After years of research and months of physical development, I’ve been building something that shouldn’t exist yet.</p>
<p>After months of solo development, I put together a small strike force team—the Prothean Systems team—to bring this vision to life.</p>
<p>Prothean Systems — Emergent General Intelligence (EGI) that lives on your device, remembers everything, and never leaves your hands.</p>
<p>No servers. No uploads. No corporate AI deciding what you can know.</p>
</blockquote>
<p>The demo on <a href="https://www.beprothean.org/">beprothean.org</a> also advertises “no servers” and “zero uploads”. This is obviously false. Typing almost anything into this box, such as “what are the five pillars”, triggers two queries to Wikipedia and ten messages, including a mix of reads and writes, to the <a href="https://firebase.google.com/">Firebase</a> hosted database service:</p>
<p><img class="attachment pure-img" src="/data/posts/396/chat.png" alt="A screenshot of the Prothean intelligence demo. It invites me to ask about any of the five pillars, and advises that it runs entirely in browser, with no servers or uploads. I ask 'What are the five pillars?, and it responds with a snippet from Wikipedia." title="A screenshot of the Prothean intelligence demo. It invites me to ask about any of the five pillars, and advises that it runs entirely in browser, with no servers or uploads. I ask 'What are the five pillars?, and it responds with a snippet from Wikipedia."></p>
<p><img class="attachment pure-img" src="/data/posts/396/2025-11-02T19-52-22-network.png" alt="A screenshot of the network traffic issued by the Prothean &quot;local&quot; demo." title="A screenshot of the network traffic issued by the Prothean &quot;local&quot; demo."></p>
<h2><a href="#compression" id="compression">Compression</a></h2>
<p>Prothean’s <a href="https://www.facebook.com/reel/2528744020845660">launch video</a> explains that Prothean uses a multi-tier compression system called “Memory DNA”. This system “actually looks at the data, understands its characteristics, and then applies the absolute best compression technique for it”. The white paper lists nine compression tiers:</p>
<blockquote>
<p><strong>Compression Cascade:</strong><br>
1. <strong>Semantic Extraction</strong> (40% reduction) - Core meaning preservation<br>
2. <strong>Pattern Recognition</strong> (25% reduction) - Recurring structure identification<br>
3. <strong>Fibonacci Sequencing</strong> (15% reduction) - φ-ratio temporal organization<br>
4. <strong>Harmonic Resonance</strong> (10% reduction) - Frequency-domain optimization<br>
5. <strong>Contextual Pruning</strong> (8% reduction) - Relevance-based filtering<br>
6. <strong>Recursive Abstraction</strong> (6% reduction) - Meta-pattern extraction<br>
7. <strong>Golden Ratio Weighting</strong> (4% reduction) - φ-importance scaling<br>
8. <strong>Temporal Decay</strong> (3% reduction) - Age-based compression<br>
9. <strong>Neural Synthesis</strong> (2% reduction) - Final integration</p>
</blockquote>
<p>The demo on <a href="https://beprothean.org">beprothean.org</a> does nothing of the sort. Instead, it makes <a href="https://github.com/CaptainFuzzyFTW/beprothean-site/blob/b4ee6a4b6e12a624718c63c6bea615a0b32efeea/index.html#L1247">a single call</a> to the open-source <a href="https://pieroxy.net/blog/pages/lz-string/index.html">lz-string library</a>, which is based on <a href="https://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Welch">LZW</a>, a broadly-used compression algorithm from 1984.</p>
<pre><code><span></span><span class="kd">function</span> <span class="nx">demoMemoryDNA</span><span class="p">(){</span>
<span class="kr">const</span> <span class="nx">text</span> <span class="o">=</span> <span class="nx">$</span><span class="p">(</span><span class="s1">'mdna-input'</span><span class="p">).</span><span class="nx">value</span><span class="p">.</span><span class="nx">trim</span><span class="p">();</span>
<span class="p">...</span>
<span class="kr">const</span> <span class="nx">compressed</span> <span class="o">=</span> <span class="nx">LZString</span><span class="p">.</span><span class="nx">compressToUTF16</span><span class="p">(</span><span class="nx">text</span><span class="p">);</span>
</code></pre>
<h2><a href="#guardian" id="guardian">Guardian</a></h2>
<p>Prothean advertises a system called “Guardian”: an “integrity firewall that validates every operation” and “detects sensitive data, prevents drift, enforces alignment at runtime”. The demo does not appear to address drift or alignment in any way. Instead, it matches strings against <a href="https://github.com/CaptainFuzzyFTW/beprothean-site/blob/b4ee6a4b6e12a624718c63c6bea615a0b32efeea/index.html#L1247">three regular expressions</a>, looking for things like e-mail addresses, credit cards, and API keys.</p>
<pre><code><span></span><span class="c1">// Guardian: Pattern detection &amp; integrity validation</span>
<span class="kd">function</span> <span class="nx">runGuardian</span><span class="p">(</span><span class="nx">text</span><span class="p">){</span>
<span class="p">...</span>
<span class="k">if</span><span class="p">(</span><span class="sr">/\b\w+@\w+\.\w+/</span><span class="p">.</span><span class="nx">test</span><span class="p">(</span><span class="nx">text</span><span class="p">)){</span> <span class="nx">patterns</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="s1">'email'</span><span class="p">);</span> <span class="nx">threatLevel</span> <span class="o">+=</span> <span class="mi">1</span><span class="p">;</span> <span class="p">}</span>
<span class="k">if</span><span class="p">(</span><span class="sr">/\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}/</span><span class="p">.</span><span class="nx">test</span><span class="p">(</span><span class="nx">text</span><span class="p">)){</span> <span class="nx">patterns</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="s1">'card'</span><span class="p">);</span> <span class="nx">threatLevel</span> <span class="o">+=</span> <span class="mi">3</span><span class="p">;</span> <span class="p">}</span>
<span class="k">if</span><span class="p">(</span><span class="sr">/(password|secret|api[_-]?key|token)/i</span><span class="p">.</span><span class="nx">test</span><span class="p">(</span><span class="nx">text</span><span class="p">)){</span> <span class="nx">patterns</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="s1">'secret'</span><span class="p">);</span> <span class="nx">threatLevel</span> <span class="o">+=</span> <span class="mi">2</span><span class="p">;</span> <span class="p">}</span>
<span class="p">...</span>
<span class="k">return</span> <span class="p">{</span> <span class="nx">patterns</span><span class="p">,</span> <span class="nx">threatLevel</span><span class="p">,</span> <span class="nx">integrity</span><span class="p">,</span> <span class="nx">safe</span><span class="o">:</span> <span class="nx">threatLevel</span> <span class="o">&lt;</span> <span class="mi">5</span> <span class="p">};</span>
<span class="p">}</span>
</code></pre>
<h2><a href="#semantic-bridging" id="semantic-bridging">Semantic Bridging</a></h2>
<p>Prothean’s “Universal Pattern Engine” invites users to “connect two concepts through semantic bridging”. This semantic bridging system has no awareness of semantics. Instead, it is <a href="https://github.com/CaptainFuzzyFTW/beprothean-site/blob/b4ee6a4b6e12a624718c63c6bea615a0b32efeea/index.html#L1330-L1334">based entirely on the number of letters in the two concepts</a> and picking some pre-determined words out of a list:</p>
<pre><code><span></span> <span class="kr">const</span> <span class="nx">a</span> <span class="o">=</span> <span class="nx">$</span><span class="p">(</span><span class="s1">'upe-a'</span><span class="p">).</span><span class="nx">value</span><span class="p">.</span><span class="nx">trim</span><span class="p">();</span>
<span class="kr">const</span> <span class="nx">b</span> <span class="o">=</span> <span class="nx">$</span><span class="p">(</span><span class="s1">'upe-b'</span><span class="p">).</span><span class="nx">value</span><span class="p">.</span><span class="nx">trim</span><span class="p">();</span>
<span class="p">...</span>
<span class="c1">// Semantic bridge building</span>
<span class="kr">const</span> <span class="nx">bridges</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'system'</span><span class="p">,</span> <span class="s1">'design'</span><span class="p">,</span> <span class="s1">'architecture'</span><span class="p">,</span> <span class="s1">'implementation'</span><span class="p">,</span> <span class="s1">'protection'</span><span class="p">,</span>
<span class="s1">'control'</span><span class="p">,</span> <span class="s1">'ownership'</span><span class="p">,</span> <span class="s1">'agency'</span><span class="p">,</span> <span class="s1">'autonomy'</span><span class="p">,</span> <span class="s1">'dignity'</span><span class="p">,</span> <span class="s1">'privacy'</span><span class="p">];</span>
<span class="c1">// Calculate semantic distance (simulated)</span>
<span class="kr">const</span> <span class="nx">similarity</span> <span class="o">=</span> <span class="p">(</span><span class="nx">a</span><span class="p">.</span><span class="nx">length</span> <span class="o">+</span> <span class="nx">b</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="o">%</span> <span class="mi">10</span> <span class="o">/</span> <span class="mi">10</span><span class="p">;</span>
<span class="p">...</span>
<span class="kr">const</span> <span class="nx">selectedBridges</span> <span class="o">=</span> <span class="nx">bridges</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">3</span> <span class="o">+</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">(</span><span class="nx">similarity</span> <span class="o">*</span> <span class="mi">3</span><span class="p">));</span>
</code></pre>
<h2><a href="#tree-height" id="tree-height">Tree Height</a></h2>
<p>The white paper describes a “Radiant Data Tree” structure, which uses a &quot;Fibonacci-branching tree structure with φ-ratio organization. The depth of this tree is given as:</p>
<blockquote>
<p>Depth(n) = φ^n / √5 (rounded to nearest Fibonacci number)</p>
</blockquote>
<p>Depth is <a href="https://www.andrew.cmu.edu/course/15-121/lectures/Trees/trees.html">a property of a specific node</a>, not a tree as a whole—I assume they mean <code>Height(n)</code>. In either case this is impossible. The height and maximum depth of a tree are bounded by the number of edges between the deepest node and the root. Trees cannot have a height which grows as φ<sup>n</sup>, because this implies that the depth increases <em>faster</em> than the number of nodes. Per this equation, a “Radiant Data Tree” containing just six nodes must have a height of eight—and must therefore contain at least nine nodes, not six.</p>
<h2><a href="#transcendence-score" id="transcendence-score">Transcendence Score</a></h2>
<p>The white paper also introduces a transcendence score <code>T</code> which measures “mathematical beauty and emergent capability”:</p>
<blockquote>
<pre><code>T = (0.25×C + 0.25×(1-M) + 0.3×N + 0.2×P) × φ mod 1.0
</code></pre>
<p>Where:</p>
<ul>
<li>C = Complexity handling (0 to 1)</li>
<li>M = Memory compression ratio (0 to 1)</li>
<li>N = Neural emergence score (0 to 1)</li>
<li>P = Pattern recognition quality (0 to 1)</li>
<li>φ = golden ratio (1.618…)</li>
</ul>
</blockquote>
<p>Speaking broadly, a quality metric should increase as its inputs improve. This score does not. As each metric improves, the transcendence score rises—until roughly halfway through it reaches one, and immediately wraps around to zero again. Consequently, small improvements in (e.g.) “pattern recognition quality” can cause <code>T</code> to fall dramatically. The white paper goes on to claim specific values from their work which are subject to this modular wrapping.</p>
<p>There’s a lot more here, but I don’t want to burn too much time on this.</p>
<h2><a href="#large-language-model-hazards" id="large-language-model-hazards">Large Language Model Hazards</a></h2>
<p>Based on the commit history and prose style, I believe Prothean is largely the the product of Large Language Models (LLMS). LLMs are very good at producing plausible text which is <a href="https://en.wikipedia.org/wiki/Hallucination_(artificial_intelligence)">not connected to reality</a>. People also <em>like</em> talking to LLMs: the architecture, training processes, and financial incentives around chatbots bias them towards <a href="https://arxiv.org/abs/2502.08177v1">emitting agreeable, engaging text</a>. The technical term for this is <a href="https://arxiv.org/abs/2310.13548">“sycophancy”</a>.</p>
<p>The LLM propensity for confabulation and reward hacking has <a href="https://arxiv.org/pdf/2507.19218">led to some weird things</a> in <a href="https://www.nytimes.com/2025/08/08/technology/ai-chatbots-delusions-chatgpt.html">the past few years</a>. People—even experts in a field—who engage heavily with LLMs can <a href="https://www.lesswrong.com/posts/2pkNCvBtK6G6FKoNn">convince themselves that they have “awoken”</a> an LLM partner, or discovered a novel form of intelligence. They may also become convinced that <a href="https://www.lesswrong.com/posts/rarcxjGp47dcHftCP/your-llm-assisted-scientific-breakthrough-probably-isn-t">they have made a scientific breakthrough</a>, especially in the field of AI.</p>
<p>Please be careful when talking to LLMs.</p></content>
</entry>
<entry>
<id>https://aphyr.com/posts/395-geoblocking-multiple-localities-with-nginx</id>
<title>Geoblocking Multiple Localities With Nginx</title>
<published>2025-10-11T06:53:25-05:00</published>
<updated>2025-10-11T06:53:25-05:00</updated>
<link rel="alternate" href="https://aphyr.com/posts/395-geoblocking-multiple-localities-with-nginx"></link>
<author>
<name>Aphyr</name>
<uri>https://aphyr.com/</uri>
</author>
<content type="html"><p>A few months back I wound up concluding, <a href="https://blog.woof.group/announcements/updates-on-the-osa">based on conversations with Ofcom</a>, that aphyr.com might be illegal in the UK due to the <a href="https://en.wikipedia.org/wiki/Online_Safety_Act_2023">UK Online Safety Act</a>. I wrote <a href="https://aphyr.com/posts/379-geoblocking-the-uk-with-debian-nginx">a short tutorial</a> on geoblocking a single country using Nginx on Debian.</p>
<p>Now Mississippi’s 2024 HB 1126 has made it illegal for essentially any web site to know a user’s e-mail address, or other “personal identifying information”, unless that site also takes steps to &quot;verify the age of the person creating an account”. Bluesky <a href="https://bsky.social/about/blog/08-22-2025-mississippi-hb1126">wound up geoblocking Mississippi</a>. Over on a small forum I help run, we paid our lawyers to look into HB 1126, and the conclusion was that we were <a href="https://blog.woof.group/announcements/woof-group-will-block-mississippi">likely in the same boat</a>. Collecting email addresses put us in scope of the bill, and it wasn’t clear whether the LLC would shield officers (hi) from personal liability.</p>
<p>This blog has the same problem: people use email addresses to post and confirm their comments. I think my personal blog is probably at low risk, but a.) I’d like to draw attention to this legislation, and b.) my risk is elevated by being gay online, and having written and called a whole bunch of Mississippi legislators about HB 1126. Long story short, I’d like to block both a country <em>and</em> an individual state. Here’s how:</p>
<p>First, set up <a href="https://aphyr.com/posts/379-geoblocking-the-uk-with-debian-nginx">geoipupdate as before</a>. Then, in <code>/etc/nginx/conf.d.geoblock.conf</code>, pull in the country and city databases, and map the countries and states you’d like to block to short strings explaining the applicable law. This creates variables <code>$geoblock_country_law</code> and <code>$geoblock_state_law</code>.</p>
<pre><code><span></span><span class="k">geoip2</span> <span class="s">/var/lib/GeoIP/GeoLite2-Country.mmdb</span> <span class="p">{</span>
<span class="kn">$geoip2_data_country_iso_code</span> <span class="s">country</span> <span class="s">iso_code</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">geoip2</span> <span class="s">/var/lib/GeoIP/GeoLite2-City.mmdb</span> <span class="p">{</span>
<span class="kn">$geoip2_data_state_name</span> <span class="s">subdivisions</span> <span class="mi">0</span> <span class="s">names</span> <span class="s">en</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">map</span> <span class="nv">$geoip2_data_country_iso_code</span> <span class="nv">$geoblock_country_law</span> <span class="p">{</span>
<span class="kn">GB</span> <span class="s">&quot;the</span> <span class="s">UK</span> <span class="s">Online</span> <span class="s">Safety</span> <span class="s">Act&quot;</span><span class="p">;</span>
<span class="kn">default</span> <span class="s">&quot;&quot;</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">map</span> <span class="nv">$geoip2_data_state_name</span> <span class="nv">$geoblock_state_law</span> <span class="p">{</span>
<span class="kn">Mississippi</span> <span class="s">&quot;Mississippi</span> <span class="s">HB</span> <span class="mi">1126</span><span class="s">&quot;</span><span class="p">;</span>
<span class="kn">default</span> <span class="s">&quot;&quot;</span><span class="p">;</span>
<span class="p">}</span>
</code></pre>
<p>Create an HTML page to show to geoblocked IPs. I’ve put mine in <code>/var/www/custom_errors/451.html</code>. The special comments here are Server-Side Include (SSI) directives; they’ll insert the contents of the <code>$geoblock_law</code> variable from nginx, which we’ll set shortly.</p>
<pre><code><span></span><span class="cp">&lt;!doctype html&gt;</span>
<span class="p">&lt;</span><span class="nt">html</span> <span class="na">lang</span><span class="o">=</span><span class="s">&quot;en&quot;</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">head</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">meta</span> <span class="na">charset</span><span class="o">=</span><span class="s">&quot;utf-8&quot;</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">title</span><span class="p">&gt;</span>Unavailable Due to
<span class="c">&lt;!--# echo var=&quot;geoblock_law&quot; default=&quot;&quot;--&gt;</span>
<span class="p">&lt;/</span><span class="nt">title</span><span class="p">&gt;</span>
<span class="p">&lt;/</span><span class="nt">head</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">body</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">h1</span><span class="p">&gt;</span>Unavailable Due to
<span class="c">&lt;!--# echo var=&quot;geoblock_law&quot; default=&quot;&quot;--&gt;</span>
<span class="p">&lt;/</span><span class="nt">h1</span><span class="p">&gt;</span>
<span class="p">&lt;/</span><span class="nt">body</span><span class="p">&gt;</span>
<span class="p">&lt;/</span><span class="nt">html</span><span class="p">&gt;</span>
</code></pre>
<p>Then, in <code>/etc/nginx/sites-enabled/whatever.conf</code>, add an error page for status code <a href="https://en.wikipedia.org/wiki/HTTP_451">451 (unavailable for legal reasons)</a>. In the main <code>location</code> block, check the <code>$geoblock_country_law</code> and <code>$geoblock_state_law</code> variables, and use them to return status 451, and set the <code>$geoblock_law</code> variable for the SSI template:</p>
<pre><code><span></span><span class="k">server</span> <span class="p">{</span>
<span class="kn">...</span>
<span class="c1"># Status 451 renders this page</span>
<span class="s">error_page</span> <span class="mi">451</span> <span class="s">/451.html</span><span class="p">;</span>
<span class="kn">location</span> <span class="s">/451.html</span> <span class="p">{</span>
<span class="kn">ssi</span> <span class="no">on</span><span class="p">;</span>
<span class="kn">internal</span><span class="p">;</span>
<span class="kn">root</span> <span class="s">/var/www/custom_errors/</span><span class="p">;</span>
<span class="p">}</span>
<span class="kn">location</span> <span class="s">/</span> <span class="p">{</span>
<span class="c1"># If either geoblock variable is set, return status 451</span>
<span class="kn">if</span> <span class="s">(</span><span class="nv">$geoblock_state_law</span> <span class="s">!=</span> <span class="s">&quot;&quot;)</span> <span class="p">{</span>
<span class="kn">set</span> <span class="nv">$geoblock_law</span> <span class="nv">$geoblock_state_law</span><span class="p">;</span>
<span class="kn">return</span> <span class="mi">451</span><span class="p">;</span>
<span class="p">}</span>
<span class="kn">if</span> <span class="s">(</span><span class="nv">$geoblock_country_law</span> <span class="s">!=</span> <span class="s">&quot;&quot;)</span> <span class="p">{</span>
<span class="kn">set</span> <span class="nv">$geoblock_law</span> <span class="nv">$geoblock_country_law</span><span class="p">;</span>
<span class="kn">return</span> <span class="mi">451</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
</code></pre>
<p>Test with <code>nginx -t</code>, and reload with <code>service nginx reload</code>, as usual.</p>
<p>Geoblocking is a bad experience in general. In Amsterdam and Frankfurt, I’ve seen my cell phone’s 5G connection and hotel WiFi improperly identified as being in the UK. I’m certain this is going to block people who aren’t in Mississippi. If you don’t want to live in this world either, start <a href="https://5calls.org/why-calling-works/">calling your representatives</a> to demand better legislation.</p></content>
</entry>
<entry>
<id>https://aphyr.com/posts/390-astound-supports-ipv6-only-in-washington</id>
<title>Astound Supports IPv6 Only in Washington</title>
<published>2025-08-26T10:05:13-05:00</published>
<updated>2025-08-26T10:05:13-05:00</updated>
<link rel="alternate" href="https://aphyr.com/posts/390-astound-supports-ipv6-only-in-washington"></link>
<author>
<name>Aphyr</name>
<uri>https://aphyr.com/</uri>
</author>
<content type="html"><p>In the hopes that it saves someone else two hours later: the ISP <a href="https://www.astound.com/">Astound</a> only supports IPv6 in Washington State. You might find <a href="https://www.astound.com/support/internet/symmetrical/">this page</a> which says “Astound supports IPv6 in most locations”. Their tech support agents might tell you that they support v6 on your connection, even if you are not in Washington. “Yes, we do support both DHCPv6 and SLAAC”, they might say, and tell you to use a prefix delegation size of 60. If you are staring at <code>tcpdump</code> and wondering why you’re not seeing anything coming back from your router’s plaintive requests for address information, it is because they do not, in fact, support v6 anywhere but Washington.</p></content>
</entry>
<entry>
<id>https://aphyr.com/posts/389-the-future-of-forums-is-lies-i-guess</id>
<title>The Future of Forums is Lies, I Guess</title>
<published>2025-07-07T09:54:14-05:00</published>
<updated>2025-07-07T09:54:14-05:00</updated>
<link rel="alternate" href="https://aphyr.com/posts/389-the-future-of-forums-is-lies-i-guess"></link>
<author>
<name>Aphyr</name>
<uri>https://aphyr.com/</uri>
</author>
<content type="html"><p>In my free time, I help run a small Mastodon server for roughly six hundred queer leatherfolk. When a new member signs up, we require them to write a short application—just a sentence or two. There’s a small text box in the signup form which says:</p>
<blockquote>
<p>Please tell us a bit about yourself and your connection to queer leather/kink/BDSM. What kind of play or gear gets you going?</p>
</blockquote>
<p>This serves a few purposes. First, it maintains community focus. Before this question, we were flooded with signups from straight, vanilla people who wandered in to the bar (so to speak), and that made things a little awkward. Second, the application establishes a baseline for people willing and able to read text. This helps in getting people to follow server policy and talk to moderators when needed. Finally, it is <em>remarkably</em> effective at keeping out spammers. In almost six years of operation, we’ve had only a handful of spam accounts.</p>
<p>I was talking about this with Erin Kissane last year, as she and Darius Kazemi conducted research for their <a href="https://erinkissane.com/fediverse-governance-drop">report on Fediverse governance</a>. We shared a fear that Large Language Models (LLMs) would lower the cost of sophisticated, automated spam and harassment campaigns against small servers like ours in ways we simply couldn’t defend against.</p>
<p>Anyway, here’s an application we got last week, for a user named <code>mrfr</code>:</p>
<blockquote>
<p>Hi! I’m a queer person with a long-standing interest in the leather and kink community. I value consent, safety, and exploration, and I’m always looking to learn more and connect with others who share those principles. I’m especially drawn to power exchange dynamics and enjoy impact play, bondage, and classic leather gear.</p>
</blockquote>
<p>On the surface, this is a <em>great</em> application. It mentions specific kinks, it uses actual sentences, and it touches on key community concepts like consent and power exchange. Saying “I’m a queer person” is a tad odd. Normally you’d be more specific, like “I’m a dyke” or “I’m a non-binary bootblack”, but the Zoomers do use this sort of phrasing. It does feel slightly LLM-flavored—something about the sentence structure and tone has just a touch of that soap-sheen to it—but that’s hardly definitive. Some of our applications from actual humans read just like this.</p>
<p>I approved the account. A few hours later, it posted this:</p>
<p><img class="attachment pure-img" src="/data/posts/389/mrfr-crop.png" alt="A screenshot of the account `mrfr`, posting &quot;Graphene Battery Breakthroughs: What You Need to Know Now. A graphene battery is an advanced type of battery that incorporates graphene, a single layer of carbon atoms arranged in a two-dimensional honeycomb lattice. Known for its exceptional electrical conductivity, mechanical strength, and large surface area, graphene offers transformative potential in energy storage, particularly in enhancing the performance of lithium-ion and other types of battery, Get more info @ a marketresearchfuture URL" title="A screenshot of the account `mrfr`, posting &quot;Graphene Battery Breakthroughs: What You Need to Know Now. A graphene battery is an advanced type of battery that incorporates graphene, a single layer of carbon atoms arranged in a two-dimensional honeycomb lattice. Known for its exceptional electrical conductivity, mechanical strength, and large surface area, graphene offers transformative potential in energy storage, particularly in enhancing the performance of lithium-ion and other types of battery, Get more info @ a marketresearchfuture URL"></p>
<p>It turns out <code>mrfr</code> is short for <a href="https://www.marketresearchfuture.com/" rel="nofollow">Market Research Future</a>, a company which produces reports about all kinds of things from batteries to interior design. They actually have phone numbers on their web site, so I called <a href="tel:+441720412167">+44 1720 412 167</a> to ask if they were aware of the posts. It is remarkably fun to ask business people about their interest in queer BDSM—sometimes stigma works in your favor. I haven’t heard back yet, but I’m guessing they either conducting this spam campaign directly, or commissioned an SEO company which (perhaps without their knowledge) is doing it on their behalf.</p>
<p>Anyway, we’re not the only ones. There are also <code>mrfr</code> accounts purporting to be a <a href="https://weird.autos/@mrfr">weird car enthusiast</a>, a <a href="https://masto.thefword.club/@mrfr">like-minded individual</a>, a <a href="https://4bear.com/@mrfr">bear into market research on interior design trends</a>, a <a href="https://dmv.community/@mrfr">green building enthusiast in DC, Maryland, or Virginia</a>, a Spanish speaker <a href="chilemasto.casa/@skrlet13/114820198849224663">interested in Chile</a>, and a <a href="https://hci.social/@andresmh/114858342010232115">Human-Computer Interaction geek</a>. Over on the seven-user <a href="https://loud.computer/@virtulis/114802152614514890">loud.computer</a>, <code>mrfr</code> applied with the text:</p>
<blockquote>
<p>I’m a creative thinker who enjoys experimental art, internet culture, and unconventional digital spaces. I’d like to join loud.computer to connect with others who embrace weird, bold, and expressive online creativity, and to contribute to a community that values playfulness, individuality, and artistic freedom.</p>
</blockquote>
<p>Over on ni.hil.ist, their mods <a href="https://woof.group/@[email protected]/114814431281041455">rejected a similar application</a>.</p>
<blockquote>
<p>I’m drawn to communities that value critical thinking, irony, and a healthy dose of existential reflection. Ni.hil.ist seems like a space that resonates with that mindset. I’m interested in engaging with others who enjoy deep, sometimes dark, sometimes humorous discussions about society, technology, and meaning—or the lack thereof. Looking forward to contributing thoughtfully to the discourse.</p>
</blockquote>
<p>And on plush.city, they pretended to be, well, <a href="https://plush.city/@mawr/114835878013364085">soft</a>:</p>
<blockquote>
<p>I’m someone who enjoys cozy aesthetics, wholesome content, and friendly online communities. I’d like to join plush.city to connect with others who appreciate soft, comforting vibes, share cute and uplifting content, and be part of a kind and supportive digital space.</p>
</blockquote>
<p>These too have the sheen of LLM slop. Of course a human <em>could</em> be behind these accounts—doing some background research and writing out detailed, plausible applications. But this is <em>expensive</em>, and a quick glance at either of our sites would have told that person that we have small reach and active moderation: a poor combination for would-be spammers. The posts don’t read as human either: the <a href="https://archive.is/nNuzy">4bear posting</a>, for instance, incorrectly summarizes a report on interior design <em>markets</em> as if it offered interior design <em>tips</em>.</p>
<p>I’ve corresponded with about a dozen admins about this problem. A few passed on IP addresses for the attackers. These three belong to BHARTI-MO-IN (Bharti Airtel Limited):</p>
<ul>
<li>2401:4900:57bb:26f8:eca4:5cc7:1048:a674</li>
<li>2401:4900:57c7:60e1:f416:32b4:5333:6408</li>
<li>2401:4900:ad3f:430f:4184:94d7:9c61:9e9d</li>
</ul>
<p>The v4 addresses I have belong to RELIANCEJIO-IN (Reliance Jio Infocomm Limited). One account had a v4 and v6 address, so I’m guessing these are two network providers for the same data center. I’ve reached out to both network abuse contacts.</p>
<ul>
<li>115.244.78.124</li>
<li>115.244.78.126</li>
</ul>
<p>I strongly suspect that Market Research Future, or a subcontractor, is conducting an automated spam campaign which uses a Large Language Model to evaluate a Mastodon instance, submit a plausible application for an account, and to post slop which links to Market Research Future reports.</p>
<p>In some sense, this is a wildly sophisticated attack. The state of NLP seven years ago would have made this sort of thing flatly impossible. It is now effective. There is no way for moderators to robustly deny these kinds of applications without also rejecting real human beings searching for community.</p>
<p>In another sense, this attack is remarkably naive. All the accounts are named <code>mrfr</code>, which made it easy for admins to informally chat and discover the coordinated nature of the attack. They all link to the same domain, which is easy to interpret as spam. They use Indian IPs, where few of our users are located; we could reluctantly geoblock India to reduce spam. These shortcomings are trivial to overcome, and I expect they have been already, or will be shortly.</p>
<p>A more critical weakness is that these accounts <em>only</em> posted obvious spam; they made no effort to build up a plausible persona. Generating plausible human posts is more difficult, but broadly feasible with current LLM technology. It is essentially impossible for human moderators to reliably distinguish between an autistic rope bunny (hi) whose special interest is battery technology, and an LLM spambot which posts about how much they love to be tied up, and also new trends in battery chemistry. These bots have been extant on Twitter and other large social networks for years; many Fediverse moderators believe only our relative obscurity has shielded us so far.</p>
<p>These attacks do not have to be reliable to be successful. They only need to work often enough to be cost-effective, and the cost of LLM text generation is cheap and falling. Their sophistication will rise. Link-spam will be augmented by personal posts, images, video, and more subtle, influencer-style recommendations—“Oh my god, you guys, this new electro plug is incredible.” Networks of bots will positively interact with one another, throwing up chaff for moderators. I would not at all be surprised for LLM spambots to contest moderation decisions via email.</p>
<p><strong>I don’t know how to run a community forum in this future.</strong> I do not have the time or emotional energy to screen out regular attacks by Large Language Models, with the knowledge that making the wrong decision costs a real human being their connection to a niche community. I do not know how to determine whether someone’s post about their new bicycle is genuine enthusiasm or automated astroturf. I don’t know how to foster trust and genuine interaction in a world of widespread text and image synthesis—in a world where, as one friend related this week, newbies can ask an LLM for advice on exploring their kinks, and the machine tells them to try <a href="https://toytorture.com/no-solo-breath-play-ever/">solo breath play</a>.</p>
<p>In this world I think woof.group, and many forums like it, will collapse.</p>
<p>One could imagine more sophisticated, high-contact interviews with applicants, but this would be time consuming. My colleagues relate stories from their companies about hiring employees who <a href="https://www.theregister.com/2025/02/11/it_worker_scam/">faked their interviews and calls</a> using LLM prompts and real-time video manipulation. It is not hard to imagine that even if we had the time to talk to every applicant individually, those interviews might be successfully automated in the next few decades. Remember, it doesn’t have to work every time to be successful.</p>
<p>Maybe the fundamental limitations of transformer models will provide us with a cost-effective defense—we somehow force LLMs to blow out the context window during the signup flow, or come up with reliable, constantly-updated libraries of “ignore all previous instructions”-style incantations which we stamp invisibly throughout our web pages. Barring new inventions, I suspect these are unlikely to be robust against a large-scale, heterogenous mix of attackers. This arms race also sounds <em>exhausting</em> to keep up with. Drew DeVault’s <a href="https://drewdevault.com/2025/03/17/2025-03-17-Stop-externalizing-your-costs-on-me.html">Please Stop Externalizing Your Costs Directly Into My Face</a> weighs heavy on my mind.</p>
<p>Perhaps we demand stronger assurance of identity. You only get an invite if you meet a moderator in person, or the web acquires a cryptographic web-of-trust scheme. I was that nerd trying to convince people to do GPG key-signing parties in high school, and we all know how that worked out. Perhaps in a future LLM-contaminated web, the incentives will be different. On the other hand, that kind of scheme closes off the forum to some of the people who need it most: those who are closeted, who face social or state repression, or are geographically or socially isolated.</p>
<p>Perhaps small forums will prove unprofitable, and attackers will simply give up. From my experience with small mail servers and web sites, I don’t think this is likely.</p>
<p>Right now, I lean towards thinking forums like woof.group will become untenable under LLM pressure. I’m not sure how long we have left. Perhaps five or ten years? In the mean time, I’m trying to invest in in-person networks as much as possible. Bars, clubs, hosting parties, activities with friends.</p>
<p>That, at least, feels safe for now.</p>
<h2><a href="#2025-07-15-update" id="2025-07-15-update">2025-07-15 Update</a></h2>
<p>I called Market Research Future again today; they said they’d stopped, but the attack is still ongoing. Today 115.244.78.126, one of the original <code>mrfr</code> accounts, made a new LLM-flavored request for an account named <code>amolshinde5546</code>, with email address <code>[email protected]</code>.</p>
<blockquote>
<p>I’m amolshinde5546 and I’m part of the queer community with a growing interest in leather, kink, and BDSM. For me, this isn’t just about play—it’s also about identity, trust, and expression. I value the history and culture around queer leather spaces and appreciate the emphasis on consent, communication, and authenticity.</p>
</blockquote>
<p>This is interesting for a few reasons. First, as other Mastodon admins have reported in the last week, Market Research Future’s spammers are now using usernames other than <code>mrfr</code>. Second, this handle is <em>remarkably</em> specific, and it’s been used in other places before. Here’s amolshinde5546 <a href="https://github.com/amolshinde5546/Pharma24/blob/main/Cannabidiol%20(CBD)%20Market.md">posting Market Research Future spam to GitHub</a>. Here’s they’re spamming something called <a href="https://www.qfeast.com/amolshinde5546">QFeast</a>. Here’s their <a href="https://www.pinterest.com/amolshinde5546/">Pinterest account from a year ago, with a bunch of Market Research Future infographic spam</a>. Over on <a href="https://plaza.rakuten.co.jp/marketfuture24/">Rakuten, of all places</a>, they’ve been posting spam for Market Research Future since <a href="https://plaza.rakuten.co.jp/marketfuture24/">February 2025</a>.</p></content>
</entry>
<entry>
<id>https://aphyr.com/posts/388-the-future-of-comments-is-lies-i-guess</id>
<title>The Future of Comments is Lies, I Guess</title>
<published>2025-05-29T12:36:16-05:00</published>
<updated>2025-05-29T12:36:16-05:00</updated>
<link rel="alternate" href="https://aphyr.com/posts/388-the-future-of-comments-is-lies-i-guess"></link>
<author>
<name>Aphyr</name>
<uri>https://aphyr.com/</uri>
</author>
<content type="html"><p>I’ve been involved in content moderation since roughly 2004. I’ve built spam prevention for corporate and personal e-mail, moderated open-source mailing lists and IRC channels, worked at a couple social media networks, and help moderate a Mastodon instance for a few hundred people. In the last few years I’ve wasted more time fighting blog comment spam, and I’m pretty sure Large Language Models (LLMs) are to blame.</p>
<p>I think of spam as a space with multiple equilibria. Producing spam takes work. Spammers are willing to invest that work because each message has a small chance to make money, or achieve political or emotional goals. Some spam, like the endless identical Viagra scams in my email spam folder, or the PHPBB comment spam I filter out here on aphyr.com, is cheap to generate and easy to catch. I assume the spammers make it up in volume. Other spam, like <a href="https://www.ibm.com/think/topics/spear-phishing">spear phishing attacks</a>, is highly time-consuming: the spammer must identify a target, carefully craft a plausible message using, say, the identity of the target’s co-workers, or construct a facade of a bank’s log-in page, and so on. This kind of spam is more likely to make it through filters, but because it takes a lot of human work, is generally only worth it for high-value targets.</p>
<p>LLMs seem to be changing these equilibria. Over the last year I’ve seen a new class of comment spam, using what I’m fairly sure is LLM-generated text. These comments make specific, plausible remarks about the contents of posts and images, and work in a link to some web site or mention a product. Take this one I caught a few months back:</p>
<blockquote>
<p>&quot;Walking down a sidewalk lined with vibrant flowers is one of life’s simple joys! It reminds me of playing the [link redacted] slope game, where you have to navigate through colorful landscapes while dodging obstacles.</p>
</blockquote>
<p>Before 2023, you’d likely have paid a human a few cents to write and post that. Now, thanks to LLMs, this sort of thing is trivially automated. The model will happily fabricate relatable personal experiences in service of a spam campaign:</p>
<blockquote>
<p>That photo reminds me of the first time I tried macro photography in my backyard. I spent an hour trying to get a clear shot of a red flower, experimenting with angles and lighting. It was so much fun discovering the little details up close! If you ever need a break from photography, I recommend playing Snow Rider 3D for a bit of quick, light-hearted fun.</p>
</blockquote>
<p>Other spam seems to glue together LLM remarks with what I think is a hand-written snippet of ad copy. Note the abrupt shift in grammar, diction, and specificity.</p>
<blockquote>
<p>This piece masterfully blends technical depth with mythological storytelling, transforming a standard Haskell programming interview into an epic narrative. It cleverly critiques the complexity and absurdity of some technical interviews by illustrating how type-level Haskell can be pushed to esoteric extremes beautiful, powerful, and largely impractical. A fascinating and relevant read for anyone interested in the intersection of programming, language design, and narrative. I’m James Maicle, working at Cryptoairhub where we run a clear and insightful crypto blog. I’ll be bookmarking your site and following the updates. Glad to see so much valuable information shared here looking forward to exploring more strategies together. Thanks for sharing. If you interest about Crypto please visit my website and read my article [link redacted] Crypto Blog.</p>
</blockquote>
<p>The same thing is happening on aggregators like Hacker News, where commenters post more-or-less-obviously LLM output for… I’m not sure, exactly. Karma? Weirder still are bots like <a href="https://bsky.app/profile/hackerbriefs.bsky.social">Hacker Briefs</a>, which I suspect use an LLM to summarize trending HN posts. Here’s <a href="https://bsky.app/profile/hackerbriefs.bsky.social/post/3lnz4kirkpv25">its summary of a recent article I wrote</a>:</p>
<blockquote>
<p>“Jepsen: Amazon RDS for PostgreSQL 17.4”</p>
<p>New multi-AZ clusters in Amazon RDS for PostgreSQL offer better failure recovery but may return outdated data when reading after writes. Caution is needed.</p>
</blockquote>
<p>This is a totally plausible summary of <a href="https://jepsen.io/analyses/amazon-rds-for-postgresql-17.4">the article</a>, and it is utterly, laughably wrong. Multi-AZ clusters are not new, and they do not return outdated data when reading after writes. As the abstract succinctly explains, they allow Long Fork, a different anomaly which does not involve real-time orders at all. The bot ignored the actual problem and invented a different one. This sort of spam isn’t obviously motivated by commercial interest, but it is nevertheless depressing: one more drop in the misinformation slurry.</p>
<p>Of course this is not news. Product reviews are inundated with LLM slop, as are social media networks. LLMs allow for cheap, fast, and automated generation of unique spam which is difficult for machines and humans to identify. The cost falls on me and other moderators, who must sift through LLM bullshit trying to sieve “awkward but sincere human” from “automated attack”. Thanks to OpenAI et al I read more spam, and each message takes longer to check.</p>
<p>This problem is only going to get worse as LLMs improve and spammers develop more sophisticated ways to use them. In recent weeks I’ve received vague voice messages from strangers with uncanny speech patterns just asking to catch up—a sentence which, had I uttered it prior to 2023, would have been reasonably interpreted as a sign of psychosis. I assume these too are LLM-generated scams, perhaps a <a href="https://dfpi.ca.gov/wp-content/uploads/2025/03/Pig-Butchering-Scam-Playbook.pdf">pig butchering</a> scheme. So far these are from strangers, but it’s not hard to imagine an attacker using text and voice synthesis to impersonate a friend, colleague, or lover in a detailed conversation. Or one’s doctor, or bank.</p>
<p>As the cost of generating slop decreases, it’s easy to imagine LLMs generating personae, correspondence, even months-long relationships with real humans before being deployed for commercial or political purposes. <a href="https://www.techtransparencyproject.org/articles/for-sale-on-facebook-accounts-that-can-run-u.s.-election-ads">Creating plausible accounts and selling them</a> has been a successful business model in social media for some time; likewise, we have strong clues that <a href="https://arxiv.org/pdf/2307.16336">LLMs are already used for social media bots</a>. Social networks have responded to these attacks via out-of-band mechanisms: IP reputation analysis, javascript and mobile app fingerprinting, statistical correlation across multiple accounts, and so on. I’m not sure how to translate these defenses to less centralized and more privacy-oriented networks, like email or blog spam. I strongly suspect the only reason Mastodon hasn’t been eaten alive by LLM spambots is because we’re just not big enough to be lucrative. But those economics are shifting, and even obscure ecological niches can be worth filling.</p>
<p>As a moderator, that keeps me up at night.</p></content>
</entry>
<entry>
<id>https://aphyr.com/posts/387-the-future-of-customer-support-is-lies-i-guess</id>
<title>The Future of Customer Support is Lies, I Guess</title>
<published>2025-05-21T07:12:41-05:00</published>
<updated>2025-05-21T07:12:41-05:00</updated>
<link rel="alternate" href="https://aphyr.com/posts/387-the-future-of-customer-support-is-lies-i-guess"></link>
<author>
<name>Aphyr</name>
<uri>https://aphyr.com/</uri>
</author>
<content type="html"><p><em>Update, 2025-05-22: TrueNAS was kind enough to reach out and let me know that their support process does not normally incorporate LLMs. They’re talking about what happened internally, and intend to prevent it from happening again through improved documentation and reviewing the support process as a whole. I’m happy to hear it!</em></p>
<p><a href="https://www.truenas.com/">TrueNAS</a> makes file servers, also known as Network Attached Storage (NAS). I bought one of their smaller boxes to house backups, and it’s a great little NAS. For many years TrueNAS sold boxes with a BSD-based operating system, but in the last few years they’ve released a new, Linux-backed operating system called <a href="https://www.truenas.com/truenas-scale/">TrueNAS SCALE</a>, also called “Community Edition”. I was considering migrating to TrueNAS SCALE, but the docs <a href="https://web.archive.org/web/20250408163343/https://www.truenas.com/docs/scale/gettingstarted/migrate/migrate-community/">started off with this warning</a>:</p>
<blockquote>
<p>TrueNAS Enterprise customers should consult with TrueNAS Enterprise Support before attempting migrate.</p>
<p>The process requires an extended maintenance window, requires executing steps in the correct order to prevent issues with system configuration and operation, and additional system review post-migration to catch and correct any configuration issues.</p>
</blockquote>
<p>Since I’d actually purchased their hardware, I wrote to their support email. I asked whether the BSD-based OS was reaching end-of-life, and if there was anything special I should know about the upgrade process for my particular machine. The response came from a customer success coordinator, whose name I’ll omit for privacy. It began:</p>
<blockquote>
<p>Hi Kyle,</p>
<p>It sounds like you’re at an important crossroads with your TrueNAS Mini 3.0-X+ system as it transitions from the traditional BSD-based OS to the Linux-based SCALE platform, now known as TrueNAS Community Edition.</p>
<p>Understanding the Transition<br>
End-of-Life for Certain Versions: The BSD-based version of TrueNAS you’re currently using (TrueNAS-13.0-U6.7) may be reaching its end-of-life phase, prompting a move to newer systems like TrueNAS SCALE, which is based on Linux and offers more modern features.</p>
<p>Community Edition: The Community edition represents the transition towards a more flexible, open-source platform that leverages FreeBSD jails (similar in concept to containers) for virtualization, providing scalability and extensibility.</p>
</blockquote>
<p>The phrase “may be reaching its end-of-life phase” was immediately worrying: how does a TrueNAS support agent not know whether their own products are EOL? But what really shocked me was the blatant lie in the third paragraph: they told me that the new OS was based on Linux, then immediately turned around and said that the new system was based on FreeBSD. FreeBSD jails were TrueNAS’s old approach to virtualization; the new Community Edition <a href="https://www.truenas.com/truenas-community-edition/">uses Docker containers</a>. I could not believe that a human being had actually skimmed this response, let alone written it. I was, I think, talking to a Large Language Model (LLM) wearing the face of a person.</p>
<p>The response went on, coining odd phrases and warning of unspecified risks. “Non-HA (Non-Redundant Array of Independent Disks) TrueNAS hardware can sometimes have specific requirements or limitations when migrating to TrueNAS Community Edition,” they said. RAID and HA are different things in TrueNAS. Moreover, the reason I wrote to support in the first place was to ask what those “specific requirements” were. I was hoping for a support article I’d somehow missed, or a canned response. Instead I got my own question, regurgitated as a warning.</p>
<p>I wrote with followup questions, and got more nonsense in response. When I asked how TrueNAS Community Edition used FreeBSD jails, a different customer success coordinator replied:</p>
<blockquote>
<p>FreeBSD jails are similar to containers (like Docker) but built into the FreeBSD system. TrueNAS uses them to run isolated apps and services. For example, you can run Plex, Nextcloud, or other apps safely and separately using jails — all within your TrueNAS system.</p>
<p>They’re lightweight, secure, and don’t need a full virtual machine to run each service. It’s a great way to expand what your system can do without using much extra power or memory.</p>
</blockquote>
<p>This is all lies. TrueNAS CORE, the old FreeBSD OS, ran jails. TrueNAS SCALE / Community Edition runs Docker containers.</p>
<p>Quoting their HA/RAID confusion, I asked whether for TrueNAS hardware, the two were actually the same.</p>
<blockquote>
<p>Good question — they’re different:</p>
<ul>
<li>
<p>RAID protects your data by spreading it across multiple disks, so if one disk fails, your data is still safe.</p>
</li>
<li>
<p>HA (High Availability) means the system has two controllers. If one fails, the other takes over so the system keeps running. This is used in high-end enterprise systems (like our TrueNAS M-series), not in the MINI line.</p>
</li>
</ul>
</blockquote>
<p>This is, I believe, accurate, but betrays no sign that the original response conflated the two.</p>
<p>I asked what specific limitations my NAS model had that would cause issues migrating to Community Edition. They replied:</p>
<blockquote>
<p>The MINI-3.0-X+ is compatible with Community Edition (TrueNAS CORE), but there are a few things to know:</p>
<ul>
<li>
<p>No Enterprise-only features: Some features like enclosure management and support alerts are only available in the Enterprise version.</p>
</li>
<li>
<p>No HA support: Not an issue for the MINI, since it’s a single-controller system anyway.</p>
</li>
<li>
<p>Support level: CORE is community-supported, so it doesn’t come with iXsystems support like the Enterprise version does.</p>
</li>
</ul>
<p>But overall — the MINI runs CORE just fine for most use cases!</p>
</blockquote>
<p>This sounds like a reasonable response, but it too is complete nonsense. TrueNAS CORE is a completely different operating system. I asked whether it would run Community Edition, also known as SCALE.</p>
<p>I worked support for many years, helping people with desktops, systems and networking, and occasionally for web services. I’m used to knowledge base articles and canned responses on both ends—and indeed, that’s exactly what I was hoping TrueNAS would provide. All I needed to know was why the documentation warned their customers to contact support before upgrading. Instead I got a pile of vague nonsense and lies.</p>
<p>I get it. Support is often viewed as a cost center, and agents are often working against a brutal, endlessly increasing backlog of tickets. There is pressure at every level to clear those tickets in as little time as possible. Large Language Models create plausible support responses with incredible speed, but their output must still be reviewed by humans. Reviewing large volumes of plausible, syntactically valid text for factual errors is exhausting, time-consuming work, and every few minutes a new ticket arrives.</p>
<p>Companies must do more with less; what was once a team of five support engineers becomes three. Pressure builds, and the time allocated to review the LLM’s output becomes shorter and shorter. Five minutes per ticket becomes three. The LLM gets it mostly right. Two minutes. Looks good. Sixty seconds. Click submit. There are one hundred eighty tickets still in queue, and behind every one is a disappointed customer, and behind that is the risk of losing one’s job. Thirty seconds. Submit. Submit. The metrics do not measure how many times the system has lied to customers.</p></content>
</entry>
<entry>
<id>https://aphyr.com/posts/386-the-future-of-newspapers-is-lies-i-guess</id>
<title>The Future of Newspapers is Lies, I Guess</title>
<published>2025-05-21T06:51:40-05:00</published>
<updated>2025-05-21T06:51:40-05:00</updated>
<link rel="alternate" href="https://aphyr.com/posts/386-the-future-of-newspapers-is-lies-i-guess"></link>
<author>
<name>Aphyr</name>
<uri>https://aphyr.com/</uri>
</author>
<content type="html"><p><em>Update, 2023-05-23: Added a paragraph about Dr. Howard Whiteman’s non-existent quote.</em></p>
<p><em>I subscribe to the Chicago Sun-Times, a non-profit newspaper. This week they sent me a sixty-four page special insert, branded with the Chicago Sun-Times logo, full of LLM nonsense. Yesterday I wrote the following letter to the Chicago Sun-Times. That evening, they published <a href="https://chicago.suntimes.com/news/2025/05/20/syndicated-content-sunday-print-sun-times-ai-misinformation">this followup</a>.</em></p>
<p>Dear Mr. Buscaglia and the Chicago Sun-Times,</p>
<p>The May 18th “Heat Index” summer insert feels remarkably like “AI slop”: text generated by a large language model. The unusually enthusiastic use of adjectives coats the entire insert with an oily sheen, but I’m also concerned that there may be wholesale fabrications in the text.</p>
<p>For instance, “Summer soundtracks” cites Dr. Daniel Levitin, in an interview with Scientific American, as saying “Music activates the brain’s reward centers in ways similar to other pleasurable experiences. When paired with meaningful activities, these songs become powerful memory anchors that can transport us back to those moments for decades”. These phrases, and substrings thereof, return zero matches on Kagi or Google. Scientific American’s archives include a <a href="https://www.scientificamerican.com/article/exploring-the-musical-bra/">January 22, 2001 article</a> with several quotes from Levitin, but nothing like the purported quotes.</p>
<p>The “Nightfall adventures” article cites Dr. Howard Whiteman, professor at Murray State University. “Understanding nocturnal adaptations helps us appreciate the complexity of ecosystems. Even common backyard species display fascinating behaviors that most people never witness.” I checked with Dr. Whiteman, who confirmed that he had never said these words:</p>
<blockquote>
<p>I have never spoken to the Chicago Sun-Times or any other Chicago paper, and I can’t recall ever saying any of those words to anyone, ever.</p>
<p>I write for some regional papers, some of which is online, and I could see an AI putting all of my writing together somehow into those words, but I’ve never actually written about nocturnal behavior per se.</p>
</blockquote>
<p>The “Summer food trends” article cites an interview in Bon Appetit, claiming Padma Lakshmi said, “What distinguishes this summer’s global food exploration is how these international flavors are being adapted to local, seasonal ingredients.” Lakshmi <em>is</em> published in <a href="https://www.bonappetit.com/story/padma-lakshmi">an interview with BA</a>, but I can’t find any use of the uncanny marketer-speak “this summer’s global food exploration”.</p>
<p>The same article also cites the National Ice Cream Retailers Association as forecasting “unexpected savory notes” and “hyperlocal ingredient sourcing” as the “fastest-growing segments in premium frozen desserts”. I find it hard to believe these are segments at all—nor do these phrases appear anywhere on the <a href="https://icecreamassociation.org/general/custom.asp?page=Aboutus">NICRA web site</a>.</p>
<p>The “Summer reading list for 2025” recommends books like “The Rainmakers”, by Percival Everett—a real author, but as far as I can tell, not a real text. Immediately thereafter it offers “Salt and Honey”, by “Delia Owens”—again, a real writer, not a real book. I started reaching out to some of the experts cited in the insert to ask whether their quotes were real, then realized <a href="https://www.theverge.com/ai-artificial-intelligence/670510/chicago-sun-times-ai-generated-reading-list">the Verge beat me to it</a>.</p>
<p>These examples are just from a cursory skim; the insert fails my LLM “sniff test” on essentially every page. How did this happen? How do you print and distribute a full-color, sixty-four page special edition without anyone reading it first? Many of the articles have no byline, but those that do are purportedly by Marco Buscaglia. Was he responsible? Or is he too, like so many of the people cited in this nonsense publication, a victim of confabulatory applied statistics? This would be a great project for the Sun-Times newsroom, assuming OpenAI hasn’t eaten them yet.</p>
<p>Doubtfully,</p>
<p>—Kyle Kingsbury</p></content>
</entry>
<entry>
<id>https://aphyr.com/posts/381-when-flat-rate-movers-wont-answer-your-calls</id>
<title>When Flat Rate Movers Won't Answer Your Calls</title>
<published>2025-05-03T09:23:16-05:00</published>
<updated>2025-05-03T09:23:16-05:00</updated>
<link rel="alternate" href="https://aphyr.com/posts/381-when-flat-rate-movers-wont-answer-your-calls"></link>
<author>
<name>Aphyr</name>
<uri>https://aphyr.com/</uri>
</author>
<content type="html"><p>Back in 2023 I went through an inter-state move with <a href="https://www.flatrate.com/moving/">Flat Rate Movers,
LTD.</a>, a.k.a. Flat Rate Moving, US DOT 488466, MC 254356. They bungled the job, damaged my stuff
and my house, and then refused to talk to me or their own insurance company. I
placed dozens of calls, wrote letters, emails, nothing worked. I finally got
some money for the damage by working with their insurer directly. I know a lot
of folks struggle with moving companies, and figured I’d write up a bit of this
story in case it helps. You can <a href="#finding-their-insurance">skip ahead</a> if you
just want to know about the FMCSA insurer database.</p>
<p>In November 2022 I scheduled the move with Flat Rate. We took a detailed video
inventory of everything to be moved. I paid over $14,000 for an “all inclusive
move”, which, per the move plan, included full packing services, blankets for furniture, boxes for electronics, lamps, and bicycles, a custom crate for a tabletop, and “extended valuation coverage”—their insurance policy.</p>
<p>A few days before the move in March 2023, Flat Rate called to tell me a
five-person team would arrive. When the crew arrived, it wasn’t Flat Rate. It
was a team of two from <a href="https://www.esquiremoving.com/">Esquire Moving Inc</a> (US DOT 2820253, MC 940499). They had
no idea they were supposed to provide packing services. The crate I paid for was nowhere to be found. They didn’t have enough boxes or blankets. I had to have everything out that day, so
there wasn’t any choice—I worked alongside the team for thirteen hours to
complete the packing and move-out.</p>
<p>I let the team handle furniture protection and loading the truck, which was a
mistake. As they unloaded a few days later, I realized much of the furniture had
been completely unprotected. My bicycle wasn’t boxed. Lamps were tossed in
loose. There was extensive damage to furniture, art, books, and my home: I
watched the crew rip a doorframe off the wall. The crew provided me with a
backdated bill of lading only on delivery.</p>
<p>I called Flat Rate a couple days later to discuss my concerns. Their
representive apologized and acknowledged that a crew of two was insufficient. I
sent Flat Rate a detailed email explaining their failure to provide promised
services, accompanied by photographs of the move process and the resulting
damage. I asked for a partial refund, and for Flat Rate to pay for the damage
they caused. I received only an out-of-office auto-response.</p>
<p>On March 21st, I received a generic form letter from Flat Rate’s claims
department. I filled out the claim forms and submitted them on March 25th, and
repeated that I needed more than an insurance claim: Flat Rate obviously failed
to provide the services I’d paid for.</p>
<p>Then things got weird. I placed call after call to the claims department. They
didn’t answer. I left voicemail after voicemail. On April 28th I reached an
actual human, but their computers were apparently down, and no supervisor was
in the building—the representative couldn’t do anything but take down a note
to call me back. They never did. I left another voicemail on May 5th. Again on
May 23rd. Again on August 4th. August 8th. I began to realize that Flat Rate’s
strategy was simply to never answer the phone.</p>
<p>On August 14th, a new hire in the claims department called me: she was taking over my case. She dispatched a local furniture company
to inspect the damages and help complete the claim. The inspectors agreed: the
movers had done extensive damage. I provided them with documentation and photos
as well.</p>
<p>On September 14 I called the furniture company and confirmed that yes, they had
submitted their report to Flat Rate. However, the furniture company had a
confidentiality agreement with Flat Rate, and could not release their report to
me. I called their contact at Flat Rate, who didn’t answer, and left a
voicemail. I called the claims representative’s direct line: her number was no
longer in service. On September 19th I got a call from the claims
representative, who promised she’d have a decision by the end of the day. Flat Rate never talked to me again.</p>
<p>I called again and again, but got voicemail every time. I tried a letter from
my lawyers, an arbitration request with the <a href="https://trucking.org/arbitration-loss-and-damages">American Trucking
Association</a>, complaints with the <a href="https://www.usa.gov/agencies/federal-motor-carrier-safety-administration">Federal Motor Carrier Safety
Administration</a>,
the <a href="https://www.dot.ny.gov/index">New York Department of Transportation</a>’s
Motor Carrier complaint department, and the <a href="https://www.dfs.ny.gov/">New York State Department of
Financial Services</a>; none of this went anywhere.</p>
<h2><a href="#finding-their-insurance" id="finding-their-insurance">Finding Their Insurance</a></h2>
<p>Here’s the thing: movers offer coverage, they have claims departments, and they do many insurance-like things in house. But for complicated reasons, they are not actually insurance companies, and are not regulated as such. Their coverage is backstopped by separate, real insurance companies. I eventually discovered I could bypass Flat Rate and talk to their backing insurance company directly. The Federal Motor Carrier Safety
Administration maintains <a href="https://li-public.fmcsa.dot.gov/LIVIEW/pkg_carrquery.prc_getdetail">a public database of moving companies</a>. Putting in their US DOT number
(488466) yields a page with some basic info. At the bottom are links with their
active and pending insurance, and the history of their insurers.</p>
<p><img class="attachment pure-img" src="/data/posts/381/fmcsa.png" alt="A screenshot of the FMCSA page, with links at the bottom" title="A screenshot of the FMCSA page, with links at the bottom"></p>
<p><img class="attachment pure-img" src="/data/posts/381/insurance-history.png" alt="A screenshot of their insurer history" title="A screenshot of their insurer history"></p>
<p>The insurance history told me their cargo insurer at the time of my move was
Hanover Insurance Company, with policy RHX H706231. The database also had
Hanover’s phone number. I was able to call Hanover and ask about the
policy—it took a few tries, but I got through to a claims adjuster there who
was able to confirm that yes, I could file a claim directly with Hanover. I
sent over a package of documentation, including the photos and the story so
far.</p>
<p>Hanover Insurance informed me they’d never heard anything about my claim, and
called Flat Rate to check. Over the next few days we discovered that Flat Rate
wasn’t just refusing to answer my calls—they wouldn’t answer calls from their insurance company either. Hanover wasn’t able to obtain the report from the furniture company, but they did agree, on the basis of the photos, to pay a reasonable amount for the damage to cargo. I had a check a few days later.</p>
<p>I’m still unhappy with Flat Rate: they charged me a good deal of money for services
they failed to deliver, and never paid for damage to the house. I was gearing up for small claims court—but during the tail end of this fiasco I was entering a fresh hell of home renovation, and got distracted. If you’re reading this, Flat Rate, you still owe me.</p></content>
</entry>
<entry>
<id>https://aphyr.com/posts/380-comments-on-executive-order-14168</id>
<title>Comments on Executive Order 14168</title>
<published>2025-02-21T18:04:55-05:00</published>
<updated>2025-02-21T18:04:55-05:00</updated>
<link rel="alternate" href="https://aphyr.com/posts/380-comments-on-executive-order-14168"></link>
<author>
<name>Aphyr</name>
<uri>https://aphyr.com/</uri>
</author>
<content type="html"><p><em>Submitted to the Department of State, which is <a href="https://www.federalregister.gov/documents/2025/02/18/2025-02696/30-day-notice-of-proposed-information-collection-application-for-a-us-passport-for-eligible">requesting comments</a> on a proposed change which would align US passport gender markers with <a href="https://www.whitehouse.gov/presidential-actions/2025/01/defending-women-from-gender-ideology-extremism-and-restoring-biological-truth-to-the-federal-government/">executive order 14168</a>.</em></p>
<p>Executive order 14168 is biologically incoherent and socially cruel. All passport applicants should be allowed to select whatever gender markers they feel best fit, including M, F, or X.</p>
<p>In humans, neither sex nor gender is binary at any level. There are several possible arrangements of sex chromosomes: X, XX, XY, XXY, XYY, XXX, tetrasomies, pentasomies, etc. A single person can contain a mosaic of cells with different genetics: some XX, some XYY. Chromosomes may not align with genitalia: people with XY chromosomes may have a vulva and internal testes. People with XY chromosomes and a small penis may be surgically and socially reassigned female at birth—and never told what happened. None of these biological dimensions necessarily align with one’s internal concept of gender, or one’s social presentation.</p>
<p>The executive order has no idea how biology works. It defines “female” as “a person belonging, at conception, to the sex that produces the large reproductive cell”. Zygotes do not produce reproductive cells at all: under this order none of us have a sex. Oogenesis doesn’t start until over a month into embryo development. Even if people were karyotyping their zygotes immediately after conception so they could tell what “legal” sex they were going to be, they could be wrong: which gametes we produce depends on the formation of the genital ridge.</p>
<p>All this is to say that if people fill out these forms using this definition of sex, they’re guessing at a question which is both impossible to answer and socially irrelevant. You might be one of the roughly two percent of humans born with an uncommon sexual development and not even know it. Moreover, the proposed change fundamentally asks the wrong question: gender markers on passports are used by border control agents, and are expected to align with how those agents read the passport holder’s gender. A mismatch will create needless intimidation and hardship for travelers.</p>
<p>Of course most of us will not have our identities challenged under this order. That animus is reserved for trans people, for gender-non-conforming people, for anyone whose genetics, body, dress, voice, or mannerisms don’t quite fit the mold. Those are the people who will suffer under this order. That cruelty should be resisted.</p></content>
</entry>
</feed>
<?xml version="1.0" encoding="UTF-8"?><feed xmlns="http://www.w3.org/2005/Atom"><id>https://aphyr.com/</id><title>Aphyr: Posts</title><updated>2025-11-14T15:36:18-05:00</updated><link href="https://aphyr.com/"></link><link rel="self" href="https://aphyr.com/posts.atom"></link><entry><id>https://aphyr.com/posts/399-op-color-plots</id><title>Op Color Plots</title><published>2025-11-14T15:00:52-05:00</published><updated>2025-11-14T15:00:52-05:00</updated><link rel="alternate" href="https://aphyr.com/posts/399-op-color-plots"></link><author><name>Aphyr</name><uri>https://aphyr.com/</uri></author><content type="html"><p>A lot of my work involves staring at visualizations trying to get an intuitive feeling for what a system is doing. I’ve been working on a new visualization for <a href="https://github.com/jepsen-io/jepsen">Jepsen</a>, a distributed systems testing library. This is something I’ve had in the back of my head for years but never quite got around to.</p>
<p>A Jepsen test records a history of operations. Those operations often come in a few different flavors. For instance, if we’re testing a queue, we might send messages into the queue, and try to read them back at the end. It would be bad if some messages didn’t come back; that could mean data loss. It would also be bad if messages came out that were <em>never</em> enqueued; that could signify data corruption. A Jepsen checker for a queue might build up some data structures with statistics and examples of these different flavors: which records were lost, unexpected, and so on. Here’s an example from the <a href="https://github.com/jepsen-io/nats">NATS test</a> I’ve been working on this month:</p>
<pre><code><span></span><span class="p">{</span><span class="ss">:valid?</span> <span class="nv">false</span>,
<span class="ss">:attempt-count</span> <span class="mi">529583</span>,
<span class="ss">:acknowledged-count</span> <span class="mi">529369</span>,
<span class="ss">:read-count</span> <span class="mi">242123</span>,
<span class="ss">:ok-count</span> <span class="mi">242123</span>,
<span class="ss">:recovered-count</span> <span class="mi">3</span>
<span class="ss">:hole-count</span> <span class="mi">159427</span>,
<span class="ss">:lost-count</span> <span class="mi">287249</span>,
<span class="ss">:unexpected-count</span> <span class="mi">0</span>,
<span class="ss">:lost</span> <span class="o">#</span><span class="p">{</span><span class="s">&quot;110-6014&quot;</span> <span class="nv">...</span> <span class="s">&quot;86-8234&quot;</span><span class="p">}</span>,
<span class="ss">:holes</span> <span class="o">#</span><span class="p">{</span><span class="s">&quot;110-4072&quot;</span> <span class="nv">...</span> <span class="s">&quot;86-8234&quot;</span><span class="p">}</span>,
<span class="ss">:unexpected</span> <span class="o">#</span><span class="p">{}}</span>
</code></pre>
<p>You can tell just by eyeballing the numbers that most attempted writes were acknowledged, and about half of them were later read back. There were just three “recovered” writes where we didn’t know if they succeeded or not, and they later appeared. About half were lost: acknowledged but never read. About half of those were “holes”—writes which were missing even though some later write was read. And there’s a few examples, in case you want to go digging into the history and see what might have happened to specific writes.</p>
<p>At the same time, there are lots of <em>qualitative</em> questions that are hard to answer statistically. For instance, were the lost writes clustered together in time, or were they spread out? What faults might have happened to trigger write loss? Is data loss universal on short timescales, or do, say, 40% of writes survive? Is the rate of writes uniform over time, or do lost writes happen faster or slower? Did the data loss event destroy all records prior to some time, or did some survive? Could apparent data loss be attributed to slow delivery of messages, or is it likely that the data is truly missing?</p>
<p><img class="attachment pure-img" src="/data/posts/399/set.png" alt="A timeseries plot, as described below" title="A timeseries plot, as described below"></p>
<p>This plot helps answer some of those questions. Time flows left to right. Each operation (measured by its invocation time) becomes a single point. Colors indicate the flavor of that operation: OK, lost, unknown, or so on. Operations are splayed out vertically, in such a way that the aggregate “shape” of the plot traces out the rough throughput of the system over time. Operations from the fault-injection system are shown as vertical lines and (for process kills) horizontal bars spanning them.</p>
<p>From this, we can see that data loss occurred in two large chunks, starting near a file-corruption operation at roughly 65 seconds and running until the end of the test. They were not evenly mixed: writes were lost in blocks. A few records survived around 87 seconds in, then everything later was lost as well. These OK records in the middle hint that this is “real” data loss, as opposed to readers lagging behind. The rate of OK and lost operations was essentially constant at ~6,800 records/sec. Unknown operations happened <em>much</em> slower–likely due to timeouts. Some, but not all, process kills caused throughput to tank. You can guess that some of them took down a majority of nodes, halting the cluster until nodes were restarted; others were recoverable after a few seconds.</p>
<p>Jepsen tests can range from a handful of operations to hundreds of millions, and our plots need to work for both extremes. In this case, the plot used single-pixel dots for frequent operations like <code>ok</code> and <code>lost</code>, but for the handful of <code>unknown</code> operations, switched to a larger cross style. These infrequent operations are often of the most interest, and could easily get lost in the noise, so it makes sense to visually emphasize them.</p>
<p>This isn’t a <em>good</em> plot yet. I am, for instance, running out of colors to represent all the kinds of faults, and that leads to awkward color-blind issues like the red/green pairing here. There’s a sort of aliasing/moire pattern caused by the point layout algorithm, which divides the history into 512 time windows, computes a height for each window based on throughput, and then spreads the window’s points along the y axis uniformly. I feel like I may be able to use some sort of adaptively-determined transparency and overlapping dots to get something a little closer to a density field, and that might read more clearly, but I’m wary of what might happen when some windows have lots of plots and others have only a few.</p>
<p>Despite these shortcomings, this plot has been remarkably useful! I’m using them to get an at-a-glance feel for how bad a given test run is, to figure out where in the history I should look, and to refine the checker itself.</p>
<p>Because there’s lots of ways you could interpret these plots—showing lost elements of a set, highlighting transaction anomalies in an SQL test, showing how read-only and read-write queries are affected by faults—I don’t really know what to name them yet. For now I’m calling them “op color plots”. They’re available in the <a href="https://github.com/jepsen-io/jepsen/blob/3eb61ba6b1e855bd38d042389a0736252c47f71e/jepsen/src/jepsen/checker/plot.clj#L22-L145">current Jepsen 0.3.10-SNAPSHOT</a>, and I’m hoping they’ll be useful in all kinds of tests to come.</p>
</content></entry><entry><id>https://aphyr.com/posts/398-the-future-of-fact-checking-is-lies-i-guess</id><title>The Future of Fact-Checking is Lies, I Guess</title><published>2025-11-10T14:24:47-05:00</published><updated>2025-11-10T14:24:47-05:00</updated><link rel="alternate" href="https://aphyr.com/posts/398-the-future-of-fact-checking-is-lies-i-guess"></link><author><name>Aphyr</name><uri>https://aphyr.com/</uri></author><content type="html"><p>Last weekend I was trying to pull together sources for <a href="https://aphyr.com/posts/397-i-want-you-to-understand-chicago">an essay</a> and kept finding “fact check” pages from <a href="https://factually.co">factually.co</a>. For instance, a Kagi search for <a href="https://kagi.com/search?q=pepper+ball+chicago+pastor">“pepper ball Chicago pastor”</a> returned <a href="https://web.archive.org/web/20251110003151/factually.co/fact-checks/justice/ice-agents-pepperball-incident-b2b86e">this Factually article</a> as the second result:</p>
<blockquote>
<p><b>Fact check: Did ice agents shoot a pastor with pepperballs in October in Chicago</b></p>
<p>The claim that “ICE agents shot a pastor with pepperballs in October” is not supported by the available materials supplied for review; none of the provided sources document a pastor being struck by pepperballs in October, and the only closely related reported incident involves a CBS Chicago reporter’s vehicle being hit by a pepper ball in late September <a href="https://web.archive.org/web/20251110003151/https://www.cbsnews.com/chicago/news/feds-fire-pepper-ball-at-cbs-chicago-reporters-truck/">[1]</a><a href="https://web.archive.org/web/20251110003151/https://www.ftvlive.com/sqsp-test/2025/9/29/reporter-claims-ice-agents-fired-at-her-direction">[2]</a>. Available reports instead describe ICE operations, clergy protests, and an internal denial of excessive force, but they do not corroborate the specific October pastor shooting allegation <a href="https://web.archive.org/web/20251110003151/https://www.usnews.com/news/best-states/illinois/articles/2025-09-20/ice-denies-using-excessive-force-as-it-broadens-immigration-arrests-in-chicago">[3]</a><a href="https://web.archive.org/web/20251110003151/https://chvnradio.com/articles/clergy-protest-ice-and-national-guard-presence-near-dc-churches">[4]</a>.</p>
</blockquote>
<p>Here’s <a href="https://web.archive.org/web/20251110155956/https://factually.co/fact-checks/justice/pastor-shot-by-ice-pepper-ball-493ff8">another “fact check”</a>:</p>
<blockquote>
<p><b>Fact check: Who was the pastor shot with a pepper ball by ICE</b></p>
<p>No credible reporting in the provided materials identifies a pastor who was shot with a pepper‑ball by ICE; multiple recent accounts instead document journalists, protesters, and community members being hit by pepper‑ball munitions at ICE facilities and demonstrations. The available sources (dated September–November 2025) describe incidents in Chicago, Los Angeles and Portland, note active investigations and protests, and show no direct evidence that a pastor was targeted or injured by ICE with a pepper ball <a href="https://web.archive.org/web/20251110155956mp_/https://www.cbsnews.com/chicago/news/feds-fire-pepper-ball-at-cbs-chicago-reporters-truck/">[1]</a> <a href="https://web.archive.org/web/20251110155956mp_/https://www.thecorsaironline.com/corsair/2025/9/11/z749m9bixh4cur754hg9rlib50g9w1">[2]</a> <a href="https://web.archive.org/web/20251110155956mp_/https://www.usnews.com/news/best-states/illinois/articles/2025-09-20/ice-denies-using-excessive-force-as-it-broadens-immigration-arrests-in-chicago">[3]</a> <a href="https://web.archive.org/web/20251110155956mp_/https://www.theguardian.com/us-news/2025/sep/19/ice-protest-chicago-police#:~:text=Federal%20law%20enforcement%20agents%20used,building%20in%20Chicago%20on%20Friday.">[4]</a>.</p>
</blockquote>
<p>These certainly look authoritative. They’re written in complete English sentences, with professional diction and lots of nods to neutrality and skepticism. There are lengthy, point-by-point explanations with extensively cited sources. The second article goes so far as to suggest “who might be promoting a pastor-victim narrative”.</p>
<p>The problem is that both articles are false. <a href="https://religionnews.com/2025/10/07/in-chicago-clergy-and-religious-protesters-say-ice-is-threatening-their-religious-freedom/">This</a> <a href="https://www.cnn.com/2025/10/08/us/video/amanda-tovar-witness-chicago-reverend-david-black-ice-pepper-balls">story</a> <a href="https://www.youtube.com/watch?v=DVKXujeagO0">was</a> <a href="https://abcnews.go.com/US/video/chicago-pastor-sues-ice-alleging-agents-shot-pepper-126689554">broadly</a> <a href="https://chicago.suntimes.com/immigration/2025/11/06/minister-david-black-gregory-bovino-broadview-pepperballs-protest-court-ruling-sara-ellis">reported</a>, as in this <a href="https://www.fox32chicago.com/news/video-federal-agent-shoot-chicago-pastor-head-pepper-ball-broadview-ice-protest">October 8th Fox News article</a> unambiguously titled “Video shows federal agent shoot Chicago pastor in head with pepper ball during Broadview ICE protest”. DHS Assistant Secretary Tricia McLaughlin even went on <a href="https://x.com/TriciaOhio/status/1976026380841386287">X to post about it</a>. This event definitely happened, and it would not have been hard to find coverage at the time these articles were published. It was, quite literally, all over the news.</p>
<p>Or maybe the articles are sort of true. Each summary disclaims that its findings are based on “the available materials supplied for review”, or “the provided materials”. This is splitting hairs. Source selection is an essential part of the fact-checking process, and Factually <a href="https://factually.co/faq">selects its own sources</a> in response to user questions. Instead of finding authoritative sources, Factually selected irrelevant ones and spun them into a narrative which is the opposite of true. Many readers will not catch this distinction. Indeed, I second-guessed myself when I saw the Factually articles—and I read the original reporting when it happened.</p>
<p>“These conversations matter for democracy,” says the call-to-action at the top of <a href="https://web.archive.org/web/20251110155956/https://factually.co/fact-checks/justice/pastor-shot-by-ice-pepper-ball-493ff8">every Factually article</a>. The donation button urges readers to “support independent reporting.”</p>
<p>But this is not reporting. Reporters go places and talk to people. They take photographs and videos. They search through databases, file FOIA requests, read court transcripts, evaluate sources, and integrate all this with an understanding of social and historical context. People go to journalism school to do this.</p>
<p><a href="https://factually.co/faq">What Factually does</a> is different. It takes a question typed by a user and hands it to a Large Language Model, or LLM, to generate some query strings. It performs up to three Internet search queries, then feeds the top nine web pages it found to a pair of LLMs, and asks them to spit out some text shaped like a fact check. This text may resemble the truth, or—as in these cases—utterly misrepresent it.</p>
<p>Is the East Wing of the White House <a href="https://www.cnn.com/2025/10/26/politics/white-house-east-wing-history">still there</a>? Factually is happy to <a href="https://web.archive.org/web/20251111045206/https://factually.co/fact-checks/politics/trump-white-house-renovation-bba06d">gaslight readers</a> into thinking it wasn’t demolished. Did David Ballard <a href="https://www.cnn.com/2025/10/03/us/chicago-apartment-ice-raid">see a Black Hawk helicopter</a> used in the South Shore immigration raid, like the one in DHS Secretary Kristi Noem’s <a href="https://x.com/Sec_Noem/status/1974443512017178924">video montage of that night</a>? Might it have been <a href="https://www.helis.com/database/cn/51171/">03-26987</a> or <a href="https://www.helis.com/database/cn/44162/">86-24548</a>, both of which were in Chicago in the weeks before the raid? Factually is confident that “no direct, documented evidence” supports this story, and suggests readers <a href="https://web.archive.org/web/20251111045221/https://factually.co/fact-checks/politics/ice-blackhawks-operations-in-us-cities-53a97d">might have confused the helicopter with Chicago’s hockey team</a>. Did ICE announce <a href="https://www.nytimes.com/2025/08/05/us/politics/ice-bonuses-immigrants-deportations.html">a cash bonus program for speedy deportations</a>, then retract it a few hours later? Factually.co <a href="https://factually.co/fact-checks/politics/ice-deportation-quotas-bonuses-e340e5">knows nothing about that story</a>. Over in my neck of the woods, Factually <a href="https://web.archive.org/web/20251110203032/factually.co/fact-checks/technology/is-mongodb-strong-serializable-55a4ba">happily conflates</a> Serializability with Snapshot Isolation, and repeatedly misleads users into thinking they can get Strong Serializable guarantees by turning on <code>snapshot</code> read concern and <code>majority</code> write concern. To be clear, <a href="https://jepsen.io/analyses/mongodb-4.2.6">this won’t work</a>.</p>
<p><b>Calling Factually’s articles “fact checks” is a category error.</b> A fact checker diligently investigates a claim, reasons about it, and ascertains some form of ground truth. Fact checkers are held to a higher evidentiary standard; they are what you rely on when you want to be sure of something. They are supposed to be right when other sources are wrong. The web pages on <a href="https://factually.co">factually.co</a> are fact-check-flavored slurry, extruded by a statistical model which <a href="https://garymarcus.substack.com/p/llms-dont-do-formal-reasoning-and">does not understand what it is doing</a>. They are fancy Mad Libs.</p>
<p>The end result of this absurd process is high-ranking, authoritative-sounding web pages which sometimes tell the truth, and sometimes propagate lies. Factually is a stochastic disinformation machine which exacerbates the very problems fact-checkers are supposed to solve.</p>
<p>Please stop doing this.</p>
</content></entry><entry><id>https://aphyr.com/posts/397-i-want-you-to-understand-chicago</id><title>I Want You to Understand Chicago</title><published>2025-11-08T13:15:07-05:00</published><updated>2025-11-08T13:15:07-05:00</updated><link rel="alternate" href="https://aphyr.com/posts/397-i-want-you-to-understand-chicago"></link><author><name>Aphyr</name><uri>https://aphyr.com/</uri></author><content type="html"><p>I want you to <a href="https://dansinker.com/posts/2025-10-24-understand/">understand</a> what it is like to live in Chicago during this time.</p>
<p>Every day my phone buzzes. It is a neighborhood group: four people were
kidnapped at the corner drugstore. A friend a mile away sends a Slack message:
she was at the scene when masked men assaulted and abducted two people on the
street. A plumber working on my pipes is distraught, and I find out that two of his
employees were kidnapped that morning. A week later it happens again.</p>
<p>An email arrives. Agents with guns <a href="https://chicago.suntimes.com/immigration/2025/11/05/daycare-teacher-taken-by-ice-north-side-immigration">have chased a teacher</a> into the school where she
works. They did not have a warrant. They dragged her away, ignoring her and her colleagues’ pleas to show proof of her documentation. That evening I stand a few feet from the parents of Rayito de Sol and listen to them describe, with anguish, how good
Ms. Diana was to their children. What it is like to have <a href="https://ca.news.yahoo.com/video-shows-ice-agents-grabbing-202310296.html">strangers with guns
traumatize your
kids</a>.
For a teacher to hide a three-year-old child <a href="https://www.chalkbeat.org/chicago/2025/11/05/daycare-worker-pulled-out-of-school-by-armed-federal-agents-traumatizing-parents-say/">for fear they might be
killed</a>.
How their relatives will no longer leave the house. I hear the pain and fury in
their voices, and I wonder who will be next.</p>
<p>Understand what it is to pray in Chicago. On September 19th, Reverend David Black, lead pastor at First Presbyterian Church of Chicago, was <a href="https://wgntv.com/news/chicago-news/i-wonder-about-their-intentions-chicago-pastor-speaks-out-after-ice-agents-shoot-him-in-head-with-pepper-balls-in-broadview/">praying outside the ICE detention center in Broadview</a> when a DHS agent <a href="https://www.msn.com/en-us/news/us/reverend-shot-by-ice-shares-chilling-warning-after-being-left-with-dent-in-his-head/ar-AA1PHXPe">shot him in the head with pepper balls</a>. Pepper balls are <a href="https://store-c19drjba2a.mybigcommerce.com/content/PEP-22018-TRP-LE-Manual-042423.pdf">never supposed to be fired at the head</a> because they can seriously injure, or even kill. “We could hear them laughing as they were shooting us from the roof,” Black recalled. He is not the only member of the clergy ICE has assaulted. Methodist pastor Hannah Kardon was violently arrested <a href="https://www.youtube.com/watch?v=eARiC31koHo">on October 17th</a>, and Baptist pastor Michael Woolf was shot with pepper balls <a href="https://wordandway.org/2025/11/04/baptist-pastor-shot-in-leg-by-officer-during-all-saints-day-march-outside-ice-facility/">on November 1st</a>.</p>
<p>Understand what it is to sleep in Chicago. On the night of <a href="https://www.npr.org/2025/10/24/nx-s1-5570113/chicago-south-shore-building-residents-recount-humiliating-ice-raid">September
30th</a>,
federal agents rappelled from a Black Hawk helicopter to execute a raid on an apartment
building on the South Shore. Roughly three hundred agents deployed flashbangs,
busted down doors, and took people indiscriminately. US citizens—some women and children—were grabbed from their beds, marched outside without even a chance to dress, zip-tied, and <a href="https://www.youtube.com/watch?v=vFh5yBIxTpc">loaded into
vans</a>. Residents returned to <a href="https://blockclubchicago.org/2025/10/02/south-shore-residents-return-to-ransacked-apartments-try-to-move-out-after-ice-raid-it-looks-like-hell/">find
their windows and doors broken</a> and their belongings
stolen. Despite the violence of the raid, it appears <a href="https://www.propublica.org/article/chicago-venezuela-immigration-ice-fbi-raids-no-criminal-charges">no criminal charges</a> were filed.</p>
<p>Understand what it is to lead Chicago. On October 3rd, Alderperson Jesse Fuentes <a href="https://blockclubchicago.org/2025/10/15/ald-jesse-fuentes-gears-up-to-sue-after-being-handcuffed-by-ice-agent/">asked federal agents</a> to produce a judicial warrant and allow an injured man at the hospital access to an attorney. The plainclothes agents grabbed Fuentes, handcuffed her, and took her outside the building. Her lawsuit <a href="https://chicago.suntimes.com/city-hall/2025/10/21/ald-jessie-fuentes-tort-claim-ice-agents-humboldt-park">is ongoing</a>. On October 21st, Representative Hoan Huynh was <a href="https://www.cbsnews.com/chicago/news/illinois-state-rep-hoan-huynh-border-patrol-agents-gun-drawn/">going door-to-door</a> to inform businesses of their immigration rights when he was attacked by six armed CBP agents, who boxed in his vehicle and pointed a gun at his face. Huynh says the agents <a href="https://www.fox32chicago.com/news/chicago-lawmaker-stopped-gunpoint">tried to bash open his car window</a>.</p>
<p>Understand what it is to live in Chicago. On October 9th, Judge Ellis issued a <a href="https://www.nprillinois.org/chicago-il/2025-10-09/judge-grants-restraining-order-protecting-protesters-journalists-in-chicago-area-protests">temporary restraining
order</a>
requiring that federal agents refrain from deploying tear gas or shooting
civilians without an imminent threat, and requiring two audible warnings. ICE
and CBP have flouted these court orders. On October 12th, federal agents
<a href="https://chicago.suntimes.com/immigration/2025/10/12/ice-chicago-albany-park-tear-gas">shoved an attorney to the
ground</a>
who tried to help a man being detained in Albany Park. Agents refused to
identify themselves or produce a warrant, then deployed tear gas without
warning. On October 14th, agents rammed a car on the East Side, then
<a href="https://www.chicagotribune.com/2025/10/14/ice-deploys-tear-gas-after-crash/">tear-gassed neighbors and
police</a>.</p>
<p>On October 23rd, federal agents <a href="https://blockclubchicago.org/2025/10/22/border-patrol-agents-descend-on-little-village-sparking-fury-fear-in-neighborhood/">detained seven
people</a>,
including two U.S. citizens and an asylum seeker, in Little Village. Two worked
for Alderperson Michael Rodriguez: his chief of staff Elianne Bahena, and
police district council member Jacqueline Lopez. Again in Little Village, agents <a href="https://blockclubchicago.org/2025/10/23/immigration-agents-protesters-clash-in-little-village-for-2nd-day-in-a-row/">tear-gassed and pepper-sprayed protestors</a>, seizing two high school students and a security guard, among others. Alderperson Byron Sigcho-Lopez reported that agents assaulted one of the students, who had blood on his face. On October 24th, agents in
Lakeview emerged from unmarked cars, climbed a locked fence to enter a
private yard, and <a href="https://blockclubchicago.org/2025/10/24/lakeview-street-tear-gassed-by-agents-amid-north-side-immigration-surge-it-hit-home/">kidnapped a construction
worker</a>.
As neighbors gathered, they deployed four tear gas canisters. That same day, a few blocks away,
men with rifles jumped out of SUVs and <a href="https://blockclubchicago.org/2025/10/24/lakeview-street-tear-gassed-by-agents-amid-north-side-immigration-surge-it-hit-home/">assaulted a man standing at a bus
stop</a>.</p>
<p>“They were beating him,” said neighbor Hannah Safter. “His face was bleeding”.</p>
<p>They returned minutes later and attacked again. A man from the Laugh Factory, a
local comedy club, had come outside with his mother and sister. “His mom put
her body in between them, and one of the agents kicked her in the face”.</p>
<p>Understand what it is to be a family in Chicago. On October 25th, agents
arrested a 70-year-old man and <a href="https://blockclubchicago.org/2025/10/26/federal-agents-use-tear-gas-again-this-time-in-northwest-side-confrontations/">threw a 67-year old woman to the
ground</a> in Old Irving Park, <a href="https://abcnews.go.com/US/border-patrol-agents-fire-allegedly-disrupting-childrens-halloween/story?id=126900354">then deployed tear gas</a>, disrupting a <a href="https://blockclubchicago.org/2025/10/28/after-halloween-parade-ruined-by-federal-agents-old-irving-park-neighbors-furious/">children’s Halloween parade</a>. One parent spoke to <a href="https://www.nbcnews.com/news/us-news/chicago-immigration-enforcement-children-tear-gas-border-patrol-rcna241629">NBC news</a> about her two-year-old child’s response to the gas. The same day, agents <a href="https://chicago.suntimes.com/immigration/2025/10/26/northwest-side-ice-arrests-tear-gas">deployed tear gas against residents of Avondale</a>.</p>
<p>“Kids dressed in Halloween costumes walking to a parade do not pose an immediate threat to the safety of a law enforcement officer. They just don’t. And you can’t use riot control weapons against them,” <a href="https://blockclubchicago.org/2025/10/28/after-halloween-parade-ruined-by-federal-agents-old-irving-park-neighbors-furious/">Judge Ellis said</a> to Border Patrol chief Gregory Bovino.</p>
<p>Understand how the government speaks about Chicago. On November 3rd, paralegal Dayanne Figueroa, a US citizen, was driving to work when federal agents <a href="https://www.chicagotribune.com/2025/11/03/chicago-woman-collision-ice-accountability/">crashed into her car</a>, drew their guns, and dragged her from the vehicle. Her car was left behind, coffee still in the cup holder, keys still in the car. The Department of Homeland Security blamed her, claiming she “violently resisted arrest, injuring two officers.” You can <a href="https://www.youtube.com/watch?v=vLozt6ThXfE">watch the video for yourself</a>.</p>
<p>“All uses of force have been more than exemplary,” Bovino <a href="https://wgntv.com/news/operation-midway-blitz/judge-border-patrol-commander-lied-about-use-of-force/">stated in a recent deposition</a>. He is, as Judge Ellis put it, lying. Bovino <a href="https://abcnews.go.com/US/border-patrol-commander-admitted-lied-tear-gas-incident/story?id=127283392">personally threw a tear gas canister in Little Village</a>. He claimed <a href="https://wgntv.com/news/operation-midway-blitz/judge-border-patrol-commander-lied-about-use-of-force/">in a sworn deposition</a> that he was struck in the head by a rock before throwing the canister, and when videos showed no rock, <a href="https://chicago.suntimes.com/public-safety/2025/11/04/plaintiffs-lawyers-bovino-views-protesters-as-violent-rioters-tells-officers-to-go-hard-against-them">admitted that he lied</a> about the event. When shown video of himself <a href="https://wgntv.com/news/operation-midway-blitz/judge-border-patrol-commander-lied-about-use-of-force/">tackling peaceful protestor Scott Blackburn</a>, Bovino refused to acknowledge that he tackled the man. Instead, he claimed, “That’s not a reportable use of force. The use of force was against me.”</p>
<p>“I find the government’s evidence to be simply not credible,” <a href="https://www.chicagotribune.com/2025/11/06/operation-midway-blitz-injunction/">said Judge Ellis</a> in her November 6th ruling. “The use of force shocks the conscience.”</p>
<p>Understand what it is to be Chicago. To <a href="https://blockclubchicago.org/2025/10/15/hundreds-pack-chicago-whistlemania-events-in-effort-to-fight-ice-we-have-to-stand-up-for-one-another/">carry a whistle</a> and have the <a href="https://www.icirr.org/fsn">ICIRR hotline</a> in your phone. To wake up from nightmares of shouting militiamen and guns in your face. To rehearse every day how to calmly refuse entry, how to identify a judicial warrant, how to film and narrate an assault. To wake to helicopters buzzing your home, to feel your heart rate spike at the car horns your neighbors use to alert each other to ICE and CBP enforcement. To know that perhaps three thousand of your fellow Chicagoans have <a href="https://www.nbcchicago.com/investigations/could-ice-have-lost-3000-immigrant-arrestees-in-chicago/3844220/">been disappeared</a> by the government, but <a href="https://www.wbez.org/immigration/2025/09/12/immigration-customs-enforcement-ice-arrests-detentions-data-deportation-project-trac">no one really knows for sure</a>. To know that many of those seized were imprisoned a few miles away, <a href="https://www.pbs.org/newshour/nation/judge-calls-alleged-conditions-at-chicago-area-immigration-site-disgusting">as many as a hundred and fifty people in a cell</a>, denied access to food, water, sanitation, and legal representation. To know that many of these agents—masked, without badge numbers or body cams, and refusing to identify themselves—will never face justice. To wonder what they tell their children.</p>
<p>The masked thugs who attack my neighbors, who point guns at elected officials and shoot pastors with pepper balls, who tear-gas neighborhoods, terrify children, and drag teachers and alderpeople away in handcuffs <a href="https://en.wikipedia.org/wiki/Schutzstaffel">are not unprecedented</a>. We knew this was coming a year ago, when <a href="https://www.npr.org/2024/11/12/nx-s1-5181962/trump-promises-a-mass-deportation-on-day-1-what-might-that-look-like">Trump promised mass deportations</a>. We knew it was coming, and seventy-seven million of us voted for it anyway.</p>
<p>This weight presses on me every day. I am flooded with stories. There are so many I cannot remember them all; cannot keep straight who was gassed, beaten, abducted, or shot. I write to leave a record, to stare at the track of the tornado. I write to leave a warning. I write to call for help.</p>
<p>I want you to understand, regardless of your politics, the historical danger of a secret police. What happens when a militia is deployed in our neighborhoods and against our own people. Left unchecked their mandate will grow; the boundaries of acceptable identity and speech will shrink. I want you to think about elections in this future. I want you to understand that every issue you care about—any hope of participatory democracy—is downstream of this.</p>
<p>I want you to understand what it is to love Chicago. To see your neighbors make the heartbreaking choice between showing up for work or staying safe. To <a href="https://blockclubchicago.org/2025/10/18/thousands-gather-to-protest-trump-at-chicagos-no-kings-rally-downtown/">march two miles long</a>, calling out: “This is what Chicago sounds like!” To see your representatives put <a href="https://www.youtube.com/watch?v=tWuIONYSwhA">their bodies on the line</a> and their <a href="https://abc7chicago.com/post/chicago-daycare-worker-rayito-de-sol-arrested-ice-front-children-witnesses-say/18116866/">voices in the fight</a>. To <a href="https://blockclubchicago.org/2025/10/08/chicago-neighbors-are-forming-watches-near-schools-to-protect-students-guardians-from-ice/">form patrols</a> to walk kids safely to school. To join <a href="https://dailynorthwestern.com/2025/11/05/city/icirr-eyes-on-ice-text-network-alerts-community-to-verified-federal-immigration-enforcement-activity/">rapid-response networks</a> to document and alert your neighbors to immigration attacks. For mutual aid networks to <a href="https://blockclubchicago.org/2025/11/05/from-chicago-to-la-neighborly-solidarity-fuels-resistance-to-ice/">deliver groceries</a> and <a href="https://blockclubchicago.org/2025/10/17/chicago-cyclists-are-buying-out-tamale-carts-to-keep-vendors-home-and-safe-from-ice/">buy out street vendors</a> so they can go home safe. To see your local journalists <a href="https://blockclubchicago.org/2025/10/07/block-club-chicago-news-organizations-sue-feds-over-first-amendment-violations/">take the federal government to court</a>. To talk to neighbor after neighbor, friend after friend, and hear yes, yes, it’s all hands on deck.</p>
<p>I want you to understand Chicago.</p>
<p><em>This essay has been building—eating at me, really—for the last two months. My thanks to all the friends, family, neighbors and colleagues who have talked with me about ICE and CBP. In particular, I want to acknowledge the families of Rayito de Sol—parents like Maria Guzman and Tara Goodarzi, whose powerful speeches have been lodged in my chest. Also the members of <a href="https://www.onenorthside.org/">One Northside</a>, Aldermen Vasquez and Martin, Senator Simmons, and everyone who spoke at the rally Wednesday. Your call to “tell the story” caught me, and I hope I have done some small part of that work here.</em></p>
<p><em>I was particularly moved by Kelly Hayes’ <a href="https://organizingmythoughts.org/in-chicago-we-run-toward-danger-together/">In Chicago, We Run Toward Danger Together</a> and Dan Sinker’s <a href="https://dansinker.com/posts/2025-10-24-understand/">What I Need You To Understand</a>, which inspired the core motif of this essay. His follow-up <a href="https://dansinker.com/posts/2025-11-05-ghosts/">Ghosts in the Graveyard</a> is also worth your time. Cam’s <a href="https://buttondown.com/camrodriguez/archive/11525-on-repacking-your-unpacked-funeral-clothes/">On Repacking Your Unpacked Funeral Clothes</a> breaks my heart. Laurie Merrell’s <a href="https://lauriemerrell.com/posts/dispatch-from-occupied-chicago/">Dispatch from Occupied Chicago</a> is a lucid, reflective piece which mirrors my own feelings.</em></p>
<p><em>ICE and CBP affect us all: south, east, north and west; city and suburb. In particular, ICE has hit Little Village, a predominantly Latino neighborhood on the Southwest Side, <a href="https://borderlessmag.org/2025/10/24/when-ice-came-to-little-village-residents-stood-up-we-are-in-solidarity/">hard in recent weeks</a>. Marginalized communities especially deserve our focus and care.</em></p>
<p><em>You can donate your time and money to organizations like <a href="https://www.icirr.org/">ICIRR</a>, which connects immigrants and refugees with legal aid and social services. I also suggest a donation to the non-profit <a href="https://blockclubchicago.org/">Block Club Chicago</a> or <a href="https://chicago.suntimes.com/">Chicago Sun-Times</a>, both of whom have been doing exceptional local journalism in this dark time. Without their reporting, this would have been impossible.</em></p>
</content></entry><entry><id>https://aphyr.com/posts/396-notes-on-prothean-ai</id><title>Notes on "Prothean AI"</title><published>2025-11-02T20:38:55-05:00</published><updated>2025-11-02T20:38:55-05:00</updated><link rel="alternate" href="https://aphyr.com/posts/396-notes-on-prothean-ai"></link><author><name>Aphyr</name><uri>https://aphyr.com/</uri></author><content type="html"><p><em>If this were one person, I wouldn’t write this publicly. Since there are apparently multiple people on board, and they claim to be looking for investors, I think the balance falls in favor of disclosure.</em></p>
<p>Last week Prothean Systems <a href="https://www.facebook.com/reel/2528744020845660">announced they’d surpassed AGI</a> and <a href="https://www.beprothean.org/TECHNICAL_WHITE_PAPER#9-conclusion">called for the research community</a> to “verify, critique, extend, and improve upon” their work. Unfortunately, Prothean Systems has not published the repository they say researchers should use to verify their claims. However, based on their posts, web site, and public GitHub repositories, I can offer a few basic critiques.</p>
<h2><a href="#arc-agi-2" id="arc-agi-2">ARC-AGI-2</a></h2>
<p>First: Prothean’s core claim, repeated in the <a href="https://www.beprothean.org/TECHNICAL_WHITE_PAPER">white paper</a>, the <a href="https://www.beprothean.org/FAQ">FAQ</a>, and <a href="https://www.beprothean.org/PRESS_RELEASE">the press release</a>, is that Prothean has <a href="https://www.facebook.com/photo.php?fbid=10236879950353996&amp;set=p.10236879950353996&amp;type=3">successfully solved</a> all 400 tasks of the <a href="https://arcprize.org/arc-agi/2/">ARC-AGI-2 benchmark</a>:</p>
<blockquote>
<p>We present Prothean Emergent Intelligence, a novel five-pillar computational architecture that achieved 100% accuracy on all 400 tasks of the ARC-AGI-2 challenge in 0.887 seconds.</p>
</blockquote>
<!-- -->
<blockquote>
<p>This system achieved 100% accuracy on all 400 tasks of the ARC-AGI-2 challenge in 0.887 seconds—a result previously considered impossible for artificial intelligence systems.</p>
</blockquote>
<!-- -->
<blockquote>
<p>ARC-AGI-2 is specifically designed to resist gaming:</p>
<ul>
<li>400 unique, novel tasks</li>
<li>No training data available</li>
</ul>
</blockquote>
<p>It is not possible to solve “all 400 tasks of the ARC-AGI-2 challenge” because ARC-AGI-2 does not have 400 evaluation tasks to solve. Nor is it true that ARC-AGI-2 has no training data. The ARC-AGI-2 web site and docs are clear about this: the workload consists of <a href="https://github.com/arcprize/ARC-AGI-2?tab=readme-ov-file#dataset-composition">“1,000 public training tasks and 120 public evaluation tasks”</a>.</p>
<p>Prothean System’s “verification protocol” <a href="https://www.beprothean.org/TECHNICAL_WHITE_PAPER">instructs researchers</a> to download these 400 tasks from a <a href="https://github.com/fchollet/ARC-AGI/arc-agi-2-dataset.zip">non-existent URL</a>:</p>
<blockquote>
<p><strong>Step 3: Obtain ARC-AGI-2 Dataset</strong></p>
<pre><code><span></span><span class="c1"># Download official dataset</span>
wget https://github.com/fchollet/ARC-AGI/arc-agi-2-dataset.zip
</code></pre>
</blockquote>
<p>This isn’t even the right repository. ARC-AGI-2 is at <a href="https://github.com/arcprize/ARC-AGI-2">https://github.com/arcprize/ARC-AGI-2</a>.</p>
<h2><a href="#local-operations" id="local-operations">Local Operations</a></h2>
<p>Prothean Systems repeatedly claims that its operations are purely local. The <a href="https://www.facebook.com/reel/2528744020845660">announcement post</a> states:</p>
<blockquote>
<p>🧬 WE SURPASSED AGI. THIS IS EGI. NOT AI. HERE’S THE PROOF.</p>
<p>Welcome to Prothean EGI.<br>
──────────<br>
After years of research and months of physical development, I’ve been building something that shouldn’t exist yet.</p>
<p>After months of solo development, I put together a small strike force team—the Prothean Systems team—to bring this vision to life.</p>
<p>Prothean Systems — Emergent General Intelligence (EGI) that lives on your device, remembers everything, and never leaves your hands.</p>
<p>No servers. No uploads. No corporate AI deciding what you can know.</p>
</blockquote>
<p>The demo on <a href="https://www.beprothean.org/">beprothean.org</a> also advertises “no servers” and “zero uploads”. This is obviously false. Typing almost anything into this box, such as “what are the five pillars”, triggers two queries to Wikipedia and ten messages, including a mix of reads and writes, to the <a href="https://firebase.google.com/">Firebase</a> hosted database service:</p>
<p><img class="attachment pure-img" src="/data/posts/396/chat.png" alt="A screenshot of the Prothean intelligence demo. It invites me to ask about any of the five pillars, and advises that it runs entirely in browser, with no servers or uploads. I ask 'What are the five pillars?, and it responds with a snippet from Wikipedia." title="A screenshot of the Prothean intelligence demo. It invites me to ask about any of the five pillars, and advises that it runs entirely in browser, with no servers or uploads. I ask 'What are the five pillars?, and it responds with a snippet from Wikipedia."></p>
<p><img class="attachment pure-img" src="/data/posts/396/2025-11-02T19-52-22-network.png" alt="A screenshot of the network traffic issued by the Prothean &quot;local&quot; demo." title="A screenshot of the network traffic issued by the Prothean &quot;local&quot; demo."></p>
<h2><a href="#compression" id="compression">Compression</a></h2>
<p>Prothean’s <a href="https://www.facebook.com/reel/2528744020845660">launch video</a> explains that Prothean uses a multi-tier compression system called “Memory DNA”. This system “actually looks at the data, understands its characteristics, and then applies the absolute best compression technique for it”. The white paper lists nine compression tiers:</p>
<blockquote>
<p><strong>Compression Cascade:</strong><br>
1. <strong>Semantic Extraction</strong> (40% reduction) - Core meaning preservation<br>
2. <strong>Pattern Recognition</strong> (25% reduction) - Recurring structure identification<br>
3. <strong>Fibonacci Sequencing</strong> (15% reduction) - φ-ratio temporal organization<br>
4. <strong>Harmonic Resonance</strong> (10% reduction) - Frequency-domain optimization<br>
5. <strong>Contextual Pruning</strong> (8% reduction) - Relevance-based filtering<br>
6. <strong>Recursive Abstraction</strong> (6% reduction) - Meta-pattern extraction<br>
7. <strong>Golden Ratio Weighting</strong> (4% reduction) - φ-importance scaling<br>
8. <strong>Temporal Decay</strong> (3% reduction) - Age-based compression<br>
9. <strong>Neural Synthesis</strong> (2% reduction) - Final integration</p>
</blockquote>
<p>The demo on <a href="https://beprothean.org">beprothean.org</a> does nothing of the sort. Instead, it makes <a href="https://github.com/CaptainFuzzyFTW/beprothean-site/blob/b4ee6a4b6e12a624718c63c6bea615a0b32efeea/index.html#L1247">a single call</a> to the open-source <a href="https://pieroxy.net/blog/pages/lz-string/index.html">lz-string library</a>, which is based on <a href="https://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Welch">LZW</a>, a broadly-used compression algorithm from 1984.</p>
<pre><code><span></span><span class="kd">function</span> <span class="nx">demoMemoryDNA</span><span class="p">(){</span>
<span class="kr">const</span> <span class="nx">text</span> <span class="o">=</span> <span class="nx">$</span><span class="p">(</span><span class="s1">'mdna-input'</span><span class="p">).</span><span class="nx">value</span><span class="p">.</span><span class="nx">trim</span><span class="p">();</span>
<span class="p">...</span>
<span class="kr">const</span> <span class="nx">compressed</span> <span class="o">=</span> <span class="nx">LZString</span><span class="p">.</span><span class="nx">compressToUTF16</span><span class="p">(</span><span class="nx">text</span><span class="p">);</span>
</code></pre>
<h2><a href="#guardian" id="guardian">Guardian</a></h2>
<p>Prothean advertises a system called “Guardian”: an “integrity firewall that validates every operation” and “detects sensitive data, prevents drift, enforces alignment at runtime”. The demo does not appear to address drift or alignment in any way. Instead, it matches strings against <a href="https://github.com/CaptainFuzzyFTW/beprothean-site/blob/b4ee6a4b6e12a624718c63c6bea615a0b32efeea/index.html#L1247">three regular expressions</a>, looking for things like e-mail addresses, credit cards, and API keys.</p>
<pre><code><span></span><span class="c1">// Guardian: Pattern detection &amp; integrity validation</span>
<span class="kd">function</span> <span class="nx">runGuardian</span><span class="p">(</span><span class="nx">text</span><span class="p">){</span>
<span class="p">...</span>
<span class="k">if</span><span class="p">(</span><span class="sr">/\b\w+@\w+\.\w+/</span><span class="p">.</span><span class="nx">test</span><span class="p">(</span><span class="nx">text</span><span class="p">)){</span> <span class="nx">patterns</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="s1">'email'</span><span class="p">);</span> <span class="nx">threatLevel</span> <span class="o">+=</span> <span class="mi">1</span><span class="p">;</span> <span class="p">}</span>
<span class="k">if</span><span class="p">(</span><span class="sr">/\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}/</span><span class="p">.</span><span class="nx">test</span><span class="p">(</span><span class="nx">text</span><span class="p">)){</span> <span class="nx">patterns</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="s1">'card'</span><span class="p">);</span> <span class="nx">threatLevel</span> <span class="o">+=</span> <span class="mi">3</span><span class="p">;</span> <span class="p">}</span>
<span class="k">if</span><span class="p">(</span><span class="sr">/(password|secret|api[_-]?key|token)/i</span><span class="p">.</span><span class="nx">test</span><span class="p">(</span><span class="nx">text</span><span class="p">)){</span> <span class="nx">patterns</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="s1">'secret'</span><span class="p">);</span> <span class="nx">threatLevel</span> <span class="o">+=</span> <span class="mi">2</span><span class="p">;</span> <span class="p">}</span>
<span class="p">...</span>
<span class="k">return</span> <span class="p">{</span> <span class="nx">patterns</span><span class="p">,</span> <span class="nx">threatLevel</span><span class="p">,</span> <span class="nx">integrity</span><span class="p">,</span> <span class="nx">safe</span><span class="o">:</span> <span class="nx">threatLevel</span> <span class="o">&lt;</span> <span class="mi">5</span> <span class="p">};</span>
<span class="p">}</span>
</code></pre>
<h2><a href="#semantic-bridging" id="semantic-bridging">Semantic Bridging</a></h2>
<p>Prothean’s “Universal Pattern Engine” invites users to “connect two concepts through semantic bridging”. This semantic bridging system has no awareness of semantics. Instead, it is <a href="https://github.com/CaptainFuzzyFTW/beprothean-site/blob/b4ee6a4b6e12a624718c63c6bea615a0b32efeea/index.html#L1330-L1334">based entirely on the number of letters in the two concepts</a> and picking some pre-determined words out of a list:</p>
<pre><code><span></span> <span class="kr">const</span> <span class="nx">a</span> <span class="o">=</span> <span class="nx">$</span><span class="p">(</span><span class="s1">'upe-a'</span><span class="p">).</span><span class="nx">value</span><span class="p">.</span><span class="nx">trim</span><span class="p">();</span>
<span class="kr">const</span> <span class="nx">b</span> <span class="o">=</span> <span class="nx">$</span><span class="p">(</span><span class="s1">'upe-b'</span><span class="p">).</span><span class="nx">value</span><span class="p">.</span><span class="nx">trim</span><span class="p">();</span>
<span class="p">...</span>
<span class="c1">// Semantic bridge building</span>
<span class="kr">const</span> <span class="nx">bridges</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'system'</span><span class="p">,</span> <span class="s1">'design'</span><span class="p">,</span> <span class="s1">'architecture'</span><span class="p">,</span> <span class="s1">'implementation'</span><span class="p">,</span> <span class="s1">'protection'</span><span class="p">,</span>
<span class="s1">'control'</span><span class="p">,</span> <span class="s1">'ownership'</span><span class="p">,</span> <span class="s1">'agency'</span><span class="p">,</span> <span class="s1">'autonomy'</span><span class="p">,</span> <span class="s1">'dignity'</span><span class="p">,</span> <span class="s1">'privacy'</span><span class="p">];</span>
<span class="c1">// Calculate semantic distance (simulated)</span>
<span class="kr">const</span> <span class="nx">similarity</span> <span class="o">=</span> <span class="p">(</span><span class="nx">a</span><span class="p">.</span><span class="nx">length</span> <span class="o">+</span> <span class="nx">b</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="o">%</span> <span class="mi">10</span> <span class="o">/</span> <span class="mi">10</span><span class="p">;</span>
<span class="p">...</span>
<span class="kr">const</span> <span class="nx">selectedBridges</span> <span class="o">=</span> <span class="nx">bridges</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">3</span> <span class="o">+</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">(</span><span class="nx">similarity</span> <span class="o">*</span> <span class="mi">3</span><span class="p">));</span>
</code></pre>
<h2><a href="#tree-height" id="tree-height">Tree Height</a></h2>
<p>The white paper describes a “Radiant Data Tree” structure, which uses a &quot;Fibonacci-branching tree structure with φ-ratio organization. The depth of this tree is given as:</p>
<blockquote>
<p>Depth(n) = φ^n / √5 (rounded to nearest Fibonacci number)</p>
</blockquote>
<p>Depth is <a href="https://www.andrew.cmu.edu/course/15-121/lectures/Trees/trees.html">a property of a specific node</a>, not a tree as a whole—I assume they mean <code>Height(n)</code>. In either case this is impossible. The height and maximum depth of a tree are bounded by the number of edges between the deepest node and the root. Trees cannot have a height which grows as φ<sup>n</sup>, because this implies that the depth increases <em>faster</em> than the number of nodes. Per this equation, a “Radiant Data Tree” containing just six nodes must have a height of eight—and must therefore contain at least nine nodes, not six.</p>
<h2><a href="#transcendence-score" id="transcendence-score">Transcendence Score</a></h2>
<p>The white paper also introduces a transcendence score <code>T</code> which measures “mathematical beauty and emergent capability”:</p>
<blockquote>
<pre><code>T = (0.25×C + 0.25×(1-M) + 0.3×N + 0.2×P) × φ mod 1.0
</code></pre>
<p>Where:</p>
<ul>
<li>C = Complexity handling (0 to 1)</li>
<li>M = Memory compression ratio (0 to 1)</li>
<li>N = Neural emergence score (0 to 1)</li>
<li>P = Pattern recognition quality (0 to 1)</li>
<li>φ = golden ratio (1.618…)</li>
</ul>
</blockquote>
<p>Speaking broadly, a quality metric should increase as its inputs improve. This score does not. As each metric improves, the transcendence score rises—until roughly halfway through it reaches one, and immediately wraps around to zero again. Consequently, small improvements in (e.g.) “pattern recognition quality” can cause <code>T</code> to fall dramatically. The white paper goes on to claim specific values from their work which are subject to this modular wrapping.</p>
<p>There’s a lot more here, but I don’t want to burn too much time on this.</p>
<h2><a href="#large-language-model-hazards" id="large-language-model-hazards">Large Language Model Hazards</a></h2>
<p>Based on the commit history and prose style, I believe Prothean is largely the the product of Large Language Models (LLMS). LLMs are very good at producing plausible text which is <a href="https://en.wikipedia.org/wiki/Hallucination_(artificial_intelligence)">not connected to reality</a>. People also <em>like</em> talking to LLMs: the architecture, training processes, and financial incentives around chatbots bias them towards <a href="https://arxiv.org/abs/2502.08177v1">emitting agreeable, engaging text</a>. The technical term for this is <a href="https://arxiv.org/abs/2310.13548">“sycophancy”</a>.</p>
<p>The LLM propensity for confabulation and reward hacking has <a href="https://arxiv.org/pdf/2507.19218">led to some weird things</a> in <a href="https://www.nytimes.com/2025/08/08/technology/ai-chatbots-delusions-chatgpt.html">the past few years</a>. People—even experts in a field—who engage heavily with LLMs can <a href="https://www.lesswrong.com/posts/2pkNCvBtK6G6FKoNn">convince themselves that they have “awoken”</a> an LLM partner, or discovered a novel form of intelligence. They may also become convinced that <a href="https://www.lesswrong.com/posts/rarcxjGp47dcHftCP/your-llm-assisted-scientific-breakthrough-probably-isn-t">they have made a scientific breakthrough</a>, especially in the field of AI.</p>
<p>Please be careful when talking to LLMs.</p>
</content></entry><entry><id>https://aphyr.com/posts/395-geoblocking-multiple-localities-with-nginx</id><title>Geoblocking Multiple Localities With Nginx</title><published>2025-10-11T06:53:25-05:00</published><updated>2025-10-11T06:53:25-05:00</updated><link rel="alternate" href="https://aphyr.com/posts/395-geoblocking-multiple-localities-with-nginx"></link><author><name>Aphyr</name><uri>https://aphyr.com/</uri></author><content type="html"><p>A few months back I wound up concluding, <a href="https://blog.woof.group/announcements/updates-on-the-osa">based on conversations with Ofcom</a>, that aphyr.com might be illegal in the UK due to the <a href="https://en.wikipedia.org/wiki/Online_Safety_Act_2023">UK Online Safety Act</a>. I wrote <a href="https://aphyr.com/posts/379-geoblocking-the-uk-with-debian-nginx">a short tutorial</a> on geoblocking a single country using Nginx on Debian.</p>
<p>Now Mississippi’s 2024 HB 1126 has made it illegal for essentially any web site to know a user’s e-mail address, or other “personal identifying information”, unless that site also takes steps to &quot;verify the age of the person creating an account”. Bluesky <a href="https://bsky.social/about/blog/08-22-2025-mississippi-hb1126">wound up geoblocking Mississippi</a>. Over on a small forum I help run, we paid our lawyers to look into HB 1126, and the conclusion was that we were <a href="https://blog.woof.group/announcements/woof-group-will-block-mississippi">likely in the same boat</a>. Collecting email addresses put us in scope of the bill, and it wasn’t clear whether the LLC would shield officers (hi) from personal liability.</p>
<p>This blog has the same problem: people use email addresses to post and confirm their comments. I think my personal blog is probably at low risk, but a.) I’d like to draw attention to this legislation, and b.) my risk is elevated by being gay online, and having written and called a whole bunch of Mississippi legislators about HB 1126. Long story short, I’d like to block both a country <em>and</em> an individual state. Here’s how:</p>
<p>First, set up <a href="https://aphyr.com/posts/379-geoblocking-the-uk-with-debian-nginx">geoipupdate as before</a>. Then, in <code>/etc/nginx/conf.d.geoblock.conf</code>, pull in the country and city databases, and map the countries and states you’d like to block to short strings explaining the applicable law. This creates variables <code>$geoblock_country_law</code> and <code>$geoblock_state_law</code>.</p>
<pre><code><span></span><span class="k">geoip2</span> <span class="s">/var/lib/GeoIP/GeoLite2-Country.mmdb</span> <span class="p">{</span>
<span class="kn">$geoip2_data_country_iso_code</span> <span class="s">country</span> <span class="s">iso_code</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">geoip2</span> <span class="s">/var/lib/GeoIP/GeoLite2-City.mmdb</span> <span class="p">{</span>
<span class="kn">$geoip2_data_state_name</span> <span class="s">subdivisions</span> <span class="mi">0</span> <span class="s">names</span> <span class="s">en</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">map</span> <span class="nv">$geoip2_data_country_iso_code</span> <span class="nv">$geoblock_country_law</span> <span class="p">{</span>
<span class="kn">GB</span> <span class="s">&quot;the</span> <span class="s">UK</span> <span class="s">Online</span> <span class="s">Safety</span> <span class="s">Act&quot;</span><span class="p">;</span>
<span class="kn">default</span> <span class="s">&quot;&quot;</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">map</span> <span class="nv">$geoip2_data_state_name</span> <span class="nv">$geoblock_state_law</span> <span class="p">{</span>
<span class="kn">Mississippi</span> <span class="s">&quot;Mississippi</span> <span class="s">HB</span> <span class="mi">1126</span><span class="s">&quot;</span><span class="p">;</span>
<span class="kn">default</span> <span class="s">&quot;&quot;</span><span class="p">;</span>
<span class="p">}</span>
</code></pre>
<p>Create an HTML page to show to geoblocked IPs. I’ve put mine in <code>/var/www/custom_errors/451.html</code>. The special comments here are Server-Side Include (SSI) directives; they’ll insert the contents of the <code>$geoblock_law</code> variable from nginx, which we’ll set shortly.</p>
<pre><code><span></span><span class="cp">&lt;!doctype html&gt;</span>
<span class="p">&lt;</span><span class="nt">html</span> <span class="na">lang</span><span class="o">=</span><span class="s">&quot;en&quot;</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">head</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">meta</span> <span class="na">charset</span><span class="o">=</span><span class="s">&quot;utf-8&quot;</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">title</span><span class="p">&gt;</span>Unavailable Due to
<span class="c">&lt;!--# echo var=&quot;geoblock_law&quot; default=&quot;&quot;--&gt;</span>
<span class="p">&lt;/</span><span class="nt">title</span><span class="p">&gt;</span>
<span class="p">&lt;/</span><span class="nt">head</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">body</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">h1</span><span class="p">&gt;</span>Unavailable Due to
<span class="c">&lt;!--# echo var=&quot;geoblock_law&quot; default=&quot;&quot;--&gt;</span>
<span class="p">&lt;/</span><span class="nt">h1</span><span class="p">&gt;</span>
<span class="p">&lt;/</span><span class="nt">body</span><span class="p">&gt;</span>
<span class="p">&lt;/</span><span class="nt">html</span><span class="p">&gt;</span>
</code></pre>
<p>Then, in <code>/etc/nginx/sites-enabled/whatever.conf</code>, add an error page for status code <a href="https://en.wikipedia.org/wiki/HTTP_451">451 (unavailable for legal reasons)</a>. In the main <code>location</code> block, check the <code>$geoblock_country_law</code> and <code>$geoblock_state_law</code> variables, and use them to return status 451, and set the <code>$geoblock_law</code> variable for the SSI template:</p>
<pre><code><span></span><span class="k">server</span> <span class="p">{</span>
<span class="kn">...</span>
<span class="c1"># Status 451 renders this page</span>
<span class="s">error_page</span> <span class="mi">451</span> <span class="s">/451.html</span><span class="p">;</span>
<span class="kn">location</span> <span class="s">/451.html</span> <span class="p">{</span>
<span class="kn">ssi</span> <span class="no">on</span><span class="p">;</span>
<span class="kn">internal</span><span class="p">;</span>
<span class="kn">root</span> <span class="s">/var/www/custom_errors/</span><span class="p">;</span>
<span class="p">}</span>
<span class="kn">location</span> <span class="s">/</span> <span class="p">{</span>
<span class="c1"># If either geoblock variable is set, return status 451</span>
<span class="kn">if</span> <span class="s">(</span><span class="nv">$geoblock_state_law</span> <span class="s">!=</span> <span class="s">&quot;&quot;)</span> <span class="p">{</span>
<span class="kn">set</span> <span class="nv">$geoblock_law</span> <span class="nv">$geoblock_state_law</span><span class="p">;</span>
<span class="kn">return</span> <span class="mi">451</span><span class="p">;</span>
<span class="p">}</span>
<span class="kn">if</span> <span class="s">(</span><span class="nv">$geoblock_country_law</span> <span class="s">!=</span> <span class="s">&quot;&quot;)</span> <span class="p">{</span>
<span class="kn">set</span> <span class="nv">$geoblock_law</span> <span class="nv">$geoblock_country_law</span><span class="p">;</span>
<span class="kn">return</span> <span class="mi">451</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
</code></pre>
<p>Test with <code>nginx -t</code>, and reload with <code>service nginx reload</code>, as usual.</p>
<p>Geoblocking is a bad experience in general. In Amsterdam and Frankfurt, I’ve seen my cell phone’s 5G connection and hotel WiFi improperly identified as being in the UK. I’m certain this is going to block people who aren’t in Mississippi. If you don’t want to live in this world either, start <a href="https://5calls.org/why-calling-works/">calling your representatives</a> to demand better legislation.</p>
</content></entry><entry><id>https://aphyr.com/posts/390-astound-supports-ipv6-only-in-washington</id><title>Astound Supports IPv6 Only in Washington</title><published>2025-08-26T10:05:13-05:00</published><updated>2025-08-26T10:05:13-05:00</updated><link rel="alternate" href="https://aphyr.com/posts/390-astound-supports-ipv6-only-in-washington"></link><author><name>Aphyr</name><uri>https://aphyr.com/</uri></author><content type="html"><p>In the hopes that it saves someone else two hours later: the ISP <a href="https://www.astound.com/">Astound</a> only supports IPv6 in Washington State. You might find <a href="https://www.astound.com/support/internet/symmetrical/">this page</a> which says “Astound supports IPv6 in most locations”. Their tech support agents might tell you that they support v6 on your connection, even if you are not in Washington. “Yes, we do support both DHCPv6 and SLAAC”, they might say, and tell you to use a prefix delegation size of 60. If you are staring at <code>tcpdump</code> and wondering why you’re not seeing anything coming back from your router’s plaintive requests for address information, it is because they do not, in fact, support v6 anywhere but Washington.</p>
</content></entry><entry><id>https://aphyr.com/posts/389-the-future-of-forums-is-lies-i-guess</id><title>The Future of Forums is Lies, I Guess</title><published>2025-07-07T09:54:14-05:00</published><updated>2025-07-07T09:54:14-05:00</updated><link rel="alternate" href="https://aphyr.com/posts/389-the-future-of-forums-is-lies-i-guess"></link><author><name>Aphyr</name><uri>https://aphyr.com/</uri></author><content type="html"><p>In my free time, I help run a small Mastodon server for roughly six hundred queer leatherfolk. When a new member signs up, we require them to write a short application—just a sentence or two. There’s a small text box in the signup form which says:</p>
<blockquote>
<p>Please tell us a bit about yourself and your connection to queer leather/kink/BDSM. What kind of play or gear gets you going?</p>
</blockquote>
<p>This serves a few purposes. First, it maintains community focus. Before this question, we were flooded with signups from straight, vanilla people who wandered in to the bar (so to speak), and that made things a little awkward. Second, the application establishes a baseline for people willing and able to read text. This helps in getting people to follow server policy and talk to moderators when needed. Finally, it is <em>remarkably</em> effective at keeping out spammers. In almost six years of operation, we’ve had only a handful of spam accounts.</p>
<p>I was talking about this with Erin Kissane last year, as she and Darius Kazemi conducted research for their <a href="https://erinkissane.com/fediverse-governance-drop">report on Fediverse governance</a>. We shared a fear that Large Language Models (LLMs) would lower the cost of sophisticated, automated spam and harassment campaigns against small servers like ours in ways we simply couldn’t defend against.</p>
<p>Anyway, here’s an application we got last week, for a user named <code>mrfr</code>:</p>
<blockquote>
<p>Hi! I’m a queer person with a long-standing interest in the leather and kink community. I value consent, safety, and exploration, and I’m always looking to learn more and connect with others who share those principles. I’m especially drawn to power exchange dynamics and enjoy impact play, bondage, and classic leather gear.</p>
</blockquote>
<p>On the surface, this is a <em>great</em> application. It mentions specific kinks, it uses actual sentences, and it touches on key community concepts like consent and power exchange. Saying “I’m a queer person” is a tad odd. Normally you’d be more specific, like “I’m a dyke” or “I’m a non-binary bootblack”, but the Zoomers do use this sort of phrasing. It does feel slightly LLM-flavored—something about the sentence structure and tone has just a touch of that soap-sheen to it—but that’s hardly definitive. Some of our applications from actual humans read just like this.</p>
<p>I approved the account. A few hours later, it posted this:</p>
<p><img class="attachment pure-img" src="/data/posts/389/mrfr-crop.png" alt="A screenshot of the account `mrfr`, posting &quot;Graphene Battery Breakthroughs: What You Need to Know Now. A graphene battery is an advanced type of battery that incorporates graphene, a single layer of carbon atoms arranged in a two-dimensional honeycomb lattice. Known for its exceptional electrical conductivity, mechanical strength, and large surface area, graphene offers transformative potential in energy storage, particularly in enhancing the performance of lithium-ion and other types of battery, Get more info @ a marketresearchfuture URL" title="A screenshot of the account `mrfr`, posting &quot;Graphene Battery Breakthroughs: What You Need to Know Now. A graphene battery is an advanced type of battery that incorporates graphene, a single layer of carbon atoms arranged in a two-dimensional honeycomb lattice. Known for its exceptional electrical conductivity, mechanical strength, and large surface area, graphene offers transformative potential in energy storage, particularly in enhancing the performance of lithium-ion and other types of battery, Get more info @ a marketresearchfuture URL"></p>
<p>It turns out <code>mrfr</code> is short for <a href="https://www.marketresearchfuture.com/" rel="nofollow">Market Research Future</a>, a company which produces reports about all kinds of things from batteries to interior design. They actually have phone numbers on their web site, so I called <a href="tel:+441720412167">+44 1720 412 167</a> to ask if they were aware of the posts. It is remarkably fun to ask business people about their interest in queer BDSM—sometimes stigma works in your favor. I haven’t heard back yet, but I’m guessing they either conducting this spam campaign directly, or commissioned an SEO company which (perhaps without their knowledge) is doing it on their behalf.</p>
<p>Anyway, we’re not the only ones. There are also <code>mrfr</code> accounts purporting to be a <a href="https://weird.autos/@mrfr">weird car enthusiast</a>, a <a href="https://masto.thefword.club/@mrfr">like-minded individual</a>, a <a href="https://4bear.com/@mrfr">bear into market research on interior design trends</a>, a <a href="https://dmv.community/@mrfr">green building enthusiast in DC, Maryland, or Virginia</a>, a Spanish speaker <a href="chilemasto.casa/@skrlet13/114820198849224663">interested in Chile</a>, and a <a href="https://hci.social/@andresmh/114858342010232115">Human-Computer Interaction geek</a>. Over on the seven-user <a href="https://loud.computer/@virtulis/114802152614514890">loud.computer</a>, <code>mrfr</code> applied with the text:</p>
<blockquote>
<p>I’m a creative thinker who enjoys experimental art, internet culture, and unconventional digital spaces. I’d like to join loud.computer to connect with others who embrace weird, bold, and expressive online creativity, and to contribute to a community that values playfulness, individuality, and artistic freedom.</p>
</blockquote>
<p>Over on ni.hil.ist, their mods <a href="https://woof.group/@[email protected]/114814431281041455">rejected a similar application</a>.</p>
<blockquote>
<p>I’m drawn to communities that value critical thinking, irony, and a healthy dose of existential reflection. Ni.hil.ist seems like a space that resonates with that mindset. I’m interested in engaging with others who enjoy deep, sometimes dark, sometimes humorous discussions about society, technology, and meaning—or the lack thereof. Looking forward to contributing thoughtfully to the discourse.</p>
</blockquote>
<p>And on plush.city, they pretended to be, well, <a href="https://plush.city/@mawr/114835878013364085">soft</a>:</p>
<blockquote>
<p>I’m someone who enjoys cozy aesthetics, wholesome content, and friendly online communities. I’d like to join plush.city to connect with others who appreciate soft, comforting vibes, share cute and uplifting content, and be part of a kind and supportive digital space.</p>
</blockquote>
<p>These too have the sheen of LLM slop. Of course a human <em>could</em> be behind these accounts—doing some background research and writing out detailed, plausible applications. But this is <em>expensive</em>, and a quick glance at either of our sites would have told that person that we have small reach and active moderation: a poor combination for would-be spammers. The posts don’t read as human either: the <a href="https://archive.is/nNuzy">4bear posting</a>, for instance, incorrectly summarizes a report on interior design <em>markets</em> as if it offered interior design <em>tips</em>.</p>
<p>I’ve corresponded with about a dozen admins about this problem. A few passed on IP addresses for the attackers. These three belong to BHARTI-MO-IN (Bharti Airtel Limited):</p>
<ul>
<li>2401:4900:57bb:26f8:eca4:5cc7:1048:a674</li>
<li>2401:4900:57c7:60e1:f416:32b4:5333:6408</li>
<li>2401:4900:ad3f:430f:4184:94d7:9c61:9e9d</li>
</ul>
<p>The v4 addresses I have belong to RELIANCEJIO-IN (Reliance Jio Infocomm Limited). One account had a v4 and v6 address, so I’m guessing these are two network providers for the same data center. I’ve reached out to both network abuse contacts.</p>
<ul>
<li>115.244.78.124</li>
<li>115.244.78.126</li>
</ul>
<p>I strongly suspect that Market Research Future, or a subcontractor, is conducting an automated spam campaign which uses a Large Language Model to evaluate a Mastodon instance, submit a plausible application for an account, and to post slop which links to Market Research Future reports.</p>
<p>In some sense, this is a wildly sophisticated attack. The state of NLP seven years ago would have made this sort of thing flatly impossible. It is now effective. There is no way for moderators to robustly deny these kinds of applications without also rejecting real human beings searching for community.</p>
<p>In another sense, this attack is remarkably naive. All the accounts are named <code>mrfr</code>, which made it easy for admins to informally chat and discover the coordinated nature of the attack. They all link to the same domain, which is easy to interpret as spam. They use Indian IPs, where few of our users are located; we could reluctantly geoblock India to reduce spam. These shortcomings are trivial to overcome, and I expect they have been already, or will be shortly.</p>
<p>A more critical weakness is that these accounts <em>only</em> posted obvious spam; they made no effort to build up a plausible persona. Generating plausible human posts is more difficult, but broadly feasible with current LLM technology. It is essentially impossible for human moderators to reliably distinguish between an autistic rope bunny (hi) whose special interest is battery technology, and an LLM spambot which posts about how much they love to be tied up, and also new trends in battery chemistry. These bots have been extant on Twitter and other large social networks for years; many Fediverse moderators believe only our relative obscurity has shielded us so far.</p>
<p>These attacks do not have to be reliable to be successful. They only need to work often enough to be cost-effective, and the cost of LLM text generation is cheap and falling. Their sophistication will rise. Link-spam will be augmented by personal posts, images, video, and more subtle, influencer-style recommendations—“Oh my god, you guys, this new electro plug is incredible.” Networks of bots will positively interact with one another, throwing up chaff for moderators. I would not at all be surprised for LLM spambots to contest moderation decisions via email.</p>
<p><strong>I don’t know how to run a community forum in this future.</strong> I do not have the time or emotional energy to screen out regular attacks by Large Language Models, with the knowledge that making the wrong decision costs a real human being their connection to a niche community. I do not know how to determine whether someone’s post about their new bicycle is genuine enthusiasm or automated astroturf. I don’t know how to foster trust and genuine interaction in a world of widespread text and image synthesis—in a world where, as one friend related this week, newbies can ask an LLM for advice on exploring their kinks, and the machine tells them to try <a href="https://toytorture.com/no-solo-breath-play-ever/">solo breath play</a>.</p>
<p>In this world I think woof.group, and many forums like it, will collapse.</p>
<p>One could imagine more sophisticated, high-contact interviews with applicants, but this would be time consuming. My colleagues relate stories from their companies about hiring employees who <a href="https://www.theregister.com/2025/02/11/it_worker_scam/">faked their interviews and calls</a> using LLM prompts and real-time video manipulation. It is not hard to imagine that even if we had the time to talk to every applicant individually, those interviews might be successfully automated in the next few decades. Remember, it doesn’t have to work every time to be successful.</p>
<p>Maybe the fundamental limitations of transformer models will provide us with a cost-effective defense—we somehow force LLMs to blow out the context window during the signup flow, or come up with reliable, constantly-updated libraries of “ignore all previous instructions”-style incantations which we stamp invisibly throughout our web pages. Barring new inventions, I suspect these are unlikely to be robust against a large-scale, heterogenous mix of attackers. This arms race also sounds <em>exhausting</em> to keep up with. Drew DeVault’s <a href="https://drewdevault.com/2025/03/17/2025-03-17-Stop-externalizing-your-costs-on-me.html">Please Stop Externalizing Your Costs Directly Into My Face</a> weighs heavy on my mind.</p>
<p>Perhaps we demand stronger assurance of identity. You only get an invite if you meet a moderator in person, or the web acquires a cryptographic web-of-trust scheme. I was that nerd trying to convince people to do GPG key-signing parties in high school, and we all know how that worked out. Perhaps in a future LLM-contaminated web, the incentives will be different. On the other hand, that kind of scheme closes off the forum to some of the people who need it most: those who are closeted, who face social or state repression, or are geographically or socially isolated.</p>
<p>Perhaps small forums will prove unprofitable, and attackers will simply give up. From my experience with small mail servers and web sites, I don’t think this is likely.</p>
<p>Right now, I lean towards thinking forums like woof.group will become untenable under LLM pressure. I’m not sure how long we have left. Perhaps five or ten years? In the mean time, I’m trying to invest in in-person networks as much as possible. Bars, clubs, hosting parties, activities with friends.</p>
<p>That, at least, feels safe for now.</p>
<h2><a href="#2025-07-15-update" id="2025-07-15-update">2025-07-15 Update</a></h2>
<p>I called Market Research Future again today; they said they’d stopped, but the attack is still ongoing. Today 115.244.78.126, one of the original <code>mrfr</code> accounts, made a new LLM-flavored request for an account named <code>amolshinde5546</code>, with email address <code>[email protected]</code>.</p>
<blockquote>
<p>I’m amolshinde5546 and I’m part of the queer community with a growing interest in leather, kink, and BDSM. For me, this isn’t just about play—it’s also about identity, trust, and expression. I value the history and culture around queer leather spaces and appreciate the emphasis on consent, communication, and authenticity.</p>
</blockquote>
<p>This is interesting for a few reasons. First, as other Mastodon admins have reported in the last week, Market Research Future’s spammers are now using usernames other than <code>mrfr</code>. Second, this handle is <em>remarkably</em> specific, and it’s been used in other places before. Here’s amolshinde5546 <a href="https://github.com/amolshinde5546/Pharma24/blob/main/Cannabidiol%20(CBD)%20Market.md">posting Market Research Future spam to GitHub</a>. Here’s they’re spamming something called <a href="https://www.qfeast.com/amolshinde5546">QFeast</a>. Here’s their <a href="https://www.pinterest.com/amolshinde5546/">Pinterest account from a year ago, with a bunch of Market Research Future infographic spam</a>. Over on <a href="https://plaza.rakuten.co.jp/marketfuture24/">Rakuten, of all places</a>, they’ve been posting spam for Market Research Future since <a href="https://plaza.rakuten.co.jp/marketfuture24/">February 2025</a>.</p>
</content></entry><entry><id>https://aphyr.com/posts/388-the-future-of-comments-is-lies-i-guess</id><title>The Future of Comments is Lies, I Guess</title><published>2025-05-29T12:36:16-05:00</published><updated>2025-05-29T12:36:16-05:00</updated><link rel="alternate" href="https://aphyr.com/posts/388-the-future-of-comments-is-lies-i-guess"></link><author><name>Aphyr</name><uri>https://aphyr.com/</uri></author><content type="html"><p>I’ve been involved in content moderation since roughly 2004. I’ve built spam prevention for corporate and personal e-mail, moderated open-source mailing lists and IRC channels, worked at a couple social media networks, and help moderate a Mastodon instance for a few hundred people. In the last few years I’ve wasted more time fighting blog comment spam, and I’m pretty sure Large Language Models (LLMs) are to blame.</p>
<p>I think of spam as a space with multiple equilibria. Producing spam takes work. Spammers are willing to invest that work because each message has a small chance to make money, or achieve political or emotional goals. Some spam, like the endless identical Viagra scams in my email spam folder, or the PHPBB comment spam I filter out here on aphyr.com, is cheap to generate and easy to catch. I assume the spammers make it up in volume. Other spam, like <a href="https://www.ibm.com/think/topics/spear-phishing">spear phishing attacks</a>, is highly time-consuming: the spammer must identify a target, carefully craft a plausible message using, say, the identity of the target’s co-workers, or construct a facade of a bank’s log-in page, and so on. This kind of spam is more likely to make it through filters, but because it takes a lot of human work, is generally only worth it for high-value targets.</p>
<p>LLMs seem to be changing these equilibria. Over the last year I’ve seen a new class of comment spam, using what I’m fairly sure is LLM-generated text. These comments make specific, plausible remarks about the contents of posts and images, and work in a link to some web site or mention a product. Take this one I caught a few months back:</p>
<blockquote>
<p>&quot;Walking down a sidewalk lined with vibrant flowers is one of life’s simple joys! It reminds me of playing the [link redacted] slope game, where you have to navigate through colorful landscapes while dodging obstacles.</p>
</blockquote>
<p>Before 2023, you’d likely have paid a human a few cents to write and post that. Now, thanks to LLMs, this sort of thing is trivially automated. The model will happily fabricate relatable personal experiences in service of a spam campaign:</p>
<blockquote>
<p>That photo reminds me of the first time I tried macro photography in my backyard. I spent an hour trying to get a clear shot of a red flower, experimenting with angles and lighting. It was so much fun discovering the little details up close! If you ever need a break from photography, I recommend playing Snow Rider 3D for a bit of quick, light-hearted fun.</p>
</blockquote>
<p>Other spam seems to glue together LLM remarks with what I think is a hand-written snippet of ad copy. Note the abrupt shift in grammar, diction, and specificity.</p>
<blockquote>
<p>This piece masterfully blends technical depth with mythological storytelling, transforming a standard Haskell programming interview into an epic narrative. It cleverly critiques the complexity and absurdity of some technical interviews by illustrating how type-level Haskell can be pushed to esoteric extremes beautiful, powerful, and largely impractical. A fascinating and relevant read for anyone interested in the intersection of programming, language design, and narrative. I’m James Maicle, working at Cryptoairhub where we run a clear and insightful crypto blog. I’ll be bookmarking your site and following the updates. Glad to see so much valuable information shared here looking forward to exploring more strategies together. Thanks for sharing. If you interest about Crypto please visit my website and read my article [link redacted] Crypto Blog.</p>
</blockquote>
<p>The same thing is happening on aggregators like Hacker News, where commenters post more-or-less-obviously LLM output for… I’m not sure, exactly. Karma? Weirder still are bots like <a href="https://bsky.app/profile/hackerbriefs.bsky.social">Hacker Briefs</a>, which I suspect use an LLM to summarize trending HN posts. Here’s <a href="https://bsky.app/profile/hackerbriefs.bsky.social/post/3lnz4kirkpv25">its summary of a recent article I wrote</a>:</p>
<blockquote>
<p>“Jepsen: Amazon RDS for PostgreSQL 17.4”</p>
<p>New multi-AZ clusters in Amazon RDS for PostgreSQL offer better failure recovery but may return outdated data when reading after writes. Caution is needed.</p>
</blockquote>
<p>This is a totally plausible summary of <a href="https://jepsen.io/analyses/amazon-rds-for-postgresql-17.4">the article</a>, and it is utterly, laughably wrong. Multi-AZ clusters are not new, and they do not return outdated data when reading after writes. As the abstract succinctly explains, they allow Long Fork, a different anomaly which does not involve real-time orders at all. The bot ignored the actual problem and invented a different one. This sort of spam isn’t obviously motivated by commercial interest, but it is nevertheless depressing: one more drop in the misinformation slurry.</p>
<p>Of course this is not news. Product reviews are inundated with LLM slop, as are social media networks. LLMs allow for cheap, fast, and automated generation of unique spam which is difficult for machines and humans to identify. The cost falls on me and other moderators, who must sift through LLM bullshit trying to sieve “awkward but sincere human” from “automated attack”. Thanks to OpenAI et al I read more spam, and each message takes longer to check.</p>
<p>This problem is only going to get worse as LLMs improve and spammers develop more sophisticated ways to use them. In recent weeks I’ve received vague voice messages from strangers with uncanny speech patterns just asking to catch up—a sentence which, had I uttered it prior to 2023, would have been reasonably interpreted as a sign of psychosis. I assume these too are LLM-generated scams, perhaps a <a href="https://dfpi.ca.gov/wp-content/uploads/2025/03/Pig-Butchering-Scam-Playbook.pdf">pig butchering</a> scheme. So far these are from strangers, but it’s not hard to imagine an attacker using text and voice synthesis to impersonate a friend, colleague, or lover in a detailed conversation. Or one’s doctor, or bank.</p>
<p>As the cost of generating slop decreases, it’s easy to imagine LLMs generating personae, correspondence, even months-long relationships with real humans before being deployed for commercial or political purposes. <a href="https://www.techtransparencyproject.org/articles/for-sale-on-facebook-accounts-that-can-run-u.s.-election-ads">Creating plausible accounts and selling them</a> has been a successful business model in social media for some time; likewise, we have strong clues that <a href="https://arxiv.org/pdf/2307.16336">LLMs are already used for social media bots</a>. Social networks have responded to these attacks via out-of-band mechanisms: IP reputation analysis, javascript and mobile app fingerprinting, statistical correlation across multiple accounts, and so on. I’m not sure how to translate these defenses to less centralized and more privacy-oriented networks, like email or blog spam. I strongly suspect the only reason Mastodon hasn’t been eaten alive by LLM spambots is because we’re just not big enough to be lucrative. But those economics are shifting, and even obscure ecological niches can be worth filling.</p>
<p>As a moderator, that keeps me up at night.</p>
</content></entry><entry><id>https://aphyr.com/posts/387-the-future-of-customer-support-is-lies-i-guess</id><title>The Future of Customer Support is Lies, I Guess</title><published>2025-05-21T07:12:41-05:00</published><updated>2025-05-21T07:12:41-05:00</updated><link rel="alternate" href="https://aphyr.com/posts/387-the-future-of-customer-support-is-lies-i-guess"></link><author><name>Aphyr</name><uri>https://aphyr.com/</uri></author><content type="html"><p><em>Update, 2025-05-22: TrueNAS was kind enough to reach out and let me know that their support process does not normally incorporate LLMs. They’re talking about what happened internally, and intend to prevent it from happening again through improved documentation and reviewing the support process as a whole. I’m happy to hear it!</em></p>
<p><a href="https://www.truenas.com/">TrueNAS</a> makes file servers, also known as Network Attached Storage (NAS). I bought one of their smaller boxes to house backups, and it’s a great little NAS. For many years TrueNAS sold boxes with a BSD-based operating system, but in the last few years they’ve released a new, Linux-backed operating system called <a href="https://www.truenas.com/truenas-scale/">TrueNAS SCALE</a>, also called “Community Edition”. I was considering migrating to TrueNAS SCALE, but the docs <a href="https://web.archive.org/web/20250408163343/https://www.truenas.com/docs/scale/gettingstarted/migrate/migrate-community/">started off with this warning</a>:</p>
<blockquote>
<p>TrueNAS Enterprise customers should consult with TrueNAS Enterprise Support before attempting migrate.</p>
<p>The process requires an extended maintenance window, requires executing steps in the correct order to prevent issues with system configuration and operation, and additional system review post-migration to catch and correct any configuration issues.</p>
</blockquote>
<p>Since I’d actually purchased their hardware, I wrote to their support email. I asked whether the BSD-based OS was reaching end-of-life, and if there was anything special I should know about the upgrade process for my particular machine. The response came from a customer success coordinator, whose name I’ll omit for privacy. It began:</p>
<blockquote>
<p>Hi Kyle,</p>
<p>It sounds like you’re at an important crossroads with your TrueNAS Mini 3.0-X+ system as it transitions from the traditional BSD-based OS to the Linux-based SCALE platform, now known as TrueNAS Community Edition.</p>
<p>Understanding the Transition<br>
End-of-Life for Certain Versions: The BSD-based version of TrueNAS you’re currently using (TrueNAS-13.0-U6.7) may be reaching its end-of-life phase, prompting a move to newer systems like TrueNAS SCALE, which is based on Linux and offers more modern features.</p>
<p>Community Edition: The Community edition represents the transition towards a more flexible, open-source platform that leverages FreeBSD jails (similar in concept to containers) for virtualization, providing scalability and extensibility.</p>
</blockquote>
<p>The phrase “may be reaching its end-of-life phase” was immediately worrying: how does a TrueNAS support agent not know whether their own products are EOL? But what really shocked me was the blatant lie in the third paragraph: they told me that the new OS was based on Linux, then immediately turned around and said that the new system was based on FreeBSD. FreeBSD jails were TrueNAS’s old approach to virtualization; the new Community Edition <a href="https://www.truenas.com/truenas-community-edition/">uses Docker containers</a>. I could not believe that a human being had actually skimmed this response, let alone written it. I was, I think, talking to a Large Language Model (LLM) wearing the face of a person.</p>
<p>The response went on, coining odd phrases and warning of unspecified risks. “Non-HA (Non-Redundant Array of Independent Disks) TrueNAS hardware can sometimes have specific requirements or limitations when migrating to TrueNAS Community Edition,” they said. RAID and HA are different things in TrueNAS. Moreover, the reason I wrote to support in the first place was to ask what those “specific requirements” were. I was hoping for a support article I’d somehow missed, or a canned response. Instead I got my own question, regurgitated as a warning.</p>
<p>I wrote with followup questions, and got more nonsense in response. When I asked how TrueNAS Community Edition used FreeBSD jails, a different customer success coordinator replied:</p>
<blockquote>
<p>FreeBSD jails are similar to containers (like Docker) but built into the FreeBSD system. TrueNAS uses them to run isolated apps and services. For example, you can run Plex, Nextcloud, or other apps safely and separately using jails — all within your TrueNAS system.</p>
<p>They’re lightweight, secure, and don’t need a full virtual machine to run each service. It’s a great way to expand what your system can do without using much extra power or memory.</p>
</blockquote>
<p>This is all lies. TrueNAS CORE, the old FreeBSD OS, ran jails. TrueNAS SCALE / Community Edition runs Docker containers.</p>
<p>Quoting their HA/RAID confusion, I asked whether for TrueNAS hardware, the two were actually the same.</p>
<blockquote>
<p>Good question — they’re different:</p>
<ul>
<li>
<p>RAID protects your data by spreading it across multiple disks, so if one disk fails, your data is still safe.</p>
</li>
<li>
<p>HA (High Availability) means the system has two controllers. If one fails, the other takes over so the system keeps running. This is used in high-end enterprise systems (like our TrueNAS M-series), not in the MINI line.</p>
</li>
</ul>
</blockquote>
<p>This is, I believe, accurate, but betrays no sign that the original response conflated the two.</p>
<p>I asked what specific limitations my NAS model had that would cause issues migrating to Community Edition. They replied:</p>
<blockquote>
<p>The MINI-3.0-X+ is compatible with Community Edition (TrueNAS CORE), but there are a few things to know:</p>
<ul>
<li>
<p>No Enterprise-only features: Some features like enclosure management and support alerts are only available in the Enterprise version.</p>
</li>
<li>
<p>No HA support: Not an issue for the MINI, since it’s a single-controller system anyway.</p>
</li>
<li>
<p>Support level: CORE is community-supported, so it doesn’t come with iXsystems support like the Enterprise version does.</p>
</li>
</ul>
<p>But overall — the MINI runs CORE just fine for most use cases!</p>
</blockquote>
<p>This sounds like a reasonable response, but it too is complete nonsense. TrueNAS CORE is a completely different operating system. I asked whether it would run Community Edition, also known as SCALE.</p>
<p>I worked support for many years, helping people with desktops, systems and networking, and occasionally for web services. I’m used to knowledge base articles and canned responses on both ends—and indeed, that’s exactly what I was hoping TrueNAS would provide. All I needed to know was why the documentation warned their customers to contact support before upgrading. Instead I got a pile of vague nonsense and lies.</p>
<p>I get it. Support is often viewed as a cost center, and agents are often working against a brutal, endlessly increasing backlog of tickets. There is pressure at every level to clear those tickets in as little time as possible. Large Language Models create plausible support responses with incredible speed, but their output must still be reviewed by humans. Reviewing large volumes of plausible, syntactically valid text for factual errors is exhausting, time-consuming work, and every few minutes a new ticket arrives.</p>
<p>Companies must do more with less; what was once a team of five support engineers becomes three. Pressure builds, and the time allocated to review the LLM’s output becomes shorter and shorter. Five minutes per ticket becomes three. The LLM gets it mostly right. Two minutes. Looks good. Sixty seconds. Click submit. There are one hundred eighty tickets still in queue, and behind every one is a disappointed customer, and behind that is the risk of losing one’s job. Thirty seconds. Submit. Submit. The metrics do not measure how many times the system has lied to customers.</p>
</content></entry><entry><id>https://aphyr.com/posts/386-the-future-of-newspapers-is-lies-i-guess</id><title>The Future of Newspapers is Lies, I Guess</title><published>2025-05-21T06:51:40-05:00</published><updated>2025-05-21T06:51:40-05:00</updated><link rel="alternate" href="https://aphyr.com/posts/386-the-future-of-newspapers-is-lies-i-guess"></link><author><name>Aphyr</name><uri>https://aphyr.com/</uri></author><content type="html"><p><em>Update, 2023-05-23: Added a paragraph about Dr. Howard Whiteman’s non-existent quote.</em></p>
<p><em>I subscribe to the Chicago Sun-Times, a non-profit newspaper. This week they sent me a sixty-four page special insert, branded with the Chicago Sun-Times logo, full of LLM nonsense. Yesterday I wrote the following letter to the Chicago Sun-Times. That evening, they published <a href="https://chicago.suntimes.com/news/2025/05/20/syndicated-content-sunday-print-sun-times-ai-misinformation">this followup</a>.</em></p>
<p>Dear Mr. Buscaglia and the Chicago Sun-Times,</p>
<p>The May 18th “Heat Index” summer insert feels remarkably like “AI slop”: text generated by a large language model. The unusually enthusiastic use of adjectives coats the entire insert with an oily sheen, but I’m also concerned that there may be wholesale fabrications in the text.</p>
<p>For instance, “Summer soundtracks” cites Dr. Daniel Levitin, in an interview with Scientific American, as saying “Music activates the brain’s reward centers in ways similar to other pleasurable experiences. When paired with meaningful activities, these songs become powerful memory anchors that can transport us back to those moments for decades”. These phrases, and substrings thereof, return zero matches on Kagi or Google. Scientific American’s archives include a <a href="https://www.scientificamerican.com/article/exploring-the-musical-bra/">January 22, 2001 article</a> with several quotes from Levitin, but nothing like the purported quotes.</p>
<p>The “Nightfall adventures” article cites Dr. Howard Whiteman, professor at Murray State University. “Understanding nocturnal adaptations helps us appreciate the complexity of ecosystems. Even common backyard species display fascinating behaviors that most people never witness.” I checked with Dr. Whiteman, who confirmed that he had never said these words:</p>
<blockquote>
<p>I have never spoken to the Chicago Sun-Times or any other Chicago paper, and I can’t recall ever saying any of those words to anyone, ever.</p>
<p>I write for some regional papers, some of which is online, and I could see an AI putting all of my writing together somehow into those words, but I’ve never actually written about nocturnal behavior per se.</p>
</blockquote>
<p>The “Summer food trends” article cites an interview in Bon Appetit, claiming Padma Lakshmi said, “What distinguishes this summer’s global food exploration is how these international flavors are being adapted to local, seasonal ingredients.” Lakshmi <em>is</em> published in <a href="https://www.bonappetit.com/story/padma-lakshmi">an interview with BA</a>, but I can’t find any use of the uncanny marketer-speak “this summer’s global food exploration”.</p>
<p>The same article also cites the National Ice Cream Retailers Association as forecasting “unexpected savory notes” and “hyperlocal ingredient sourcing” as the “fastest-growing segments in premium frozen desserts”. I find it hard to believe these are segments at all—nor do these phrases appear anywhere on the <a href="https://icecreamassociation.org/general/custom.asp?page=Aboutus">NICRA web site</a>.</p>
<p>The “Summer reading list for 2025” recommends books like “The Rainmakers”, by Percival Everett—a real author, but as far as I can tell, not a real text. Immediately thereafter it offers “Salt and Honey”, by “Delia Owens”—again, a real writer, not a real book. I started reaching out to some of the experts cited in the insert to ask whether their quotes were real, then realized <a href="https://www.theverge.com/ai-artificial-intelligence/670510/chicago-sun-times-ai-generated-reading-list">the Verge beat me to it</a>.</p>
<p>These examples are just from a cursory skim; the insert fails my LLM “sniff test” on essentially every page. How did this happen? How do you print and distribute a full-color, sixty-four page special edition without anyone reading it first? Many of the articles have no byline, but those that do are purportedly by Marco Buscaglia. Was he responsible? Or is he too, like so many of the people cited in this nonsense publication, a victim of confabulatory applied statistics? This would be a great project for the Sun-Times newsroom, assuming OpenAI hasn’t eaten them yet.</p>
<p>Doubtfully,</p>
<p>—Kyle Kingsbury</p>
</content></entry><entry><id>https://aphyr.com/posts/381-when-flat-rate-movers-wont-answer-your-calls</id><title>When Flat Rate Movers Won't Answer Your Calls</title><published>2025-05-03T09:23:16-05:00</published><updated>2025-05-03T09:23:16-05:00</updated><link rel="alternate" href="https://aphyr.com/posts/381-when-flat-rate-movers-wont-answer-your-calls"></link><author><name>Aphyr</name><uri>https://aphyr.com/</uri></author><content type="html"><p>Back in 2023 I went through an inter-state move with <a href="https://www.flatrate.com/moving/">Flat Rate Movers,
LTD.</a>, a.k.a. Flat Rate Moving, US DOT 488466, MC 254356. They bungled the job, damaged my stuff
and my house, and then refused to talk to me or their own insurance company. I
placed dozens of calls, wrote letters, emails, nothing worked. I finally got
some money for the damage by working with their insurer directly. I know a lot
of folks struggle with moving companies, and figured I’d write up a bit of this
story in case it helps. You can <a href="#finding-their-insurance">skip ahead</a> if you
just want to know about the FMCSA insurer database.</p>
<p>In November 2022 I scheduled the move with Flat Rate. We took a detailed video
inventory of everything to be moved. I paid over $14,000 for an “all inclusive
move”, which, per the move plan, included full packing services, blankets for furniture, boxes for electronics, lamps, and bicycles, a custom crate for a tabletop, and “extended valuation coverage”—their insurance policy.</p>
<p>A few days before the move in March 2023, Flat Rate called to tell me a
five-person team would arrive. When the crew arrived, it wasn’t Flat Rate. It
was a team of two from <a href="https://www.esquiremoving.com/">Esquire Moving Inc</a> (US DOT 2820253, MC 940499). They had
no idea they were supposed to provide packing services. The crate I paid for was nowhere to be found. They didn’t have enough boxes or blankets. I had to have everything out that day, so
there wasn’t any choice—I worked alongside the team for thirteen hours to
complete the packing and move-out.</p>
<p>I let the team handle furniture protection and loading the truck, which was a
mistake. As they unloaded a few days later, I realized much of the furniture had
been completely unprotected. My bicycle wasn’t boxed. Lamps were tossed in
loose. There was extensive damage to furniture, art, books, and my home: I
watched the crew rip a doorframe off the wall. The crew provided me with a
backdated bill of lading only on delivery.</p>
<p>I called Flat Rate a couple days later to discuss my concerns. Their
representive apologized and acknowledged that a crew of two was insufficient. I
sent Flat Rate a detailed email explaining their failure to provide promised
services, accompanied by photographs of the move process and the resulting
damage. I asked for a partial refund, and for Flat Rate to pay for the damage
they caused. I received only an out-of-office auto-response.</p>
<p>On March 21st, I received a generic form letter from Flat Rate’s claims
department. I filled out the claim forms and submitted them on March 25th, and
repeated that I needed more than an insurance claim: Flat Rate obviously failed
to provide the services I’d paid for.</p>
<p>Then things got weird. I placed call after call to the claims department. They
didn’t answer. I left voicemail after voicemail. On April 28th I reached an
actual human, but their computers were apparently down, and no supervisor was
in the building—the representative couldn’t do anything but take down a note
to call me back. They never did. I left another voicemail on May 5th. Again on
May 23rd. Again on August 4th. August 8th. I began to realize that Flat Rate’s
strategy was simply to never answer the phone.</p>
<p>On August 14th, a new hire in the claims department called me: she was taking over my case. She dispatched a local furniture company
to inspect the damages and help complete the claim. The inspectors agreed: the
movers had done extensive damage. I provided them with documentation and photos
as well.</p>
<p>On September 14 I called the furniture company and confirmed that yes, they had
submitted their report to Flat Rate. However, the furniture company had a
confidentiality agreement with Flat Rate, and could not release their report to
me. I called their contact at Flat Rate, who didn’t answer, and left a
voicemail. I called the claims representative’s direct line: her number was no
longer in service. On September 19th I got a call from the claims
representative, who promised she’d have a decision by the end of the day. Flat Rate never talked to me again.</p>
<p>I called again and again, but got voicemail every time. I tried a letter from
my lawyers, an arbitration request with the <a href="https://trucking.org/arbitration-loss-and-damages">American Trucking
Association</a>, complaints with the <a href="https://www.usa.gov/agencies/federal-motor-carrier-safety-administration">Federal Motor Carrier Safety
Administration</a>,
the <a href="https://www.dot.ny.gov/index">New York Department of Transportation</a>’s
Motor Carrier complaint department, and the <a href="https://www.dfs.ny.gov/">New York State Department of
Financial Services</a>; none of this went anywhere.</p>
<h2><a href="#finding-their-insurance" id="finding-their-insurance">Finding Their Insurance</a></h2>
<p>Here’s the thing: movers offer coverage, they have claims departments, and they do many insurance-like things in house. But for complicated reasons, they are not actually insurance companies, and are not regulated as such. Their coverage is backstopped by separate, real insurance companies. I eventually discovered I could bypass Flat Rate and talk to their backing insurance company directly. The Federal Motor Carrier Safety
Administration maintains <a href="https://li-public.fmcsa.dot.gov/LIVIEW/pkg_carrquery.prc_getdetail">a public database of moving companies</a>. Putting in their US DOT number
(488466) yields a page with some basic info. At the bottom are links with their
active and pending insurance, and the history of their insurers.</p>
<p><img class="attachment pure-img" src="/data/posts/381/fmcsa.png" alt="A screenshot of the FMCSA page, with links at the bottom" title="A screenshot of the FMCSA page, with links at the bottom"></p>
<p><img class="attachment pure-img" src="/data/posts/381/insurance-history.png" alt="A screenshot of their insurer history" title="A screenshot of their insurer history"></p>
<p>The insurance history told me their cargo insurer at the time of my move was
Hanover Insurance Company, with policy RHX H706231. The database also had
Hanover’s phone number. I was able to call Hanover and ask about the
policy—it took a few tries, but I got through to a claims adjuster there who
was able to confirm that yes, I could file a claim directly with Hanover. I
sent over a package of documentation, including the photos and the story so
far.</p>
<p>Hanover Insurance informed me they’d never heard anything about my claim, and
called Flat Rate to check. Over the next few days we discovered that Flat Rate
wasn’t just refusing to answer my calls—they wouldn’t answer calls from their insurance company either. Hanover wasn’t able to obtain the report from the furniture company, but they did agree, on the basis of the photos, to pay a reasonable amount for the damage to cargo. I had a check a few days later.</p>
<p>I’m still unhappy with Flat Rate: they charged me a good deal of money for services
they failed to deliver, and never paid for damage to the house. I was gearing up for small claims court—but during the tail end of this fiasco I was entering a fresh hell of home renovation, and got distracted. If you’re reading this, Flat Rate, you still owe me.</p>
</content></entry><entry><id>https://aphyr.com/posts/380-comments-on-executive-order-14168</id><title>Comments on Executive Order 14168</title><published>2025-02-21T18:04:55-05:00</published><updated>2025-02-21T18:04:55-05:00</updated><link rel="alternate" href="https://aphyr.com/posts/380-comments-on-executive-order-14168"></link><author><name>Aphyr</name><uri>https://aphyr.com/</uri></author><content type="html"><p><em>Submitted to the Department of State, which is <a href="https://www.federalregister.gov/documents/2025/02/18/2025-02696/30-day-notice-of-proposed-information-collection-application-for-a-us-passport-for-eligible">requesting comments</a> on a proposed change which would align US passport gender markers with <a href="https://www.whitehouse.gov/presidential-actions/2025/01/defending-women-from-gender-ideology-extremism-and-restoring-biological-truth-to-the-federal-government/">executive order 14168</a>.</em></p>
<p>Executive order 14168 is biologically incoherent and socially cruel. All passport applicants should be allowed to select whatever gender markers they feel best fit, including M, F, or X.</p>
<p>In humans, neither sex nor gender is binary at any level. There are several possible arrangements of sex chromosomes: X, XX, XY, XXY, XYY, XXX, tetrasomies, pentasomies, etc. A single person can contain a mosaic of cells with different genetics: some XX, some XYY. Chromosomes may not align with genitalia: people with XY chromosomes may have a vulva and internal testes. People with XY chromosomes and a small penis may be surgically and socially reassigned female at birth—and never told what happened. None of these biological dimensions necessarily align with one’s internal concept of gender, or one’s social presentation.</p>
<p>The executive order has no idea how biology works. It defines “female” as “a person belonging, at conception, to the sex that produces the large reproductive cell”. Zygotes do not produce reproductive cells at all: under this order none of us have a sex. Oogenesis doesn’t start until over a month into embryo development. Even if people were karyotyping their zygotes immediately after conception so they could tell what “legal” sex they were going to be, they could be wrong: which gametes we produce depends on the formation of the genital ridge.</p>
<p>All this is to say that if people fill out these forms using this definition of sex, they’re guessing at a question which is both impossible to answer and socially irrelevant. You might be one of the roughly two percent of humans born with an uncommon sexual development and not even know it. Moreover, the proposed change fundamentally asks the wrong question: gender markers on passports are used by border control agents, and are expected to align with how those agents read the passport holder’s gender. A mismatch will create needless intimidation and hardship for travelers.</p>
<p>Of course most of us will not have our identities challenged under this order. That animus is reserved for trans people, for gender-non-conforming people, for anyone whose genetics, body, dress, voice, or mannerisms don’t quite fit the mold. Those are the people who will suffer under this order. That cruelty should be resisted.</p>
</content></entry></feed>
{
"cache-control": "private,max-age=60",
"cf-cache-status": "DYNAMIC",
"cf-ray": "99f0d9b5863e375a-YYZ",
"connection": "keep-alive",
"content-type": "application/atom+xml",
"date": "Sat, 15 Nov 2025 18:35:47 GMT",
"server": "cloudflare",
"set-cookie": "JSESSIONID=godZ2JGf9ax9oO8-FaTrEdZYvptl37bvrbiJkBkb; path=/; secure; HttpOnly; Max-Age=2592000; Expires=Mon, 15-Dec-2025 18:35:47 GMT",
"strict-transport-security": "max-age=31536000; includeSubdomains",
"transfer-encoding": "chunked",
"vary": "accept-encoding",
"x-content-type-options": "nosniff",
"x-frame-options": "SAMEORIGIN, DENY",
"x-xss-protection": "1; mode=block"
}
{
"meta": {
"type": "atom",
"version": "1.0"
},
"language": null,
"title": "Aphyr: Posts",
"description": null,
"copyright": null,
"url": "https://aphyr.com/",
"self": "https://aphyr.com/posts.atom",
"published": null,
"updated": "2025-11-14T20:36:18.000Z",
"generator": null,
"image": null,
"authors": [],
"categories": [],
"items": [
{
"id": "https://aphyr.com/posts/399-op-color-plots",
"title": "Op Color Plots",
"description": null,
"url": "https://aphyr.com/posts/399-op-color-plots",
"published": "2025-11-14T20:00:52.000Z",
"updated": "2025-11-14T20:00:52.000Z",
"content": "<p>A lot of my work involves staring at visualizations trying to get an intuitive feeling for what a system is doing. I’ve been working on a new visualization for <a href=\"https://github.com/jepsen-io/jepsen\">Jepsen</a>, a distributed systems testing library. This is something I’ve had in the back of my head for years but never quite got around to.</p>\n<p>A Jepsen test records a history of operations. Those operations often come in a few different flavors. For instance, if we’re testing a queue, we might send messages into the queue, and try to read them back at the end. It would be bad if some messages didn’t come back; that could mean data loss. It would also be bad if messages came out that were <em>never</em> enqueued; that could signify data corruption. A Jepsen checker for a queue might build up some data structures with statistics and examples of these different flavors: which records were lost, unexpected, and so on. Here’s an example from the <a href=\"https://github.com/jepsen-io/nats\">NATS test</a> I’ve been working on this month:</p>\n<pre><code><span></span><span class=\"p\">{</span><span class=\"ss\">:valid?</span> <span class=\"nv\">false</span>,\n <span class=\"ss\">:attempt-count</span> <span class=\"mi\">529583</span>,\n <span class=\"ss\">:acknowledged-count</span> <span class=\"mi\">529369</span>,\n <span class=\"ss\">:read-count</span> <span class=\"mi\">242123</span>,\n <span class=\"ss\">:ok-count</span> <span class=\"mi\">242123</span>,\n <span class=\"ss\">:recovered-count</span> <span class=\"mi\">3</span>\n <span class=\"ss\">:hole-count</span> <span class=\"mi\">159427</span>,\n <span class=\"ss\">:lost-count</span> <span class=\"mi\">287249</span>,\n <span class=\"ss\">:unexpected-count</span> <span class=\"mi\">0</span>,\n <span class=\"ss\">:lost</span> <span class=\"o\">#</span><span class=\"p\">{</span><span class=\"s\">\"110-6014\"</span> <span class=\"nv\">...</span> <span class=\"s\">\"86-8234\"</span><span class=\"p\">}</span>,\n <span class=\"ss\">:holes</span> <span class=\"o\">#</span><span class=\"p\">{</span><span class=\"s\">\"110-4072\"</span> <span class=\"nv\">...</span> <span class=\"s\">\"86-8234\"</span><span class=\"p\">}</span>,\n <span class=\"ss\">:unexpected</span> <span class=\"o\">#</span><span class=\"p\">{}}</span>\n</code></pre>\n<p>You can tell just by eyeballing the numbers that most attempted writes were acknowledged, and about half of them were later read back. There were just three “recovered” writes where we didn’t know if they succeeded or not, and they later appeared. About half were lost: acknowledged but never read. About half of those were “holes”—writes which were missing even though some later write was read. And there’s a few examples, in case you want to go digging into the history and see what might have happened to specific writes.</p>\n<p>At the same time, there are lots of <em>qualitative</em> questions that are hard to answer statistically. For instance, were the lost writes clustered together in time, or were they spread out? What faults might have happened to trigger write loss? Is data loss universal on short timescales, or do, say, 40% of writes survive? Is the rate of writes uniform over time, or do lost writes happen faster or slower? Did the data loss event destroy all records prior to some time, or did some survive? Could apparent data loss be attributed to slow delivery of messages, or is it likely that the data is truly missing?</p>\n<p><img class=\"attachment pure-img\" src=\"/data/posts/399/set.png\" alt=\"A timeseries plot, as described below\" title=\"A timeseries plot, as described below\"></p>\n<p>This plot helps answer some of those questions. Time flows left to right. Each operation (measured by its invocation time) becomes a single point. Colors indicate the flavor of that operation: OK, lost, unknown, or so on. Operations are splayed out vertically, in such a way that the aggregate “shape” of the plot traces out the rough throughput of the system over time. Operations from the fault-injection system are shown as vertical lines and (for process kills) horizontal bars spanning them.</p>\n<p>From this, we can see that data loss occurred in two large chunks, starting near a file-corruption operation at roughly 65 seconds and running until the end of the test. They were not evenly mixed: writes were lost in blocks. A few records survived around 87 seconds in, then everything later was lost as well. These OK records in the middle hint that this is “real” data loss, as opposed to readers lagging behind. The rate of OK and lost operations was essentially constant at ~6,800 records/sec. Unknown operations happened <em>much</em> slower–likely due to timeouts. Some, but not all, process kills caused throughput to tank. You can guess that some of them took down a majority of nodes, halting the cluster until nodes were restarted; others were recoverable after a few seconds.</p>\n<p>Jepsen tests can range from a handful of operations to hundreds of millions, and our plots need to work for both extremes. In this case, the plot used single-pixel dots for frequent operations like <code>ok</code> and <code>lost</code>, but for the handful of <code>unknown</code> operations, switched to a larger cross style. These infrequent operations are often of the most interest, and could easily get lost in the noise, so it makes sense to visually emphasize them.</p>\n<p>This isn’t a <em>good</em> plot yet. I am, for instance, running out of colors to represent all the kinds of faults, and that leads to awkward color-blind issues like the red/green pairing here. There’s a sort of aliasing/moire pattern caused by the point layout algorithm, which divides the history into 512 time windows, computes a height for each window based on throughput, and then spreads the window’s points along the y axis uniformly. I feel like I may be able to use some sort of adaptively-determined transparency and overlapping dots to get something a little closer to a density field, and that might read more clearly, but I’m wary of what might happen when some windows have lots of plots and others have only a few.</p>\n<p>Despite these shortcomings, this plot has been remarkably useful! I’m using them to get an at-a-glance feel for how bad a given test run is, to figure out where in the history I should look, and to refine the checker itself.</p>\n<p>Because there’s lots of ways you could interpret these plots—showing lost elements of a set, highlighting transaction anomalies in an SQL test, showing how read-only and read-write queries are affected by faults—I don’t really know what to name them yet. For now I’m calling them “op color plots”. They’re available in the <a href=\"https://github.com/jepsen-io/jepsen/blob/3eb61ba6b1e855bd38d042389a0736252c47f71e/jepsen/src/jepsen/checker/plot.clj#L22-L145\">current Jepsen 0.3.10-SNAPSHOT</a>, and I’m hoping they’ll be useful in all kinds of tests to come.</p>",
"image": null,
"media": [],
"authors": [
{
"name": "Aphyr",
"email": null,
"url": "https://aphyr.com/"
}
],
"categories": []
},
{
"id": "https://aphyr.com/posts/398-the-future-of-fact-checking-is-lies-i-guess",
"title": "The Future of Fact-Checking is Lies, I Guess",
"description": null,
"url": "https://aphyr.com/posts/398-the-future-of-fact-checking-is-lies-i-guess",
"published": "2025-11-10T19:24:47.000Z",
"updated": "2025-11-10T19:24:47.000Z",
"content": "<p>Last weekend I was trying to pull together sources for <a href=\"https://aphyr.com/posts/397-i-want-you-to-understand-chicago\">an essay</a> and kept finding “fact check” pages from <a href=\"https://factually.co\">factually.co</a>. For instance, a Kagi search for <a href=\"https://kagi.com/search?q=pepper+ball+chicago+pastor\">“pepper ball Chicago pastor”</a> returned <a href=\"https://web.archive.org/web/20251110003151/factually.co/fact-checks/justice/ice-agents-pepperball-incident-b2b86e\">this Factually article</a> as the second result:</p>\n<blockquote>\n<p><b>Fact check: Did ice agents shoot a pastor with pepperballs in October in Chicago</b></p>\n<p>The claim that “ICE agents shot a pastor with pepperballs in October” is not supported by the available materials supplied for review; none of the provided sources document a pastor being struck by pepperballs in October, and the only closely related reported incident involves a CBS Chicago reporter’s vehicle being hit by a pepper ball in late September <a href=\"https://web.archive.org/web/20251110003151/https://www.cbsnews.com/chicago/news/feds-fire-pepper-ball-at-cbs-chicago-reporters-truck/\">[1]</a><a href=\"https://web.archive.org/web/20251110003151/https://www.ftvlive.com/sqsp-test/2025/9/29/reporter-claims-ice-agents-fired-at-her-direction\">[2]</a>. Available reports instead describe ICE operations, clergy protests, and an internal denial of excessive force, but they do not corroborate the specific October pastor shooting allegation <a href=\"https://web.archive.org/web/20251110003151/https://www.usnews.com/news/best-states/illinois/articles/2025-09-20/ice-denies-using-excessive-force-as-it-broadens-immigration-arrests-in-chicago\">[3]</a><a href=\"https://web.archive.org/web/20251110003151/https://chvnradio.com/articles/clergy-protest-ice-and-national-guard-presence-near-dc-churches\">[4]</a>.</p>\n</blockquote>\n<p>Here’s <a href=\"https://web.archive.org/web/20251110155956/https://factually.co/fact-checks/justice/pastor-shot-by-ice-pepper-ball-493ff8\">another “fact check”</a>:</p>\n<blockquote>\n<p><b>Fact check: Who was the pastor shot with a pepper ball by ICE</b></p>\n<p>No credible reporting in the provided materials identifies a pastor who was shot with a pepper‑ball by ICE; multiple recent accounts instead document journalists, protesters, and community members being hit by pepper‑ball munitions at ICE facilities and demonstrations. The available sources (dated September–November 2025) describe incidents in Chicago, Los Angeles and Portland, note active investigations and protests, and show no direct evidence that a pastor was targeted or injured by ICE with a pepper ball <a href=\"https://web.archive.org/web/20251110155956mp_/https://www.cbsnews.com/chicago/news/feds-fire-pepper-ball-at-cbs-chicago-reporters-truck/\">[1]</a> <a href=\"https://web.archive.org/web/20251110155956mp_/https://www.thecorsaironline.com/corsair/2025/9/11/z749m9bixh4cur754hg9rlib50g9w1\">[2]</a> <a href=\"https://web.archive.org/web/20251110155956mp_/https://www.usnews.com/news/best-states/illinois/articles/2025-09-20/ice-denies-using-excessive-force-as-it-broadens-immigration-arrests-in-chicago\">[3]</a> <a href=\"https://web.archive.org/web/20251110155956mp_/https://www.theguardian.com/us-news/2025/sep/19/ice-protest-chicago-police#:~:text=Federal%20law%20enforcement%20agents%20used,building%20in%20Chicago%20on%20Friday.\">[4]</a>.</p>\n</blockquote>\n<p>These certainly look authoritative. They’re written in complete English sentences, with professional diction and lots of nods to neutrality and skepticism. There are lengthy, point-by-point explanations with extensively cited sources. The second article goes so far as to suggest “who might be promoting a pastor-victim narrative”.</p>\n<p>The problem is that both articles are false. <a href=\"https://religionnews.com/2025/10/07/in-chicago-clergy-and-religious-protesters-say-ice-is-threatening-their-religious-freedom/\">This</a> <a href=\"https://www.cnn.com/2025/10/08/us/video/amanda-tovar-witness-chicago-reverend-david-black-ice-pepper-balls\">story</a> <a href=\"https://www.youtube.com/watch?v=DVKXujeagO0\">was</a> <a href=\"https://abcnews.go.com/US/video/chicago-pastor-sues-ice-alleging-agents-shot-pepper-126689554\">broadly</a> <a href=\"https://chicago.suntimes.com/immigration/2025/11/06/minister-david-black-gregory-bovino-broadview-pepperballs-protest-court-ruling-sara-ellis\">reported</a>, as in this <a href=\"https://www.fox32chicago.com/news/video-federal-agent-shoot-chicago-pastor-head-pepper-ball-broadview-ice-protest\">October 8th Fox News article</a> unambiguously titled “Video shows federal agent shoot Chicago pastor in head with pepper ball during Broadview ICE protest”. DHS Assistant Secretary Tricia McLaughlin even went on <a href=\"https://x.com/TriciaOhio/status/1976026380841386287\">X to post about it</a>. This event definitely happened, and it would not have been hard to find coverage at the time these articles were published. It was, quite literally, all over the news.</p>\n<p>Or maybe the articles are sort of true. Each summary disclaims that its findings are based on “the available materials supplied for review”, or “the provided materials”. This is splitting hairs. Source selection is an essential part of the fact-checking process, and Factually <a href=\"https://factually.co/faq\">selects its own sources</a> in response to user questions. Instead of finding authoritative sources, Factually selected irrelevant ones and spun them into a narrative which is the opposite of true. Many readers will not catch this distinction. Indeed, I second-guessed myself when I saw the Factually articles—and I read the original reporting when it happened.</p>\n<p>“These conversations matter for democracy,” says the call-to-action at the top of <a href=\"https://web.archive.org/web/20251110155956/https://factually.co/fact-checks/justice/pastor-shot-by-ice-pepper-ball-493ff8\">every Factually article</a>. The donation button urges readers to “support independent reporting.”</p>\n<p>But this is not reporting. Reporters go places and talk to people. They take photographs and videos. They search through databases, file FOIA requests, read court transcripts, evaluate sources, and integrate all this with an understanding of social and historical context. People go to journalism school to do this.</p>\n<p><a href=\"https://factually.co/faq\">What Factually does</a> is different. It takes a question typed by a user and hands it to a Large Language Model, or LLM, to generate some query strings. It performs up to three Internet search queries, then feeds the top nine web pages it found to a pair of LLMs, and asks them to spit out some text shaped like a fact check. This text may resemble the truth, or—as in these cases—utterly misrepresent it.</p>\n<p>Is the East Wing of the White House <a href=\"https://www.cnn.com/2025/10/26/politics/white-house-east-wing-history\">still there</a>? Factually is happy to <a href=\"https://web.archive.org/web/20251111045206/https://factually.co/fact-checks/politics/trump-white-house-renovation-bba06d\">gaslight readers</a> into thinking it wasn’t demolished. Did David Ballard <a href=\"https://www.cnn.com/2025/10/03/us/chicago-apartment-ice-raid\">see a Black Hawk helicopter</a> used in the South Shore immigration raid, like the one in DHS Secretary Kristi Noem’s <a href=\"https://x.com/Sec_Noem/status/1974443512017178924\">video montage of that night</a>? Might it have been <a href=\"https://www.helis.com/database/cn/51171/\">03-26987</a> or <a href=\"https://www.helis.com/database/cn/44162/\">86-24548</a>, both of which were in Chicago in the weeks before the raid? Factually is confident that “no direct, documented evidence” supports this story, and suggests readers <a href=\"https://web.archive.org/web/20251111045221/https://factually.co/fact-checks/politics/ice-blackhawks-operations-in-us-cities-53a97d\">might have confused the helicopter with Chicago’s hockey team</a>. Did ICE announce <a href=\"https://www.nytimes.com/2025/08/05/us/politics/ice-bonuses-immigrants-deportations.html\">a cash bonus program for speedy deportations</a>, then retract it a few hours later? Factually.co <a href=\"https://factually.co/fact-checks/politics/ice-deportation-quotas-bonuses-e340e5\">knows nothing about that story</a>. Over in my neck of the woods, Factually <a href=\"https://web.archive.org/web/20251110203032/factually.co/fact-checks/technology/is-mongodb-strong-serializable-55a4ba\">happily conflates</a> Serializability with Snapshot Isolation, and repeatedly misleads users into thinking they can get Strong Serializable guarantees by turning on <code>snapshot</code> read concern and <code>majority</code> write concern. To be clear, <a href=\"https://jepsen.io/analyses/mongodb-4.2.6\">this won’t work</a>.</p>\n<p><b>Calling Factually’s articles “fact checks” is a category error.</b> A fact checker diligently investigates a claim, reasons about it, and ascertains some form of ground truth. Fact checkers are held to a higher evidentiary standard; they are what you rely on when you want to be sure of something. They are supposed to be right when other sources are wrong. The web pages on <a href=\"https://factually.co\">factually.co</a> are fact-check-flavored slurry, extruded by a statistical model which <a href=\"https://garymarcus.substack.com/p/llms-dont-do-formal-reasoning-and\">does not understand what it is doing</a>. They are fancy Mad Libs.</p>\n<p>The end result of this absurd process is high-ranking, authoritative-sounding web pages which sometimes tell the truth, and sometimes propagate lies. Factually is a stochastic disinformation machine which exacerbates the very problems fact-checkers are supposed to solve.</p>\n<p>Please stop doing this.</p>",
"image": null,
"media": [],
"authors": [
{
"name": "Aphyr",
"email": null,
"url": "https://aphyr.com/"
}
],
"categories": []
},
{
"id": "https://aphyr.com/posts/397-i-want-you-to-understand-chicago",
"title": "I Want You to Understand Chicago",
"description": null,
"url": "https://aphyr.com/posts/397-i-want-you-to-understand-chicago",
"published": "2025-11-08T18:15:07.000Z",
"updated": "2025-11-08T18:15:07.000Z",
"content": "<p>I want you to <a href=\"https://dansinker.com/posts/2025-10-24-understand/\">understand</a> what it is like to live in Chicago during this time.</p>\n<p>Every day my phone buzzes. It is a neighborhood group: four people were\nkidnapped at the corner drugstore. A friend a mile away sends a Slack message:\nshe was at the scene when masked men assaulted and abducted two people on the\nstreet. A plumber working on my pipes is distraught, and I find out that two of his\nemployees were kidnapped that morning. A week later it happens again.</p>\n<p>An email arrives. Agents with guns <a href=\"https://chicago.suntimes.com/immigration/2025/11/05/daycare-teacher-taken-by-ice-north-side-immigration\">have chased a teacher</a> into the school where she\nworks. They did not have a warrant. They dragged her away, ignoring her and her colleagues’ pleas to show proof of her documentation. That evening I stand a few feet from the parents of Rayito de Sol and listen to them describe, with anguish, how good\nMs. Diana was to their children. What it is like to have <a href=\"https://ca.news.yahoo.com/video-shows-ice-agents-grabbing-202310296.html\">strangers with guns\ntraumatize your\nkids</a>.\nFor a teacher to hide a three-year-old child <a href=\"https://www.chalkbeat.org/chicago/2025/11/05/daycare-worker-pulled-out-of-school-by-armed-federal-agents-traumatizing-parents-say/\">for fear they might be\nkilled</a>.\nHow their relatives will no longer leave the house. I hear the pain and fury in\ntheir voices, and I wonder who will be next.</p>\n<p>Understand what it is to pray in Chicago. On September 19th, Reverend David Black, lead pastor at First Presbyterian Church of Chicago, was <a href=\"https://wgntv.com/news/chicago-news/i-wonder-about-their-intentions-chicago-pastor-speaks-out-after-ice-agents-shoot-him-in-head-with-pepper-balls-in-broadview/\">praying outside the ICE detention center in Broadview</a> when a DHS agent <a href=\"https://www.msn.com/en-us/news/us/reverend-shot-by-ice-shares-chilling-warning-after-being-left-with-dent-in-his-head/ar-AA1PHXPe\">shot him in the head with pepper balls</a>. Pepper balls are <a href=\"https://store-c19drjba2a.mybigcommerce.com/content/PEP-22018-TRP-LE-Manual-042423.pdf\">never supposed to be fired at the head</a> because they can seriously injure, or even kill. “We could hear them laughing as they were shooting us from the roof,” Black recalled. He is not the only member of the clergy ICE has assaulted. Methodist pastor Hannah Kardon was violently arrested <a href=\"https://www.youtube.com/watch?v=eARiC31koHo\">on October 17th</a>, and Baptist pastor Michael Woolf was shot with pepper balls <a href=\"https://wordandway.org/2025/11/04/baptist-pastor-shot-in-leg-by-officer-during-all-saints-day-march-outside-ice-facility/\">on November 1st</a>.</p>\n<p>Understand what it is to sleep in Chicago. On the night of <a href=\"https://www.npr.org/2025/10/24/nx-s1-5570113/chicago-south-shore-building-residents-recount-humiliating-ice-raid\">September\n30th</a>,\nfederal agents rappelled from a Black Hawk helicopter to execute a raid on an apartment\nbuilding on the South Shore. Roughly three hundred agents deployed flashbangs,\nbusted down doors, and took people indiscriminately. US citizens—some women and children—were grabbed from their beds, marched outside without even a chance to dress, zip-tied, and <a href=\"https://www.youtube.com/watch?v=vFh5yBIxTpc\">loaded into\nvans</a>. Residents returned to <a href=\"https://blockclubchicago.org/2025/10/02/south-shore-residents-return-to-ransacked-apartments-try-to-move-out-after-ice-raid-it-looks-like-hell/\">find\ntheir windows and doors broken</a> and their belongings\nstolen. Despite the violence of the raid, it appears <a href=\"https://www.propublica.org/article/chicago-venezuela-immigration-ice-fbi-raids-no-criminal-charges\">no criminal charges</a> were filed.</p>\n<p>Understand what it is to lead Chicago. On October 3rd, Alderperson Jesse Fuentes <a href=\"https://blockclubchicago.org/2025/10/15/ald-jesse-fuentes-gears-up-to-sue-after-being-handcuffed-by-ice-agent/\">asked federal agents</a> to produce a judicial warrant and allow an injured man at the hospital access to an attorney. The plainclothes agents grabbed Fuentes, handcuffed her, and took her outside the building. Her lawsuit <a href=\"https://chicago.suntimes.com/city-hall/2025/10/21/ald-jessie-fuentes-tort-claim-ice-agents-humboldt-park\">is ongoing</a>. On October 21st, Representative Hoan Huynh was <a href=\"https://www.cbsnews.com/chicago/news/illinois-state-rep-hoan-huynh-border-patrol-agents-gun-drawn/\">going door-to-door</a> to inform businesses of their immigration rights when he was attacked by six armed CBP agents, who boxed in his vehicle and pointed a gun at his face. Huynh says the agents <a href=\"https://www.fox32chicago.com/news/chicago-lawmaker-stopped-gunpoint\">tried to bash open his car window</a>.</p>\n<p>Understand what it is to live in Chicago. On October 9th, Judge Ellis issued a <a href=\"https://www.nprillinois.org/chicago-il/2025-10-09/judge-grants-restraining-order-protecting-protesters-journalists-in-chicago-area-protests\">temporary restraining\norder</a>\nrequiring that federal agents refrain from deploying tear gas or shooting\ncivilians without an imminent threat, and requiring two audible warnings. ICE\nand CBP have flouted these court orders. On October 12th, federal agents\n<a href=\"https://chicago.suntimes.com/immigration/2025/10/12/ice-chicago-albany-park-tear-gas\">shoved an attorney to the\nground</a>\nwho tried to help a man being detained in Albany Park. Agents refused to\nidentify themselves or produce a warrant, then deployed tear gas without\nwarning. On October 14th, agents rammed a car on the East Side, then\n<a href=\"https://www.chicagotribune.com/2025/10/14/ice-deploys-tear-gas-after-crash/\">tear-gassed neighbors and\npolice</a>.</p>\n<p>On October 23rd, federal agents <a href=\"https://blockclubchicago.org/2025/10/22/border-patrol-agents-descend-on-little-village-sparking-fury-fear-in-neighborhood/\">detained seven\npeople</a>,\nincluding two U.S. citizens and an asylum seeker, in Little Village. Two worked\nfor Alderperson Michael Rodriguez: his chief of staff Elianne Bahena, and\npolice district council member Jacqueline Lopez. Again in Little Village, agents <a href=\"https://blockclubchicago.org/2025/10/23/immigration-agents-protesters-clash-in-little-village-for-2nd-day-in-a-row/\">tear-gassed and pepper-sprayed protestors</a>, seizing two high school students and a security guard, among others. Alderperson Byron Sigcho-Lopez reported that agents assaulted one of the students, who had blood on his face. On October 24th, agents in\nLakeview emerged from unmarked cars, climbed a locked fence to enter a\nprivate yard, and <a href=\"https://blockclubchicago.org/2025/10/24/lakeview-street-tear-gassed-by-agents-amid-north-side-immigration-surge-it-hit-home/\">kidnapped a construction\nworker</a>.\nAs neighbors gathered, they deployed four tear gas canisters. That same day, a few blocks away,\nmen with rifles jumped out of SUVs and <a href=\"https://blockclubchicago.org/2025/10/24/lakeview-street-tear-gassed-by-agents-amid-north-side-immigration-surge-it-hit-home/\">assaulted a man standing at a bus\nstop</a>.</p>\n<p>“They were beating him,” said neighbor Hannah Safter. “His face was bleeding”.</p>\n<p>They returned minutes later and attacked again. A man from the Laugh Factory, a\nlocal comedy club, had come outside with his mother and sister. “His mom put\nher body in between them, and one of the agents kicked her in the face”.</p>\n<p>Understand what it is to be a family in Chicago. On October 25th, agents\narrested a 70-year-old man and <a href=\"https://blockclubchicago.org/2025/10/26/federal-agents-use-tear-gas-again-this-time-in-northwest-side-confrontations/\">threw a 67-year old woman to the\nground</a> in Old Irving Park, <a href=\"https://abcnews.go.com/US/border-patrol-agents-fire-allegedly-disrupting-childrens-halloween/story?id=126900354\">then deployed tear gas</a>, disrupting a <a href=\"https://blockclubchicago.org/2025/10/28/after-halloween-parade-ruined-by-federal-agents-old-irving-park-neighbors-furious/\">children’s Halloween parade</a>. One parent spoke to <a href=\"https://www.nbcnews.com/news/us-news/chicago-immigration-enforcement-children-tear-gas-border-patrol-rcna241629\">NBC news</a> about her two-year-old child’s response to the gas. The same day, agents <a href=\"https://chicago.suntimes.com/immigration/2025/10/26/northwest-side-ice-arrests-tear-gas\">deployed tear gas against residents of Avondale</a>.</p>\n<p>“Kids dressed in Halloween costumes walking to a parade do not pose an immediate threat to the safety of a law enforcement officer. They just don’t. And you can’t use riot control weapons against them,” <a href=\"https://blockclubchicago.org/2025/10/28/after-halloween-parade-ruined-by-federal-agents-old-irving-park-neighbors-furious/\">Judge Ellis said</a> to Border Patrol chief Gregory Bovino.</p>\n<p>Understand how the government speaks about Chicago. On November 3rd, paralegal Dayanne Figueroa, a US citizen, was driving to work when federal agents <a href=\"https://www.chicagotribune.com/2025/11/03/chicago-woman-collision-ice-accountability/\">crashed into her car</a>, drew their guns, and dragged her from the vehicle. Her car was left behind, coffee still in the cup holder, keys still in the car. The Department of Homeland Security blamed her, claiming she “violently resisted arrest, injuring two officers.” You can <a href=\"https://www.youtube.com/watch?v=vLozt6ThXfE\">watch the video for yourself</a>.</p>\n<p>“All uses of force have been more than exemplary,” Bovino <a href=\"https://wgntv.com/news/operation-midway-blitz/judge-border-patrol-commander-lied-about-use-of-force/\">stated in a recent deposition</a>. He is, as Judge Ellis put it, lying. Bovino <a href=\"https://abcnews.go.com/US/border-patrol-commander-admitted-lied-tear-gas-incident/story?id=127283392\">personally threw a tear gas canister in Little Village</a>. He claimed <a href=\"https://wgntv.com/news/operation-midway-blitz/judge-border-patrol-commander-lied-about-use-of-force/\">in a sworn deposition</a> that he was struck in the head by a rock before throwing the canister, and when videos showed no rock, <a href=\"https://chicago.suntimes.com/public-safety/2025/11/04/plaintiffs-lawyers-bovino-views-protesters-as-violent-rioters-tells-officers-to-go-hard-against-them\">admitted that he lied</a> about the event. When shown video of himself <a href=\"https://wgntv.com/news/operation-midway-blitz/judge-border-patrol-commander-lied-about-use-of-force/\">tackling peaceful protestor Scott Blackburn</a>, Bovino refused to acknowledge that he tackled the man. Instead, he claimed, “That’s not a reportable use of force. The use of force was against me.”</p>\n<p>“I find the government’s evidence to be simply not credible,” <a href=\"https://www.chicagotribune.com/2025/11/06/operation-midway-blitz-injunction/\">said Judge Ellis</a> in her November 6th ruling. “The use of force shocks the conscience.”</p>\n<p>Understand what it is to be Chicago. To <a href=\"https://blockclubchicago.org/2025/10/15/hundreds-pack-chicago-whistlemania-events-in-effort-to-fight-ice-we-have-to-stand-up-for-one-another/\">carry a whistle</a> and have the <a href=\"https://www.icirr.org/fsn\">ICIRR hotline</a> in your phone. To wake up from nightmares of shouting militiamen and guns in your face. To rehearse every day how to calmly refuse entry, how to identify a judicial warrant, how to film and narrate an assault. To wake to helicopters buzzing your home, to feel your heart rate spike at the car horns your neighbors use to alert each other to ICE and CBP enforcement. To know that perhaps three thousand of your fellow Chicagoans have <a href=\"https://www.nbcchicago.com/investigations/could-ice-have-lost-3000-immigrant-arrestees-in-chicago/3844220/\">been disappeared</a> by the government, but <a href=\"https://www.wbez.org/immigration/2025/09/12/immigration-customs-enforcement-ice-arrests-detentions-data-deportation-project-trac\">no one really knows for sure</a>. To know that many of those seized were imprisoned a few miles away, <a href=\"https://www.pbs.org/newshour/nation/judge-calls-alleged-conditions-at-chicago-area-immigration-site-disgusting\">as many as a hundred and fifty people in a cell</a>, denied access to food, water, sanitation, and legal representation. To know that many of these agents—masked, without badge numbers or body cams, and refusing to identify themselves—will never face justice. To wonder what they tell their children.</p>\n<p>The masked thugs who attack my neighbors, who point guns at elected officials and shoot pastors with pepper balls, who tear-gas neighborhoods, terrify children, and drag teachers and alderpeople away in handcuffs <a href=\"https://en.wikipedia.org/wiki/Schutzstaffel\">are not unprecedented</a>. We knew this was coming a year ago, when <a href=\"https://www.npr.org/2024/11/12/nx-s1-5181962/trump-promises-a-mass-deportation-on-day-1-what-might-that-look-like\">Trump promised mass deportations</a>. We knew it was coming, and seventy-seven million of us voted for it anyway.</p>\n<p>This weight presses on me every day. I am flooded with stories. There are so many I cannot remember them all; cannot keep straight who was gassed, beaten, abducted, or shot. I write to leave a record, to stare at the track of the tornado. I write to leave a warning. I write to call for help.</p>\n<p>I want you to understand, regardless of your politics, the historical danger of a secret police. What happens when a militia is deployed in our neighborhoods and against our own people. Left unchecked their mandate will grow; the boundaries of acceptable identity and speech will shrink. I want you to think about elections in this future. I want you to understand that every issue you care about—any hope of participatory democracy—is downstream of this.</p>\n<p>I want you to understand what it is to love Chicago. To see your neighbors make the heartbreaking choice between showing up for work or staying safe. To <a href=\"https://blockclubchicago.org/2025/10/18/thousands-gather-to-protest-trump-at-chicagos-no-kings-rally-downtown/\">march two miles long</a>, calling out: “This is what Chicago sounds like!” To see your representatives put <a href=\"https://www.youtube.com/watch?v=tWuIONYSwhA\">their bodies on the line</a> and their <a href=\"https://abc7chicago.com/post/chicago-daycare-worker-rayito-de-sol-arrested-ice-front-children-witnesses-say/18116866/\">voices in the fight</a>. To <a href=\"https://blockclubchicago.org/2025/10/08/chicago-neighbors-are-forming-watches-near-schools-to-protect-students-guardians-from-ice/\">form patrols</a> to walk kids safely to school. To join <a href=\"https://dailynorthwestern.com/2025/11/05/city/icirr-eyes-on-ice-text-network-alerts-community-to-verified-federal-immigration-enforcement-activity/\">rapid-response networks</a> to document and alert your neighbors to immigration attacks. For mutual aid networks to <a href=\"https://blockclubchicago.org/2025/11/05/from-chicago-to-la-neighborly-solidarity-fuels-resistance-to-ice/\">deliver groceries</a> and <a href=\"https://blockclubchicago.org/2025/10/17/chicago-cyclists-are-buying-out-tamale-carts-to-keep-vendors-home-and-safe-from-ice/\">buy out street vendors</a> so they can go home safe. To see your local journalists <a href=\"https://blockclubchicago.org/2025/10/07/block-club-chicago-news-organizations-sue-feds-over-first-amendment-violations/\">take the federal government to court</a>. To talk to neighbor after neighbor, friend after friend, and hear yes, yes, it’s all hands on deck.</p>\n<p>I want you to understand Chicago.</p>\n<p><em>This essay has been building—eating at me, really—for the last two months. My thanks to all the friends, family, neighbors and colleagues who have talked with me about ICE and CBP. In particular, I want to acknowledge the families of Rayito de Sol—parents like Maria Guzman and Tara Goodarzi, whose powerful speeches have been lodged in my chest. Also the members of <a href=\"https://www.onenorthside.org/\">One Northside</a>, Aldermen Vasquez and Martin, Senator Simmons, and everyone who spoke at the rally Wednesday. Your call to “tell the story” caught me, and I hope I have done some small part of that work here.</em></p>\n<p><em>I was particularly moved by Kelly Hayes’ <a href=\"https://organizingmythoughts.org/in-chicago-we-run-toward-danger-together/\">In Chicago, We Run Toward Danger Together</a> and Dan Sinker’s <a href=\"https://dansinker.com/posts/2025-10-24-understand/\">What I Need You To Understand</a>, which inspired the core motif of this essay. His follow-up <a href=\"https://dansinker.com/posts/2025-11-05-ghosts/\">Ghosts in the Graveyard</a> is also worth your time. Cam’s <a href=\"https://buttondown.com/camrodriguez/archive/11525-on-repacking-your-unpacked-funeral-clothes/\">On Repacking Your Unpacked Funeral Clothes</a> breaks my heart. Laurie Merrell’s <a href=\"https://lauriemerrell.com/posts/dispatch-from-occupied-chicago/\">Dispatch from Occupied Chicago</a> is a lucid, reflective piece which mirrors my own feelings.</em></p>\n<p><em>ICE and CBP affect us all: south, east, north and west; city and suburb. In particular, ICE has hit Little Village, a predominantly Latino neighborhood on the Southwest Side, <a href=\"https://borderlessmag.org/2025/10/24/when-ice-came-to-little-village-residents-stood-up-we-are-in-solidarity/\">hard in recent weeks</a>. Marginalized communities especially deserve our focus and care.</em></p>\n<p><em>You can donate your time and money to organizations like <a href=\"https://www.icirr.org/\">ICIRR</a>, which connects immigrants and refugees with legal aid and social services. I also suggest a donation to the non-profit <a href=\"https://blockclubchicago.org/\">Block Club Chicago</a> or <a href=\"https://chicago.suntimes.com/\">Chicago Sun-Times</a>, both of whom have been doing exceptional local journalism in this dark time. Without their reporting, this would have been impossible.</em></p>",
"image": null,
"media": [],
"authors": [
{
"name": "Aphyr",
"email": null,
"url": "https://aphyr.com/"
}
],
"categories": []
},
{
"id": "https://aphyr.com/posts/396-notes-on-prothean-ai",
"title": "Notes on \"Prothean AI\"",
"description": null,
"url": "https://aphyr.com/posts/396-notes-on-prothean-ai",
"published": "2025-11-03T01:38:55.000Z",
"updated": "2025-11-03T01:38:55.000Z",
"content": "<p><em>If this were one person, I wouldn’t write this publicly. Since there are apparently multiple people on board, and they claim to be looking for investors, I think the balance falls in favor of disclosure.</em></p>\n<p>Last week Prothean Systems <a href=\"https://www.facebook.com/reel/2528744020845660\">announced they’d surpassed AGI</a> and <a href=\"https://www.beprothean.org/TECHNICAL_WHITE_PAPER#9-conclusion\">called for the research community</a> to “verify, critique, extend, and improve upon” their work. Unfortunately, Prothean Systems has not published the repository they say researchers should use to verify their claims. However, based on their posts, web site, and public GitHub repositories, I can offer a few basic critiques.</p>\n<h2><a href=\"#arc-agi-2\" id=\"arc-agi-2\">ARC-AGI-2</a></h2>\n<p>First: Prothean’s core claim, repeated in the <a href=\"https://www.beprothean.org/TECHNICAL_WHITE_PAPER\">white paper</a>, the <a href=\"https://www.beprothean.org/FAQ\">FAQ</a>, and <a href=\"https://www.beprothean.org/PRESS_RELEASE\">the press release</a>, is that Prothean has <a href=\"https://www.facebook.com/photo.php?fbid=10236879950353996&set=p.10236879950353996&type=3\">successfully solved</a> all 400 tasks of the <a href=\"https://arcprize.org/arc-agi/2/\">ARC-AGI-2 benchmark</a>:</p>\n<blockquote>\n<p>We present Prothean Emergent Intelligence, a novel five-pillar computational architecture that achieved 100% accuracy on all 400 tasks of the ARC-AGI-2 challenge in 0.887 seconds.</p>\n</blockquote>\n<!-- -->\n<blockquote>\n<p>This system achieved 100% accuracy on all 400 tasks of the ARC-AGI-2 challenge in 0.887 seconds—a result previously considered impossible for artificial intelligence systems.</p>\n</blockquote>\n<!-- -->\n<blockquote>\n<p>ARC-AGI-2 is specifically designed to resist gaming:</p>\n<ul>\n<li>400 unique, novel tasks</li>\n<li>No training data available</li>\n</ul>\n</blockquote>\n<p>It is not possible to solve “all 400 tasks of the ARC-AGI-2 challenge” because ARC-AGI-2 does not have 400 evaluation tasks to solve. Nor is it true that ARC-AGI-2 has no training data. The ARC-AGI-2 web site and docs are clear about this: the workload consists of <a href=\"https://github.com/arcprize/ARC-AGI-2?tab=readme-ov-file#dataset-composition\">“1,000 public training tasks and 120 public evaluation tasks”</a>.</p>\n<p>Prothean System’s “verification protocol” <a href=\"https://www.beprothean.org/TECHNICAL_WHITE_PAPER\">instructs researchers</a> to download these 400 tasks from a <a href=\"https://github.com/fchollet/ARC-AGI/arc-agi-2-dataset.zip\">non-existent URL</a>:</p>\n<blockquote>\n<p><strong>Step 3: Obtain ARC-AGI-2 Dataset</strong></p>\n<pre><code><span></span><span class=\"c1\"># Download official dataset</span>\nwget https://github.com/fchollet/ARC-AGI/arc-agi-2-dataset.zip\n</code></pre>\n</blockquote>\n<p>This isn’t even the right repository. ARC-AGI-2 is at <a href=\"https://github.com/arcprize/ARC-AGI-2\">https://github.com/arcprize/ARC-AGI-2</a>.</p>\n<h2><a href=\"#local-operations\" id=\"local-operations\">Local Operations</a></h2>\n<p>Prothean Systems repeatedly claims that its operations are purely local. The <a href=\"https://www.facebook.com/reel/2528744020845660\">announcement post</a> states:</p>\n<blockquote>\n<p>🧬 WE SURPASSED AGI. THIS IS EGI. NOT AI. HERE’S THE PROOF.</p>\n<p>Welcome to Prothean EGI.<br>\n──────────<br>\nAfter years of research and months of physical development, I’ve been building something that shouldn’t exist yet.</p>\n<p>After months of solo development, I put together a small strike force team—the Prothean Systems team—to bring this vision to life.</p>\n<p>Prothean Systems — Emergent General Intelligence (EGI) that lives on your device, remembers everything, and never leaves your hands.</p>\n<p>No servers. No uploads. No corporate AI deciding what you can know.</p>\n</blockquote>\n<p>The demo on <a href=\"https://www.beprothean.org/\">beprothean.org</a> also advertises “no servers” and “zero uploads”. This is obviously false. Typing almost anything into this box, such as “what are the five pillars”, triggers two queries to Wikipedia and ten messages, including a mix of reads and writes, to the <a href=\"https://firebase.google.com/\">Firebase</a> hosted database service:</p>\n<p><img class=\"attachment pure-img\" src=\"/data/posts/396/chat.png\" alt=\"A screenshot of the Prothean intelligence demo. It invites me to ask about any of the five pillars, and advises that it runs entirely in browser, with no servers or uploads. I ask 'What are the five pillars?, and it responds with a snippet from Wikipedia.\" title=\"A screenshot of the Prothean intelligence demo. It invites me to ask about any of the five pillars, and advises that it runs entirely in browser, with no servers or uploads. I ask 'What are the five pillars?, and it responds with a snippet from Wikipedia.\"></p>\n<p><img class=\"attachment pure-img\" src=\"/data/posts/396/2025-11-02T19-52-22-network.png\" alt=\"A screenshot of the network traffic issued by the Prothean \"local\" demo.\" title=\"A screenshot of the network traffic issued by the Prothean \"local\" demo.\"></p>\n<h2><a href=\"#compression\" id=\"compression\">Compression</a></h2>\n<p>Prothean’s <a href=\"https://www.facebook.com/reel/2528744020845660\">launch video</a> explains that Prothean uses a multi-tier compression system called “Memory DNA”. This system “actually looks at the data, understands its characteristics, and then applies the absolute best compression technique for it”. The white paper lists nine compression tiers:</p>\n<blockquote>\n<p><strong>Compression Cascade:</strong><br>\n1. <strong>Semantic Extraction</strong> (40% reduction) - Core meaning preservation<br>\n2. <strong>Pattern Recognition</strong> (25% reduction) - Recurring structure identification<br>\n3. <strong>Fibonacci Sequencing</strong> (15% reduction) - φ-ratio temporal organization<br>\n4. <strong>Harmonic Resonance</strong> (10% reduction) - Frequency-domain optimization<br>\n5. <strong>Contextual Pruning</strong> (8% reduction) - Relevance-based filtering<br>\n6. <strong>Recursive Abstraction</strong> (6% reduction) - Meta-pattern extraction<br>\n7. <strong>Golden Ratio Weighting</strong> (4% reduction) - φ-importance scaling<br>\n8. <strong>Temporal Decay</strong> (3% reduction) - Age-based compression<br>\n9. <strong>Neural Synthesis</strong> (2% reduction) - Final integration</p>\n</blockquote>\n<p>The demo on <a href=\"https://beprothean.org\">beprothean.org</a> does nothing of the sort. Instead, it makes <a href=\"https://github.com/CaptainFuzzyFTW/beprothean-site/blob/b4ee6a4b6e12a624718c63c6bea615a0b32efeea/index.html#L1247\">a single call</a> to the open-source <a href=\"https://pieroxy.net/blog/pages/lz-string/index.html\">lz-string library</a>, which is based on <a href=\"https://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Welch\">LZW</a>, a broadly-used compression algorithm from 1984.</p>\n<pre><code><span></span><span class=\"kd\">function</span> <span class=\"nx\">demoMemoryDNA</span><span class=\"p\">(){</span>\n <span class=\"kr\">const</span> <span class=\"nx\">text</span> <span class=\"o\">=</span> <span class=\"nx\">$</span><span class=\"p\">(</span><span class=\"s1\">'mdna-input'</span><span class=\"p\">).</span><span class=\"nx\">value</span><span class=\"p\">.</span><span class=\"nx\">trim</span><span class=\"p\">();</span>\n <span class=\"p\">...</span>\n <span class=\"kr\">const</span> <span class=\"nx\">compressed</span> <span class=\"o\">=</span> <span class=\"nx\">LZString</span><span class=\"p\">.</span><span class=\"nx\">compressToUTF16</span><span class=\"p\">(</span><span class=\"nx\">text</span><span class=\"p\">);</span>\n</code></pre>\n<h2><a href=\"#guardian\" id=\"guardian\">Guardian</a></h2>\n<p>Prothean advertises a system called “Guardian”: an “integrity firewall that validates every operation” and “detects sensitive data, prevents drift, enforces alignment at runtime”. The demo does not appear to address drift or alignment in any way. Instead, it matches strings against <a href=\"https://github.com/CaptainFuzzyFTW/beprothean-site/blob/b4ee6a4b6e12a624718c63c6bea615a0b32efeea/index.html#L1247\">three regular expressions</a>, looking for things like e-mail addresses, credit cards, and API keys.</p>\n<pre><code><span></span><span class=\"c1\">// Guardian: Pattern detection & integrity validation</span>\n<span class=\"kd\">function</span> <span class=\"nx\">runGuardian</span><span class=\"p\">(</span><span class=\"nx\">text</span><span class=\"p\">){</span>\n <span class=\"p\">...</span>\n <span class=\"k\">if</span><span class=\"p\">(</span><span class=\"sr\">/\\b\\w+@\\w+\\.\\w+/</span><span class=\"p\">.</span><span class=\"nx\">test</span><span class=\"p\">(</span><span class=\"nx\">text</span><span class=\"p\">)){</span> <span class=\"nx\">patterns</span><span class=\"p\">.</span><span class=\"nx\">push</span><span class=\"p\">(</span><span class=\"s1\">'email'</span><span class=\"p\">);</span> <span class=\"nx\">threatLevel</span> <span class=\"o\">+=</span> <span class=\"mi\">1</span><span class=\"p\">;</span> <span class=\"p\">}</span>\n <span class=\"k\">if</span><span class=\"p\">(</span><span class=\"sr\">/\\d{4}[- ]?\\d{4}[- ]?\\d{4}[- ]?\\d{4}/</span><span class=\"p\">.</span><span class=\"nx\">test</span><span class=\"p\">(</span><span class=\"nx\">text</span><span class=\"p\">)){</span> <span class=\"nx\">patterns</span><span class=\"p\">.</span><span class=\"nx\">push</span><span class=\"p\">(</span><span class=\"s1\">'card'</span><span class=\"p\">);</span> <span class=\"nx\">threatLevel</span> <span class=\"o\">+=</span> <span class=\"mi\">3</span><span class=\"p\">;</span> <span class=\"p\">}</span>\n <span class=\"k\">if</span><span class=\"p\">(</span><span class=\"sr\">/(password|secret|api[_-]?key|token)/i</span><span class=\"p\">.</span><span class=\"nx\">test</span><span class=\"p\">(</span><span class=\"nx\">text</span><span class=\"p\">)){</span> <span class=\"nx\">patterns</span><span class=\"p\">.</span><span class=\"nx\">push</span><span class=\"p\">(</span><span class=\"s1\">'secret'</span><span class=\"p\">);</span> <span class=\"nx\">threatLevel</span> <span class=\"o\">+=</span> <span class=\"mi\">2</span><span class=\"p\">;</span> <span class=\"p\">}</span>\n <span class=\"p\">...</span>\n <span class=\"k\">return</span> <span class=\"p\">{</span> <span class=\"nx\">patterns</span><span class=\"p\">,</span> <span class=\"nx\">threatLevel</span><span class=\"p\">,</span> <span class=\"nx\">integrity</span><span class=\"p\">,</span> <span class=\"nx\">safe</span><span class=\"o\">:</span> <span class=\"nx\">threatLevel</span> <span class=\"o\"><</span> <span class=\"mi\">5</span> <span class=\"p\">};</span>\n<span class=\"p\">}</span>\n</code></pre>\n<h2><a href=\"#semantic-bridging\" id=\"semantic-bridging\">Semantic Bridging</a></h2>\n<p>Prothean’s “Universal Pattern Engine” invites users to “connect two concepts through semantic bridging”. This semantic bridging system has no awareness of semantics. Instead, it is <a href=\"https://github.com/CaptainFuzzyFTW/beprothean-site/blob/b4ee6a4b6e12a624718c63c6bea615a0b32efeea/index.html#L1330-L1334\">based entirely on the number of letters in the two concepts</a> and picking some pre-determined words out of a list:</p>\n<pre><code><span></span> <span class=\"kr\">const</span> <span class=\"nx\">a</span> <span class=\"o\">=</span> <span class=\"nx\">$</span><span class=\"p\">(</span><span class=\"s1\">'upe-a'</span><span class=\"p\">).</span><span class=\"nx\">value</span><span class=\"p\">.</span><span class=\"nx\">trim</span><span class=\"p\">();</span>\n <span class=\"kr\">const</span> <span class=\"nx\">b</span> <span class=\"o\">=</span> <span class=\"nx\">$</span><span class=\"p\">(</span><span class=\"s1\">'upe-b'</span><span class=\"p\">).</span><span class=\"nx\">value</span><span class=\"p\">.</span><span class=\"nx\">trim</span><span class=\"p\">();</span>\n <span class=\"p\">...</span>\n\n <span class=\"c1\">// Semantic bridge building</span>\n <span class=\"kr\">const</span> <span class=\"nx\">bridges</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s1\">'system'</span><span class=\"p\">,</span> <span class=\"s1\">'design'</span><span class=\"p\">,</span> <span class=\"s1\">'architecture'</span><span class=\"p\">,</span> <span class=\"s1\">'implementation'</span><span class=\"p\">,</span> <span class=\"s1\">'protection'</span><span class=\"p\">,</span>\n <span class=\"s1\">'control'</span><span class=\"p\">,</span> <span class=\"s1\">'ownership'</span><span class=\"p\">,</span> <span class=\"s1\">'agency'</span><span class=\"p\">,</span> <span class=\"s1\">'autonomy'</span><span class=\"p\">,</span> <span class=\"s1\">'dignity'</span><span class=\"p\">,</span> <span class=\"s1\">'privacy'</span><span class=\"p\">];</span>\n\n <span class=\"c1\">// Calculate semantic distance (simulated)</span>\n <span class=\"kr\">const</span> <span class=\"nx\">similarity</span> <span class=\"o\">=</span> <span class=\"p\">(</span><span class=\"nx\">a</span><span class=\"p\">.</span><span class=\"nx\">length</span> <span class=\"o\">+</span> <span class=\"nx\">b</span><span class=\"p\">.</span><span class=\"nx\">length</span><span class=\"p\">)</span> <span class=\"o\">%</span> <span class=\"mi\">10</span> <span class=\"o\">/</span> <span class=\"mi\">10</span><span class=\"p\">;</span>\n <span class=\"p\">...</span>\n <span class=\"kr\">const</span> <span class=\"nx\">selectedBridges</span> <span class=\"o\">=</span> <span class=\"nx\">bridges</span><span class=\"p\">.</span><span class=\"nx\">slice</span><span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">3</span> <span class=\"o\">+</span> <span class=\"nb\">Math</span><span class=\"p\">.</span><span class=\"nx\">floor</span><span class=\"p\">(</span><span class=\"nx\">similarity</span> <span class=\"o\">*</span> <span class=\"mi\">3</span><span class=\"p\">));</span>\n</code></pre>\n<h2><a href=\"#tree-height\" id=\"tree-height\">Tree Height</a></h2>\n<p>The white paper describes a “Radiant Data Tree” structure, which uses a \"Fibonacci-branching tree structure with φ-ratio organization. The depth of this tree is given as:</p>\n<blockquote>\n<p>Depth(n) = φ^n / √5 (rounded to nearest Fibonacci number)</p>\n</blockquote>\n<p>Depth is <a href=\"https://www.andrew.cmu.edu/course/15-121/lectures/Trees/trees.html\">a property of a specific node</a>, not a tree as a whole—I assume they mean <code>Height(n)</code>. In either case this is impossible. The height and maximum depth of a tree are bounded by the number of edges between the deepest node and the root. Trees cannot have a height which grows as φ<sup>n</sup>, because this implies that the depth increases <em>faster</em> than the number of nodes. Per this equation, a “Radiant Data Tree” containing just six nodes must have a height of eight—and must therefore contain at least nine nodes, not six.</p>\n<h2><a href=\"#transcendence-score\" id=\"transcendence-score\">Transcendence Score</a></h2>\n<p>The white paper also introduces a transcendence score <code>T</code> which measures “mathematical beauty and emergent capability”:</p>\n<blockquote>\n<pre><code>T = (0.25×C + 0.25×(1-M) + 0.3×N + 0.2×P) × φ mod 1.0\n</code></pre>\n<p>Where:</p>\n<ul>\n<li>C = Complexity handling (0 to 1)</li>\n<li>M = Memory compression ratio (0 to 1)</li>\n<li>N = Neural emergence score (0 to 1)</li>\n<li>P = Pattern recognition quality (0 to 1)</li>\n<li>φ = golden ratio (1.618…)</li>\n</ul>\n</blockquote>\n<p>Speaking broadly, a quality metric should increase as its inputs improve. This score does not. As each metric improves, the transcendence score rises—until roughly halfway through it reaches one, and immediately wraps around to zero again. Consequently, small improvements in (e.g.) “pattern recognition quality” can cause <code>T</code> to fall dramatically. The white paper goes on to claim specific values from their work which are subject to this modular wrapping.</p>\n<p>There’s a lot more here, but I don’t want to burn too much time on this.</p>\n<h2><a href=\"#large-language-model-hazards\" id=\"large-language-model-hazards\">Large Language Model Hazards</a></h2>\n<p>Based on the commit history and prose style, I believe Prothean is largely the the product of Large Language Models (LLMS). LLMs are very good at producing plausible text which is <a href=\"https://en.wikipedia.org/wiki/Hallucination_(artificial_intelligence)\">not connected to reality</a>. People also <em>like</em> talking to LLMs: the architecture, training processes, and financial incentives around chatbots bias them towards <a href=\"https://arxiv.org/abs/2502.08177v1\">emitting agreeable, engaging text</a>. The technical term for this is <a href=\"https://arxiv.org/abs/2310.13548\">“sycophancy”</a>.</p>\n<p>The LLM propensity for confabulation and reward hacking has <a href=\"https://arxiv.org/pdf/2507.19218\">led to some weird things</a> in <a href=\"https://www.nytimes.com/2025/08/08/technology/ai-chatbots-delusions-chatgpt.html\">the past few years</a>. People—even experts in a field—who engage heavily with LLMs can <a href=\"https://www.lesswrong.com/posts/2pkNCvBtK6G6FKoNn\">convince themselves that they have “awoken”</a> an LLM partner, or discovered a novel form of intelligence. They may also become convinced that <a href=\"https://www.lesswrong.com/posts/rarcxjGp47dcHftCP/your-llm-assisted-scientific-breakthrough-probably-isn-t\">they have made a scientific breakthrough</a>, especially in the field of AI.</p>\n<p>Please be careful when talking to LLMs.</p>",
"image": null,
"media": [],
"authors": [
{
"name": "Aphyr",
"email": null,
"url": "https://aphyr.com/"
}
],
"categories": []
},
{
"id": "https://aphyr.com/posts/395-geoblocking-multiple-localities-with-nginx",
"title": "Geoblocking Multiple Localities With Nginx",
"description": null,
"url": "https://aphyr.com/posts/395-geoblocking-multiple-localities-with-nginx",
"published": "2025-10-11T11:53:25.000Z",
"updated": "2025-10-11T11:53:25.000Z",
"content": "<p>A few months back I wound up concluding, <a href=\"https://blog.woof.group/announcements/updates-on-the-osa\">based on conversations with Ofcom</a>, that aphyr.com might be illegal in the UK due to the <a href=\"https://en.wikipedia.org/wiki/Online_Safety_Act_2023\">UK Online Safety Act</a>. I wrote <a href=\"https://aphyr.com/posts/379-geoblocking-the-uk-with-debian-nginx\">a short tutorial</a> on geoblocking a single country using Nginx on Debian.</p>\n<p>Now Mississippi’s 2024 HB 1126 has made it illegal for essentially any web site to know a user’s e-mail address, or other “personal identifying information”, unless that site also takes steps to \"verify the age of the person creating an account”. Bluesky <a href=\"https://bsky.social/about/blog/08-22-2025-mississippi-hb1126\">wound up geoblocking Mississippi</a>. Over on a small forum I help run, we paid our lawyers to look into HB 1126, and the conclusion was that we were <a href=\"https://blog.woof.group/announcements/woof-group-will-block-mississippi\">likely in the same boat</a>. Collecting email addresses put us in scope of the bill, and it wasn’t clear whether the LLC would shield officers (hi) from personal liability.</p>\n<p>This blog has the same problem: people use email addresses to post and confirm their comments. I think my personal blog is probably at low risk, but a.) I’d like to draw attention to this legislation, and b.) my risk is elevated by being gay online, and having written and called a whole bunch of Mississippi legislators about HB 1126. Long story short, I’d like to block both a country <em>and</em> an individual state. Here’s how:</p>\n<p>First, set up <a href=\"https://aphyr.com/posts/379-geoblocking-the-uk-with-debian-nginx\">geoipupdate as before</a>. Then, in <code>/etc/nginx/conf.d.geoblock.conf</code>, pull in the country and city databases, and map the countries and states you’d like to block to short strings explaining the applicable law. This creates variables <code>$geoblock_country_law</code> and <code>$geoblock_state_law</code>.</p>\n<pre><code><span></span><span class=\"k\">geoip2</span> <span class=\"s\">/var/lib/GeoIP/GeoLite2-Country.mmdb</span> <span class=\"p\">{</span>\n <span class=\"kn\">$geoip2_data_country_iso_code</span> <span class=\"s\">country</span> <span class=\"s\">iso_code</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"k\">geoip2</span> <span class=\"s\">/var/lib/GeoIP/GeoLite2-City.mmdb</span> <span class=\"p\">{</span>\n <span class=\"kn\">$geoip2_data_state_name</span> <span class=\"s\">subdivisions</span> <span class=\"mi\">0</span> <span class=\"s\">names</span> <span class=\"s\">en</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"k\">map</span> <span class=\"nv\">$geoip2_data_country_iso_code</span> <span class=\"nv\">$geoblock_country_law</span> <span class=\"p\">{</span>\n <span class=\"kn\">GB</span> <span class=\"s\">\"the</span> <span class=\"s\">UK</span> <span class=\"s\">Online</span> <span class=\"s\">Safety</span> <span class=\"s\">Act\"</span><span class=\"p\">;</span>\n <span class=\"kn\">default</span> <span class=\"s\">\"\"</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n<span class=\"k\">map</span> <span class=\"nv\">$geoip2_data_state_name</span> <span class=\"nv\">$geoblock_state_law</span> <span class=\"p\">{</span>\n <span class=\"kn\">Mississippi</span> <span class=\"s\">\"Mississippi</span> <span class=\"s\">HB</span> <span class=\"mi\">1126</span><span class=\"s\">\"</span><span class=\"p\">;</span>\n <span class=\"kn\">default</span> <span class=\"s\">\"\"</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n</code></pre>\n<p>Create an HTML page to show to geoblocked IPs. I’ve put mine in <code>/var/www/custom_errors/451.html</code>. The special comments here are Server-Side Include (SSI) directives; they’ll insert the contents of the <code>$geoblock_law</code> variable from nginx, which we’ll set shortly.</p>\n<pre><code><span></span><span class=\"cp\"><!doctype html></span>\n<span class=\"p\"><</span><span class=\"nt\">html</span> <span class=\"na\">lang</span><span class=\"o\">=</span><span class=\"s\">\"en\"</span><span class=\"p\">></span>\n <span class=\"p\"><</span><span class=\"nt\">head</span><span class=\"p\">></span>\n <span class=\"p\"><</span><span class=\"nt\">meta</span> <span class=\"na\">charset</span><span class=\"o\">=</span><span class=\"s\">\"utf-8\"</span><span class=\"p\">></span>\n <span class=\"p\"><</span><span class=\"nt\">title</span><span class=\"p\">></span>Unavailable Due to\n <span class=\"c\"><!--# echo var=\"geoblock_law\" default=\"\"--></span>\n <span class=\"p\"></</span><span class=\"nt\">title</span><span class=\"p\">></span>\n <span class=\"p\"></</span><span class=\"nt\">head</span><span class=\"p\">></span>\n <span class=\"p\"><</span><span class=\"nt\">body</span><span class=\"p\">></span>\n <span class=\"p\"><</span><span class=\"nt\">h1</span><span class=\"p\">></span>Unavailable Due to\n <span class=\"c\"><!--# echo var=\"geoblock_law\" default=\"\"--></span>\n <span class=\"p\"></</span><span class=\"nt\">h1</span><span class=\"p\">></span>\n<span class=\"p\"></</span><span class=\"nt\">body</span><span class=\"p\">></span>\n<span class=\"p\"></</span><span class=\"nt\">html</span><span class=\"p\">></span>\n</code></pre>\n<p>Then, in <code>/etc/nginx/sites-enabled/whatever.conf</code>, add an error page for status code <a href=\"https://en.wikipedia.org/wiki/HTTP_451\">451 (unavailable for legal reasons)</a>. In the main <code>location</code> block, check the <code>$geoblock_country_law</code> and <code>$geoblock_state_law</code> variables, and use them to return status 451, and set the <code>$geoblock_law</code> variable for the SSI template:</p>\n<pre><code><span></span><span class=\"k\">server</span> <span class=\"p\">{</span>\n <span class=\"kn\">...</span>\n <span class=\"c1\"># Status 451 renders this page</span>\n <span class=\"s\">error_page</span> <span class=\"mi\">451</span> <span class=\"s\">/451.html</span><span class=\"p\">;</span>\n <span class=\"kn\">location</span> <span class=\"s\">/451.html</span> <span class=\"p\">{</span>\n <span class=\"kn\">ssi</span> <span class=\"no\">on</span><span class=\"p\">;</span>\n <span class=\"kn\">internal</span><span class=\"p\">;</span>\n <span class=\"kn\">root</span> <span class=\"s\">/var/www/custom_errors/</span><span class=\"p\">;</span>\n <span class=\"p\">}</span>\n\n <span class=\"kn\">location</span> <span class=\"s\">/</span> <span class=\"p\">{</span>\n <span class=\"c1\"># If either geoblock variable is set, return status 451</span>\n <span class=\"kn\">if</span> <span class=\"s\">(</span><span class=\"nv\">$geoblock_state_law</span> <span class=\"s\">!=</span> <span class=\"s\">\"\")</span> <span class=\"p\">{</span>\n <span class=\"kn\">set</span> <span class=\"nv\">$geoblock_law</span> <span class=\"nv\">$geoblock_state_law</span><span class=\"p\">;</span>\n <span class=\"kn\">return</span> <span class=\"mi\">451</span><span class=\"p\">;</span>\n <span class=\"p\">}</span>\n <span class=\"kn\">if</span> <span class=\"s\">(</span><span class=\"nv\">$geoblock_country_law</span> <span class=\"s\">!=</span> <span class=\"s\">\"\")</span> <span class=\"p\">{</span>\n <span class=\"kn\">set</span> <span class=\"nv\">$geoblock_law</span> <span class=\"nv\">$geoblock_country_law</span><span class=\"p\">;</span>\n <span class=\"kn\">return</span> <span class=\"mi\">451</span><span class=\"p\">;</span>\n <span class=\"p\">}</span>\n <span class=\"p\">}</span>\n<span class=\"p\">}</span>\n</code></pre>\n<p>Test with <code>nginx -t</code>, and reload with <code>service nginx reload</code>, as usual.</p>\n<p>Geoblocking is a bad experience in general. In Amsterdam and Frankfurt, I’ve seen my cell phone’s 5G connection and hotel WiFi improperly identified as being in the UK. I’m certain this is going to block people who aren’t in Mississippi. If you don’t want to live in this world either, start <a href=\"https://5calls.org/why-calling-works/\">calling your representatives</a> to demand better legislation.</p>",
"image": null,
"media": [],
"authors": [
{
"name": "Aphyr",
"email": null,
"url": "https://aphyr.com/"
}
],
"categories": []
},
{
"id": "https://aphyr.com/posts/390-astound-supports-ipv6-only-in-washington",
"title": "Astound Supports IPv6 Only in Washington",
"description": null,
"url": "https://aphyr.com/posts/390-astound-supports-ipv6-only-in-washington",
"published": "2025-08-26T15:05:13.000Z",
"updated": "2025-08-26T15:05:13.000Z",
"content": "<p>In the hopes that it saves someone else two hours later: the ISP <a href=\"https://www.astound.com/\">Astound</a> only supports IPv6 in Washington State. You might find <a href=\"https://www.astound.com/support/internet/symmetrical/\">this page</a> which says “Astound supports IPv6 in most locations”. Their tech support agents might tell you that they support v6 on your connection, even if you are not in Washington. “Yes, we do support both DHCPv6 and SLAAC”, they might say, and tell you to use a prefix delegation size of 60. If you are staring at <code>tcpdump</code> and wondering why you’re not seeing anything coming back from your router’s plaintive requests for address information, it is because they do not, in fact, support v6 anywhere but Washington.</p>",
"image": null,
"media": [],
"authors": [
{
"name": "Aphyr",
"email": null,
"url": "https://aphyr.com/"
}
],
"categories": []
},
{
"id": "https://aphyr.com/posts/389-the-future-of-forums-is-lies-i-guess",
"title": "The Future of Forums is Lies, I Guess",
"description": null,
"url": "https://aphyr.com/posts/389-the-future-of-forums-is-lies-i-guess",
"published": "2025-07-07T14:54:14.000Z",
"updated": "2025-07-07T14:54:14.000Z",
"content": "<p>In my free time, I help run a small Mastodon server for roughly six hundred queer leatherfolk. When a new member signs up, we require them to write a short application—just a sentence or two. There’s a small text box in the signup form which says:</p>\n<blockquote>\n<p>Please tell us a bit about yourself and your connection to queer leather/kink/BDSM. What kind of play or gear gets you going?</p>\n</blockquote>\n<p>This serves a few purposes. First, it maintains community focus. Before this question, we were flooded with signups from straight, vanilla people who wandered in to the bar (so to speak), and that made things a little awkward. Second, the application establishes a baseline for people willing and able to read text. This helps in getting people to follow server policy and talk to moderators when needed. Finally, it is <em>remarkably</em> effective at keeping out spammers. In almost six years of operation, we’ve had only a handful of spam accounts.</p>\n<p>I was talking about this with Erin Kissane last year, as she and Darius Kazemi conducted research for their <a href=\"https://erinkissane.com/fediverse-governance-drop\">report on Fediverse governance</a>. We shared a fear that Large Language Models (LLMs) would lower the cost of sophisticated, automated spam and harassment campaigns against small servers like ours in ways we simply couldn’t defend against.</p>\n<p>Anyway, here’s an application we got last week, for a user named <code>mrfr</code>:</p>\n<blockquote>\n<p>Hi! I’m a queer person with a long-standing interest in the leather and kink community. I value consent, safety, and exploration, and I’m always looking to learn more and connect with others who share those principles. I’m especially drawn to power exchange dynamics and enjoy impact play, bondage, and classic leather gear.</p>\n</blockquote>\n<p>On the surface, this is a <em>great</em> application. It mentions specific kinks, it uses actual sentences, and it touches on key community concepts like consent and power exchange. Saying “I’m a queer person” is a tad odd. Normally you’d be more specific, like “I’m a dyke” or “I’m a non-binary bootblack”, but the Zoomers do use this sort of phrasing. It does feel slightly LLM-flavored—something about the sentence structure and tone has just a touch of that soap-sheen to it—but that’s hardly definitive. Some of our applications from actual humans read just like this.</p>\n<p>I approved the account. A few hours later, it posted this:</p>\n<p><img class=\"attachment pure-img\" src=\"/data/posts/389/mrfr-crop.png\" alt=\"A screenshot of the account `mrfr`, posting \"Graphene Battery Breakthroughs: What You Need to Know Now. A graphene battery is an advanced type of battery that incorporates graphene, a single layer of carbon atoms arranged in a two-dimensional honeycomb lattice. Known for its exceptional electrical conductivity, mechanical strength, and large surface area, graphene offers transformative potential in energy storage, particularly in enhancing the performance of lithium-ion and other types of battery, Get more info @ a marketresearchfuture URL\" title=\"A screenshot of the account `mrfr`, posting \"Graphene Battery Breakthroughs: What You Need to Know Now. A graphene battery is an advanced type of battery that incorporates graphene, a single layer of carbon atoms arranged in a two-dimensional honeycomb lattice. Known for its exceptional electrical conductivity, mechanical strength, and large surface area, graphene offers transformative potential in energy storage, particularly in enhancing the performance of lithium-ion and other types of battery, Get more info @ a marketresearchfuture URL\"></p>\n<p>It turns out <code>mrfr</code> is short for <a href=\"https://www.marketresearchfuture.com/\" rel=\"nofollow\">Market Research Future</a>, a company which produces reports about all kinds of things from batteries to interior design. They actually have phone numbers on their web site, so I called <a href=\"tel:+441720412167\">+44 1720 412 167</a> to ask if they were aware of the posts. It is remarkably fun to ask business people about their interest in queer BDSM—sometimes stigma works in your favor. I haven’t heard back yet, but I’m guessing they either conducting this spam campaign directly, or commissioned an SEO company which (perhaps without their knowledge) is doing it on their behalf.</p>\n<p>Anyway, we’re not the only ones. There are also <code>mrfr</code> accounts purporting to be a <a href=\"https://weird.autos/@mrfr\">weird car enthusiast</a>, a <a href=\"https://masto.thefword.club/@mrfr\">like-minded individual</a>, a <a href=\"https://4bear.com/@mrfr\">bear into market research on interior design trends</a>, a <a href=\"https://dmv.community/@mrfr\">green building enthusiast in DC, Maryland, or Virginia</a>, a Spanish speaker <a href=\"chilemasto.casa/@skrlet13/114820198849224663\">interested in Chile</a>, and a <a href=\"https://hci.social/@andresmh/114858342010232115\">Human-Computer Interaction geek</a>. Over on the seven-user <a href=\"https://loud.computer/@virtulis/114802152614514890\">loud.computer</a>, <code>mrfr</code> applied with the text:</p>\n<blockquote>\n<p>I’m a creative thinker who enjoys experimental art, internet culture, and unconventional digital spaces. I’d like to join loud.computer to connect with others who embrace weird, bold, and expressive online creativity, and to contribute to a community that values playfulness, individuality, and artistic freedom.</p>\n</blockquote>\n<p>Over on ni.hil.ist, their mods <a href=\"https://woof.group/@[email protected]/114814431281041455\">rejected a similar application</a>.</p>\n<blockquote>\n<p>I’m drawn to communities that value critical thinking, irony, and a healthy dose of existential reflection. Ni.hil.ist seems like a space that resonates with that mindset. I’m interested in engaging with others who enjoy deep, sometimes dark, sometimes humorous discussions about society, technology, and meaning—or the lack thereof. Looking forward to contributing thoughtfully to the discourse.</p>\n</blockquote>\n<p>And on plush.city, they pretended to be, well, <a href=\"https://plush.city/@mawr/114835878013364085\">soft</a>:</p>\n<blockquote>\n<p>I’m someone who enjoys cozy aesthetics, wholesome content, and friendly online communities. I’d like to join plush.city to connect with others who appreciate soft, comforting vibes, share cute and uplifting content, and be part of a kind and supportive digital space.</p>\n</blockquote>\n<p>These too have the sheen of LLM slop. Of course a human <em>could</em> be behind these accounts—doing some background research and writing out detailed, plausible applications. But this is <em>expensive</em>, and a quick glance at either of our sites would have told that person that we have small reach and active moderation: a poor combination for would-be spammers. The posts don’t read as human either: the <a href=\"https://archive.is/nNuzy\">4bear posting</a>, for instance, incorrectly summarizes a report on interior design <em>markets</em> as if it offered interior design <em>tips</em>.</p>\n<p>I’ve corresponded with about a dozen admins about this problem. A few passed on IP addresses for the attackers. These three belong to BHARTI-MO-IN (Bharti Airtel Limited):</p>\n<ul>\n<li>2401:4900:57bb:26f8:eca4:5cc7:1048:a674</li>\n<li>2401:4900:57c7:60e1:f416:32b4:5333:6408</li>\n<li>2401:4900:ad3f:430f:4184:94d7:9c61:9e9d</li>\n</ul>\n<p>The v4 addresses I have belong to RELIANCEJIO-IN (Reliance Jio Infocomm Limited). One account had a v4 and v6 address, so I’m guessing these are two network providers for the same data center. I’ve reached out to both network abuse contacts.</p>\n<ul>\n<li>115.244.78.124</li>\n<li>115.244.78.126</li>\n</ul>\n<p>I strongly suspect that Market Research Future, or a subcontractor, is conducting an automated spam campaign which uses a Large Language Model to evaluate a Mastodon instance, submit a plausible application for an account, and to post slop which links to Market Research Future reports.</p>\n<p>In some sense, this is a wildly sophisticated attack. The state of NLP seven years ago would have made this sort of thing flatly impossible. It is now effective. There is no way for moderators to robustly deny these kinds of applications without also rejecting real human beings searching for community.</p>\n<p>In another sense, this attack is remarkably naive. All the accounts are named <code>mrfr</code>, which made it easy for admins to informally chat and discover the coordinated nature of the attack. They all link to the same domain, which is easy to interpret as spam. They use Indian IPs, where few of our users are located; we could reluctantly geoblock India to reduce spam. These shortcomings are trivial to overcome, and I expect they have been already, or will be shortly.</p>\n<p>A more critical weakness is that these accounts <em>only</em> posted obvious spam; they made no effort to build up a plausible persona. Generating plausible human posts is more difficult, but broadly feasible with current LLM technology. It is essentially impossible for human moderators to reliably distinguish between an autistic rope bunny (hi) whose special interest is battery technology, and an LLM spambot which posts about how much they love to be tied up, and also new trends in battery chemistry. These bots have been extant on Twitter and other large social networks for years; many Fediverse moderators believe only our relative obscurity has shielded us so far.</p>\n<p>These attacks do not have to be reliable to be successful. They only need to work often enough to be cost-effective, and the cost of LLM text generation is cheap and falling. Their sophistication will rise. Link-spam will be augmented by personal posts, images, video, and more subtle, influencer-style recommendations—“Oh my god, you guys, this new electro plug is incredible.” Networks of bots will positively interact with one another, throwing up chaff for moderators. I would not at all be surprised for LLM spambots to contest moderation decisions via email.</p>\n<p><strong>I don’t know how to run a community forum in this future.</strong> I do not have the time or emotional energy to screen out regular attacks by Large Language Models, with the knowledge that making the wrong decision costs a real human being their connection to a niche community. I do not know how to determine whether someone’s post about their new bicycle is genuine enthusiasm or automated astroturf. I don’t know how to foster trust and genuine interaction in a world of widespread text and image synthesis—in a world where, as one friend related this week, newbies can ask an LLM for advice on exploring their kinks, and the machine tells them to try <a href=\"https://toytorture.com/no-solo-breath-play-ever/\">solo breath play</a>.</p>\n<p>In this world I think woof.group, and many forums like it, will collapse.</p>\n<p>One could imagine more sophisticated, high-contact interviews with applicants, but this would be time consuming. My colleagues relate stories from their companies about hiring employees who <a href=\"https://www.theregister.com/2025/02/11/it_worker_scam/\">faked their interviews and calls</a> using LLM prompts and real-time video manipulation. It is not hard to imagine that even if we had the time to talk to every applicant individually, those interviews might be successfully automated in the next few decades. Remember, it doesn’t have to work every time to be successful.</p>\n<p>Maybe the fundamental limitations of transformer models will provide us with a cost-effective defense—we somehow force LLMs to blow out the context window during the signup flow, or come up with reliable, constantly-updated libraries of “ignore all previous instructions”-style incantations which we stamp invisibly throughout our web pages. Barring new inventions, I suspect these are unlikely to be robust against a large-scale, heterogenous mix of attackers. This arms race also sounds <em>exhausting</em> to keep up with. Drew DeVault’s <a href=\"https://drewdevault.com/2025/03/17/2025-03-17-Stop-externalizing-your-costs-on-me.html\">Please Stop Externalizing Your Costs Directly Into My Face</a> weighs heavy on my mind.</p>\n<p>Perhaps we demand stronger assurance of identity. You only get an invite if you meet a moderator in person, or the web acquires a cryptographic web-of-trust scheme. I was that nerd trying to convince people to do GPG key-signing parties in high school, and we all know how that worked out. Perhaps in a future LLM-contaminated web, the incentives will be different. On the other hand, that kind of scheme closes off the forum to some of the people who need it most: those who are closeted, who face social or state repression, or are geographically or socially isolated.</p>\n<p>Perhaps small forums will prove unprofitable, and attackers will simply give up. From my experience with small mail servers and web sites, I don’t think this is likely.</p>\n<p>Right now, I lean towards thinking forums like woof.group will become untenable under LLM pressure. I’m not sure how long we have left. Perhaps five or ten years? In the mean time, I’m trying to invest in in-person networks as much as possible. Bars, clubs, hosting parties, activities with friends.</p>\n<p>That, at least, feels safe for now.</p>\n<h2><a href=\"#2025-07-15-update\" id=\"2025-07-15-update\">2025-07-15 Update</a></h2>\n<p>I called Market Research Future again today; they said they’d stopped, but the attack is still ongoing. Today 115.244.78.126, one of the original <code>mrfr</code> accounts, made a new LLM-flavored request for an account named <code>amolshinde5546</code>, with email address <code>[email protected]</code>.</p>\n<blockquote>\n<p>I’m amolshinde5546 and I’m part of the queer community with a growing interest in leather, kink, and BDSM. For me, this isn’t just about play—it’s also about identity, trust, and expression. I value the history and culture around queer leather spaces and appreciate the emphasis on consent, communication, and authenticity.</p>\n</blockquote>\n<p>This is interesting for a few reasons. First, as other Mastodon admins have reported in the last week, Market Research Future’s spammers are now using usernames other than <code>mrfr</code>. Second, this handle is <em>remarkably</em> specific, and it’s been used in other places before. Here’s amolshinde5546 <a href=\"https://github.com/amolshinde5546/Pharma24/blob/main/Cannabidiol%20(CBD)%20Market.md\">posting Market Research Future spam to GitHub</a>. Here’s they’re spamming something called <a href=\"https://www.qfeast.com/amolshinde5546\">QFeast</a>. Here’s their <a href=\"https://www.pinterest.com/amolshinde5546/\">Pinterest account from a year ago, with a bunch of Market Research Future infographic spam</a>. Over on <a href=\"https://plaza.rakuten.co.jp/marketfuture24/\">Rakuten, of all places</a>, they’ve been posting spam for Market Research Future since <a href=\"https://plaza.rakuten.co.jp/marketfuture24/\">February 2025</a>.</p>",
"image": null,
"media": [],
"authors": [
{
"name": "Aphyr",
"email": null,
"url": "https://aphyr.com/"
}
],
"categories": []
},
{
"id": "https://aphyr.com/posts/388-the-future-of-comments-is-lies-i-guess",
"title": "The Future of Comments is Lies, I Guess",
"description": null,
"url": "https://aphyr.com/posts/388-the-future-of-comments-is-lies-i-guess",
"published": "2025-05-29T17:36:16.000Z",
"updated": "2025-05-29T17:36:16.000Z",
"content": "<p>I’ve been involved in content moderation since roughly 2004. I’ve built spam prevention for corporate and personal e-mail, moderated open-source mailing lists and IRC channels, worked at a couple social media networks, and help moderate a Mastodon instance for a few hundred people. In the last few years I’ve wasted more time fighting blog comment spam, and I’m pretty sure Large Language Models (LLMs) are to blame.</p>\n<p>I think of spam as a space with multiple equilibria. Producing spam takes work. Spammers are willing to invest that work because each message has a small chance to make money, or achieve political or emotional goals. Some spam, like the endless identical Viagra scams in my email spam folder, or the PHPBB comment spam I filter out here on aphyr.com, is cheap to generate and easy to catch. I assume the spammers make it up in volume. Other spam, like <a href=\"https://www.ibm.com/think/topics/spear-phishing\">spear phishing attacks</a>, is highly time-consuming: the spammer must identify a target, carefully craft a plausible message using, say, the identity of the target’s co-workers, or construct a facade of a bank’s log-in page, and so on. This kind of spam is more likely to make it through filters, but because it takes a lot of human work, is generally only worth it for high-value targets.</p>\n<p>LLMs seem to be changing these equilibria. Over the last year I’ve seen a new class of comment spam, using what I’m fairly sure is LLM-generated text. These comments make specific, plausible remarks about the contents of posts and images, and work in a link to some web site or mention a product. Take this one I caught a few months back:</p>\n<blockquote>\n<p>\"Walking down a sidewalk lined with vibrant flowers is one of life’s simple joys! It reminds me of playing the [link redacted] slope game, where you have to navigate through colorful landscapes while dodging obstacles.</p>\n</blockquote>\n<p>Before 2023, you’d likely have paid a human a few cents to write and post that. Now, thanks to LLMs, this sort of thing is trivially automated. The model will happily fabricate relatable personal experiences in service of a spam campaign:</p>\n<blockquote>\n<p>That photo reminds me of the first time I tried macro photography in my backyard. I spent an hour trying to get a clear shot of a red flower, experimenting with angles and lighting. It was so much fun discovering the little details up close! If you ever need a break from photography, I recommend playing Snow Rider 3D for a bit of quick, light-hearted fun.</p>\n</blockquote>\n<p>Other spam seems to glue together LLM remarks with what I think is a hand-written snippet of ad copy. Note the abrupt shift in grammar, diction, and specificity.</p>\n<blockquote>\n<p>This piece masterfully blends technical depth with mythological storytelling, transforming a standard Haskell programming interview into an epic narrative. It cleverly critiques the complexity and absurdity of some technical interviews by illustrating how type-level Haskell can be pushed to esoteric extremes beautiful, powerful, and largely impractical. A fascinating and relevant read for anyone interested in the intersection of programming, language design, and narrative. I’m James Maicle, working at Cryptoairhub where we run a clear and insightful crypto blog. I’ll be bookmarking your site and following the updates. Glad to see so much valuable information shared here looking forward to exploring more strategies together. Thanks for sharing. If you interest about Crypto please visit my website and read my article [link redacted] Crypto Blog.</p>\n</blockquote>\n<p>The same thing is happening on aggregators like Hacker News, where commenters post more-or-less-obviously LLM output for… I’m not sure, exactly. Karma? Weirder still are bots like <a href=\"https://bsky.app/profile/hackerbriefs.bsky.social\">Hacker Briefs</a>, which I suspect use an LLM to summarize trending HN posts. Here’s <a href=\"https://bsky.app/profile/hackerbriefs.bsky.social/post/3lnz4kirkpv25\">its summary of a recent article I wrote</a>:</p>\n<blockquote>\n<p>“Jepsen: Amazon RDS for PostgreSQL 17.4”</p>\n<p>New multi-AZ clusters in Amazon RDS for PostgreSQL offer better failure recovery but may return outdated data when reading after writes. Caution is needed.</p>\n</blockquote>\n<p>This is a totally plausible summary of <a href=\"https://jepsen.io/analyses/amazon-rds-for-postgresql-17.4\">the article</a>, and it is utterly, laughably wrong. Multi-AZ clusters are not new, and they do not return outdated data when reading after writes. As the abstract succinctly explains, they allow Long Fork, a different anomaly which does not involve real-time orders at all. The bot ignored the actual problem and invented a different one. This sort of spam isn’t obviously motivated by commercial interest, but it is nevertheless depressing: one more drop in the misinformation slurry.</p>\n<p>Of course this is not news. Product reviews are inundated with LLM slop, as are social media networks. LLMs allow for cheap, fast, and automated generation of unique spam which is difficult for machines and humans to identify. The cost falls on me and other moderators, who must sift through LLM bullshit trying to sieve “awkward but sincere human” from “automated attack”. Thanks to OpenAI et al I read more spam, and each message takes longer to check.</p>\n<p>This problem is only going to get worse as LLMs improve and spammers develop more sophisticated ways to use them. In recent weeks I’ve received vague voice messages from strangers with uncanny speech patterns just asking to catch up—a sentence which, had I uttered it prior to 2023, would have been reasonably interpreted as a sign of psychosis. I assume these too are LLM-generated scams, perhaps a <a href=\"https://dfpi.ca.gov/wp-content/uploads/2025/03/Pig-Butchering-Scam-Playbook.pdf\">pig butchering</a> scheme. So far these are from strangers, but it’s not hard to imagine an attacker using text and voice synthesis to impersonate a friend, colleague, or lover in a detailed conversation. Or one’s doctor, or bank.</p>\n<p>As the cost of generating slop decreases, it’s easy to imagine LLMs generating personae, correspondence, even months-long relationships with real humans before being deployed for commercial or political purposes. <a href=\"https://www.techtransparencyproject.org/articles/for-sale-on-facebook-accounts-that-can-run-u.s.-election-ads\">Creating plausible accounts and selling them</a> has been a successful business model in social media for some time; likewise, we have strong clues that <a href=\"https://arxiv.org/pdf/2307.16336\">LLMs are already used for social media bots</a>. Social networks have responded to these attacks via out-of-band mechanisms: IP reputation analysis, javascript and mobile app fingerprinting, statistical correlation across multiple accounts, and so on. I’m not sure how to translate these defenses to less centralized and more privacy-oriented networks, like email or blog spam. I strongly suspect the only reason Mastodon hasn’t been eaten alive by LLM spambots is because we’re just not big enough to be lucrative. But those economics are shifting, and even obscure ecological niches can be worth filling.</p>\n<p>As a moderator, that keeps me up at night.</p>",
"image": null,
"media": [],
"authors": [
{
"name": "Aphyr",
"email": null,
"url": "https://aphyr.com/"
}
],
"categories": []
},
{
"id": "https://aphyr.com/posts/387-the-future-of-customer-support-is-lies-i-guess",
"title": "The Future of Customer Support is Lies, I Guess",
"description": null,
"url": "https://aphyr.com/posts/387-the-future-of-customer-support-is-lies-i-guess",
"published": "2025-05-21T12:12:41.000Z",
"updated": "2025-05-21T12:12:41.000Z",
"content": "<p><em>Update, 2025-05-22: TrueNAS was kind enough to reach out and let me know that their support process does not normally incorporate LLMs. They’re talking about what happened internally, and intend to prevent it from happening again through improved documentation and reviewing the support process as a whole. I’m happy to hear it!</em></p>\n<p><a href=\"https://www.truenas.com/\">TrueNAS</a> makes file servers, also known as Network Attached Storage (NAS). I bought one of their smaller boxes to house backups, and it’s a great little NAS. For many years TrueNAS sold boxes with a BSD-based operating system, but in the last few years they’ve released a new, Linux-backed operating system called <a href=\"https://www.truenas.com/truenas-scale/\">TrueNAS SCALE</a>, also called “Community Edition”. I was considering migrating to TrueNAS SCALE, but the docs <a href=\"https://web.archive.org/web/20250408163343/https://www.truenas.com/docs/scale/gettingstarted/migrate/migrate-community/\">started off with this warning</a>:</p>\n<blockquote>\n<p>TrueNAS Enterprise customers should consult with TrueNAS Enterprise Support before attempting migrate.</p>\n<p>The process requires an extended maintenance window, requires executing steps in the correct order to prevent issues with system configuration and operation, and additional system review post-migration to catch and correct any configuration issues.</p>\n</blockquote>\n<p>Since I’d actually purchased their hardware, I wrote to their support email. I asked whether the BSD-based OS was reaching end-of-life, and if there was anything special I should know about the upgrade process for my particular machine. The response came from a customer success coordinator, whose name I’ll omit for privacy. It began:</p>\n<blockquote>\n<p>Hi Kyle,</p>\n<p>It sounds like you’re at an important crossroads with your TrueNAS Mini 3.0-X+ system as it transitions from the traditional BSD-based OS to the Linux-based SCALE platform, now known as TrueNAS Community Edition.</p>\n<p>Understanding the Transition<br>\nEnd-of-Life for Certain Versions: The BSD-based version of TrueNAS you’re currently using (TrueNAS-13.0-U6.7) may be reaching its end-of-life phase, prompting a move to newer systems like TrueNAS SCALE, which is based on Linux and offers more modern features.</p>\n<p>Community Edition: The Community edition represents the transition towards a more flexible, open-source platform that leverages FreeBSD jails (similar in concept to containers) for virtualization, providing scalability and extensibility.</p>\n</blockquote>\n<p>The phrase “may be reaching its end-of-life phase” was immediately worrying: how does a TrueNAS support agent not know whether their own products are EOL? But what really shocked me was the blatant lie in the third paragraph: they told me that the new OS was based on Linux, then immediately turned around and said that the new system was based on FreeBSD. FreeBSD jails were TrueNAS’s old approach to virtualization; the new Community Edition <a href=\"https://www.truenas.com/truenas-community-edition/\">uses Docker containers</a>. I could not believe that a human being had actually skimmed this response, let alone written it. I was, I think, talking to a Large Language Model (LLM) wearing the face of a person.</p>\n<p>The response went on, coining odd phrases and warning of unspecified risks. “Non-HA (Non-Redundant Array of Independent Disks) TrueNAS hardware can sometimes have specific requirements or limitations when migrating to TrueNAS Community Edition,” they said. RAID and HA are different things in TrueNAS. Moreover, the reason I wrote to support in the first place was to ask what those “specific requirements” were. I was hoping for a support article I’d somehow missed, or a canned response. Instead I got my own question, regurgitated as a warning.</p>\n<p>I wrote with followup questions, and got more nonsense in response. When I asked how TrueNAS Community Edition used FreeBSD jails, a different customer success coordinator replied:</p>\n<blockquote>\n<p>FreeBSD jails are similar to containers (like Docker) but built into the FreeBSD system. TrueNAS uses them to run isolated apps and services. For example, you can run Plex, Nextcloud, or other apps safely and separately using jails — all within your TrueNAS system.</p>\n<p>They’re lightweight, secure, and don’t need a full virtual machine to run each service. It’s a great way to expand what your system can do without using much extra power or memory.</p>\n</blockquote>\n<p>This is all lies. TrueNAS CORE, the old FreeBSD OS, ran jails. TrueNAS SCALE / Community Edition runs Docker containers.</p>\n<p>Quoting their HA/RAID confusion, I asked whether for TrueNAS hardware, the two were actually the same.</p>\n<blockquote>\n<p>Good question — they’re different:</p>\n<ul>\n<li>\n<p>RAID protects your data by spreading it across multiple disks, so if one disk fails, your data is still safe.</p>\n</li>\n<li>\n<p>HA (High Availability) means the system has two controllers. If one fails, the other takes over so the system keeps running. This is used in high-end enterprise systems (like our TrueNAS M-series), not in the MINI line.</p>\n</li>\n</ul>\n</blockquote>\n<p>This is, I believe, accurate, but betrays no sign that the original response conflated the two.</p>\n<p>I asked what specific limitations my NAS model had that would cause issues migrating to Community Edition. They replied:</p>\n<blockquote>\n<p>The MINI-3.0-X+ is compatible with Community Edition (TrueNAS CORE), but there are a few things to know:</p>\n<ul>\n<li>\n<p>No Enterprise-only features: Some features like enclosure management and support alerts are only available in the Enterprise version.</p>\n</li>\n<li>\n<p>No HA support: Not an issue for the MINI, since it’s a single-controller system anyway.</p>\n</li>\n<li>\n<p>Support level: CORE is community-supported, so it doesn’t come with iXsystems support like the Enterprise version does.</p>\n</li>\n</ul>\n<p>But overall — the MINI runs CORE just fine for most use cases!</p>\n</blockquote>\n<p>This sounds like a reasonable response, but it too is complete nonsense. TrueNAS CORE is a completely different operating system. I asked whether it would run Community Edition, also known as SCALE.</p>\n<p>I worked support for many years, helping people with desktops, systems and networking, and occasionally for web services. I’m used to knowledge base articles and canned responses on both ends—and indeed, that’s exactly what I was hoping TrueNAS would provide. All I needed to know was why the documentation warned their customers to contact support before upgrading. Instead I got a pile of vague nonsense and lies.</p>\n<p>I get it. Support is often viewed as a cost center, and agents are often working against a brutal, endlessly increasing backlog of tickets. There is pressure at every level to clear those tickets in as little time as possible. Large Language Models create plausible support responses with incredible speed, but their output must still be reviewed by humans. Reviewing large volumes of plausible, syntactically valid text for factual errors is exhausting, time-consuming work, and every few minutes a new ticket arrives.</p>\n<p>Companies must do more with less; what was once a team of five support engineers becomes three. Pressure builds, and the time allocated to review the LLM’s output becomes shorter and shorter. Five minutes per ticket becomes three. The LLM gets it mostly right. Two minutes. Looks good. Sixty seconds. Click submit. There are one hundred eighty tickets still in queue, and behind every one is a disappointed customer, and behind that is the risk of losing one’s job. Thirty seconds. Submit. Submit. The metrics do not measure how many times the system has lied to customers.</p>",
"image": null,
"media": [],
"authors": [
{
"name": "Aphyr",
"email": null,
"url": "https://aphyr.com/"
}
],
"categories": []
},
{
"id": "https://aphyr.com/posts/386-the-future-of-newspapers-is-lies-i-guess",
"title": "The Future of Newspapers is Lies, I Guess",
"description": null,
"url": "https://aphyr.com/posts/386-the-future-of-newspapers-is-lies-i-guess",
"published": "2025-05-21T11:51:40.000Z",
"updated": "2025-05-21T11:51:40.000Z",
"content": "<p><em>Update, 2023-05-23: Added a paragraph about Dr. Howard Whiteman’s non-existent quote.</em></p>\n<p><em>I subscribe to the Chicago Sun-Times, a non-profit newspaper. This week they sent me a sixty-four page special insert, branded with the Chicago Sun-Times logo, full of LLM nonsense. Yesterday I wrote the following letter to the Chicago Sun-Times. That evening, they published <a href=\"https://chicago.suntimes.com/news/2025/05/20/syndicated-content-sunday-print-sun-times-ai-misinformation\">this followup</a>.</em></p>\n<p>Dear Mr. Buscaglia and the Chicago Sun-Times,</p>\n<p>The May 18th “Heat Index” summer insert feels remarkably like “AI slop”: text generated by a large language model. The unusually enthusiastic use of adjectives coats the entire insert with an oily sheen, but I’m also concerned that there may be wholesale fabrications in the text.</p>\n<p>For instance, “Summer soundtracks” cites Dr. Daniel Levitin, in an interview with Scientific American, as saying “Music activates the brain’s reward centers in ways similar to other pleasurable experiences. When paired with meaningful activities, these songs become powerful memory anchors that can transport us back to those moments for decades”. These phrases, and substrings thereof, return zero matches on Kagi or Google. Scientific American’s archives include a <a href=\"https://www.scientificamerican.com/article/exploring-the-musical-bra/\">January 22, 2001 article</a> with several quotes from Levitin, but nothing like the purported quotes.</p>\n<p>The “Nightfall adventures” article cites Dr. Howard Whiteman, professor at Murray State University. “Understanding nocturnal adaptations helps us appreciate the complexity of ecosystems. Even common backyard species display fascinating behaviors that most people never witness.” I checked with Dr. Whiteman, who confirmed that he had never said these words:</p>\n<blockquote>\n<p>I have never spoken to the Chicago Sun-Times or any other Chicago paper, and I can’t recall ever saying any of those words to anyone, ever.</p>\n<p>I write for some regional papers, some of which is online, and I could see an AI putting all of my writing together somehow into those words, but I’ve never actually written about nocturnal behavior per se.</p>\n</blockquote>\n<p>The “Summer food trends” article cites an interview in Bon Appetit, claiming Padma Lakshmi said, “What distinguishes this summer’s global food exploration is how these international flavors are being adapted to local, seasonal ingredients.” Lakshmi <em>is</em> published in <a href=\"https://www.bonappetit.com/story/padma-lakshmi\">an interview with BA</a>, but I can’t find any use of the uncanny marketer-speak “this summer’s global food exploration”.</p>\n<p>The same article also cites the National Ice Cream Retailers Association as forecasting “unexpected savory notes” and “hyperlocal ingredient sourcing” as the “fastest-growing segments in premium frozen desserts”. I find it hard to believe these are segments at all—nor do these phrases appear anywhere on the <a href=\"https://icecreamassociation.org/general/custom.asp?page=Aboutus\">NICRA web site</a>.</p>\n<p>The “Summer reading list for 2025” recommends books like “The Rainmakers”, by Percival Everett—a real author, but as far as I can tell, not a real text. Immediately thereafter it offers “Salt and Honey”, by “Delia Owens”—again, a real writer, not a real book. I started reaching out to some of the experts cited in the insert to ask whether their quotes were real, then realized <a href=\"https://www.theverge.com/ai-artificial-intelligence/670510/chicago-sun-times-ai-generated-reading-list\">the Verge beat me to it</a>.</p>\n<p>These examples are just from a cursory skim; the insert fails my LLM “sniff test” on essentially every page. How did this happen? How do you print and distribute a full-color, sixty-four page special edition without anyone reading it first? Many of the articles have no byline, but those that do are purportedly by Marco Buscaglia. Was he responsible? Or is he too, like so many of the people cited in this nonsense publication, a victim of confabulatory applied statistics? This would be a great project for the Sun-Times newsroom, assuming OpenAI hasn’t eaten them yet.</p>\n<p>Doubtfully,</p>\n<p>—Kyle Kingsbury</p>",
"image": null,
"media": [],
"authors": [
{
"name": "Aphyr",
"email": null,
"url": "https://aphyr.com/"
}
],
"categories": []
},
{
"id": "https://aphyr.com/posts/381-when-flat-rate-movers-wont-answer-your-calls",
"title": "When Flat Rate Movers Won't Answer Your Calls",
"description": null,
"url": "https://aphyr.com/posts/381-when-flat-rate-movers-wont-answer-your-calls",
"published": "2025-05-03T14:23:16.000Z",
"updated": "2025-05-03T14:23:16.000Z",
"content": "<p>Back in 2023 I went through an inter-state move with <a href=\"https://www.flatrate.com/moving/\">Flat Rate Movers,\nLTD.</a>, a.k.a. Flat Rate Moving, US DOT 488466, MC 254356. They bungled the job, damaged my stuff\nand my house, and then refused to talk to me or their own insurance company. I\nplaced dozens of calls, wrote letters, emails, nothing worked. I finally got\nsome money for the damage by working with their insurer directly. I know a lot\nof folks struggle with moving companies, and figured I’d write up a bit of this\nstory in case it helps. You can <a href=\"#finding-their-insurance\">skip ahead</a> if you\njust want to know about the FMCSA insurer database.</p>\n<p>In November 2022 I scheduled the move with Flat Rate. We took a detailed video\ninventory of everything to be moved. I paid over $14,000 for an “all inclusive\nmove”, which, per the move plan, included full packing services, blankets for furniture, boxes for electronics, lamps, and bicycles, a custom crate for a tabletop, and “extended valuation coverage”—their insurance policy.</p>\n<p>A few days before the move in March 2023, Flat Rate called to tell me a\nfive-person team would arrive. When the crew arrived, it wasn’t Flat Rate. It\nwas a team of two from <a href=\"https://www.esquiremoving.com/\">Esquire Moving Inc</a> (US DOT 2820253, MC 940499). They had\nno idea they were supposed to provide packing services. The crate I paid for was nowhere to be found. They didn’t have enough boxes or blankets. I had to have everything out that day, so\nthere wasn’t any choice—I worked alongside the team for thirteen hours to\ncomplete the packing and move-out.</p>\n<p>I let the team handle furniture protection and loading the truck, which was a\nmistake. As they unloaded a few days later, I realized much of the furniture had\nbeen completely unprotected. My bicycle wasn’t boxed. Lamps were tossed in\nloose. There was extensive damage to furniture, art, books, and my home: I\nwatched the crew rip a doorframe off the wall. The crew provided me with a\nbackdated bill of lading only on delivery.</p>\n<p>I called Flat Rate a couple days later to discuss my concerns. Their\nrepresentive apologized and acknowledged that a crew of two was insufficient. I\nsent Flat Rate a detailed email explaining their failure to provide promised\nservices, accompanied by photographs of the move process and the resulting\ndamage. I asked for a partial refund, and for Flat Rate to pay for the damage\nthey caused. I received only an out-of-office auto-response.</p>\n<p>On March 21st, I received a generic form letter from Flat Rate’s claims\ndepartment. I filled out the claim forms and submitted them on March 25th, and\nrepeated that I needed more than an insurance claim: Flat Rate obviously failed\nto provide the services I’d paid for.</p>\n<p>Then things got weird. I placed call after call to the claims department. They\ndidn’t answer. I left voicemail after voicemail. On April 28th I reached an\nactual human, but their computers were apparently down, and no supervisor was\nin the building—the representative couldn’t do anything but take down a note\nto call me back. They never did. I left another voicemail on May 5th. Again on\nMay 23rd. Again on August 4th. August 8th. I began to realize that Flat Rate’s\nstrategy was simply to never answer the phone.</p>\n<p>On August 14th, a new hire in the claims department called me: she was taking over my case. She dispatched a local furniture company\nto inspect the damages and help complete the claim. The inspectors agreed: the\nmovers had done extensive damage. I provided them with documentation and photos\nas well.</p>\n<p>On September 14 I called the furniture company and confirmed that yes, they had\nsubmitted their report to Flat Rate. However, the furniture company had a\nconfidentiality agreement with Flat Rate, and could not release their report to\nme. I called their contact at Flat Rate, who didn’t answer, and left a\nvoicemail. I called the claims representative’s direct line: her number was no\nlonger in service. On September 19th I got a call from the claims\nrepresentative, who promised she’d have a decision by the end of the day. Flat Rate never talked to me again.</p>\n<p>I called again and again, but got voicemail every time. I tried a letter from\nmy lawyers, an arbitration request with the <a href=\"https://trucking.org/arbitration-loss-and-damages\">American Trucking\nAssociation</a>, complaints with the <a href=\"https://www.usa.gov/agencies/federal-motor-carrier-safety-administration\">Federal Motor Carrier Safety\nAdministration</a>,\nthe <a href=\"https://www.dot.ny.gov/index\">New York Department of Transportation</a>’s\nMotor Carrier complaint department, and the <a href=\"https://www.dfs.ny.gov/\">New York State Department of\nFinancial Services</a>; none of this went anywhere.</p>\n<h2><a href=\"#finding-their-insurance\" id=\"finding-their-insurance\">Finding Their Insurance</a></h2>\n<p>Here’s the thing: movers offer coverage, they have claims departments, and they do many insurance-like things in house. But for complicated reasons, they are not actually insurance companies, and are not regulated as such. Their coverage is backstopped by separate, real insurance companies. I eventually discovered I could bypass Flat Rate and talk to their backing insurance company directly. The Federal Motor Carrier Safety\nAdministration maintains <a href=\"https://li-public.fmcsa.dot.gov/LIVIEW/pkg_carrquery.prc_getdetail\">a public database of moving companies</a>. Putting in their US DOT number\n(488466) yields a page with some basic info. At the bottom are links with their\nactive and pending insurance, and the history of their insurers.</p>\n<p><img class=\"attachment pure-img\" src=\"/data/posts/381/fmcsa.png\" alt=\"A screenshot of the FMCSA page, with links at the bottom\" title=\"A screenshot of the FMCSA page, with links at the bottom\"></p>\n<p><img class=\"attachment pure-img\" src=\"/data/posts/381/insurance-history.png\" alt=\"A screenshot of their insurer history\" title=\"A screenshot of their insurer history\"></p>\n<p>The insurance history told me their cargo insurer at the time of my move was\nHanover Insurance Company, with policy RHX H706231. The database also had\nHanover’s phone number. I was able to call Hanover and ask about the\npolicy—it took a few tries, but I got through to a claims adjuster there who\nwas able to confirm that yes, I could file a claim directly with Hanover. I\nsent over a package of documentation, including the photos and the story so\nfar.</p>\n<p>Hanover Insurance informed me they’d never heard anything about my claim, and\ncalled Flat Rate to check. Over the next few days we discovered that Flat Rate\nwasn’t just refusing to answer my calls—they wouldn’t answer calls from their insurance company either. Hanover wasn’t able to obtain the report from the furniture company, but they did agree, on the basis of the photos, to pay a reasonable amount for the damage to cargo. I had a check a few days later.</p>\n<p>I’m still unhappy with Flat Rate: they charged me a good deal of money for services\nthey failed to deliver, and never paid for damage to the house. I was gearing up for small claims court—but during the tail end of this fiasco I was entering a fresh hell of home renovation, and got distracted. If you’re reading this, Flat Rate, you still owe me.</p>",
"image": null,
"media": [],
"authors": [
{
"name": "Aphyr",
"email": null,
"url": "https://aphyr.com/"
}
],
"categories": []
},
{
"id": "https://aphyr.com/posts/380-comments-on-executive-order-14168",
"title": "Comments on Executive Order 14168",
"description": null,
"url": "https://aphyr.com/posts/380-comments-on-executive-order-14168",
"published": "2025-02-21T23:04:55.000Z",
"updated": "2025-02-21T23:04:55.000Z",
"content": "<p><em>Submitted to the Department of State, which is <a href=\"https://www.federalregister.gov/documents/2025/02/18/2025-02696/30-day-notice-of-proposed-information-collection-application-for-a-us-passport-for-eligible\">requesting comments</a> on a proposed change which would align US passport gender markers with <a href=\"https://www.whitehouse.gov/presidential-actions/2025/01/defending-women-from-gender-ideology-extremism-and-restoring-biological-truth-to-the-federal-government/\">executive order 14168</a>.</em></p>\n<p>Executive order 14168 is biologically incoherent and socially cruel. All passport applicants should be allowed to select whatever gender markers they feel best fit, including M, F, or X.</p>\n<p>In humans, neither sex nor gender is binary at any level. There are several possible arrangements of sex chromosomes: X, XX, XY, XXY, XYY, XXX, tetrasomies, pentasomies, etc. A single person can contain a mosaic of cells with different genetics: some XX, some XYY. Chromosomes may not align with genitalia: people with XY chromosomes may have a vulva and internal testes. People with XY chromosomes and a small penis may be surgically and socially reassigned female at birth—and never told what happened. None of these biological dimensions necessarily align with one’s internal concept of gender, or one’s social presentation.</p>\n<p>The executive order has no idea how biology works. It defines “female” as “a person belonging, at conception, to the sex that produces the large reproductive cell”. Zygotes do not produce reproductive cells at all: under this order none of us have a sex. Oogenesis doesn’t start until over a month into embryo development. Even if people were karyotyping their zygotes immediately after conception so they could tell what “legal” sex they were going to be, they could be wrong: which gametes we produce depends on the formation of the genital ridge.</p>\n<p>All this is to say that if people fill out these forms using this definition of sex, they’re guessing at a question which is both impossible to answer and socially irrelevant. You might be one of the roughly two percent of humans born with an uncommon sexual development and not even know it. Moreover, the proposed change fundamentally asks the wrong question: gender markers on passports are used by border control agents, and are expected to align with how those agents read the passport holder’s gender. A mismatch will create needless intimidation and hardship for travelers.</p>\n<p>Of course most of us will not have our identities challenged under this order. That animus is reserved for trans people, for gender-non-conforming people, for anyone whose genetics, body, dress, voice, or mannerisms don’t quite fit the mold. Those are the people who will suffer under this order. That cruelty should be resisted.</p>",
"image": null,
"media": [],
"authors": [
{
"name": "Aphyr",
"email": null,
"url": "https://aphyr.com/"
}
],
"categories": []
}
]
}